Jump to content

[C++] Dúvida: Herança Múltipla (Resolvido)


andronikus

Recommended Posts

Boas,

Estou aqui bloqueado.... Precisava que alguem me desse uma ajudinha

Então é assim... Criei uma classe CPessoa (contem um campo para o nome e outro para o apelido) e uma Classe CData (contém o campo dia, mes e ano).

Agora quero criar uma classe CTrabalhador.... Este deve ter informação acerca do nome e apelido (tem que ser uma classe derivada de CPessoa) e tb tem que conter a data de inicio de actividade da empresa (tem que ser classe derivada de CData(?)).

Aqui reside a minha duvida... Aparentemente a classe CTrabalhador é uma classe derivada de duas classes bases (?) Como é que posso resolver isto?

cumps

Link to comment
Share on other sites

como C++ permite herança múltipla podias ter a classe CTrabalhador como subclasse das classes CPessoas e CData, mas será que isso faz sentido?

não me parece, Trabalhador é um caso particular de uma pessoa (um trabalhador é uma pessoa), como tal deve ser subclasse de Pessoas, mas Trabalhador não é um caso particular de Data (um trabalhador não é uma data), como tal não faz qualquer sentido (pelo menos com os dados que destes do problema) que Trabalhador seja subclasse de Data. a data será um atributo de um trabalhador (como nome e apelido são atributos de pessoa).

Link to comment
Share on other sites

Eu estou a utilizar o visual C++...

Quando quero introduzir uma classe que é derivada de outra (por exemplo na Classe CTrabalhador vou precisar de um objecto do tipo CPessoa)

A declaração fica deste tipo....

class CTrabalhador :
public CPessoa
{
public:
CTrabalhador(void);
public:
virtual ~CTrabalhador(void);
};

Mas a classe CTrabalhador tb precisa de um ojecto do tipo CData... Agora a minha duvida é como é que posso fazer isso... tipo esta declaração está correcta?

class CTrabalhador :
public CPessoa, public CData
{
public:
CTrabalhador(void);
public:
virtual ~CTrabalhador(void);
};

definir public CPessoa, public CData ?

Link to comment
Share on other sites

Como o Rui Carlos disse, e bem, a classe trabalhador é um caso particular da classe Pessoa, ou seja, trabalhador extende pessoa. A classe data são atributos para definir certa informação da pessoa ou trabalhador, como a data de nascimento, data de inicio de actividade.....

class Pessoa
{
private:
char * nome ;
Data dtnasc ;
int alt ;

public:
Pessoa();
Pessoa(char * n,Data d,int al);
}

Pessoa():Data()
{

}
Pessoa (char * n,Data d,int al):Data(d)
{
    ......
}

class Trabalhador: public Pessoa
{
private:
char * emprego ;
Data entrada ;

public:
Trabalhador();
Trabalhador(Pessoa p,Data d, char * emp);
}

Trabalhador():Pessoa():Data()
{

}
Trabalhador (char * emp):Pessoa(p):Data(d)
{
    ......
}

Se cometi algum erro por favor corrigam. Mas penso que é assim...

Link to comment
Share on other sites

Obrigado Rui Carlos.... Acendeste me a lampada.... 😁

Acho que a questão está resolvida.

Só queria deixar dois reparos:

  • O título, não deve ser só "dúvida c++". O título deve indicar a questão, assim um leitor do fórum não precisa de abrir um à um para ver o que fala cada tópico.
  • O outro reparo é o local do tópico, existe uma sub-secção de dúvidas dentro da secção C++ para estas questões.

Da próxima já sabes  😛andronikus

Cumpr. bk@ero  ?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.