(b) objeto
(c) herança
(d) polimorfismo baseado em interface
(e) polimorfismo baseado em herança
(f) agregação
(g) mensagem
(h) método
(i) variáveis de instância
(j) variáveis e métodos de classe
(l) sobrecarga de métodos
( ) descreve como um objeto responde à invocação de uma mensagem
( ) variáveis de instância + métodos
( ) um objeto é composto de sub-objetos
( ) especialização de comportamento
( ) componentes do estado de um objeto
( ) molde a partir do qual são criados os objetos
( ) class ... { String valueOF(char[] arrayOfchar) {...}; String valueOf(boolean bool) {...}; String valueOf(int anInt) {...}; }
( ) class ... { static Departamento departamentos[]; static void main(String args[]) {...}; }
( ) class ... { String nome; Professor professor; ... }
( ) interface Remuneravel {...}; class ... { .. int calculaPagamento(Remuneravel felizardo) { ... }; }
( ) abstract class Pessoa {...}; class ... { .. void emiteConvite(Pessoa convidado) {...}; }
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.
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.
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;
}
}
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