Esercizio 7
Scrivi un programma per manipolare stringhe e numeri che implementi un
metodo somma() che chiamato in questi modi:
somma(2,3) restituisce in output 5.
somma("coco","nut") restituisce in output 'coconut'.
Il programma deve essere costituito da tre classi la classe O
(operazione) che implementa i metodi per la manipolazione dei dati e le
due classi derivate dalla classe O; N,
per l'acquisizione e la restituzione di numeri e la classe
S per l'acquisizione e la restituzione di stringhe.
#include<iostream>
#include<string.h>
using namespace std;
class O {
protected:
int num;
char s[32];
public:
void somma(int h){num+=h;}
void somma(char *h){strcat(s,h);}
};//fine classe O
class N:public O{
public:
void setnum(int x){num=x;}
int getnum(){return num;}
}; //fine classe N
class S:public O{
public:
void sets(char *st){
strcpy(s,st);
}
char* gets(){return s;}
};//fine classe S
main(){
int numero;
char *str;
//_____coi numeri
N n1,n2;
cout << "inserisci n1:";cin >> numero; n1.setnum(numero);
cout << "inserisci n2:";cin >> numero; n2.setnum(numero);
n1.somma(n2.getnum());
cout << n1.getnum() << endl;
//______con le stringhe
S s1,s2;
cout << "inserisci s1:";cin >> str; s1.sets(str);
cout << "inserisci s2:";cin >> str; s2.sets(str);
s1.somma(s2.gets());
cout << s1.gets() << endl;
}//____fine main
La classe base si caratterizza
per la presenza dei due metodi: somma(int h) e somma(char
*h) che si differenziano solo per la firma (overload di metodi) .
Data la brevità del codice, abbiamo scelto di non applicare la funzione
dell'operatore di visibilità (::).