Ho fatto un piccolo esercizi sul polifomismo per vedere se ho capito il concetto.
Potete guardarlo e dirmi se va bene? Consigli?
Esistono modi per inserire nel forum piccoli file .zip
Grazie
Lele
// main
#include "valoribasi.h"
#include "valorimoltiplicazione.h"
#include "valorisomma.h"
#include <iostream>
using std::cout;
using std::endl;
int main(int argc, char *argv[])
{
valoriBasi *nXPtr;
int val01 = 2;
int val02 = 3;
valoriBasi nValoriBasi(val01, val02);
nXPtr = &nValoriBasi;
cout << "nXPtr->visualizza (); ";
nXPtr->visualizza ();
cout << endl;
valoriSomma nSomma (val01, val02);
valoriMoltiplicazione nMolticazione (val01, val02);
nXPtr = &nMolticazione;
nXPtr->visualizza ();
cout << endl;
nXPtr = &nSomma;
nXPtr->visualizza ();
cout << endl;
}
// valori basi
#ifndef VALORIBASI_H
#define VALORIBASI_H
#include <iostream>
using std::cout;
using std::endl;
class valoriBasi
{
public:
valoriBasi(int val01, int val02 );
void setPrimo ( int val01 );
void setSecondo ( int val02 );
int getPrimo() const;
int getSecondo() const;
virtual void visualizza() const;
private:
int primo;
int secondo;
};
#endif // VALORIBASI_H
valoribase.cpp
#include "valoribasi.h"
valoriBasi::valoriBasi(int val01, int val02)
{
setPrimo(val01);
setSecondo(val02);
}
void valoriBasi::setPrimo(int val01){
primo = val01;
}
void valoriBasi::setSecondo(int val02){
secondo = val02;
}
void valoriBasi::visualizza() const {
cout << "Valori basi\n";
cout << "Primo valore = " << getPrimo () << endl;
cout << "secondo valore = " << getSecondo () << endl;
}
int valoriBasi::getPrimo() const{
return primo;
}
int valoriBasi::getSecondo() const{
return secondo;
}
// valoriMoltiplicazione.h
#ifndef VALORIMOLTIPLICAZIONE_H
#define VALORIMOLTIPLICAZIONE_H
#include "valoribasi.h"
#include <iostream>
using std::cout;
using std::endl;
class valoriMoltiplicazione : public valoriBasi
{
public:
valoriMoltiplicazione(int &val01, int &val02);
int getMoltiplicazione() const;
virtual void visualizza() const;
};
#endif // VALORIMOLTIPLICAZIONE_H
// valoriMoltiplicazione.cpp
#include "valorimoltiplicazione.h"
valoriMoltiplicazione::valoriMoltiplicazione(int &val01, int &val02)
:valoriBasi(val01, val02)
{
}
int valoriMoltiplicazione::getMoltiplicazione () const{
return valoriBasi::getPrimo () * valoriBasi::getSecondo ();
}
void valoriMoltiplicazione::visualizza () const{
valoriBasi::visualizza ();
cout << "Valore moltiplicato = " << getMoltiplicazione () << endl;
}
// valoriSomma.h
#ifndef VALORISOMMA_H
#define VALORISOMMA_H
#include "valoribasi.h"
class valoriSomma : public valoriBasi
{
public:
valoriSomma (int &val01, int &val02);
int getSomma() const;
virtual void visualizza() const;
};
#endif // VALORISOMMA_H
// valoriSomma.cpp
#include "valorisomma.h"
valoriSomma::valoriSomma(int &val01, int &val02)
: valoriBasi(val01, val02)
{
}
int valoriSomma::getSomma () const {
return valoriBasi::getPrimo () + valoriBasi::getSecondo ();
}
void valoriSomma::visualizza () const{
valoriBasi::visualizza ();
cout << "Valori sommati " << getSomma () << endl;
}