PaNcRoNi
What is folding?
BOas,
percebi tudo o que disses-te até agora e está tudo a funcionar! Aproveito para agradecer novamente o que voces me explicaram até agora, têm sido 5*. Muito obrigado.
Agora gostava que me esclarecem-se outra dúvida.
Tendo em conta que o conceito de programação orientada a objectos, segundo o que percebi até agora, nos dá uma forte mobilidade quando há necessidade, futuramente, de adicionar novas classes/funções, etc à aplicação em si a minha dúvida é a seguinte:
Voltanto à função inicializar(), a qual actualmente já tirei do código, tendo em conta agora apenas a sua ideia eu achei-a bastante interessante porque tinha-mos os pedidos dos dados na classe a que os dados eram referentes e assim podiamos, futuramente, alterar uma classe e os seus pedidos de dados na mesma, sem ter assim, que alterar quase nada na função main().
Por exemplo, acrescentando a morada na classe pessoa.
Com o código actual, eu teria de ir..
..e colocar..
..e então ir à classe pessoa..
..e agora sim teria a alteração feita! Coloquei em comentário as alterações para ser mais facil de visualizar.
Com este código teria que alterar no total em três partes diferentes, no main.cpp, no Pessoa.h e no Pessoa.cpp.
Agora utilizando apenas a ideia que a função inicializar() me deu e o código actual o qual não tem a morada, seria possivel fazer isto:
e no main.cpp ficaria apenas assim:
Ou seja para alterar eu apenas teria que mexer "a sério" nas classes, alterando apenas no main.cpp, esta parte:
Sei que isto vai contra o que disso o HavoC:
Mas não será muito mais facil futuras alterações, ou isto mexe com mais alguns conceitos?
Cumprimentos,
Nelson Ferreira
percebi tudo o que disses-te até agora e está tudo a funcionar! Aproveito para agradecer novamente o que voces me explicaram até agora, têm sido 5*. Muito obrigado.
Agora gostava que me esclarecem-se outra dúvida.
Tendo em conta que o conceito de programação orientada a objectos, segundo o que percebi até agora, nos dá uma forte mobilidade quando há necessidade, futuramente, de adicionar novas classes/funções, etc à aplicação em si a minha dúvida é a seguinte:
Voltanto à função inicializar(), a qual actualmente já tirei do código, tendo em conta agora apenas a sua ideia eu achei-a bastante interessante porque tinha-mos os pedidos dos dados na classe a que os dados eram referentes e assim podiamos, futuramente, alterar uma classe e os seus pedidos de dados na mesma, sem ter assim, que alterar quase nada na função main().
Por exemplo, acrescentando a morada na classe pessoa.
Com o código actual, eu teria de ir..
PHP:
std::string nome;
unsigned long num;
cout << "\n Inserindo novo Funcionário \n";
std::cout << "insira o nome: "; fflush(stdin);
getline ( cin, nome );
std::cout << "insira o num: "; fflush(stdin);
std::cin >> num;
Pessoa* f = new Funcionario(nome, num);
Pessoas.push_back(f);
..e colocar..
PHP:
std::string nome//, morada;
unsigned long num;
cout << "\n Inserindo novo Funcionário \n";
std::cout << "insira o nome: "; fflush(stdin);
getline ( cin, nome );
//std::cout << "insira a morada: "; fflush(stdin);
//getline ( cin, morada );
std::cout << "insira o num: "; fflush(stdin);
std::cin >> num;
Pessoa* f = new Funcionario(nome/*, morada*/, num);
Pessoas.push_back(f);
..e então ir à classe pessoa..
PHP:
//Pessoa.h
// class constructor
Pessoa(std::string novoNome/*, std::string morada*/);
//Pessoa.cpp
// class constructor
Pessoa::Pessoa(void): nome("") { }
Pessoa::Pessoa(std::string novoNome/*, std::string morada*/): nome(novoNome)/*, morada(novaMorada)*/ { }
..e agora sim teria a alteração feita! Coloquei em comentário as alterações para ser mais facil de visualizar.
Com este código teria que alterar no total em três partes diferentes, no main.cpp, no Pessoa.h e no Pessoa.cpp.
Agora utilizando apenas a ideia que a função inicializar() me deu e o código actual o qual não tem a morada, seria possivel fazer isto:
PHP:
// class constructor
Pessoa::Pessoa(void): nome("")
{
std::cout << "insira o nome: "; fflush(stdin);
getline ( cin, nome );
}
Pessoa::Pessoa(std::string novoNome): nome(novoNome) { }
// class constructor
Funcionario::Funcionario(): numeroDeIdentificacaoNaEmpresa(0)
{
std::cout << "insira o num: "; fflush(stdin);
std::cin >> num;
}
Funcionario::Funcionario(std::string nome, unsigned long num) : Pessoa(nome), numeroDeIdentificacaoNaEmpresa(num){}
e no main.cpp ficaria apenas assim:
PHP:
Pessoa* f = new Funcionario("",0);
Pessoas.push_back(f);
Ou seja para alterar eu apenas teria que mexer "a sério" nas classes, alterando apenas no main.cpp, esta parte:
PHP:
Funcionario("",0);
Sei que isto vai contra o que disso o HavoC:
Não vale a pena instânciares um director sem ter primeiro os dados.
Mas não será muito mais facil futuras alterações, ou isto mexe com mais alguns conceitos?
Cumprimentos,
Nelson Ferreira