Ola, estou fazendo um sistemazinho que possue 3 classes, neste sistemazinho a classe 1 se relaciona com a classe 2 através de uma terceira classe, mas eu não estou consegindo fazer este relacionamento so sei fazer relacionamentos entre duas classes através delas mesmo…
Quando vou criar esta terceira classe eu crio 2 atributo um atributo do tipo classe 1 e o outro atributo do tipo classe 2 mas na hora de estanciar um objeto do tipo desta classe eu passo os argumentos desses dois atributos mas da erro…
É isso eu queria um exemplo de como fazer um relacionamento entre 2 classes a través de uma terceira classe.
Agradeço des de já.
Você já viu algum engenheiro civil fazendo uma “plantinha”? Um médico fazendo uma “consultazinha”? Um engenheiro mecânico criando um “motorzinho”? Então, pra começo de conversa, deixa essa história de sisteminha/sistemazinho. Depois o cliente quer pagar uma mixariazinha e ninguém sabe por que…
Me parece que você está mais perdido que cego em tiroteio. Que tipo de relacionamento as classes possuem entre si (as três)? Qual o escopo do problema, por que precisa relacioná-las desta maneira?
Segue um exemplo para você entender melhor um relacionamento de 3 classes:
no exemplo a seguir temos 3 classes: Aluno, Professor e turma. Onde a turma é composta por alunos e professor
Classe aluno:
public class Aluno{
//atributos
private String nome; // nome do aluno
private int idade; // idade do aluno
//poderiam conter mais atributos...
//metodos
public String getNome(){
return this.nome; // retorno do atributo nome
}
public int getIdade(){
return this.idade; //retorno do atributo idade
}
public void setIdade(int idade){
this.idade = idade;
}
public void setNome(String nome){
this.nome = nome;
}
}
Classe: Professor
public class Professor{
//atributos
private String nome; // nome do professor
private int idade; // idade do professor
//poderiam conter mais atributos...
//metodos
public String getNome(){
return this.nome; // retorno do atributo nome
}
public int getIdade(){
return this.idade; //retorno do atributo idade
}
public void setIdade(int idade){
this.idade = idade; //atribuicao da idade
}
public void setNome(String nome){
this.nome = nome; //atribuicao do nome
}
}
Classe turma:
/*
Classe: Classe
A Classe Turma é composta das classes: Aluno e Professor
** Uma turma é composta por um agregado de alunos e 1 Professor
*/
public class Turma{
//atributos
Aluno[] alunos; // agregacao
Professor professor;
public Turma(){
alunos = new Aluno[10];
professor = null;
}
////
// Metodo nao implementada
public void cadastraClaase(){
//Implementacao
}
}
Era essa a sua dúvida?
no exemplo acima temos um relacionamento entre as 3 classes que chamamos de Composição em Orientação a Objetos.
Onde a Classe Turma é composta por a Classe Aluno e a Classe Professor
Abraço
Fiz assim…mas na hora de executar a classe com uma classe de execução esta dando erro.
Segue a baixo a terceira classe que associa e a classe de execução:
public class Capacitacao
{
Funcionario[] funcionario;
Treinamento treinamento;
private double notaAvaliacao;
private double notaParticipacao;
public Capacitacao(Funcionario[] funcionario, Treinamento treinamento)
{
funcionario = new Funcionario[2];
treinamento = null;
}
public void exibeDados()
{
System.out.println("Nota Avaliação " + notaAvaliacao);
System.out.println("Nota Participação " + notaParticipacao);
System.out.println("----------------------------------------");
System.out.println("Funcionarios participando de treinamento");
if(funcionario[0] == null) System.out.println("Nem um funcionario em treinamento");
else System.out.println("Funcionarios em treinamento " + funcionario[0] + funcionario[1]);
System.out.println("Treinamento de " + treinamento);
}
public void cadastraFunc(Funcionario f1, Funcionario f2, Treinamento t)
{
funcionario[0] = f1;
funcionario[2] = f2;
treinamento = t;
}
public void media()
{
//sem método implementado.
}
public Funcionario[] getFunc()
{
return funcionario;
}
public void setFunc(Funcionario[] funcionario)
{
this.funcionario = funcionario;
}
public Treinamento getTrei()
{
return treinamento;
}
}
Casse que execulta o sistema:
public class ExecutarTexte
{
public static void main(String args[])
{
//variavel func é do tipo funcionario.
Funcionario joao;
//criar um objeto do tipo Funcionario e atribui parametros aos seu metodos.
joao = new Funcionario("João Rafael M Nogueira" , "cpd", "Programadar", 200);
//chama o método exibirDados da classe Funcionario
joao.exibirDados();
//Variavel trei é do tipo Treinamento.
Treinamento java;
//Cria novo objeto do tipo Treinamento.
java = new Treinamento("Java SE", 40, "Marcelo");
//chama método exibirDados da variavel Treinamento.
java.exibirDados();
System.out.println("--------------------------------------------------");
Capacitacao capacita;
//o erro ocorre nesta linha.
capacita = new Capacitacao(joao, java);
capacita.cadastraFunc(joao, java);
capacita.exibeDados();
}
}
o erro ocorre na linha de (capacita = new capacitacao(joao, java);
não consegui identificar o erro.
na linha do erro tabem vai o parametro no segundo funcionario, tinha esquicido de colocar, mas o erro persiste:
capacita = new Capacitacao(joao, antonio, java);
já declarei antonio como do tipo Funcionario.
Quando você chama o new capacitacao você esta passando funcionários como parametro.
capacita = new Capacitacao(joao, antonio, java);
Porém o seu construtor pede um array de funcionario
//O Construtor pede um array de funcionario do tipo Funcionario
public Capacitacao(Funcionario[] funcionario, Treinamento treinamento)
{
funcionario = new Funcionario[2];
treinamento = null;
}
verifique
Opa Caio, valew pela ajuda, me ajudo bastante com os erros que não vou mais cometer…
Projeto final perfect…
Tranquilo cara, qualquer coisa estamos aih