Escolar Documentos
Profissional Documentos
Cultura Documentos
POO - Aula Prática 2 - Classes e Objetos - Resolução Ex 1
POO - Aula Prática 2 - Classes e Objetos - Resolução Ex 1
Exercícios
Exercício 1
Resolução Exercício 1
Exercicio 2
Resolução Exercício 2
2/26
Exercícios
1. Uma pessoa possui nome, idade (em anos), altura (em metros) e massa (em
kilogramas). Implemente em Java duas classes, uma que representa a Pessoa, com
seus devidos atríbutos e outra que representa um Grupo de pessoas. A classe Grupo
possui um número fixo de pessoas (fica a seu cargo escolher). Além do mais, a classe
Pessoa deve possuir um método para calcular o IMC (indíce de massa corporal), que é
calculado pela seguinte fórmula:
massa
IMC = (1)
altura2
A classe Grupo também deve possuir um método que exibe as pessoas em ordem
decrescente de IMC.
3/26
Seções
Exercício 1
Resolução Exercício 1
Exercicio 2
Resolução Exercício 2
4/26
Resolução Exercício 1
• Primeiro vamos definir a classe Pessoa;
• Esta terá quatro atributos como descrito no enunciado:
p u b l i c c l a s s Pessoa {
p r i v a t e S t r i n g nome ;
private int idade ;
private float altura ;
p r i v a t e f l o a t massa ;
• Todos os atributos devem possuir seus métodos getters e setters (boas práticas
de programação orientada a objetos):
5/26
Resolução Exercício 1
p u b l i c S t r i n g getNome ( ) {
r e t u r n t h i s . nome ;
}
p u b l i c v o i d setNome ( S t r i n g nome ) {
t h i s . nome = nome ;
}
public f l o a t getAltura () {
return this . altura ;
}
6/26
Resolução Exercício 1
p u b l i c f l o a t getMassa ( ) {
r e t u r n t h i s . massa ;
}
p u b l i c v o i d s e t M a s s a ( f l o a t massa ) {
t h i s . massa = massa ;
}
p r i v a t e P e s s o a [ ] p e s s o a s = new P e s s o a [ 5 ] ;
p r i v a t e i n t numeroPessoas = 0 ;
p u b l i c Grupo ( ) {
• Como o atributo pessoas é um array, seu set recebe um objeto a ser adicionado e
a cada inserção incrementa em um a variável que controla o número de objetos
do array.
8/26
Resolução Exercício 1
i f ( t h i s . numeroPessoas < 5) {
p e s s o a s [ t h i s . numeroPessoas ] = p ;
t h i s . n u m e r o P e s s o a s ++;
9/26
Resolução Exercício 1
p u b l i c void ordena () {
f o r ( i n t i = 0 ; i < 5 ; i ++) {
f o r ( i n t j = i + 1 ; j < 5 ; j ++) {
i f ( th is . pessoas [ j ] . calculaImc () > th is . pessoas [ i ] . calculaImc () ) {
P e s s o a aux = t h i s . p e s s o a s [ j ] ;
th is . pessoas [ j ] = th is . pessoas [ i ] ;
t h i s . p e s s o a s [ i ] = aux ;
}
}
}
}
• Observe que o método não retorna nada, ele apenas altera as posições do vetor.
• Agora para testar, criaremos uma classe Main, e instanciaremos um objeto do
tipo Grupo:
p u b l i c c l a s s Main {
10/26
Resolução Exercício 1
• Criaremos cinco instâncias da classe Pessoa, para adicionar no vetor da Grupo:
P e s s o a p1 = new P e s s o a ( ) ;
p1 . setNome ( " Joao " ) ;
p1 . s e t A l t u r a ( 1 . 7 0 f ) ;
p1 . s e t I d a d e ( 1 9 ) ;
p1 . s e t M a s s a ( 7 0 . 0 f ) ;
P e s s o a p2 = new P e s s o a ( ) ;
p2 . setNome ( " J u l i a " ) ;
p2 . s e t A l t u r a ( 1 . 6 5 f ) ;
p2 . s e t I d a d e ( 1 9 ) ;
p2 . s e t M a s s a ( 6 2 . 5 f ) ;
P e s s o a p3 = new P e s s o a ( ) ;
p3 . setNome ( " Marcos " ) ;
p3 . s e t A l t u r a ( 1 . 7 9 f ) ;
p3 . s e t I d a d e ( 2 0 ) ;
p3 . s e t M a s s a ( 7 5 ) ;
11/26
Resolução Exercício 1
P e s s o a p4 = new P e s s o a ( ) ;
p4 . setNome ( " L u i z a " ) ;
p4 . s e t A l t u r a ( 1 . 6 8 f ) ;
p4 . s e t I d a d e ( 2 0 ) ;
p4 . s e t M a s s a ( 6 5 ) ;
P e s s o a p5 = new P e s s o a ( ) ;
p5 . setNome ( " L e t i c i a " ) ;
p5 . s e t A l t u r a ( 1 . 6 6 f ) ;
p5 . s e t I d a d e ( 2 0 ) ;
p5 . s e t M a s s a ( 6 9 ) ;
12/26
Resolução Exercício 1
}
}
13/26
Seções
Exercício 1
Resolução Exercício 1
Exercicio 2
Resolução Exercício 2
14/26
Exercicio 2
15/26
Exercicio 2
Classe Endereço
Atributos Métodos
rua
numero
bairro gets()/sets()
cidade
estado
cep
Tabela 1: Classe Endereço
16/26
Exercicio 2
Classe Veterinário
Atributos Métodos
nome
salario
Endereço gets()/sets()
Animais[ ]
quantidadeAnimais
Tabela 2: Classe Veterinário: Essa classe possui uma lista (array) de Animais, que representam os
animais atendidos pelo veterinario, a quantidade de itens do array é controlada pelo atributo
quantidadeAnimais. Além de possuir um objeto do tipo Endereço.
17/26
Exercicio 2
Classe Dono
Atributos Métodos
nome
Endereço gets()/sets()
cpf
Tabela 3: Classe Dono: essa classe represeta o dono de um animal. Todo dono possui um objeto do
tipo Endereço.
Classe Animal
Atributos Métodos
nome
Dono
especie gets()/sets()
descricao
18/26
Exercicio 2
Tabela 4: Classe Animal: todo animal possui um dono, uma especie (String) e uma descrição sobre o
animal (também uma String)
Classe SistemaPetShop
Atributos Métodos
cadastrar Veterinario()
mostrar Veterinarios()
Veterinarios[50] cadastrar Endereço do Veterinario()
cadastrar Animal()
mostrar Animais()
quantidadeVeterinarios cadastrarDono()
cadastrar Endereço do Dono()
Tabela 5: Classe SistemaPetShop: abaixo está a descrição completa dos métodos:
19/26
Exercicio 2
20/26
Exercicio 2
• cadastrarAnimal(): esse método deve exibir os veterinarios ja cadastrados e o
usuário deve escolher qual veterinario ele quer cadastrar um novo animal. Após
escolhido o veterinário, é requisitado ao usuário as informações referentes ao
animal: nome, especie e descrição. Após o usuário digitas essas informações, o
animal é cadastrado ao funcionário escolhido e o atributo quantidadeAnimais é
incrementado.
• mostrarAnimais(): esse método deve exibir os veterinarios ja cadastrados e o
usuário deve escolher qual veterinario ele deseja visualizar os animais atendidos
por ele, cada um contendo um número que o identifique (a posição no vetor).
• cadastrarDono(): esse método deve exibir os animais já cadastrados e o usuário
deve escolher qual animal ele deseja cadastrar um dono. Após escolhido o
animal, é requisitado ao usuário as informações referentes ao dono: nome e cpf.
Após digitadas essas informações, o dono é cadastrado ao animal escolhido.
21/26
Exercicio 2
22/26
Seções
Exercício 1
Resolução Exercício 1
Exercicio 2
Resolução Exercício 2
23/26
Resolução Exercício 2
24/26
Referencias
25/26
Duvidas:
Vinicius Takeo Friedrich Kuwaki
vinicius.kuwaki@edu.udesc.br
github.com/takeofriedrich