Java - Julio Cesar Nardi

Propaganda
Orientação a Objetos
com Java
Julio Cesar Nardi
[email protected]
2011/2
Aula 05:
Relacionamentos e
Herança

Objetivos:
Compreender como Classes e Objetos podem
se relacionar através de:


Associação, Composição e Herança;
Utilizar os conceitos de OO aprendidos em
aplicações Java;

Agenda
Conceitos OO




Objeto, Classe, Atributo, Método, Associação,
Composição, Herança
Abstração, Encapsulamento, Modularidade,
Hierarquia, Reuso
Sobrecarga, Polimorfismo, Ligação Dinâmica
OO em Java


Classes, Atributos, Métodos, Construtores, Objetos
Extensão, Associações, Classes Abstratas
OO e Java
OO: Estruturação de Classes

Classes e Objetos podem estar estruturados de
diferentes formas:

Associações e Ligações

Composição

Herança
OO e Java
Associações e Ligações

Objetos relacionam-se com outros objetos

Ligação é uma conexão entre objetos

Associação é uma conexão entre classes

Uma associação descreve um conjunto de
potenciais ligações

Associação é uma conexão do tipo “tem-um” ou
“tem-vários”
Disciplina
0..*
1
Professor
OO e Java
Composição

Relacionamento do tipo “todo-parte” ou
“uma-parte-de”;

É utilizada na manipulação de objetos complexos,
compostos por outros objetos;

Tipo forte de associação.
Membro
*
1
Pessoa
OO e Java
Herança

Herança é um mecanismo para modelar
similaridades entre classes

Possibilita reutilização, captura de características
comuns e definição incremental de classes

Facilita a modificação de modelos

Alguns objetos não se enquadram adequadamente
em uma classe porque possuem propriedades a mais
ou diferentes, que precisam ser acrescentadas ou
redefinidas
OO e Java
Herança (2)

Subclasses herdam de superclasses,
compartilhando suas propriedades e comportamentos

Relacionamento do tipo “é-um”
Automóvel
Mamífero
Carro
Macaco
OO e Java
OO: Estruturação de Classes

Associação: “tem-um”


Composição: “todo-parte”, “uma-parte-de”


Farol é uma parte de um veículo
Herança: “é-um”


Disciplina tem um Professor
Carro é um Automóvel
Estruturação

O Motor é uma Peça, que é uma parte de um Carro, que
tem várias Válvulas.
OO e Java
Java: Estruturação de Classes

Associações

Em Java, associações podem ser implementadas
através de atributos ou métodos, ou ambos.
Conta
numero
saldo
Cliente
0..*
Conta
numero : int
saldo : double
cliente : Client e
1
nome
cpf
Cliente
nome : String
cpf : long
obterCliente()
atribuirCliente()
OO e Java
Java: Estruturação de Classes

Composição

Composições são como associações com maior
dependência

São implementadas da mesma forma
OO e Java
Java: Estruturação de Classes

Herança

Uma classe indica de herda (ou estende) de uma
outra através da palavra-chave extends.

Dessa forma, a subclasse (ou classe filha) recebe
todos os atributos e métodos da superclasse (ou
classe mãe)

A subclasse pode ainda acrescentar outros atributos e
métodos, ou modificar os métodos existentes.

Exemplo:

public class Carro extends Automóvel {...}
OO e Java
Java: Estruturação de Classes

Herança

Métodos podem ser redefinidos, ou “sobreescritos” na
subclasse;

Métodos abstratos podem/devem ser implementados;

A Herança pode ser feita em quantos níveis forem
necessários;

Todas as classes de Java, implicitamente, herdam de
Object.
OO e Java
Polimorfismo

Polimorfismo é a possibilidade de um objeto
assumir várias formas em tempo de execução.

Aumenta ainda mais a capacidade de abstração para
construção de softwares mais modulares e
reutilizáveis.

Característica OO na qual se admite tratamento
idêntico para objetos ‘diferentes’ baseado em
relações de semelhança;

Ou seja, onde um objeto de uma classe base é
esperado, pode-se aceitar um objeto de qualquer
uma de suas subclasses.

É utilizado o tempo todo por Coleções
OO e Java
Conceitos OO

Abstração

Encapsulamento

Modularidade

Hierarquia

Reuso
OO e Java
Exercícios (1)

Implemente as classes para o contexto:
 Um aluno (nome, endereço) matricula-se em
uma Turma (nome, número de vagas) que tem
um professor (nome, endereço) alocado a ela.

Implemente os relacionamentos entre as classes;

Crie os métodos de encapsulamento de atributos
(get e set) em cada uma das classes;

Crie uma aplicação que crie 3 alunos, 2 turmas e
2 professores e estabeleça os relacionamentos
entre eles.
Lembre-se que ainda não vimos como utilizar coleções em Java.
OO e Java
Exercícios (2)

Implemente as classes para o contexto:

Numa empresa tem-se três tipos de funcionários:
(1) Secretario (nome, salario), (2) Engenheiro
(nome, CREA, salario) e (3) Motorista (nome, tipo
de habilitação, salario).

Crie um método para os funcionários que tem o objetivo
de atualizar o salário de cada funcionário, a saber:
secretário (10%), engenheiro (20%), motorista (10%).

Crie uma aplicação que crie 2 objetos secretários, 2
engenheiros e 2 motoristas e exiba alguns dados destes
objetos e atualize seus salários ao chamar o método do
item anterior.
OO e Java
Exercícios (3)

Tente utilizar Funcionário como classe abstrata;

Tente criar um objeto da classe Funcionário;

E se os atributos da classe Funcionário fossem
protected, o que mudaria? Isso é uma boa
prática?

Como o polimorfismo poderia ser aplicado
neste exemplo?
OO e Java
Aula 05:
Relacionamentos e Herança

Objetivos:
Compreender como Classes e Objetos podem
se relacionar através de:


Associação, Composição e Herança;
Utilizar os conceitos de OO aprendidos em
aplicações Java;

Download