PROGRAMAÇÃO ORIENTADA A

Documentos relacionados
PROGRAMAÇÃO ORIENTADA A OBJETOS I -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

Linguagem de Programação. Diagrama de classes

Programação Orientada a Objetos Relacionamentos entre classes

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

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

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

Classes e Objetos. Sintaxe de classe em Java

Diagrama de Classes. Classes. Relacionamentos. Atributos Métodos. Associação. Generalização Dependência Realização. Agregação Composição

Classe Abstrata e Interface

Linguagem de Programação IV Introdução

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

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

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

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

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

Diagramas de Classes. ESII Profª. Andressa Falcade URI Santiago

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Programação por Objectos. Java

Linguagem de Programação III

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Diagrama de Classes. Viviane Torres da Silva

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Linguagem de Programação II Herança

Programação Orientada a Objetos Flávio de Oliveira Silva 144

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

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Programação Orientada a Objetos JAVA - NETBEANS

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

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

Diagrama de Classes. Leonardo Gresta Paulino Murta

POO29004 Programação Orientada a Objetos

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

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

Desenvolvimento Web TCC Turma A-1

Conceitos de Programação Orientada a Objetos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE

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

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

Herança e Propriedades

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Programação Orientada a Objetos

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

UML Diagrama de Classes

9 Classes Abstractas e Interfaces

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

Revisão Diagrama de classes Elementos do diagrama de classes Exemplo: Sistema de matrícula

Fundamentos de Orientação à objetos

O PARADIGMA ORIENTADO POR OBJETOS

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

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

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Palavras Reservadas da Linguagem Java

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

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

Modelagem Orientada a Objeto

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

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU

BANCO DE DADOS I. Prof. Luiz Antônio Vivacqua C. Meyer

Polimorfismo. PARTE II: Java e OO. Polimorfismo. Polimorfismo. Polimorfismo. Polimorfismo

AULA 16 HERANÇA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Introdução à Programação. Encapsulamento e Herança

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

POO29004 Programação Orientada a Objetos

Herança e Polimorfismo

POO29004 Programação Orientada a Objetos

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

Linguagem de Programação II Implementação

Linguagem de Modelagem Unificada UML

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

ASSOCIAÇÃO ENTRE CLASSES

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

Interfaces e Classes Abstratas

12/03/16. Generalização. Associação. Agregação UML Relações. entre Classes. Composição. Prof.Dr. Enzo Seraphim. Dependência

Transcrição:

PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO Prof. Angelo Augusto Frozza, MS M.Sc. frozza@ifc-camboriu.edu.br

ROTEIRO 4. Técnicas de Orientação a Objetos Classes e objetos Herança Métodos Subscritos Métodos Sobrecarregados Pli Polimorfismo Classes Abstratas Interfaces

CLASSES Classes são os blocos de construção mais importantes de qualquer sistema OO; Uma Classe é uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica; Classes capturam o vocabulário do sistema em desenvolvimento (substantivos, verbos e adjetivos); Podem incluir abstrações que são parte do domínio do problema, assim como as classes que fazem uma implementação; P.ex.: itens de software, de hardware e até itens puramente conceituais.

CLASSES A modelagem de um sistema envolve a identificação de itens considerados importantes de acordo com uma determinada visão Domínio do sistema Por exemplo: A construção de uma casa envolve paredes, portas, janelas, cômodos, luzes etc.; Cada conceito pode ser diferenciado dos demais [atributos, métodos (operações) e relacionamentos];

CLASSES Toda Classe possui: Nome - a diferencie das outras classes; Atributos propriedades que descrevem um intervalo de valores que as instâncias da classe podem apresentar; Abstraem os tipos de dados d ou estados que os objetos de uma classe podem abranger; Operações (métodos) implementam serviços que podem ser solicitados por algum objeto da classe para modificar o comportamento; Abstraem algo que pode ser feito com um objeto; Algumas vezes, a chamada a uma operação de um objeto altera os atributos ou o estado do mesmo;

CLASSES Visibilidade

CLASSES Visibilidade private Permite o acesso apenas pelos métodos da superclasse em que estão definidos; public Permite o acesso por qualquer método em qualquer lugar do programa; protected Permite o acesso apenas pelos métodos da superclasse em p p p que estão definidos; por métodos de subclasses e por membros de outras classes no mesmo pacote;

CLASSES Operações (métodos) são descritos por: Visibilidade Nome Lista de parâmetros Tipo de retorno

