Linguagem de Programação Diagrama de classes Joyce França Professora de Ciência da Computação - IFNMG
2 Agenda Diagrama de classes Herança Associação Agregação Exercícios
3 Diagrama de classes Mostra um conjunto de classes e seus relacionamentos. É o diagrama central da modelagem orientada a objetos.
4 Diagrama de classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização
5 Diagrama de classes Classes Graficamente, as classes são representadas por retângulos incluindo nome, atributos e métodos Devem receber nomes de acordo com o vocabulário do domínio do problema. É comum adotar um padrão para nomeá-las Ex: todos os nomes de classes serão substantivos singulares com a primeira letra maiúscula.
6 Diagrama de classes Classes Atributos Representam o conjunto de características (estado) dos objetos daquela classe Visibilidade: + público: visível em qualquer classe de qualquer pacote # protegido: visível para classes do mesmo pacote - privado: visível somente para classe Exemplo: + nome : String
7 Diagrama de classes Classes Métodos Representam o conjunto de operações (comportamento) que a classe fornece Visibilidade: + público: visível em qualquer classe de qualquer pacote # protegido: visível para classes do mesmo pacote - privado: visível somente para classe Exemplo: + getnome() : String
8 Diagrama de classes Elementos de um diagrama de classes Classes Relacionamentos Associação Agregação Composição Generalização
9 Diagrama de classes Relacionamentos Os relacionamentos possuem: Nome: descrição dada ao relacionamento (faz, tem, possui,...) Sentido de leitura Navegabilidade: indicada por uma seta no fim do relacionamento Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7 Tipo: associação,agregação, composição e generalização Papéis: desempenhados por classes em um relacionamento
10 Diagrama de classes Relacionamentos
11 Diagrama de classes Relacionamentos: Associação Uma associação é um relacionamento estrutural que indica que os objetos de uma classe estão vinculados a objetos de outra classe. Uma associação é representada por uma linha sólida conectando duas classes.
12 Diagrama de classes Relacionamentos: Associação Indicadores de multiplicidade: 1 Exatamente um 1..* Um ou mais 0..* Zero ou mais (muitos) * Zero ou mais (muitos) 0..1 Zero ou um m..n Faixa de valores (por exemplo: 4..7)
13 Diagrama de classes Relacionamentos: Associação
14 Diagrama de classes Relacionamento: Agregação É um tipo especial de associação Utilizada para indicar todo-parte um objeto parte pode fazer parte de vários objetos todo
15 Diagrama de classes Relacionamento: Composição É uma variante semanticamente mais forte da agregação Os objetos parte só podem pertencer a um único objeto todo e têm o seu tempo de vida coincidente com o dele
16 Diagrama de classes Relacionamento: Generalização É um relacionamento entre itens gerais (superclasses) e itens mais específicos (subclasses)
Diagrama de classes 17
18 Diagrama de classes Exemplo
Diagrama de classes X código Java 19 Exemplo2
20 Herança Capacidade de reutilização de software. Cria uma nova classe a partir de uma classe existente: absorvendo os dados e comportamentos da classe existente; e aprimorando-a com novas capacidades. A subclasse estende a superclasse. Subclasse: Grupo mais especializado de objetos. Comportamentos herdados da superclasse: Podem se personalizar. Comportamentos adicionais.
Hierarquia de classes 21 Superclasse direta: Herdada explicitamente (um nível acima na hierarquia). Superclasse indireta: Herdada de dois ou mais níveis acima na hierarquia. Herança única: Herda de uma superclasse. Herança múltipla: Herda de múltiplas superclasses. O Java não suporta herança múltipla.
Superclasses e subclasses 22 Superclasses e subclasses. Freqüentemente, um objeto de uma classe também é um objeto de uma outra classe. Exemplo: Em geometria, um retângulo é um quadrilátero. A classe Retângulo herda da classe Quadrilátero. Quadrilátero : superclasse. Retângulo : subclasse. A superclasse em geral representa um conjunto maior de objetos do que as subclasses. Exemplo: Superclasse: Veículo Carros, caminhões, barcos, bicicletas Subclasse: Carro Subconjunto mais específico e menor de veículos.
Superclasses e subclasses 23
24 Exemplos de herança Superclasse Aluno Forma Subclasses AlunoDeGraduação, AlunoDePósGraduação Círculo, Triângulo, Retângulo Financiamento FinanciamentoDeCarro, FinanciamentoDeReformaDaCasa, FinanciamentoDeCasa Empregado CorpoDocente, Funcionários ContaBancária ContaCorrente, ContaDePoupança
Superclasses e subclasses 25 Hierarquia de herança: Relacionamentos de herança: estrutura de hierarquia do tipo árvore. Cada classe torna-se: Superclasse: que fornece membros a outras classes. OU Subclasse: que herda membros de outras classes.
Hierarquia de herança Membros Da Comunidade da universidadeo 26
Hierarquia de herança para Forma 27
Membros protected 28 Acesso protected: Nível intermediário de proteção entre public e private. Membros protected acessíveis pelos: membros da superclasse; membros da subclasse; e membros da classe no mesmo pacote. Acesso da subclasse ao membro da superclasse: Palavra-chave super e um ponto (.)
Herança - Exemplo
Herança - Exemplo
Herança - Exemplo
32 Como implementar herança em java? Exemplo: public class Pessoa{ String nome; int idade; } public class Aluno extends Pessoa{ String curso; } public class Professor extends Pessoa{ String formacao; }
33 Exercícios 1. Crie a classe Pessoa, Professor e Aluno e utilize o conceito de herança. Crie uma classe para Teste que contenha um método main, crie objetos do tipo Professor e Aluno, e imprima os valores de cada objeto criado.
Herança exemplo 2 34
35 Herança exemplo 2 class Funcionario { String nome; String registro; public void setnome(string n) { nome = n; } public void setregistro(string r) { registro = r; } public String getnome() { return nome; } } public String getregistro() { return registro; }
36 Herança exemplo 2 class FuncionarioHorista extends Funcionario { private double valorhora; private double horasmensais; // Métodos de acesso para os // dois (2) atributos. } // Método para calcular o salário. class FuncionarioMensalista extends Funcionario { private String cargo; // Métodos de acesso para o // atributo cargo. } // Método para calcular o salário.
37 Herança exemplo 2 public class Principal { } public static void main(string[] a) { } FuncionarioHorista fh = new FuncionarioHorista(); fh.setregistro( 1234 ); fh.setnome( João ); fh.sethorasmensais(25); fh.setvalorhora(100); System.out.println( O salário é igual a + fh.calcularsalario());