55
Diagrama de Classes

Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Embed Size (px)

Citation preview

Page 1: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Diagrama de Classes

Page 2: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Nome daclasse

Classe

Page 3: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Atributos

Classe

Page 4: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Atributos

Visibilidade

Classe

Page 5: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Atributos

Nome do atributo

Classe

Page 6: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Atributos

Tipo de dados

Classe

Page 7: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Métodos

Classe

Page 8: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Métodos

Visibilidade

Classe

Page 9: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Métodos

Nome do método

Classe

Page 10: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Lista de Métodos

Tipo de dados

Classe

Page 11: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

<?class Pessoa {  private $nome;  private $idade;  private $endereco;  private $cidade;  public function fazAniversario(){    return ++$this->idade;  } }?>

Page 12: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Relacionamentos Associação Agregação Composição Herança Dependência

Page 13: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Associação A associação é quando temos uma relação

entre duas classes onde as classes são suficientemente independentes, ou seja, não se constituem de parte de uma classe maior nem é um tipo mais específico de uma outra classe.

Page 14: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Associação Exemplos:

Um carro é dirigido por um motorista

Uma disciplina é cursada por um aluno

Um morador habita uma casa Uma novela é produzida por um

canal de televisão

A navegação é bi-direcional,porém se pode limitar auma direção.

Page 15: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

ExemploMotorista.class.php

Page 16: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Carro.class.php

Page 17: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

instancia.class.php

Page 18: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Agregação Agregação é um tipo especial de

Associação onde se tenta demonstrar que as informações de um objeto precisam ser complementadas pelas informações contidas em um ou mais objetos de outra Classe.

Page 19: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Agregação Alguns exemplos disso são:

Um Pedido possui Itens Pedidos; Um Carro possui quatro Rodas; Um Livro possui Páginas;

Note que neste tipo de relacionamento, um depende do outro para ter sentido. Por exemplo, como uma bicicleta funcionaria sem duas rodas? Ou, existe um livro sem páginas?

Page 20: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Roda.class.php

Page 21: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Carro.class.php

Page 22: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

instancia.class.php

Existe uma relação de agregação entre Carro e Rodaporque uma roda pode ser trocada de carro.

Page 23: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Composição A Composição é um tipo especial de

Agregação onde se tem um vínculo mais forte entre os objetos.

Page 24: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Composição Exemplo:

um chassi só pode ser usado em um carro (um carro contém um chassi), já uma roda pode ser removida de um carro e ser colocada em outro (agregação)

Page 25: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Roda.class.php

Page 26: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Carro.class.php

Page 27: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

instancia.class.php

Existe uma relação deComposição entre Carroe Chassi, pois um Chassinão pode ser trocado de carro.

Page 28: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Observações Note que a implementação dos três tipos

de relacionamento é igual O que difere é o significado de cada

relacionamento Todo relacionamento gera uma variável na

classe que irá utilizar

Page 29: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Dependência Este relacionamento indica que há uma

relação entre as classes, porém não deve gerar um objeto.

Indicado para: Quando criamos uma instância de classe

dentro de um método

Page 30: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

ArCondicionado.class.php

Page 31: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Carro.class.php

Page 32: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

instancia.class.php

Page 33: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Herança A herança é uma especialização de uma

classe superior, onde se destaca a relação de "é um tipo de".

Page 34: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Herança Exemplos:

Carro esporte e carro conversível são tipos de carro

Acadêmico de graduação é um tipo de acadêmico

Casa e apartamento é um tipo de moradia

Page 35: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Herança Todos os atributos e métodos não privados

da classe pai serão herdados pelas classes filhas.

Nos métodos, a herança pode ser direta ou através da sobrescrita

Quando um método tem uma implementação na classe pai e outra implementação na classe filha

Page 36: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

class Moradia {  private $rua;  private $numero;  private $proprietario;  private function alteraProprietario($p){    $this->proprietario = $p;  }}

Page 37: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

class Casa extends Moradia{  function imprimeEndereco(){    return $this->rua.", casa".$this->numero;  }}

Page 38: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

public class Apartamento extends Moradia {  private $apartamento;  function imprimeEndereco(){    $endereco = $this->rua.",“; $endereco .= $this->numero."/“; $endereco .= $this->apartamento; return $endereco;  }}

Page 39: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Classe Abstrata Não é permitido criar uma instância de uma classe que foi

definida como abstrata. Qualquer classe que contém pelo menos um método