CLASSES public class Cliente { // Atributos // // Construtor da classe public Cliente() { // Métodos //

RELACIONAMENTOS Objetos se relacionam entre si através de operações (métodos); Exemplo: Objeto FAZENDEIRO: operação tirarleite(); Objeto VACA: operação produzirleite(); Tipos de relacionamentos: Associação: simples, agregação, composição Herança Dependência

ATRIBUTOS DE UMA ASSOCIAÇÃO Nome Nome da associação Papéis Papéis das classes que estão relacionadas pela associação O papel p da classe A é o nome do atributo que a classe B possui que guarda o objetivo da classe A Multiplicidades Quantidades de objetos associados a um papel Navegabilidade Indica a direção da relação entre as classes

ASSOCIAÇÃO SIMPLES Utilizada para relacionar duas classes cujos objetos podem se comunicar; Semanticamente representam que as classes "conhecem uma a outra", "estão conectadas com", "para cada X existe um Y ; Deve-se identificar o papel das classes na associação;

ASSOCIAÇÃO SIMPLES public class Funcionario { private Funcionario gerente; private List<Funcionario> subordinadoss = new ArrayList<Funcionario>(0); // Demais atributos // // Construtor t public Funcionario() { // Métodos setters e getters //

AGREGAÇÃO Representa que um tipo de objeto é composto, pelo menos em parte, de outro objeto em uma relação todo/parte; O objeto parte é um atributo do objeto todo; O ciclo de vida do objeto parte é limitado ao ciclo de vida do objeto todo; Porém, a parte vive sem o todo e o todo existe sem as partes (relação todo-parte fraca); A agregação indica que uma das classes do relacionamento é uma parte ou está contida em outra classe Semanticamente representa: "consiste em", "contém", " "é parte de".

AGREGAÇÃO Exemplo: Marina e navios: uma marina contém navios Carro e rodas Pedido e item de pedido

AGREGAÇÃO public class Navio { private String nomenavio; Outro exemplo: emplo: Pedido e ItemPedido public Navio() { public class Marina { private String nomemarina; private ArrayList<Navio> navios; public Marina() { navios = new ArrayList<Navio>(); public void add(navio umnavio) { navios.add(umnavio);

COMPOSIÇÃO Semelhante a agregação; Existe quando uma classe é composta por outra, de tal forma que a parte que compõe não existe se não existir o todo; Relação todo-parte forte: a parte não vive sem o todo ; Semanticamente equivale a um atributo ( é composto de ); Partes de uma composição não podem ser referenciadas por objetos externos; A remoção do todo implica na remoção das partes; Exemplo: Vaca é composta por Chifres, Cascos, Rabo, Úbere etc.

COMPOSIÇÃO public class Peca{ private int codigopeca; public Peca() { public class Motor { private int idmotor; private ArrayList<Peca> pecas; public Motor() { pecas = new ArrayList<Pecas>(); public void add(peca umapeca) { pecas.add(umapeca);

AGREGAÇÃO X COMPOSIÇÃO Imagine um cenário com 2 objetos: "A" e "B Estamos na dúvida da relação entre eles, então fazemos as perguntas a seguir: 1 - Se eu "deletar" o A, terei que "deletar" também o B? Sim = Composição Não = pode ser Agregação ou nada (vá para a pergunta 2) Exemplo: Pedido e Compras: um Pedido pode ter várias Compras, mas se excluir o Pedido, precisa excluir as Compras não faz sentido ter um objeto Compra sem que ele esteja em algum Pedido sua única razão de existir é "compor" um pedido

AGREGAÇÃO X COMPOSIÇÃO 2 - O objeto B tem alguma utilidade sozinho? Sim = Associação simples Não = Agregação Exemplo: Carro e Rodas: se excluir um Carro, não precisa excluir suas Rodas, pois elas podem servir para outro Carro. Porém, uma roda tem utilidade d sozinha? Geralmente não, ela serve sempre para "agregar" uma funcionalidade a outro objeto, como a funcionalidade de andar ao Carro (ou a um outro veículo qualquer), ou até mesmo a funcionalidade para crianças sentarem em um "balanço de árvore" etc.

AGREGAÇÃO X COMPOSIÇÃO O caso de Composição é o mais claro; Já o de Agregação muitas vezes depende da interpretação do analista, pois alguém pode contestar que uma roda tem sim uma utilidade sozinha para algum caso bizarro que ele observou, ou que existe no "mundo particular dele".

HERANÇA (GENERALIZAÇÃO) Uma classe pode possuir um relacionamento de herança com outra classe (mãe e filha); A classe mãe é menos especializada (mais genérica) que a classe filha; Semanticamente t representa é um tipo ou é do tipo ; Por exemplo: Vaca é um tipo de mamífero a classe Vaca é derivada da classe Mamifero

HERANÇA public class Veiculo{ private String chassi; private String placa;... public Veiculo() { public class VeiculoDeCarga extends Veiculo { private double cargamaxima; public VeiculoDeCarga () { public class VeiculoDePasseio extends Veiculo { private double quantidadedepassageiros; public VeiculoDePasseio () {

INTERFACE É uma classe sem nenhuma implementação; Contem apenas atributos static final; Todas as operações são abstratas; Os métodos têm apenas a sua assinatura; O relacionamento de realização indica as classes que implementam a interface; Equivale a generalização; É uma alternativa para a herança múltipla em Java;

INTERFACE public interface Autenticavel { public boolean autentica(int senha); public class Gerente implements Autenticavel { public Gerente () { public boolean autentica (int senha) { public class Cliente implements Autenticavel { public Cliente () { public boolean autentica (int senha) {

DEPENDÊNCIA A Dependência deixa explícito que uma mudança na especificação de um elemento pode alterar a especificação do elemento dependente; d Os objetos de uma classe esporadicamente usam serviços dos objetos de outra classe; Exemplos de uso: Uma classe chama métodos de outra; Uma classe tem operações que retornam outra classe; Uma classe tem operações que esperam como parâmetro outra classe;

DEPENDÊNCIA public class Moeda { public Moeda(double umvalor, String umnome) { public double getvalor() { public class CaixaRegistradora { public CaixaRegistradora() { public void entrepagamento (int qtdmoeda, Moeda tipomoeda) {

MULTIPLICIDADE Representa o número de elementos de uma propriedade; Estrutura X..Y onde: Opcional: X = 0 Mandatório: X = 1 Somente um valor: Y = 1 Multivalorado: Y > 1 Valores clássicos: 0..1 1 (equivalente a 1..1 default) * (equivalente a 0..*) 1..*

CLASSES DE ASSOCIAÇÃO Permitem a adição de informações em uma associação; Devem ser transformadas em classes comuns posteriormente para viabilizar implementação;

PROPRIEDADES E OPERAÇÕES ESTÁTICAS Propriedades que não são instanciadas nos objetos; Operações que atuam somente sobre propriedades estáticas; Ambos são acessados diretamente na classe: Exemplo: Pedido.getProximoNumero(); Não é necessário um objeto para acessar a propriedade; Operações estáticas são sublinhadas no diagrama;

PROPRIEDADES E OPERAÇÕES ESTÁTICAS public class ContaBancaria { private double saldo; private int numeroconta; private static int ultimacontacriada = 1000; public static final double TAXA_CHEQUE_ESPECIAL ESPECIAL = 5; public ContaBancaria () { // aqui vai uma forma de inicializar a // propriedade estática, por exemplo: this.ultimacontacriada++; this.numeroconta = this.ultimacontacriada; Desafio: Implementar um protótipo do jogo Percorrer Labirinto.

PROPRIEDADES DERIVADAS São propriedades que na verdade não existem como atributos ou associações; Podem ser inferidas por outras propriedades da classe; É interessante explicitar através de nota ou restrição a fórmula de derivação; São marcadas com o símbolo / ;

CLASSES E OPERAÇÕES ABSTRATAS Classes que não podem ter instâncias Usualmente têm operações abstratas, ou seja, sem implementação; Suas subclasses usualmente são concretas Implementam métodos com comportamentos específicos para as operações abstratas; Utilizam nome em itálico;

PACOTES Em algumas situações se deseja ter uma visão geral das partes do sistema; Para isso, o diagrama de pacotes é a ferramenta indicada; d Pacotes agregam classes e outros pacotes Dependências podem ser inferidas indiretamente; Exemplo: Classe C1 pertence ao pacote P1 Classe C2 pertence ao pacote P2 Classe C1 depende da classe C2 Logo, pacote P1 depende do pacote P2

PACOTES

DIAGRAMA DE CLASSES Regras úteis: 1. Identificar todas as classes participando na solução proposta pelos diagramas de interação; 2. Desenhar as classes num diagrama de classe; 3. Incluir os atributos identificados no modelo conceitual; 4. Adicionar métodos tal como identificados nos diagramas de interação; 5. Adicionar informação sobre o tipo dos atributos e métodos; 6. Adicionar as associações necessária para permitir a visibilidade de atributos requisitada; 7. Adicionar setas de navegabilidade para indicar a direção da visibilidade de atributos; 8. Adicionar relacionamentos de dependência para indicar outros tipos de visibilidade;

POLIMORFISMO O polimorfismo indica o princípio de que o comportamento pode variar com base no tipo real de um objeto; Podemos escrever métodos que recebem instâncias de uma classe C e esses mesmos métodos serão capazes de processar instâncias de qualquer classe que herde da classe C;

MÉTODOS SUBSCRITOS Refere-se a possibilidade de se reescrever a implementação (override) de um método existente em uma superclasse public class Pessoa { protected String nome; protected String endereco; public Pessoa() {... public String getnome() { return nome;

MÉTODOS SUBSCRITOS public class Aluno extends Pessoa { public Aluno() { //se os membros foram declarados como protected super.nome = Algum nome ; super.endereco = Algum endereco ; System.out.println( Construtor de Aluno... ); @override public String getnome() { System.out.println( getnome da sub-classe ); return nome; public void meumetodo(string algo) { System.out.println( Metodo do aluno... + algo);

MÉTODOS SUBSCRITOS public class Empregado extends Pessoa { public Empregado() {... @override public String getnome() { System.out.println( Nome do empregado: + nome); return nome;

MÉTODOS SOBRECARREGADOS Dois métodos de uma mesma classe podem ter o mesmo nome, desde que suas listas de parâmetros sejam diferentes, constituindo assim uma assinatura diferente Tal situação não gera conflito pois o compilador é capaz de detectar qual método deve ser escolhido a partir da análise dos tipos de argumentos do método. public static void setano (ano: integer) {... public static void setano (ano: String) {...