Ir para conteúdo
Fórum Script Brasil
  • 0

Relacionamento entre classes Herdadas de Mesmo Nivel


abc123

Pergunta

Ola, estou com um trabalho da faculdade para fazer e preciso implementar um diagrama UML com herancas:

Meu problema é o seguinte quando implemento a Classe Crianca ela possui um atributo do tipo Adulto, e a classe Adulto possui um atributo do tipo Crianca. O que ocorre é no momento da compilacao parece que se defino antes a Classe Crianca o compilador acusa que Adulto não esta definido( imagino que isso ocorra devido o compilador compilar linha-a-linha e como a Classe Crianca foi definida primeiro ainda não há um registro da Classe Adulto. Se inverto a ordem de inclusão o compilador da o mesmo problema acusando que crianca ainda não está definido. Então o que fazer? Segue abaixo o cabeçalho simples do meu codigo sem funcoes da logica de vendas implementadas!

#ifndef USUARIO_H
#define USUARIO_H

#include <string>
#include <iostream>

using std::string;
using namespace std;

namespace Entities{
    //----------------------------- Classe-base usuario -----------------------------------
    class Usuario{

        protected:
        int id_;
        string nome_;
        int idade_;
        float saldo_;

        public:

        //Construtor padrão
        Usuario();
        
        //Cria novo usuario
        //Pre-Condicao: não pode ser instanciado como Usuario
        Usuario(int id,string nome,int idade,float saldo);

        //Retorna ID do usuario
        int getId();

        //Retorna nome do usuario
        string getNome();

        //Retorna idade do usuario
        int getIdade();

        //Retorna saldo do usuario
        float getSaldo();

        //Modifica saldo do usuario
        void setSaldo(float valor);

        //Imprime dados do Usuario
        //Funcao virtual pura -> define Usuario como classe abstrata
        virtual void toString() = 0;
    };

    //----------------------------- Classe Adulto -----------------------------------
    class Adulto : public Usuario{

        protected:
       Crianca *dependentes_;
        int numDependentes_;

        public:
        
        //Cria novo usuario adulto
        Adulto();

        //Cria novo usuario com atributos
        Adulto(int id,string nome,int idade,float saldo);

        //Cria adulto co dependentes
        Adulto(int id,string nome,int idade,float saldo, Crianca dependentes[], int numDependentes);

        //Torna Adulto uma classe instanciavel
        void toString() override;

        //Adiciona dependente
        void addDependente(Crianca *dependente);

        
    };

    //----------------------------- Classe Crianca -----------------------------------
    class Crianca: public Usuario{

    private:
    Adulto *responsavel_;
    
    public:
    
    //Construtor padrão
    Crianca();

    //Cria novo usuario Crianca
    Crianca(int id,string nome,int idade,float saldo,Adulto *responsavel);

    //Sobrescreve funcao toString e permite que Crianca seja uma classe instanciavel
    //Imprime na tela dados da crianca
    void toString() override;

    };


    //----------------------------- Classe Idoso -----------------------------------
    class Idoso : public Adulto{
    public:

    //Cria um novo Idoso
    Idoso();

    //Cria um novo idoso pre definiddo
    Idoso(int id,string nome,int idade,float saldo);

    };
}


#endif //USUARIO_H

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...