Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ___________________________MAIN.CPP_______________________________ Il main per testare le funzionalità
- #include <iostream>
- #include "Fotografia.h"
- #include "Lista.h"
- using namespace std;
- int main(int argc, char *argv[])
- {
- cout << "_______Test della Gerarchia_______" << endl << endl;
- Libro L1; Fotografia F1;
- Oggetto O1("Iddiaccazzo","Fallo");
- cout << "L'Oggetto è: \n\n";
- O1.print();
- cout << "Inserisci il Libro: \n\n";
- L1.insert();
- cout << "Ereditarietà Oggetto - Libro: \n\n";
- O1=L1;
- O1.print();
- cout << "_______Test della Lista_______" << endl << endl;
- Fotografia F2("Bll","Stica","Mano","Micio");
- Fotografia F3("Azz","Merda","Ciao","Dogma");
- Lista L;
- L.inserisci(F2);
- L.inserisci(F3);
- L.stampa();
- system("PAUSE");
- return EXIT_SUCCESS;
- }
- _____________________________ OGGETTO.H ______________________________
- #ifndef _OGGETTO_H
- #define _OGGETTO_H
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Oggetto {
- friend ostream & operator<<(ostream &, const Oggetto &);
- friend istream & operator>>(istream &, Oggetto &);
- protected:
- char * ID;
- char * Tipo;
- virtual ostream & print(ostream & os) const;
- virtual istream & insert(istream & in);
- public:
- Oggetto(const char * I="", const char * T="");
- Oggetto(const Oggetto&);
- const char * get_ID() const {return ID;}
- const char * get_Tipo() const {return Tipo;}
- void set_ID(const char * I) {delete [] ID;ID=new char[strlen(ID)+1]; strcpy(ID, I);}
- void set_Tipo(const char * T) {delete [] Tipo; Tipo=new char[strlen(Tipo)+1]; strcpy(Tipo, T);}
- virtual void print() const;
- virtual void insert();
- ~Oggetto() {delete [] ID; delete [] Tipo;}
- };
- #endif
- _____________________________________ OGGETTO.CPP _______________________________________
- #include "Oggetto.h"
- Oggetto::Oggetto(const char * I, const char * T) {
- ID=new char[strlen(I)+1];
- Tipo=new char[strlen(T)+1];
- strcpy(ID, I);
- strcpy(Tipo, T);
- }
- Oggetto::Oggetto(const Oggetto & O) {
- ID=new char[strlen(O.ID)+1];
- Tipo=new char[strlen(O.Tipo)+1];
- strcpy(ID, O.ID);
- strcpy(Tipo, O.Tipo);
- }
- void Oggetto::print() const {
- cout << "ID: " << ID << endl << "Tipo: " << Tipo << endl << endl;
- }
- ostream & Oggetto::print(ostream & os) const {
- os << "ID: " << ID << endl << "Tipo: " << Tipo << endl << endl;
- return os;
- }
- ostream & operator<< (ostream & os, const Oggetto & O){
- return O.print(os);
- }
- void Oggetto::insert() {
- cin >> ID >> Tipo;
- }
- istream & Oggetto::insert(istream & in) {
- cin >> ID >> Tipo;
- return in;
- }
- istream & operator>> (istream & in, Oggetto & O){
- return O.insert(in);
- }
- ___________________________________ FOTOGRAFIA.H ______________________________________
- #ifndef _FOTOGRAFIA_H
- #define _FOTOGRAFIA_H
- #include "Oggetto.h"
- class Fotografia : public Oggetto {
- friend class Lista; //Dichiaro la classe Lista friend per la classe Fotografia
- friend ostream & operator<<(ostream &, const Fotografia &);
- friend istream & operator>>(istream &, Fotografia &);
- private:
- char * Soggetto;
- char * Formato;
- Fotografia * next; //Realizzo il puntatore al prossimo elemento, da usare per la classe Lista (che è una Lista Linkata)
- virtual ostream & print(ostream & os) const;
- virtual istream & insert(istream & in);
- public:
- Fotografia(const char * I="", const char * T="", const char * S="", const char * F="");
- Fotografia(const Fotografia &);
- const char * get_Soggetto() const {return Soggetto;}
- const char * get_Formato() const {return Formato;}
- void set_Soggetto (const char * S) {delete [] Soggetto; Soggetto=new char[strlen(Soggetto)+1];strcpy(Soggetto,S);}
- void set_Formato (const char * F) {delete [] Formato; Formato=new char[strlen(Formato)+1];strcpy(Formato,F);}
- virtual void print() const;
- virtual void insert();
- ~Fotografia() {delete [] Soggetto; delete [] Formato;}
- };
- #endif
- __________________________________ FOTOGRAFIA.CPP ____________________________________
- #include "Fotografia.h"
- Fotografia::Fotografia(const char * I, const char * T, const char * S, const char * F) : Oggetto(I,T) {
- Soggetto=new char[strlen(S)+1];
- Formato=new char[strlen(F)+1];
- strcpy(Soggetto, S);
- strcpy(Formato, F);
- }
- Fotografia::Fotografia(const Fotografia & F) : Oggetto(F) {
- Soggetto=new char[strlen(F.Soggetto)+1];
- Formato=new char[strlen(F.Formato)+1];
- strcpy(Soggetto, F.Soggetto);
- strcpy(Formato, F.Formato);
- }
- void Fotografia::print() const {
- Oggetto::print();
- cout << "Soggetto: " << Soggetto << endl << "Formato: " << Formato << endl;
- }
- ostream & Fotografia::print(ostream & os) const {
- Oggetto::print(os);
- os << "Soggetto: " << Soggetto << endl << "Formato: " << Formato << endl;
- return os;
- }
- ostream & operator<<(ostream & os, const Fotografia & F) {
- return F.print(os);
- }
- void Fotografia::insert() {
- Oggetto::insert();
- cin >> Soggetto >> Formato;
- }
- istream & Fotografia::insert(istream & in) {
- Oggetto::insert(in);
- cin >> Soggetto >> Formato;
- return in;
- }
- istream & operator>>(istream & in, Fotografia & F) {
- return F.insert(in);
- }
- ____________________________________ LISTA.H ______________________________________
- #ifndef _LISTA_LINKATA_FOTOGRAFIE
- #define _LISTA_LINKATA_FOTOGRAFIE
- #include "Fotografia.h"
- typedef int E;
- class Lista {
- public :
- Lista() : primo(0) , ultimo (0) {};
- void inserisci(Fotografia &);
- void stampa() const;
- void clear();
- ~Lista();
- private:
- Fotografia *primo, *ultimo;
- };
- #endif
- ____________________________________ LISTA.CPP ____________________________________
- #include "Lista.h"
- Lista::~Lista(){
- clear();
- }
- void Lista::clear(){
- Fotografia *walker = primo;
- while(walker != NULL){
- Fotografia *temp = walker;
- walker = walker->next;
- delete temp;}
- primo = ultimo = NULL;
- }
- void Lista::inserisci(Fotografia & L) { //L'inserimento è in coda
- Fotografia *temp = new Fotografia;
- strcpy(temp->Soggetto,L.Soggetto);
- strcpy(temp->Formato,L.Formato);
- temp->next = NULL;
- if(primo == NULL) primo=temp;
- if (ultimo != NULL) ultimo->next = temp;
- ultimo = temp;
- }
- void Lista::stampa() const{
- Fotografia *walker=primo;
- while(walker != NULL){
- cout << "Soggetto: " << walker->Soggetto << endl << "Formato: " << walker->Formato <<"\n";
- walker=walker->next;
- }
- cout << "Fine Lista\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement