Curso de Verão de Java



1º Exercício de Avaliação


  1. Estabeleça a relação da forma mais adequada:
    Resposta




  2. Suponha que temos que inserir os seguintes requisitos no Sistema de Controle Acadêmico:
    Resposta


    Para resolver este problema criamos a seguinte hierarquia de classes de disciplinas:
    class Disciplina {
      String        nome;
      Professor     professor;
      private Aluno alunos[];
      int           qtdAlunos;
    
      Disciplina(String nome) {
    	...
      }
      ...
      void incluiAluno (Aluno umAluno) {
            if (qtdAlunos < 30) {
                    alunos[qtdAlunos] = umAluno;
                    qtdAlunos = qtdAlunos + 1;
                    return;
            }
      }
      ...
    }
    
    
    class DisciplinaPos extends Disciplina {
      private Aluno alunos[];
    	
      DisciplinaPos(String nome) {
    	super(nome);
      }
      ..
    }
    
    
    class DisciplinaGrad extends Disciplina {
      private AlunoGrad alunos[];
    
      DisciplinaGrad(String nome) {
    	super(nome);
      }
      ..
    }
    
    
    Implemente os métodos incluiAluno das classes DisciplinaPos e DisciplinaGrad.


  3. Dada a seqüência de mensagens abaixo, crie o grafo das ligações (de agregação) que vão ser estabelecidas entre os objetos deptoInformatica, bachcomputacao, tp, ju, java, logica, algoritmos, ivo e luiz (após a execução do método main()). Utilize o código das classes Departamento, Disciplina, Aluno e Curso listados a seguir.

    Resposta
    public class SCU {
      static Departamento deptoInformatica = new Departamento("Informatica"); 
      static Curso bachComputacao = new Curso("Bacharelado em Computacao",100);
    
      public static void main (String args[]) {
    	Professor tp, ju;
    	Disciplina java, logica, algoritmos;
    	
      	tp = new Professor("Jose Tepedino", "padrao 4", 3000);
      	ju = new Professor("Julianne Pepeu", "aep", 1000);
     	 
      	java = new Disciplina("Linguagens (Java)", tp);
      	logica = new Disciplina("Logica", ju);
      	algoritmos = new Disciplina("Algoritmos", tp);
     	
      	deptoInformatica.incluiProfessor(ju);
     	 
      	deptoInformatica.incluiDisciplina(java);
      	deptoInformatica.incluiDisciplina(algoritmos);
    
      	deptoInformatica.alocaDisciplina(java, ju);
      	deptoInformatica.alocaDisciplina(logica, tp);
    
      	Aluno ivo = new Aluno("Ivo","Ipsep"bachComputacao);
    	Aluno luiz = new Aluno("Luiz Gonzaga", "Pina", bachComputacao);
    
    	logica.incluiAluno(luiz);
    	logica.incluiAluno(ivo);
    
    	java.incluiAluno(ivo);
      }
    }
    
    
    Código das classes utilizadas:
    public class Departamento {
    
      String	nome;
      Professor	professores[];
      int		qtdProfessores;
      Disciplina	disciplinas[];
      int		qtdDisciplinas;
    
      Departamento (String umNome) {
    	nome = umNome;
    	professores = new Professor[10];
    	qtdProfessores = 0;
    	disciplinas = new Disciplina[20]; 
    	qtdDisciplinas = 0;
      }
    
      void incluiProfessor (Professor umProfessor) {
    	if (qtdProfessores < 10) {
    	  	professores[qtdProfessores] = umProfessor;
    		qtdProfessores = qtdProfessores + 1;
    		return;
    	}
      }
    
      void incluiDisciplina (Disciplina umaDisciplina) {
    	if (qtdDisciplinas < 20) {
    	  	disciplinas[qtdDisciplinas] = umaDisciplina;
    		qtdDisciplinas = qtdDisciplinas + 1;
    		return;
    	}
      }
    
      void alocaDisciplina(Disciplina disciplina, Professor professor) {
    	disciplina.professor = professor;
    	professor.incluiDisciplina(disciplina);
      }
    
    }
    
    public class Disciplina {
    
      String	nome;
      Professor 	professor;
      private Aluno	alunos[];
      int		qtdAlunos;
    
      Disciplina (String umNome, Professor umProfessor) {
    	nome = umNome;
    	alunos = new Aluno[30];
    	qtdAlunos = 0;
    	professor = umProfessor;
      }
    
      void incluiAluno (Aluno umAluno) {
            if (qtdAlunos < 30) {
                    alunos[qtdAlunos] = umAluno;
                    qtdAlunos = qtdAlunos + 1;
                    return;
            }
      }
    }
    
    
    class Aluno {
      String nome;
      String endereco;
      Curso	curso;
    
      Aluno (String nome, String endereco, Curso curso) {
    	this.nome = nome;
    	this.endereco = endereco;
    	this.curso = curso;
      }
    }
    
    
    public class Professor {
      String		nome;
      String       		endereco;
      String 		nivel;
      private Disciplina	disciplinas[];
      int       		qtdDisciplinas;
    
      Professor (String umNome, String umNivel, int umSalarioMensal) {
    	nome = umNome;
    	nivel = umNivel;
            disciplinas = new Disciplina[3];
            qtdDisciplinas = 0;
      } 
    
      void incluiDisciplina(Disciplina umaDisciplina) {
            if (qtdDisciplinas < 3) {
                    disciplinas[qtdDisciplinas] = umaDisciplina;
                    qtdDisciplinas = qtdDisciplinas + 1;
                    return;
            }
      }
    }
    
    
    public class Curso {
    
      String 	nome;
      int		creditosParaConclusao;
      private Aluno	alunos[];	
      int		qtdAlunos;
    
      Curso(String nome, int creditos) {
            this.nome = nome;
            this.creditosParaConclusao = creditos;
            this.alunos = new Aluno[300];
            this.qtdAlunos = 0;
      }
    
    }
    


    Bom Trabalho!



    Jorge Henrique, jhcf@di.ufpe.br
    Andreia Alcântara, aaa@di.ufpe.br
    Última edição em 13 de janeiro de 1996.
    URL: http://www.di.ufpe.br/~java/verao/aula4/avaliacao1.html