Advertisement
jacknpoe

Polimorfismo em Tempo de Execução

Jan 17th, 2024
607
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | Source Code | 0 0
  1. #include <string>
  2. #include <iostream>
  3. #include <cmath>
  4.  
  5. // CLASSE PAI "base"
  6. class base {
  7.     public:
  8.     void dezPrimeiros( void);
  9.     virtual std::string nome(void) {};
  10.     virtual long enesimo( long ordem) {};
  11. };
  12.  
  13. void base::dezPrimeiros( void){
  14.     std::cout << nome() << ": ";
  15.     for( int i = 1; i <= 10; i++)
  16.         std::cout << enesimo( i) << " ";
  17.     std::cout << std::endl;
  18. }
  19.  
  20. // CLASSE FILHA "dobro"
  21. class dobro: public base {
  22.     public:
  23.         virtual std::string nome( void);
  24.         virtual long enesimo( long ordem);
  25. };
  26. std::string dobro::nome( void){ return "Dobro"; }
  27. long dobro::enesimo( long ordem){
  28.     return 2 * ordem;
  29. }
  30.  
  31. // CLASSE FILHA "quadrado"
  32. class quadrado: public base {
  33.     public:
  34.         virtual std::string nome( void);
  35.         virtual long enesimo( long ordem);
  36. };
  37. std::string quadrado::nome( void){ return "Quadrado"; }
  38. long quadrado::enesimo( long ordem){
  39.     return pow(ordem, 2);
  40. }
  41.  
  42. // CLASSE FILHA "doiselevado"
  43. class doiselevado: public base {
  44.     public:
  45.         virtual std::string nome( void);
  46.         virtual long enesimo( long ordem);
  47. };
  48. std::string doiselevado::nome( void){ return "Dois elevado"; }
  49. long doiselevado::enesimo( long ordem){
  50.     return pow(2, ordem);
  51. }
  52.  
  53. // CLASSE FILHA "fatorial"
  54. class fatorial: public base {
  55.     public:
  56.         virtual std::string nome( void);
  57.         virtual long enesimo( long ordem);
  58. };
  59. std::string fatorial::nome( void){ return "Fatorial"; }
  60. long fatorial::enesimo( long ordem){
  61.     long temp = 1;
  62.     for(int i = 2; i <= ordem; i++) temp *= i;
  63.     return temp;
  64. }
  65.  
  66. int main(){
  67.     base* objeto[4];
  68.     objeto[0] = new dobro();
  69.     objeto[1] = new quadrado();
  70.     objeto[2] = new doiselevado();
  71.     objeto[3] = new fatorial();
  72.    
  73.     for( int i = 0; i < 4; i++)
  74.         objeto[i]->dezPrimeiros();
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement