Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Documentos relacionados
Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Linguagem de Programação I Apresentação da Disciplina

Introdução ao Java. Prof. Herbert Rausch Fernandes

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Orientada a Objetos

Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Orientação a Objetos (OO)

Java para Desktop. Programação Orientada à Objetos 2 JSE

Modelo do Mundo Real. Abstração. Interpretação

O PARADIGMA ORIENTADO POR OBJETOS

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Programação Orientada a Objetos

POO e C++: Herança e Polimorfismo

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

Programação Orientada a Objetos

Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

Orientação a objetos. Objetos ou Instâncias I

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

INTRODUÇÃO A POO. Programação Orientada a Objetos Flávio de Oliveira Silva 6. PROCEDIMENTAL (Algorítmica)

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Sumário. BD Orientado a Objetos

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

ACH2002. Orientação a Objetos

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Levantamento, Análise e Gestão Requisitos. Aula 03

Programação Orientada a Objetos

Análise de Sistemas 3º Bimestre (material 2)

Laboratório de programação II

Programação Orientada a Objetos JAVA - NETBEANS

Programação Estruturada Orientada a Objetos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Aula 15 Modelagem de Classes de Análise. Análise de Sistemas Prof. Filipe Arantes Fernandes

Programação por Objectos Introdução. Introdução 1/18

Desenvolvimento de Aplicações Desktop

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

Linguagem de Programação III

Classes e Objetos. Sintaxe de classe em Java

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Programação Java (nível intermediário) 4. Polimorfismo

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Diagramas de Classes e O Paradigma da Orientação a Objetos usando UML. Prof. Ricardo A. Ramos

Projeto Orientado a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Modelagem Orientada a Objeto

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

Linguagem de Programação III

Linguagem de Programação II Herança

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

ORIENTAÇÃO A OBJETOS Histórico:

Conceitos de Programação Orientada a Objetos

Laboratório de programação II

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

Fundamentos de Orientação a Objetos

Daniel Wildt

Introdução à Orientação a Objetos

4 Conceito de Herança

Python Orientação a Objetos. Introdução à Programação SI2

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Capítulo 2. Orientação a Objetos

UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Laboratório de Programação. Aula 2 Java 5COP088. Aula 2 Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Linguagem de Programação. Diagrama de classes

Introdução à Orientação a Objetos. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Fundamentos de Orientação à objetos

Os princípios do desenho orientado a objetos

C com introdução a OO

Televisao tamanho tela emitirsom. conectarperifericos

2. Introdução à Programação e Análise. Orientada a Objetos

Conceitos de Orientação a Objetos

1 Introdução e Conceitos básicos

Linguagens de Programação Aula 12

Auto-Referenciamento e Herança

Programação Orientada a Objetos em Python

Introdução à Orientação a Objetos

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

CURSO TÉCNICO DE INFORMÁTICA Módulo C ORIENTAÇÃO À OBJETO. Conceitos

Universidade Federal de Mato Grosso do Sul. Propriedades da Programação Orientada a Objetos

Introdução à Modelagem Conceitual 1. Conceitos Básicos

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Estrutura de Dados Funções e Procedimentos

Requisitos de sistemas

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Interfaces e Classes Abstratas

UML LINGUAGEM DE MODELAGEM UNIFICADA Diagrama de Classes

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Transcrição:

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios da Orientação a Objetos Conceitos e Terminologia Classes e Objetos Encapsulamento Métodos e Mensagens Herança Polimorfismo Ligação Dinâmica Paradigma de Orientação a Objetos (OO) 2 Programação Procedimental Programação Orientada a Objetos Proc1 Proc2 Proc3 processos e separados processos e encapsulados Foco nos procedimentos (algoritmos) que alteram os Estado e comportamento separados fazendo com que estruturas de sejam enviadas a funções ou procedimentos Foco em conceitos que agrupam estado e comportamento num mesmo módulo e controlam o acesso a essas propriedades (encapsulamento) Melhor modelagem do mundo real, pois objetos possuem e atividades associadas à eles Funções não estão mais ligadas ao programa, mas, aos objetos cada um tendo sua responsabilidade Paradigma de Orientação a Objetos (OO) 3 Paradigma de Orientação a Objetos (OO) 4

Objetivos da Orientação a Objetos Reduzir a complexidade, aumentar a confiabilidade Produzir software mais confiável Proteção aos : encapsulamento Aumentar a produtividade de software Reutilização de código: classes Extensão da biblioteca de classes: Definição de subclasses (herança) Implementação de novos métodos Redefinição de métodos (polimorfismo) Conceitos Fundamentais e Terminologia OO Objetos entidades básicas do software OO, são instâncias de classes Classes conjunto de objetos com as mesmas características, organizadas em hierarquia Atributos estruturas de dos objetos Métodos operações que atuam sobre os Mensagens chamadas a operações (métodos) Paradigma de Orientação a Objetos (OO) 5 Paradigma de Orientação a Objetos (OO) 6 Conceitos Fundamentais e Terminologia OO Encapsulamento proteção: e comportamento especificados num mesmo módulo Comunicação entre objetos objetos comunicam-se através de troca de mensagens enviadas para seus métodos Herança subclasse herda propriedades da superclasse Polimorfismo mesma mensagem implementada de diferentes formas Ligação dinâmica ligação mensagem-método em tempo de execução Classe Modelo estático que permite especificar um conjunto de características que um conceito ou artefato de implementação representa Exemplos:, Veiculo, Tabela, Janela, Data Um conceito pode ser descrito por atributos : nome, data nascimento, nacionalidade, sexo... Data: dia, mês, ano Os atributos podem sofrer operações Leitura, escrita, atribuição, cópia, comparação... Paradigma de Orientação a Objetos (OO) 7 Paradigma de Orientação a Objetos (OO) 8

Classe Portanto, agrupam uma estrutura de e um conjunto de operações que atuam sobre estes Organizadas em hierarquia especialização ou generalização definição de subclasses. Ex: Carro, moto, ônibus... subclasse herda propriedades da superclasse. adição de novas estruturas e/ou métodos redefinição de métodos Serve de modelo para a criação de objetos Objeto (instância de classe) Entidade dinâmica criada a partir de uma classe e possui os sobre os quais são realizadas as operações disponíveis em sua classe Exemplo: Objeto da classe Nome: Maria Data nascimento: 05/04/1982 Nacionalidade: Brasileira Sexo: feminino Encapsulam (estado + comportamento) estado = do objeto (variáveis de instância) comportamento = métodos Cada objeto é responsável por seu conjunto de Objetos reagem a mensagens (chamadas a métodos) Cada mensagem dirigida a um objeto, provoca a execução de um método sobre os particulares do objeto Paradigma de Orientação a Objetos (OO) 9 Paradigma de Orientação a Objetos (OO) 10 Classe e Objeto Métodos Classe: estática, modelo de objetos Classe: Empregado nome depto salario atualizasalario calculaextras variáveis de instância () comportamento (métodos) Objeto: dinâmico, instância de classe atualizasalario Maria Compras R$ 1000 Métodos são operações que atuam sobre os O efeito da chamada de um método depende Do que o método faz De seus argumentos e Do estado em que o objeto se encontra Exemplo sacar um determinando valor de uma conta, tem efeito diferente se a conta tem saldo ou não Podem ser classificados de acordo com o serviço que prestam Acessadores: consultam e retornam o estado do objeto (gettters) Alteradores: alteram o estado do objeto (setters) Iteradores: agem sobre diferentes componentes do objeto (busca,...) Construtores: criam um objeto e/ou iniciam seu estado Destrutores: liberam ou destroem o objeto Há linguagens em que é possível definir métodos de classe além de métodos de objeto (instância) Paradigma de Orientação a Objetos (OO) 11 Paradigma de Orientação a Objetos (OO) 12

Encapsulamento Proteção aos e operações: agrupa estado e comportamento num mesmo módulo e controla o acesso a essas propriedades Esconde a implementação deste agrupamento, não é necessário se preocupar com o como para se usar É implementado definindo se um método ou atributo é Público: visto pelos métodos de outras classes Privado: visto apenas pelos métodos da própria classe Protegido: visto pelos métodos da própria classe ou de classes herdeiras da classe Restringe o acesso aos objetos da classe, fornecendo um conjunto público de operações sobre seus (protocolo ou interface) Herança Filosofia básica para a solução de problemas OO Relação estática entre classes (generalização e especialização) Classes são organizadas dentro de uma hierarquia Na definição de subclasses subclasse herda propriedades da superclasse. pode haver adição de novas estruturas e/ou métodos pode haver redefinição de métodos Criação/destruição de um objeto na classe especialização implica na criação/destruição de um objeto na classe genérica Paradigma de Orientação a Objetos (OO) 13 Paradigma de Orientação a Objetos (OO) 14 Herança Herança Simples e Múltipla ESTUDANTE Simples Objeto herda propriedades diretamente de apenas uma classe Múltipla Objeto herda propriedades de duas ou mais superclasses GENERALIZAÇÃO A X ESTUDANTE DE DE GRADUAÇÃO ESTUDANTE DE DE PÓS- PÓS- GRADUAÇÃO ESPECIALIZAÇÃO B C Y Z Hierarquia de Classes D E W Paradigma de Orientação a Objetos (OO) 15 Paradigma de Orientação a Objetos (OO) 16

