andronikus Posted October 16, 2006 at 09:05 PM Report #57917 Posted October 16, 2006 at 09:05 PM 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
Hipnoted Posted October 16, 2006 at 09:10 PM Report #57921 Posted October 16, 2006 at 09:10 PM 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. "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
Solution Rui Carlos Posted October 16, 2006 at 09:17 PM Solution Report #57927 Posted October 16, 2006 at 09:17 PM 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). Rui Carlos Gonçalves
andronikus Posted October 16, 2006 at 09:19 PM Author Report #57930 Posted October 16, 2006 at 09:19 PM 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 ?
andronikus Posted October 16, 2006 at 09:21 PM Author Report #57931 Posted October 16, 2006 at 09:21 PM Obrigado Rui Carlos.... Acendeste me a lampada.... 😁
Rui Carlos Posted October 16, 2006 at 09:26 PM Report #57934 Posted October 16, 2006 at 09:26 PM 'CData' deve ser um atributo!!! Rui Carlos Gonçalves
senito Posted October 17, 2006 at 08:58 AM Report #58002 Posted October 17, 2006 at 08:58 AM 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...
brink@ero Posted October 17, 2006 at 11:46 PM Report #58244 Posted October 17, 2006 at 11:46 PM 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 ?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now