Buscar

LPI-E2 - Referências entre Objetos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Linguagem de Programação I
Referências entre Objetos
Exercícios
Joinvile Batista Junior
UFGD - LPI-E2 - Joinvile Batista Junior 2
Exemplo 
package util;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Data {
private int dia, mês, ano;
public Data(int dia, int mês, int ano) {
this.dia = dia;
this.mês = mês;
this.ano = ano;
}
public int getDia() {
return dia;
}
2
UFGD - LPI-E2 - Joinvile Batista Junior 3
Exemplo 
public int getMês() {
return mês;
}
public int getAno() {
return ano;
}
public int calcularIdade () {
GregorianCalendar data_atual = new GregorianCalendar();
int dia_atual = data_atual.get(Calendar.DAY_OF_MONTH);
int mês_atual = data_atual.get(Calendar.MONTH) + 1;
// GregorianCalendar: mês varia de 0 a 11
int ano_atual = data_atual.get(Calendar.YEAR);
int idade = ano_atual - ano;
if ((mês_atual < mês) || ((mês_atual == mês) && (dia_atual < dia)))
idade--;
return idade;
}
UFGD - LPI-E2 - Joinvile Batista Junior 4
Exemplo 
public int compareTo(Data data) {
if (ano > data.getAno()) return 1;
if (ano < data.getAno()) return -1;
if (mês > data.getMês()) return 1;
if (mês < data.getMês()) return -1; 
if (dia > data.getDia()) return 1;
if (dia < data.getDia()) return -1; 
return 0;
}
public String toString(){
String data;
if (dia < 10) data = "0" + dia; else data = "" + dia;
if (mês < 10) data += "/0" + mês + "/"; else data += "/" + mês + "/";
return data += ano;
}
}
3
UFGD - LPI-E2 - Joinvile Batista Junior 5
Exemplo 
package entidade;
import util.Data;
public class Aluno {
private String nome, RG, CPF;
private Data dataNascimento;
private char sexo;
private Endereço endereço;
UFGD - LPI-E2 - Joinvile Batista Junior 6
Exemplo 
public Aluno(String nome, String RG, String CPF, Data dataNascimento, char sexo, 
Endereço endereço) {
this.nome = nome;
this.RG = RG;
this.CPF = CPF;
this.dataNascimento = dataNascimento;
this.sexo = sexo;
this.endereço = endereço;
}
public String getNome() {
return nome;
}
public String getRG() {
return RG;
}
4
UFGD - LPI-E2 - Joinvile Batista Junior 7
Exemplo 
public String getCPF() {
return CPF;
}
public Data getDataNascimento() {
return dataNascimento;
}
public char getSexo() {
return sexo;
}
public Endereço getEndereço() {
return endereço;
}
public void setEndereço(Endereço endereço) {
this.endereço = endereço;
}
}
UFGD - LPI-E2 - Joinvile Batista Junior 8
Exemplo 
package entidade;
public class Endereço {
private String logradouro, complemento, bairro, cidade, CEP;
private int número;
public Endereço(String logradouro, int número, String complemento,
String bairro, String cidade, String CEP) {
this.logradouro = logradouro;
this.número = número;
this.complemento = complemento;
this.bairro = bairro;
this.cidade = cidade;
this.CEP = CEP;
}
5
UFGD - LPI-E2 - Joinvile Batista Junior 9
Exemplo 
public String getLogradouro() {
return logradouro;
}
public void setLogradouro(String logradouro) {
this.logradouro = logradouro;
}
public int getNúmero() {
return número;
}
public void setNúmero(int número) {
this.número = número;
}
public String getComplemento() {
return complemento;
}
UFGD - LPI-E2 - Joinvile Batista Junior 10
Exemplo 
public void setComplemento(String complemento) {
this.complemento = complemento;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
6
UFGD - LPI-E2 - Joinvile Batista Junior 11
Exemplo 
public String getCEP() {
return CEP;
}
public void setCEP(String CEP) {
this.CEP = CEP;
}
}
UFGD - LPI-E2 - Joinvile Batista Junior 12
Exemplo 
package entidade;
import java.util.ArrayList;
public class Curso {
private String título;
private int cargaHoráriaSemanal, duraçãoSemanas;
private ArrayList<Curso> préRequisitos = new ArrayList<Curso>();
public Curso(String título, int cargaHoráriaSemanal, int duraçãoSemanas) {
this.título = título;
this.cargaHoráriaSemanal = cargaHoráriaSemanal;
this.duraçãoSemanas = duraçãoSemanas;
}
7
UFGD - LPI-E2 - Joinvile Batista Junior 13
Exemplo 
public String getTítulo() {
return título;
}
public int getCargaHoráriaSemanal() {
return cargaHoráriaSemanal;
}
public int getDuraçãoSemanas() {
return duraçãoSemanas;
}
public ArrayList<Curso> getPréRequisitos() {
return préRequisitos;
}
UFGD - LPI-E2 - Joinvile Batista Junior 14
Exemplo 
public boolean inserirPréRequisito(Curso curso) {
if (!préRequisitos.contains(curso)) {
préRequisitos.add(curso);
return true;
} else return false;
}
public boolean removerPréRequisito(Curso curso) {
return préRequisitos.remove(curso);
}
}
8
UFGD - LPI-E2 - Joinvile Batista Junior 15
Exemplo 
package entidade;
import util.Data;
public class Matrícula {
public enum Bolsa {completa, parcial, nenhuma};
private Aluno aluno;
private Curso curso;
private Bolsa bolsa;
private Data dataInício;
private float notaFinal;
public Matrícula(Aluno aluno, Curso curso, Bolsa bolsa,
Data dataInício) {
this.aluno = aluno;
this.curso = curso;
this.bolsa = bolsa;
this.dataInício = dataInício;
}
UFGD - LPI-E2 - Joinvile Batista Junior 16
Exemplo 
public Aluno getAluno() {
return aluno;
}
public Curso getCurso() {
return curso;
}
public Bolsa getBolsa() {
return bolsa;
}
public Data getDataInício() {
return dataInício;
}
9
UFGD - LPI-E2 - Joinvile Batista Junior 17
Exemplo 
public float getNotaFinal() {
return notaFinal;
}
public void setNotaFinal(float notaFinal) {
this.notaFinal = notaFinal;
}
}
UFGD - LPI-E2 - Joinvile Batista Junior 18
Exemplo 
package controle;
import entidade.Aluno;
import entidade.Curso;
import entidade.Endereço;
import entidade.Matrícula;
import java.util.ArrayList;
import java.util.HashMap;
import util.Data;
public class EscolaInformática {
private static HashMap<String, Curso> cursos = new HashMap();
// indexação pelo título
private static HashMap<String, Aluno> alunos = new HashMap();
// indexação pelo CPF
private static ArrayList<Matrícula> matrículas = new ArrayList();
10
UFGD - LPI-E2 - Joinvile Batista Junior 19
Exemplo 
public static void main(String[] args) {
cadastrarCursos();
cadastrarAlunos();
cadastrarMatrículas();
imprimirMatrículas(matrículas);
}
private static void inserirCurso (Curso curso) {
if (!cursos.containsValue(curso)) cursos.put(curso.getTítulo(), curso);
else System.out.println("Curso já cadastrado");
}
private static void inserirAluno (Aluno aluno) {
if (!alunos.containsValue(aluno)) alunos.put(aluno.getCPF(), aluno);
else System.out.println("Aluno já cadastrado");
}
UFGD - LPI-E2 - Joinvile Batista Junior 20
Exemplo 
private static void inserirMatrícula(String CPF_aluno, String título_curso,
Matrícula.Bolsa bolsa, Data data_início) {
Aluno aluno = alunos.get(CPF_aluno);
Curso curso = cursos.get(título_curso);
if (aluno == null) {
System.out.println("Matrícula mal sucedida: aluno não cadastrado");
return;
}
if (curso == null) {
System.out.println("Matrícula mal sucedida: curso não cadastrado");
return;
}
matrículas.add(new Matrícula(aluno, curso, bolsa, data_início));
}
11
UFGD - LPI-E2 - Joinvile Batista Junior 21
Exemplo 
private static void cadastrarCursos() {
inserirCurso(new Curso("Java Básico", 8, 10));
inserirCurso(new Curso("Java Aplicações Locais", 8, 10));
inserirCurso(new Curso("Java Aplicações Web", 8, 10));
inserirCurso(new Curso("Banco de Dados Básico", 8, 8));
inserirCurso(newCurso("Banco de Dados Avançado", 8, 8));
Curso curso1 = cursos.get("Java Básico");
Curso curso2 = cursos.get("Java Aplicações Locais");
Curso curso3 = cursos.get("Java Aplicações Web");
Curso curso4 = cursos.get("Banco de Dados Básico");
Curso curso5 = cursos.get("Banco de Dados Avançado");
curso2.inserirPréRequisito(curso1);
curso2.inserirPréRequisito(curso4);
curso3.inserirPréRequisito(curso2);
curso5.inserirPréRequisito(curso4);
}
UFGD - LPI-E2 - Joinvile Batista Junior 22
Exemplo 
private static void cadastrarAlunos() {
inserirAluno(new Aluno("Ana Julia Parra", "31.845.917",
"212.234.571-32", new Data(15, 10, 1982), 'F',
new Endereço("Rua Arco Verde", 171, "apto 301", "Água Boa",
"Dourados", "79810-015")));
inserirAluno(new Aluno("Ana Ligia Silveira", "32.870.923",
"312.434.775-30", new Data(8, 8, 1985), 'F',
new Endereço("Rua Chapéu Velho", 303, "", "Rouxinol",
"Dourados", "79820-017"))); 
inserirAluno(new Aluno("André Oliveira", "41.825.341",
"531.331.740-71", new Data(20, 3, 1993), 'M',
new Endereço("Rua Sino da Mata", 303, "", "Brejão",
"Carapó", "733100-000"))); 
}
12
UFGD - LPI-E2 - Joinvile Batista Junior 23
Exemplo 
public static void cadastrarMatrículas() {
inserirMatrícula("212.234.571-32", "Java Básico",
Matrícula.Bolsa.completa, new Data(1, 3, 2013));
inserirMatrícula("312.434.775-30", "Java Básico",
Matrícula.Bolsa.parcial, new Data(1, 3, 2013)); 
inserirMatrícula("212.234.571-32", "Java Aplicações Locais",
Matrícula.Bolsa.parcial, new Data(1, 6, 2013));
inserirMatrícula("312.434.775-30", "Java Aplicações Locais",
Matrícula.Bolsa.nenhuma, new Data(1, 6, 2013)); 
inserirMatrícula("212.234.571-32", "Java Aplicações Web",
Matrícula.Bolsa.parcial, new Data(1, 9, 2013)); 
inserirMatrícula("312.434.775-30", "Java Aplicações Web",
Matrícula.Bolsa.nenhuma, new Data(1, 9, 2013));
inserirMatrícula("212.234.571-32", "Banco de Dados Básico",
Matrícula.Bolsa.nenhuma, new Data(1, 3, 2013));
inserirMatrícula("312.434.775-30", "Banco de Dados Básico",
Matrícula.Bolsa.nenhuma, new Data(1, 3, 2013)); 
inserirMatrícula("531.331.740-71", "Banco de Dados Básico",
Matrícula.Bolsa.nenhuma, new Data(1, 3, 2013)); 
inserirMatrícula("212.234.571-32", "Banco de Dados Avançado",
Matrícula.Bolsa.nenhuma, new Data(1, 6, 2013)); 
inserirMatrícula("531.331.740-71", "Banco de Dados Avançado",
Matrícula.Bolsa.nenhuma, new Data(1, 6, 2013)); 
}
UFGD - LPI-E2 - Joinvile Batista Junior 24
Exemplo 
private static void imprimirMatrículas(ArrayList<Matrícula> matrículas) {
String info;
for (Matrícula matrícula : matrículas) {
info = "Matrícula em " + matrícula.getDataInício().toString();
Matrícula.Bolsa bolsa = matrícula.getBolsa();
if (bolsa == Matrícula.Bolsa.nenhuma) info += " -- sem bolsa";
else info +=" -- com bolsa " + matrícula.getBolsa();
Aluno aluno = matrícula.getAluno();
if (aluno.getSexo() == 'F') info += "\n-- aluna: ";
else info += "\n-- aluno: ";
info += aluno.getNome()
+ " -- com " + aluno.getDataNascimento().calcularIdade()
+ " anos -- residente em " + aluno.getEndereço().getCidade();
Curso curso = matrícula.getCurso();
info += "\n-- curso: " + curso.getTítulo()
+ " -- com " + curso.getCargaHoráriaSemanal()
+ " horas semanais -- em " + curso.getDuraçãoSemanas()
+ " semanas";
System.out.println(info);
}
}
}
13
UFGD - LPI-E2 - Joinvile Batista Junior 25
Lista de Exercícios
2.1 – Adapte o exemplo:
a) acrescentando, na classe EscolaInformática, o método void 
imprimirAlunos() para imprimir, para cada aluno, todos os dados do 
aluno, bem como os dados do endereço do aluno.;
b) alterando o método main para chamar a impressão de alunos.
2.2 – Adapte o exemplo:
a) acrescentando, na classe EscolaInformática, o método void 
imprimirCursos() para imprimir, para cada curso, todos os dados do 
curso, bem como os títulos dos prérequisitos do curso;
b) alterando o método main para chamar a impressão de cursos.
UFGD - LPI-E2 - Joinvile Batista Junior 26
Lista de Exercícios
2.3 – Adapte o exemplo:
a) criando o método ArrayList<Matrícula> selecionarMatrículas(), para 
imprimir os filtros de pesquisa e comandar a filtragem das matrículas;
b) criando o método ArrayList<Matrícula> filtrarMatrículas(int 
idade_mínima_aluno, String cidade_aluno, boolean 
curso_sem_prérequisitos, int mínimo_semanas_curso, Matrícula.Bolsa 
bolsa_matrícula);
c) acrescente no método main: a chamada da seleção de matrículas e a 
impressão das matrículas selecionadas.
2.4 – Adapte o exercício 2.3:
a) para aceitar filtros opcionais, representados por: objetos e 
enumerados nulos, inteiros negativos e booleanos substituídos por 
caracter para expressar: true (‘T’), false (‘F’) ou qualquer (‘X’);
b) o método deve aceitar qualquer combinação de filtros opcionais ou 
obrigatórios.
14
UFGD - LPI-E2 - Joinvile Batista Junior 27
Lista de Exercícios
2.5 – Adapte o exemplo:
a) substituindo as classes Aluno, Curso e Matrícula por Cliente (nome, 
CPF, CNPJ, email, endereço), Produto (descrição, tipo 
[eletrodoméstico, eletrônico, roupa]) e Venda (cliente, produto, data, 
entrega rápida [sim, não]); 
b) substituindo os filtros de impressão por: cidade do cliente, tipo do 
produto, entrega rápida da venda;
c) substituindo a classe EscolaInformática por VendaProdutos.
2.6 – Adapte o exemplo:
a) substituindo as entidades por classes de sua escolha, utilizando pelo 
menos: um dado do tipo enumerado e um dado booleano;
b) e definindo os filtros que julgar necessário, incluido pelo menos um 
filtro booleano e um enumerado.
UFGD - LPI-E2 - Joinvile Batista Junior 28
Lista de Exercícios
2.7 – Adapte o exemplo:
a) para ordenar as matrículas por nome de alunos;
b) e para cada nome de aluno, por data decrescente de matrícula.
2.8 – Adapte o exemplo:
a) divida o método cadastrarMatrículas em 3 métodos que cadastram as 
matrículas na mesma data: março, junho e setembro;
b) implemente 3 métodos void atribuirNotas() na classe 
EscolaInformática, atribuindo notas aprovadas (>= 7) e reprovadas;
c) execute o respectivo atribuirNotas(), com as notas associadas às 
disciplinas concluídas, após cada cadastramento de matrícula;
d) altere o método inserirMatrícula para aceitar somente matrículas de 
alunos que tenham sido aprovados nos pré-requisitos.

Outros materiais