Baixe o app para aproveitar ainda mais
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.
Compartilhar