Advertisement
Guest User

Coda Statica di Classi Polimorfe

a guest
Feb 8th, 2013
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.14 KB | None | 0 0
  1. ________________________FileMultimediale.h________________________
  2. #ifndef _H_FileMultimediale
  3. #define _H_FileMultimediale
  4.  
  5. #include <iostream>
  6. #include <cstring>
  7. #include <fstream>
  8. using namespace std;
  9.  
  10. class FileMultimediale {
  11.      
  12.       friend ostream & operator<<(ostream &, const FileMultimediale &);
  13.       friend istream & operator>>(istream &, FileMultimediale &);
  14.       protected:
  15.          char * URL;
  16.          int Kbyte;
  17.          char * Formato;
  18.          virtual ostream & print(ostream & os) const;
  19.          virtual istream & insert(istream & in);
  20.       public:
  21.          FileMultimediale(const char * U="", const int K=0, const char * F="");
  22.          FileMultimediale(const FileMultimediale &);
  23.          virtual void print() const;
  24.          virtual void insert();
  25.          virtual void memorizza_dati(const char *);
  26.          ~FileMultimediale() {delete [] URL; delete [] Formato;}
  27.          };
  28.  
  29. #endif
  30.  
  31.  
  32. ________________________Implementazione delle funzioni di FileMultimediale.h______________________
  33.  
  34. #include "FileMultimediale.h"
  35.  
  36. FileMultimediale::FileMultimediale(const char * U, const int K, const char * F) {
  37.                                          URL=new char[strlen(U)+1];
  38.                                          Formato=new char[strlen(F)+1];
  39.                                          strcpy(URL,U);
  40.                                          strcpy(Formato,F);
  41.                                          Kbyte=K;
  42.                                          }
  43.  
  44. FileMultimediale::FileMultimediale(const FileMultimediale & F) {
  45.                                          URL=new char[strlen(F.URL)+1];
  46.                                          Formato=new char[strlen(F.Formato)+1];
  47.                                          strcpy(URL,F.URL);
  48.                                          strcpy(Formato,F.Formato);
  49.                                          Kbyte=F.Kbyte;
  50.                                          }
  51.                            
  52. //Per l'overload degli operatori di flusso, utilizzo le funzioni print() ed insert() per semplificare l'implementazione.                          
  53.                                          
  54. void FileMultimediale::print() const{
  55.      cout << endl << "URL: " << URL << endl << "Dimensioni: " << Kbyte << " Kb" << endl << "Formato: " << Formato << endl << endl;
  56.      }
  57.      
  58. ostream & FileMultimediale::print(ostream & os) const {
  59.         os << endl << "URL: " << URL << endl << "Dimensioni: " << Kbyte << " Kb" << endl << "Formato: " << Formato << endl << endl;
  60.         return os;
  61.         }
  62.        
  63. ostream & operator<< (ostream & os, const FileMultimediale & F) {
  64.         return F.print(os);
  65.         }
  66.        
  67. void FileMultimediale::insert() {
  68.      cout << "Inserisci, in ordine, URL, Dimensioni in Kbyte, e Formato: \n\n";
  69.      cin >> URL >> Kbyte >> Formato;
  70.      cout << endl << endl;
  71.      }
  72.      
  73. istream & FileMultimediale::insert(istream & in) {
  74.      cout << "Inserisci, in ordine, URL, Dimensioni in Kbyte, e Formato: \n\n";
  75.      cin >> URL >> Kbyte >> Formato;
  76.      cout << endl << endl;
  77.      return in;
  78.         }
  79.        
  80. istream & operator>> (istream & in, FileMultimediale & F) {
  81.         return F.insert(in);
  82.         }
  83.  
  84. void FileMultimediale::memorizza_dati(const char * a) {
  85.    ofstream outfile(a, ios::out);
  86.    cout << "______Memorizzazione dei dati su un file di testo______ \n\n";
  87.    cout << "Scrittura ->";
  88.    outfile << URL << " " << Kbyte << " " << Formato << endl;
  89.    cout << "-> Operazione Completata";
  90.    outfile.close();
  91. }
  92.  
  93. ____________________________BranoMusicale.h____________________________________
  94. #ifndef _BranoMusicale_H
  95. #define _BranoMusicale_H
  96.  
  97. #include "FileMultimediale.h"
  98.  
  99. class BranoMusicale : public FileMultimediale {
  100.       friend ostream & operator<<(ostream &, const BranoMusicale &);
  101.       friend istream & operator>>(istream &, BranoMusicale &);
  102.       private:
  103.          char * Brano;
  104.          char * Interprete;
  105.          float Durata;
  106.          virtual ostream & print(ostream & os) const;
  107.          virtual istream & insert(istream & in);
  108.       public:
  109.          BranoMusicale(const char * U="", const int K=0, const char * F="", const char * B="", const char * I="", const float D=0);
  110.          BranoMusicale(const BranoMusicale &);
  111.          virtual void print() const;
  112.          virtual void insert();
  113.          virtual void memorizza_dati(const char *);
  114.          ~BranoMusicale() {delete [] Brano; delete [] Interprete;}
  115.          };
  116.      
  117. #endif
  118.  
  119. ________________________Implementazione delle funzioni di BranoMusicale.h__________________________
  120. #include "BranoMusicale.h"
  121.  
  122. BranoMusicale::BranoMusicale(const char * U, const int K, const char * F, const char * B, const char * I, const float D):
  123. FileMultimediale(U,K,F) {
  124.                         Brano=new char[strlen(B)+1];
  125.                         Interprete=new char[strlen(I)+1];
  126.                         strcpy(Brano,B);
  127.                         strcpy(Interprete,I);
  128.                         Durata=D;
  129.                         }
  130.  
  131. BranoMusicale::BranoMusicale(const BranoMusicale & B): FileMultimediale(B) {
  132.                         Brano=new char[strlen(B.Brano)+1];
  133.                         Interprete=new char[strlen(B.Interprete)+1];
  134.                         strcpy(Brano,B.Brano);
  135.                         strcpy(Interprete,B.Interprete);
  136.                         Durata=B.Durata;
  137.                         }
  138.                        
  139. void BranoMusicale::print() const{
  140.      FileMultimediale::print();
  141.      cout << endl << "Brano: " << Brano << endl << "Interprete: " << Interprete
  142.      << endl << "Durata: " << Durata << endl << endl;
  143.      }
  144.      
  145. ostream & BranoMusicale::print(ostream & os) const {
  146.         FileMultimediale::print(os);
  147.         os << endl << "Brano: " << Brano << endl << "Interprete: " << Interprete
  148.         << endl << "Durata: " << Durata << endl << endl;
  149.         return os;
  150.         }
  151.        
  152. ostream & operator<< (ostream & os, const BranoMusicale & B) {
  153.         return B.print(os);
  154.         }
  155.        
  156. void BranoMusicale::insert() {
  157.      FileMultimediale::insert();
  158.      cout << "Inserisci, in ordine, Brano, Interprete e Durata: \n\n";
  159.      cin >> Brano >> Interprete >> Durata;
  160.      cout << endl << endl;
  161.      }
  162.      
  163. istream & BranoMusicale::insert(istream & in) {
  164.      FileMultimediale::insert(in);
  165.      cout << "Inserisci, in ordine, Brano, Interprete e Durata: \n\n";
  166.      cin >> Brano >> Interprete >> Durata;
  167.      cout << endl << endl;
  168.      return in;
  169.         }
  170.        
  171. istream & operator>> (istream & in, BranoMusicale & B) {
  172.         return B.insert(in);
  173.         }
  174.        
  175. void BranoMusicale::memorizza_dati(const char * a) {
  176.    ofstream outfile(a, ios::out);
  177.    cout << "______Memorizzazione dei dati su un file di testo______ \n\n";
  178.    cout << "Scrittura ->";
  179.    outfile << URL << " " << Kbyte << " " << Formato << " "
  180.            << Brano << " " << Interprete << " " << Durata << endl;
  181.    cout << "-> Operazione Completata";
  182.    outfile.close();
  183. }
  184.  
  185. _____________________________Video.h_______________________________
  186. #ifndef _Video_H
  187. #define _Video_H
  188.  
  189. #include "FileMultimediale.h"
  190.  
  191. class Video : public FileMultimediale {
  192.       friend ostream & operator<<(ostream &, const Video &);
  193.       friend istream & operator>>(istream &, Video &);
  194.       private:
  195.          char * Autore;
  196.          char * Soggetto;
  197.          char * Data;
  198.          virtual ostream & print(ostream & os) const;
  199.          virtual istream & insert(istream & in);
  200.       public:
  201.          Video(const char * U="", const int K=0, const char * F="", const char * A="", const char * S="", const char * D="");
  202.          Video(const Video &);
  203.          virtual void print() const;
  204.          virtual void insert();
  205.          virtual void memorizza_dati(const char *);
  206.          ~Video() {delete [] Autore; delete [] Soggetto; delete [] Data;}
  207.          };
  208.  
  209. #endif
  210.  
  211. _______________________Implementazione delle funzioni di Video.h____________________________
  212. #include "Video.h"
  213.  
  214. Video::Video(const char * U, const int K, const char * F, const char * A, const char * S, const char * D):
  215. FileMultimediale(U,K,F) {
  216.                         Autore=new char[strlen(A)+1];
  217.                         Soggetto=new char[strlen(S)+1];
  218.                         Data=new char[strlen(D)+1];
  219.                         strcpy(Autore,A);
  220.                         strcpy(Soggetto,S);
  221.                         strcpy(Data,D);
  222.                         }
  223.  
  224. Video::Video(const Video & V): FileMultimediale(V) {
  225.                         Autore=new char[strlen(V.Autore)+1];
  226.                         Soggetto=new char[strlen(V.Soggetto)+1];
  227.                         Data=new char[strlen(V.Data)+1];
  228.                         strcpy(Autore,V.Autore);
  229.                         strcpy(Soggetto,V.Soggetto);
  230.                         strcpy(Data,V.Data);
  231.                         }
  232.                        
  233. void Video::print() const{
  234.      FileMultimediale::print();
  235.      cout << endl << "Autore: " << Autore << endl << "Soggetto: " << Soggetto
  236.      << endl << "Data " << Data << endl << endl;
  237.      }
  238.      
  239. ostream & Video::print(ostream & os) const {
  240.         FileMultimediale::print(os);
  241.         os << endl << "Autore: " << Autore << endl << "Soggetto: " << Soggetto
  242.         << endl << "Data " << Data << endl << endl;
  243.         return os;
  244.         }
  245.        
  246. ostream & operator<< (ostream & os, const Video & V) {
  247.         return V.print(os);
  248.         }
  249.        
  250. void Video::insert() {
  251.      FileMultimediale::insert();
  252.      cout << "Inserisci, in ordine, Autore, Soggetto e Data: \n\n";
  253.      cin >> Autore >> Soggetto >> Data;
  254.      cout << endl << endl;
  255.      }
  256.      
  257. istream & Video::insert(istream & in) {
  258.      FileMultimediale::insert(in);
  259.      cout << "Inserisci, in ordine, Autore, Soggetto e Data: \n\n";
  260.      cin >> Autore >> Soggetto >> Data;
  261.      cout << endl << endl;
  262.      return in;
  263.         }
  264.        
  265. istream & operator>> (istream & in, Video & V) {
  266.         return V.insert(in);
  267.         }
  268.        
  269. void Video::memorizza_dati(const char * a) {
  270.    ofstream outfile(a, ios::out);
  271.    cout << "______Memorizzazione dei dati su un file di testo______ \n\n";
  272.    cout << "Scrittura ->";
  273.    outfile << URL << " " << Kbyte << " " << Formato << " "
  274.            << Autore << " " << Soggetto << " " << Data << endl;
  275.    cout << "-> Operazione Completata";
  276.    outfile.close();
  277. }
  278.  
  279. _______________________________CodaStatica.h________________________________
  280. #ifndef _Coda_Statica
  281. #define _Coda_Statica
  282. #include "BranoMusicale.h"
  283. #include "Video.h"
  284.  
  285. typedef FileMultimediale F;
  286.  
  287. class CodaStatica{
  288.       private:
  289.          static const int N=10;
  290.          F E[N];
  291.          int t,c;
  292.       public:
  293.          CodaStatica();
  294.          virtual void append(const F &);
  295.          virtual void pop(F &);
  296.          bool full() const;
  297. };
  298.  
  299. #endif
  300.  
  301. _________________________Implementazione delle funzioni di CodaStatica.h__________________________
  302.  
  303. #include "CodaStatica.h"
  304.  
  305. CodaStatica::CodaStatica() {
  306.              t=0;
  307.              c=0;
  308. }
  309.  
  310. void CodaStatica::append(const F & a) {
  311.              E[c]=a;
  312.              c++;
  313.              }
  314.              
  315. void CodaStatica::pop(F & a) {
  316.              a=E[t];
  317.              t++;
  318.              }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement