Ir para o conteúdo
andronikus

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

Mensagens Recomendadas

andronikus    0
andronikus

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

Penso não haver problema nenhum, mas não sei muito bem ao que te referes quando falas em classes derivadas.

Supostamente dá para criares um objecto da classe CPessoa e da classe CData dentro do objecto CTrabalhador.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

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).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
andronikus    0
andronikus

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 ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
senito    0
senito

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
brink@ero    0
brink@ero

Obrigado Rui Carlos.... Acendeste me a lampada.... :biggrin:

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  :Pandronikus

Cumpr. bk@ero  :ipool:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade