Diagrama de Classes
Nome daclasse
Classe
Lista de Atributos
Classe
Lista de Atributos
Visibilidade
Classe
Lista de Atributos
Nome do atributo
Classe
Lista de Atributos
Tipo de dados
Classe
Lista de Métodos
Classe
Lista de Métodos
Visibilidade
Classe
Lista de Métodos
Nome do método
Classe
Lista de Métodos
Tipo de dados
Classe
<?class Pessoa { private $nome; private $idade; private $endereco; private $cidade; public function fazAniversario(){ return ++$this->idade; } }?>
Relacionamentos Associação Agregação Composição Herança Dependência
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.
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.
ExemploMotorista.class.php
Carro.class.php
instancia.class.php
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.
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?
Roda.class.php
Carro.class.php
instancia.class.php
Existe uma relação de agregação entre Carro e Rodaporque uma roda pode ser trocada de carro.
Composição A Composição é um tipo especial de
Agregação onde se tem um vínculo mais forte entre os objetos.
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)
Roda.class.php
Carro.class.php
instancia.class.php
Existe uma relação deComposição entre Carroe Chassi, pois um Chassinão pode ser trocado de carro.
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
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
ArCondicionado.class.php
Carro.class.php
instancia.class.php
Herança A herança é uma especialização de uma
classe superior, onde se destaca a relação de "é um tipo de".
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
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
class Moradia { private $rua; private $numero; private $proprietario; private function alteraProprietario($p){ $this->proprietario = $p; }}
class Casa extends Moradia{ function imprimeEndereco(){ return $this->rua.", casa".$this->numero; }}
public class Apartamento extends Moradia { private $apartamento; function imprimeEndereco(){ $endereco = $this->rua.",“; $endereco .= $this->numero."/“; $endereco .= $this->apartamento; return $endereco; }}
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.
Classe Abstrata
Final O final define que as classes filhas não
podem sobrescrever um método
Final
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).
Atributos e Métodos Estáticos
Exemplo
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.
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.
Interface
Exemplo
Relacionamento: Realização
Proteção, Visibilidade ...
+getNome()+setNome()+getCPF()-setCPF()+getNascimento()#setNascimento()
-nome : char-cpf : long-nascimento : Date
Pessoa
PRIVATE
PUBLIC
PROTECTED
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
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.
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.
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).
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.
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.
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
Top Related