Herança Simples e Múltipla - Exemplos Herança (relacionamento é um ) Simples Múltipla Conta Estudante Docente Funcionário Estudante Docente Funcionário Estudante graduação Estudante pós-grad. Estudante graduação Estudante pós-grad. Poupança Especial Assistente Herança não é seletiva, todas propriedades do objeto genérico são herdadas Paradigma de Orientação a Objetos (OO) 17 Paradigma de Orientação a Objetos (OO) 18 Agregação (relacionamento é parte de ) Polimorfismo Dar formas distintas a uma mesma função ou dado Reutilização Conta saque A m1 m1 saque Poupança Especial saque B m1 O2 O1 m1 Agregação não implica em herança de propriedades Indica que um objeto contém como atributo outro objeto mesma mensagem sendo enviada a objetos de classes distintas (implementadas de diferentes formas) Paradigma de Orientação a Objetos (OO) 19 Paradigma de Orientação a Objetos (OO) 20

Ligação Dinâmica (dynamic binding) Polimorfismo e Ligação Dinâmica binding ligação de chamada de subrotina ao código a ser executado early binding - em tempo de compilação late binding - em tempo de execução em POO ligação mensagem a método herança + polimorfismo dynamic binding Paradigma de Orientação a Objetos (OO) 21 * Exemplo obtido do curso java100 de Helder Rocha Paradigma de Orientação a Objetos (OO) 22 Correspondência de Termos Desenvolvimento de Programas OO OO Objeto Classe Mensagem Método Herança Polimorfismo ~ ~ ~ ~ Procedimental Variável dinâmica (ponteiro) Tipo Chamada de subrotina Subrotina (função/procedimento) Foco em conceitos que agrupam estado e comportamento num mesmo módulo Controle de acesso à essas propriedades (encapsulamento) Funções não estão mais ligadas ao programa, mas, ao objeto. Todo objeto tem sua responsabilidade Objetos comunicam-se através de troca de mensagens Sistemas são vistos como um conjunto de objetos agrupados em classes de objetos similares que cooperam entre si para atingir um objetivo Paradigma de Orientação a Objetos (OO) 23 Paradigma de Orientação a Objetos (OO) 24

Exercício Agenda l Considere uma agenda pessoal. Para implementarmos de maneira Orientada a Objeto, quais classes teríamos, quais métodos e atributos seriam definidos em cada classe? nome: String; endereço: String; niver: String; email: String; cadastrar(); modificar(); excluir(); retornaremail(); O que há de errado? Onde e como estarão armazenados esses? Na hora de executar, quantos objetos posso manipular? Quem controla a execução dessas operações? Paradigma de Orientação a Objetos (OO) 25 Paradigma de Orientação a Objetos (OO) 26 Agenda l Agenda l nome: String; endereço: String; niver: String; email: String; retornarnome(); retornarender(); retornarniver(); retornaremail(); * 1 Agenda lista: Vector; opcao: String; cadastrar(); modificar(); excluir(); organizarlista(); gravararquivo(); Paradigma de Orientação a Objetos (OO) 27 nome: String; endereço: String; niver: String; email: String; retornarnome(); retornarender(); retornarniver(); retornaremail(); exibirdados(); * 1 Lista lista: Vector; pessoa: ; adicionar(); modificar(); excluir(); 1 1 Agenda amigos: Lista; opcao: String; carregarlista(); gravararquivo(); incluiramigo(); excluiramigo(); modificardados(); Paradigma de Orientação a Objetos (OO) 28

Referências DEITEL, H. M. & DEITEL, P. J. Java: como Programar. 4ª ed. Porto Alegre: Bookman, 2003 da ROCHA, Helder. Programação Orientada a Objetos em Java 2. PRICE, A. Material de apoio da disciplina. Mestrado em Ciência da Computação, UFRGS, 2001. Paradigma de Orientação a Objetos (OO) 29