Download - RELACIONAMENTO DE OBJETOS
![Page 1: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/1.jpg)
PROGRAMAÇÃO I
Prof. Dr. Daniel Caetano
2017 - 1
RELACIONAMENTO DE OBJETOS
![Page 2: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/2.jpg)
Objetivos
• Compreender os diferentes tipos de relacionamento entre objetos
• Implementar os diferentes tipos de relacionamentos
![Page 3: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/3.jpg)
Material de Estudo
Material Acesso ao Material
Apresentação http://www.caetano.eng.br/ (Programação I – Aula 8)
Material Didático Programação I –Págs 70 a 74
![Page 4: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/4.jpg)
RELACIONAMENTOS DE OBJETOS
![Page 5: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/5.jpg)
Relacionamentos
• O que existe entre:
– Motor e carro
– Turma e aluno
– Funcionário e computador
• Relações
– O motor é parte do carro
– O aluno é parte da turma
– O funcionário usa o computador
![Page 6: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/6.jpg)
Relacionamento de Objetos
• Existem três tipos de relações
– Agregação: Carro → Lista de Carros em Oferta
• Parte existe sem o todo (posso ter carros sem lista)
• O mesmo carro pode estar em várias listas
– Composição: Motor → Carro (venda de veículos)
• Parte não existe sem o todo (motor sem carro?)
• Um motor não pode estar em mais de um carro
– Uso: Motorista → Carro
• Um objeto não é parte de outro, mas o usa
![Page 7: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/7.jpg)
Relacionamento de Objetos
• Representação: Agregação, Composição e Uso
Nota: o que é composição em um sistema, pode ser agregação em outro!
Ex.: Concessionária / Venda de Autopeças
![Page 8: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/8.jpg)
Relacionamento de Objetos
• Programando Composição
public class Motor {
private float cilindrada;
}
public class Carro {
private Motor motor;
}
![Page 9: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/9.jpg)
Relacionamento de Objetos
• Programando Agregação
public class Carro {
private Motor motor;
}
public class ListaDeCarros {
private Carro[] carros;
}
![Page 10: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/10.jpg)
Relacionamento de Objetos • Programando Uso
public class Carro {
private Motor motor;
}
public class Motorista {
public void dirige(Carro carro) {
carro.acelera();
}
}
![Page 11: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/11.jpg)
PROGRAMANDO ASSOCIAÇÕES
![Page 12: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/12.jpg)
Exemplo de Associação Simples
• Projeto: Humano
• Classe Pessoa
• Classe Cabeca
![Page 13: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/13.jpg)
Exercício 1
• Projeto: Humano
• Classe Braco
![Page 14: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/14.jpg)
Exercício 2
• Projeto: Humano
• Classe Perna
![Page 15: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/15.jpg)
Exemplo de Associação
• Projeto: Dirigindo
• Classe Motor
– float cilindrada
– Método: getVelocidade()
• Cilindrada até 1.0 → 140km/h
• Cilindrada acima de 1.0 a 1.6 → 180km/h
• Cilindrada acima de 1.6 a 2.0 → 220km/h
• Cilindrada Acima de 2.0 → 260km/h
![Page 16: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/16.jpg)
Exemplo de Associação
• Projeto: Dirigindo
• Classe Carro
– String modelo
– Motor motor
– Método: acelera()
![Page 17: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/17.jpg)
Exercício 3
• Projeto: Dirigindo
• Classe Dirigindo, main:
– Criar um novo carro
– Imprimir esse carro
![Page 18: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/18.jpg)
Exercício 4
• Projeto: Dirigindo
• Classe Motorista
– String cnh
– Método: dirige(Carro) → executa acelera()
![Page 19: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/19.jpg)
Exercício 5
• Projeto: Dirigindo
• Classe Dirigindo, main:
– Criar um novo carro
– Imprimir esse carro
– Criar um motorista
– Faça-o dirigir o carro
![Page 20: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/20.jpg)
Exemplo de Associação
• Projeto: Familia
• Classe Pessoa
– String nome
– Pessoa pai
– Pessoa mae
– toString()
• Imprimir nome da pessoa
• Nome do pai (se não for null)
• Nome da mãe (se não for null)
![Page 21: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/21.jpg)
PERGUNTAS?
![Page 22: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/22.jpg)
PARTE PRÁTICA
![Page 23: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/23.jpg)
Experimentando
• Abra o projeto Turma
• Crie a classe Disciplina
![Page 24: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/24.jpg)
Exercício
• No projeto Turma, classe Disciplina
• Faça o toString imprimir nome, média e alunos acima da média
![Page 25: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/25.jpg)
Exercício
• No projeto Turma, classe Turma
– Altere o código para usar a classe Disciplina
– (O nome do curso deve ser substituído pelo nome da disciplina)
![Page 26: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/26.jpg)
Avançando no CadProd
• Abra o projeto CadProd.
• Crie uma classe chamada ListaDeProdutos
– Construtor: número máximo de produtos
– adiciona(Produto p): adiciona um produto à lista
• Retorna true se ok, false caso contrário
– listarProdutos: imprime a lista de produtos
• Faça com que o programa principal use essa lista de produtos
![Page 27: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/27.jpg)
PROJETO / ATIVIDADE
![Page 28: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/28.jpg)
Projeto / Atividade
• Objetivo: criar cadastro de clientes simples
• Quem: Duplas especificadas
• A segunda entrega será 05/06
– Listagem de clientes
– Busca de clientes
– Edição de clientes
![Page 29: RELACIONAMENTO DE OBJETOS](https://reader031.vdocuments.com.br/reader031/viewer/2022012412/616bcf705d88b53bfa349601/html5/thumbnails/29.jpg)
Projeto / Atividade • Hoje: Implementar a classe ListaDeClientes
– Nos mesmos moldes da CadProd