abstrato deve também ser abstrata. Métodos definidos como abstratos simplesmente declaram

a assinatura do método, eles não podem definir a implementação.

Quando uma classe herda uma classe abstrata, todos os métodos marcados como abstratos na declaração da classe-pai devem ser definidos na classe filha; além disso, esses métodos devem ser definidos com a mesma (ou menos restrita) visibilidade. Por exemplo, se um método abstrado é definido como

protected, a implementação da função deve ser definida ou como protected ou public, mas não private.

Page 40: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Classe Abstrata

Page 41: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Final O final define que as classes filhas não

podem sobrescrever um método

Page 42: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Final

Page 43: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Atributos e Métodos Estáticos Declarar membros ou métodos de uma

classe como estáticos faz deles acessíveis sem precisar instanciar a classe.

Um atributo declarados como estático não pode ser acessado com um objeto instanciado da classe (embora métodos estáticos podem).

Page 44: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Atributos e Métodos Estáticos

Exemplo

Page 45: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Interface Interfaces de Objetos permite a criação de código

que especifica quais métodos e variáveis uma classe deve implementar, sem ter que definir como esses métodos serão tratados.

Interfaces são definidas usando a palavra-chave 'interface', da mesma maneira que uma classe comum, mas sem nenhum dos métodos ter seu conteúdo definido.

Todos os métodos declarados em uma interface devem ser public, essa é a natureza de uma interface.

Page 46: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Interface Para implementar uma interface, o operador

implements é usado. Todos os métodos na interface devem ser implementados na classe; não fazer isso resultará em um erro fatal. Classes podem implementar mais de uma interface se assim for desejado, separando cada interface com uma vírgula.

Nota: Uma classe não pode implementar duas interfaces que compartilham o mesmo nome uma vez que isso causaria ambigüidade.

Page 47: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Interface

Exemplo

Relacionamento: Realização

Page 48: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Proteção, Visibilidade ...

+getNome()+setNome()+getCPF()-setCPF()+getNascimento()#setNascimento()

-nome : char-cpf : long-nascimento : Date

Pessoa

PRIVATE

PUBLIC

PROTECTED

Page 49: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Proteção, Visibilidade ...

Revisão de Orientação a ObjetosRevisão de Orientação a Objetos

Programação Orientada a Objetos :: Java

Private Protected Default Public

Métodos da mesma classe Sim Sim Sim Sim

Métodos de classes herdeiras

Não Sim Sim Sim

Métodos de outras classes no mesmo pacote

Não Não Sim Sim

Métodos de outras classes em outro pacote

Não Não Não Sim

Page 50: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Modelo de Classes O diagrama de classes pode ser utilizado

para ilustrar diversas etapas da produção de um sistema.

A medida que o sistema vem sendo desenvolvido o diagrama vai ganhando mais detalhes.

Somente quando o sistema tiver sua implementação finalizada, é que o diagrama de classes poderá ser finalizado.

Page 51: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Níveis de Abstração Diagrama de classes de domínio:

Representa as classes de domínio, independente das tecnologias que serão utilizadas. É feita antes de iniciar a implementação, ajudando na compreensão do problema. Podem ser identificadas as classes e atributos, além dos gets e sets. Os demais métodos podem ser identificados, porém apenas com a implementação se terá maior clareza.

Page 52: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Níveis de Abstração Diagrama de classes de especificação:

É uma continuação do diagrama de classes de domínio, com um maior detalhamento. Já envolve algumas questões da implementação. Podem ser construídas novas classes que darão apoio no desenvolvimento (ex: uma classe para conexão com o banco de dados).

Page 53: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Níveis de Abstração Diagrama de classes de implementação:

É uma extensão do diagrama de classes de especificação. Reflete claramente as características da linguagem de programação que será utilizada.

Page 54: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Associação com Navegabilidade Quando colocamos a navegação,

permitimos compreender como será o comportamento da classe. Exemplo: ao realizarmos uma associação entre

sócio e dependente, sem a navegação não conseguimos saber se em sócio ficará um atributo de dependente, ou se em dependente haverá um atributo de sócio.

Page 55: Diagrama de Classes. Nome da classe Classe Lista de Atributos Classe

Roteiro para Criação de Diagrama de Classes

1. Identificar as classes2. Identificar os relacionamentos3. Definir os atributos4. Incluir um identificador / código5. Colocar os métodos gets e sets6. Colocar os métodos para incluir, alterar,

excluir, listar, buscar7. Definir os demais métodos