Advertisement
Guest User

Progetto_Oggetto_Fotografia

a guest
Feb 7th, 2013
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.27 KB | None | 0 0
  1. ___________________________MAIN.CPP_______________________________ Il main per testare le funzionalità
  2.  
  3. #include <iostream>
  4. #include "Fotografia.h"
  5. #include "Lista.h"
  6.  
  7. using namespace std;
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.     cout << "_______Test della Gerarchia_______" << endl << endl;    
  12.     Libro L1; Fotografia F1;
  13.     Oggetto O1("Iddiaccazzo","Fallo");
  14.     cout << "L'Oggetto è: \n\n";
  15.     O1.print();
  16.     cout << "Inserisci il Libro: \n\n";
  17.     L1.insert();
  18.     cout << "Ereditarietà Oggetto - Libro: \n\n";
  19.     O1=L1;
  20.     O1.print();
  21.    
  22.     cout << "_______Test della Lista_______" << endl << endl;
  23.     Fotografia F2("Bll","Stica","Mano","Micio");
  24.     Fotografia F3("Azz","Merda","Ciao","Dogma");
  25.     Lista L;
  26.     L.inserisci(F2);
  27.     L.inserisci(F3);
  28.     L.stampa();
  29.    
  30.     system("PAUSE");
  31.     return EXIT_SUCCESS;
  32. }
  33.  
  34. _____________________________ OGGETTO.H ______________________________
  35.  
  36. #ifndef _OGGETTO_H
  37. #define _OGGETTO_H
  38.  
  39. #include <iostream>
  40. #include <cstring>
  41. using namespace std;
  42.  
  43. class Oggetto {
  44.       friend ostream & operator<<(ostream &, const Oggetto &);
  45.       friend istream & operator>>(istream &, Oggetto &);
  46.       protected:
  47.          char * ID;
  48.          char * Tipo;
  49.          virtual ostream & print(ostream & os) const;
  50.          virtual istream & insert(istream & in);
  51.       public:
  52.          Oggetto(const char * I="", const char * T="");
  53.          Oggetto(const Oggetto&);
  54.          const char * get_ID() const {return ID;}
  55.          const char * get_Tipo() const {return Tipo;}
  56.          void set_ID(const char * I) {delete [] ID;ID=new char[strlen(ID)+1]; strcpy(ID, I);}
  57.          void set_Tipo(const char * T) {delete [] Tipo; Tipo=new char[strlen(Tipo)+1]; strcpy(Tipo, T);}
  58.          virtual void print() const;
  59.          virtual void insert();
  60.          ~Oggetto() {delete [] ID; delete [] Tipo;}
  61. };
  62.  
  63. #endif
  64.  
  65. _____________________________________ OGGETTO.CPP _______________________________________
  66.  
  67. #include "Oggetto.h"
  68.  
  69. Oggetto::Oggetto(const char * I, const char * T) {
  70.               ID=new char[strlen(I)+1];
  71.               Tipo=new char[strlen(T)+1];
  72.               strcpy(ID, I);
  73.               strcpy(Tipo, T);
  74.               }
  75.              
  76. Oggetto::Oggetto(const Oggetto & O) {
  77.               ID=new char[strlen(O.ID)+1];
  78.               Tipo=new char[strlen(O.Tipo)+1];
  79.               strcpy(ID, O.ID);
  80.               strcpy(Tipo, O.Tipo);
  81.               }
  82.              
  83. void Oggetto::print() const {
  84.   cout << "ID: " << ID << endl << "Tipo: " << Tipo << endl << endl;
  85. }
  86.  
  87. ostream & Oggetto::print(ostream & os) const {
  88.   os << "ID: " << ID << endl << "Tipo: " << Tipo << endl << endl;
  89.   return os;  
  90. }
  91.  
  92. ostream & operator<< (ostream & os, const Oggetto & O){
  93.  return O.print(os);
  94.  }
  95.      
  96. void Oggetto::insert() {
  97.   cin >> ID >> Tipo;
  98. }
  99.  
  100. istream & Oggetto::insert(istream & in) {
  101.   cin >> ID >> Tipo;
  102.   return in;  
  103. }
  104.  
  105. istream & operator>> (istream & in, Oggetto & O){
  106.  return O.insert(in);
  107.  }
  108.  
  109. ___________________________________ FOTOGRAFIA.H ______________________________________
  110.  
  111. #ifndef _FOTOGRAFIA_H
  112. #define _FOTOGRAFIA_H
  113. #include "Oggetto.h"
  114.  
  115. class Fotografia : public Oggetto {
  116.       friend class Lista; //Dichiaro la classe Lista friend per la classe Fotografia
  117.       friend ostream & operator<<(ostream &, const Fotografia &);
  118.       friend istream & operator>>(istream &, Fotografia &);
  119.       private:
  120.          char * Soggetto;
  121.          char * Formato;
  122.          Fotografia * next; //Realizzo il puntatore al prossimo elemento, da usare per la classe Lista (che è una Lista Linkata)
  123.       virtual ostream & print(ostream & os) const;
  124.       virtual istream & insert(istream & in);
  125.       public:
  126.          Fotografia(const char * I="", const char * T="", const char * S="", const char * F="");
  127.          Fotografia(const Fotografia &);
  128.          const char * get_Soggetto() const {return Soggetto;}
  129.          const char * get_Formato() const {return Formato;}
  130.          void set_Soggetto (const char * S) {delete [] Soggetto; Soggetto=new char[strlen(Soggetto)+1];strcpy(Soggetto,S);}
  131.          void set_Formato (const char * F) {delete [] Formato; Formato=new char[strlen(Formato)+1];strcpy(Formato,F);}
  132.          virtual void print() const;
  133.          virtual void insert();
  134.          ~Fotografia() {delete [] Soggetto; delete [] Formato;}
  135. };
  136.  
  137. #endif
  138.  
  139. __________________________________ FOTOGRAFIA.CPP ____________________________________
  140.  
  141. #include "Fotografia.h"
  142.  
  143. Fotografia::Fotografia(const char * I, const char * T, const char * S, const char * F) : Oggetto(I,T) {
  144.                              Soggetto=new char[strlen(S)+1];
  145.                              Formato=new char[strlen(F)+1];
  146.                              strcpy(Soggetto, S);
  147.                              strcpy(Formato, F);
  148.                              }
  149.                              
  150. Fotografia::Fotografia(const Fotografia & F) : Oggetto(F) {
  151.                              Soggetto=new char[strlen(F.Soggetto)+1];
  152.                              Formato=new char[strlen(F.Formato)+1];
  153.                              strcpy(Soggetto, F.Soggetto);
  154.                              strcpy(Formato, F.Formato);
  155.                              }
  156.                              
  157. void Fotografia::print() const {
  158.      Oggetto::print();
  159.      cout << "Soggetto: " << Soggetto << endl << "Formato: " << Formato << endl;
  160.      }
  161.      
  162. ostream & Fotografia::print(ostream & os) const {
  163.      Oggetto::print(os);
  164.      os << "Soggetto: " << Soggetto << endl << "Formato: " << Formato << endl;
  165.      return os;
  166.      }
  167.      
  168. ostream & operator<<(ostream & os, const Fotografia & F) {
  169.      return F.print(os);
  170.      }
  171.      
  172. void Fotografia::insert() {
  173.      Oggetto::insert();
  174.      cin >> Soggetto >> Formato;
  175.      }
  176.      
  177. istream & Fotografia::insert(istream & in) {
  178.      Oggetto::insert(in);
  179.      cin >> Soggetto >> Formato;
  180.      return in;
  181.      }
  182.      
  183.  
  184. istream & operator>>(istream & in, Fotografia & F) {
  185.      return F.insert(in);
  186.      }    
  187.  
  188. ____________________________________ LISTA.H ______________________________________
  189.  
  190. #ifndef _LISTA_LINKATA_FOTOGRAFIE
  191. #define _LISTA_LINKATA_FOTOGRAFIE
  192. #include "Fotografia.h"
  193.  
  194. typedef int E;
  195.  
  196. class Lista {
  197.    public :
  198.         Lista() : primo(0) , ultimo (0) {};
  199.         void inserisci(Fotografia &);
  200.         void stampa() const;
  201.         void clear();
  202.         ~Lista();
  203.    private:
  204.        Fotografia *primo, *ultimo;
  205. };
  206.  
  207. #endif
  208.  
  209. ____________________________________ LISTA.CPP ____________________________________
  210.  
  211. #include "Lista.h"
  212.  
  213. Lista::~Lista(){
  214.    clear();
  215. }
  216.  
  217. void Lista::clear(){
  218. Fotografia *walker = primo;
  219. while(walker != NULL){
  220. Fotografia *temp = walker;
  221. walker = walker->next;
  222. delete temp;}
  223. primo = ultimo = NULL;
  224. }
  225.  
  226. void Lista::inserisci(Fotografia & L) { //L'inserimento è in coda
  227.     Fotografia *temp = new Fotografia;
  228.     strcpy(temp->Soggetto,L.Soggetto);
  229.     strcpy(temp->Formato,L.Formato);
  230.     temp->next = NULL;
  231.     if(primo == NULL) primo=temp;
  232.     if (ultimo != NULL) ultimo->next = temp;
  233.     ultimo = temp;
  234. }
  235.  
  236. void Lista::stampa() const{
  237.    Fotografia *walker=primo;
  238.    while(walker != NULL){
  239.       cout << "Soggetto: " << walker->Soggetto << endl << "Formato: " << walker->Formato <<"\n";
  240.       walker=walker->next;
  241.    }
  242.    cout << "Fine Lista\n";
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement