Solução para multiherança

9 respostas
V

Olá, galera. Minha dúvida é a respeito de herança, implementos e abstração.

Segue a dúvida:

Tenho várias classes:
Aula -> Ensino
Ensino -> Matéria
Ensino -> Horário
Matéria e Horário -> Professor
Obs.: "->" é a herança.

public class Aula {
	int nAulas; //...
	
	//Setters e Getters...
}
public class Ensino extends Aula {
	int turno; 
	int serie; //...

	//Setters e Getters...
}
public class Materia extends Ensino {
	String nome;

	//Setters e Getters...
}
public class Horario extends Ensino {
	int hDisponivel;
	//Setters e Getters...
}
public class Professor (...){
	//Métodos e variáveis de Horario e Materia.
}
A dúvida é como ficaria a classe Professor para que ela obtivesse as variáveis e métodos das classes Horario e Matéria.

Com abstração?

Se não entenderam, por favor, perguntem! Obrigado! :)

9 Respostas

Ataxexe

Você está com um sério problema conceitual. A herança não serve para aproveitar código ou trazer atributos.

É só você pensar um pouco: a matéria é um professor? Não seria assim?

public class Materia { private Professor professor; // bla bla bla }

Dessa forma, a matéria é dada por um professor. Ainda não está tão bonito, mas a linha é mais ou menos essa.

Ah! Cuidado com a herança!!

S

Ataxexe:

Ah! Cuidado com a herança!!

Gostei muito desse link.

De uma olhada nessa discussão aqui no GUJ

S

Matéria não É UM professor
nem professor É UM matéria

o certo seria Matéria TEM UM professor

sendo assim professor é variável de instância de matéria
como o colega disse acima.

gostei do link também.

diogogama

Exatamente como foi comentado, na verdade você percebe como seu código foi acoplado???

Você deveria ter feito isso com composição e não herança…

Deveria entender melhor o que é cada um…

Viu Ataxexe como o problema é a falta do conhecimento e não a herança em si?

Procure estudar mais sobre herança, composição e interfaces e não use uma no lugar da outra, pois você vai criar um grande problema de acoplamento no seu código.

Abraços.

Ataxexe

Não dá pra generalizar somente com este caso. Claro que a falta do conhecimento é uma das causas, mas não é somente a única causa.

diogogama

Não dá pra generalizar somente com este caso. Claro que a falta do conhecimento é uma das causas, mas não é somente a única causa.

Concordo com você… mas também acredito que nunca será por causa da herança… e sempre será pelo mau uso… (estou falando da herança ser um problema)

gomesrod

Para mim seria assim:

class Aula {
     Materia materia;
     Professor professor;
     Horario horario;
}

Só não consigo imaginar onde se encaixaria a classe “Ensino” … parece algo muito abstrato.

drsmachado

gomesrod:
Para mim seria assim:

class Aula {
     Materia materia;
     Professor professor;
     Horario horario;
}

Só não consigo imaginar onde se encaixaria a classe “Ensino” … parece algo muito abstrato.


A classe Ensino não existe.
Um professor “ensina” (leciona) uma Matéria. Isto ocorre em uma determinada Aula e em um determinado Horário.

S
VA:
Olá, galera. Minha dúvida é a respeito de herança, implementos e abstração.

Segue a dúvida:

Tenho várias classes:
Aula -> Ensino
Ensino -> Matéria
Ensino -> Horário
Matéria e Horário -> Professor
Obs.: "->" é a herança.

public class Aula {
	int nAulas; //...
	
	//Setters e Getters...
}
public class Ensino extends Aula {
	int turno; 
	int serie; //...

	//Setters e Getters...
}
public class Materia extends Ensino {
	String nome;

	//Setters e Getters...
}
public class Horario extends Ensino {
	int hDisponivel;
	//Setters e Getters...
}
public class Professor (...){
	//Métodos e variáveis de Horario e Materia.
}
A dúvida é como ficaria a classe Professor para que ela obtivesse as variáveis e métodos das classes Horario e Matéria.

Com abstração?

Se não entenderam, por favor, perguntem! Obrigado! :)

isso não é dúvida e sim problema de conceito
sinto muito não poder ajudar mas para seu caso só um bom livro mesmo, lápis e borracha e código

Criado 3 de setembro de 2013
Ultima resposta 4 de set. de 2013
Respostas 9
Participantes 7