Java Básico Matrícula de Alunos Marco Antonio, Arquiteto de Software TJDF ma@marcoreis.eti.br Novembro/2005
Objetivos OO: trocar mensagens entre os objetos Exception: tratar exceções Análise: implementar especificações do usuário Abstração: dado um problema complexo, abstraí-lo em pequenos módulos Revisão: utilizar todos os mecanismos vistos até o momento
Descrição do processo O aluno escolhe uma disciplina que deseja cursar A secretária da escola efetua a matrícula Quando cinco alunos se matricularem para uma disciplina, a escola abre uma turma Com menos de cinco alunos a turma deve estar fechada e essa informação deve ser passada ao usuário O número máximo de alunos em cada turma é trinta
O Aluno package com.javabasico.matriculadealuno; public class Aluno { private String matricula; private String nome; private String endereco; private String telefone; //Utilize o generate getters and setters quando possível
A Disciplina package com.javabasico.matriculadealuno; public class Disciplina { private String nome; private int cargahoraria;
A Turma package com.javabasico.matriculadealuno; public class Turma { /* * As quantidades não precisam de métodos de acesso (set/get) * porque seus valores não serão alterados por outras classes * * */ private int quantidademaximadealunos = 30; private int quantidadeatualdealunos = 0; public void adicionar(aluno alunonaturma, Disciplina disciplinaescolhida) { System.out.println("O aluno " + alunonaturma.getnome() + " foi matriculado na disciplina " + disciplinaescolhida.getnome()); quantidadeatualdealunos++;
A Secretaria package com.javabasico.matriculadealuno; public class Secretaria { public void matricular(aluno alunomatriculado, Disciplina disciplinaescolhida, Turma novaturma) { novaturma.adicionar(alunomatriculado, disciplinaescolhida, novaturma);
TelaDeMatriculaDeAluno package com.javabasico.matriculadealuno; public class TelaDeMatriculaDeAluno { public static void main(string[] args) { Aluno jose = new Aluno(); jose.setnome("jose Carlos"); Disciplina matematica = new Disciplina(); matematica.setnome("matemática"); Secretaria maria = new Secretaria(); Turma primeirosemestre2006 = new Turma(); maria.matricular(jose, matematica, primeirosemestre2006);
TelaDeMatriculaComLoop package com.javabasico.matriculadealuno; public class TelaDeMatriculaComLoop { public static void main(string[] args) { Secretaria maria = new Secretaria(); Disciplina matematica = new Disciplina(); matematica.setnome("matemática"); Turma primeirosemestre2006 = new Turma(); for (int i = 1; i < 40; i++) { Aluno jose = new Aluno(); jose.setnome("jose Carlos " + i); maria.matricular(jose, matematica, primeirosemestre2006);
Definindo novos critérios Quais restrições ainda não foram implementadas? Limite máximo de alunos Limite mínimo de alunos Informação de turma aberta/fechada
Estratégia Antes de prosseguir, relembre quais o três passos para tratar exceções Lembre-se: o desenvolvimento em Java é feito sempre por partes Nos slides seguintes estão as atualizações dos métodos que já foram feitos. Apenas altere o que já foi feito Utilize os recursos do eclipse!!!
O LimiteMaximo package com.javabasico.matriculadealuno; public class LimiteMaximoDeAlunosException extends Exception { public LimiteMaximoDeAlunosException(String mensagem) { super(mensagem);
A Turma v1.1 public void adicionar(aluno alunonaturma, Disciplina disciplinaescolhida) throws LimiteMaximoDeAlunosException { if (quantidadeatualdealunos >= quantidademaximadealunos) { throw new LimiteMaximoDeAlunosException( "Turma cheia. Não posso matricular o aluno " + alunonaturma.getnome()); System.out.println("O aluno " + alunonaturma.getnome() + " foi matriculado na disciplina " + disciplinaescolhida.getnome()); quantidadeatualdealunos++;
A Secretaria v1.1 public void matricular(aluno alunomatriculado, Disciplina disciplinaescolhida, Turma novaturma) throws LimiteMaximoDeAlunosException { novaturma.adicionar(alunomatriculado, disciplinaescolhida);
TelaDeMatriculaDeAluno v1.1 public static void main(string[] args) { Aluno jose = new Aluno(); jose.setnome("jose Carlos"); Disciplina matematica = new Disciplina(); matematica.setnome("matemática"); Secretaria maria = new Secretaria(); Turma primeirosemestre2006 = new Turma(); try { maria.matricular(jose, matematica, primeirosemestre2006); JOptionPane.showMessageDialog(null, "Operação efetuada com sucesso.", "Sucesso", JOptionPane.INFORMATION_MESSAGE); catch (LimiteMaximoDeAlunosException e) { JOptionPane.showMessageDialog(null, e.getmessage(), "Atenção", JOptionPane.ERROR_MESSAGE);
TelaDeMatriculaComLoop v1.1 public static void main(string[] args) { Secretaria maria = new Secretaria(); Disciplina matematica = new Disciplina(); matematica.setnome("matemática"); Turma primeirosemestre2006 = new Turma(); for (int i = 1; i <= 40; i++) { Aluno jose = new Aluno(); jose.setnome("jose Carlos " + i); try { maria.matricular(jose, matematica, primeirosemestre2006); JOptionPane.showMessageDialog(null, "Operação efetuada com sucesso.", "Sucesso", JOptionPane.INFORMATION_MESSAGE); catch (LimiteMaximoDeAlunosException e) { JOptionPane.showMessageDialog(null, e.getmessage(), "Atenção", JOptionPane.ERROR_MESSAGE);
file:///e:/literaturatecnica/cursos/javabasico/index_stopwatch04180 4.gif Dúvidas/observações?