Witam mój problem jest taki, że na podstawie UML (który jest w załączniku), mam utworzyć jakieś cudo o którym nie mam zielonego pojęcia.
Krótkie polecenie do tego:
-
Zdefiniowanie klas: CBaza, CWezel.
-
Dodawanie nowych produktow - najpierw dodajemy tylko zmienna typu int i pamietamy w polu wezel.indeks.
CBaza db1;
db1.Dodaj(5);
db1.Dodaj(7);
db1.Pokaz(); -
Tworzymy funkcje dodającą produkty (2 opcje)
CBaza db1;
CWarzywo w1;
CProdukt w2 = new CWarzywo();
CProdukt p1;
db1.Dodaj(w1); // ta opcja lepsza bo nie wymaga alokacji pamieci od uzytkownika
lub db1.Dodaj(w2);
Kod, w którym mam to zrealizować
```#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <conio.h>
#include <cstring>
#include <cstdlib>
using namespace std;
class cProdukt
{
//friend class warzywo; // deklaracja przyja�ni, aby mo�liwy by� dost�p do p� privat w nowej klasie pochodnej
protected: // zaprzyja�nienie zamienione na rozwi�zanie z polami protected
int mLp;
string mName; // nazwa produktu
double mCount; // liczba produkt�w
string mUnit; // jednostka miary
double mPrize; // cena netto 1 sztuki
double mVat; // warto�� podatku VAT
public:
cProdukt *next;
cProdukt(); // konstruktor
cProdukt(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat); // konstruktor
void wypelnij(void);
void pokaz(void);
//virtual void pokaz(void);
cProdukt(cProdukt &l); // konstruktor kopiujacy
~cProdukt(); // destruktor
int pole_lp(void);
void pole_lp(int);
};
cProdukt::cProdukt(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat)
{
mLp=Nlp;
mName=Nname;
mCount=Ncount;
mUnit=Nunit;
mPrize=Nprize;
mVat=Nvat;
}
cProdukt::cProdukt()
{
mLp = 0;
}
cProdukt::cProdukt(cProdukt &l)
{
mLp=l.mLp;
mName=l.mName;
mCount=l.mCount;
mUnit=l.mUnit;
mPrize=l.mPrize;
mVat=l.mVat;
}
cProdukt::~cProdukt()
{
;
}
void cProdukt::wypelnij(void)
{
cout << "Podaj nazwe:\n";
cin >> mName;
cout << "Podaj ilosc:\n";
cin >> mCount;
cout << "Podaj jednostke miary:\n";
cin >> mUnit;
cout << "Podaj cene:\n";
cin >> mPrize; // UWAGA obowi�zuje notacja z kropk� .
cout << "Podaj stawke VAT:\n";
cin >> mVat;
}
void cProdukt::pokaz(void)
{
cout << endl;
cout << mLp << "\t";
cout << mName << "\t";
cout << mCount << "\t";
cout << mUnit << "\t";
cout << mPrize << "\t";
cout << mVat << endl;
}
int cProdukt::pole_lp(void)
{
return(mLp);
}
void cProdukt::pole_lp(int x)
{
mLp = x;
}
class cWezel
{
};
class cBaza
{
public:
cProdukt *first;
baza();
dodaj(int first);
wyswietl();
usun(int);
zapisz();
wczytaj();
};
void cBaza::dodaj(int x)
{
cProdukt *nowa = new cProdukt;
}
cBaza::cBaza()
{
first = 0;
}
/*
class cWarzywo : public cProdukt
{
public:
string mKolor;
cWarzywo();
cWarzywo(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, string Nkolor);
void pokaz(void);
};
cWarzywo::cWarzywo()
{
mKolor="nieznany";
}
cWarzywo::cWarzywo(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, string Nkolor)
{
mLp=Nlp;
mName=Nname;
mCount=Ncount;
mUnit=Nunit;
mPrize=Nprize;
mVat=Nvat;
mKolor=Nkolor;
}
void cWarzywo::pokaz(void)
{
cout << endl;
cout << mLp << "\t";
cout << mName << "\t";
cout << mCount << "\t";
cout << mUnit << "\t";
cout << mPrize << "\t";
cout << mVat << "\t";
cout << mKolor << endl;
} */
/* class cProcesor :public cProdukt
{
public:
int mTaktowanie;
string mProducent;
cProcesor();
cProcesor(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, double Ntaktowanie, string Nproducent);
void procesor (int, string, int, string, double, double, double, string );
void pokaz (void);
};
cProcesor::cProcesor()
{
mTaktowanie=0;
mProducent="nieznany";
}
cProcesor::cProcesor(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, double Ntaktowanie, string Nproducent)
{
mLp=Nlp;
mName=Nname;
mCount=Ncount;
mUnit=Nunit;
mPrize=Nprize;
mVat=Nvat;
mTaktowanie=Ntaktowanie;
mProducent=Nproducent;
}
class cPamiec :public cProdukt
{
public:
int mPojemnosc;
string mProducent;
void pamiec(int, string, int, string, double, double, double, string);
void pokaz(void);
};
cPamiec::cPamiec()
{
mPojemnosc=0;
mProducent="nieznany";
}
cPamiec::cPamiec(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, double Npojemnosc, string Nprocesor)
{
mLp=Nlp;
mName=Nname;
mCount=Ncount;
mUnit=Nunit;
mPrize=Nprize;
mVat=Nvat;
mPojemnosc=Npojemnosc;
mProducent=Nproducent;
} */
int main(void)
{
cProdukt *wsk_produkt;
cWarzywo *wsk_warzywo;
cWarzywo w1(2, "marchew", 100, "kg", 1.50, 0.07, "czerwony");
wsk_produkt = &w1;
wsk_warzywo = &w1;
w1.pokaz();
wsk_produkt->pokaz();
wsk_warzywo->pokaz();
cBaza db1;
db1.dodaj(5);
// Dynamiczne przydzielanie pamiecy
cProdukt *p1 = new cProdukt;
p1->pole_lp(6);
cout << p1->pole_lp() << endl;
delete p1;
cProdukt *p2 = new cProdukt(5, "maslo", 10, "sztuk", 1.00, 0.07);
p2->pokaz();
// Deklaracja statyczna
cProdukt p3(4, "chleb", 10, "sztuk", 2.00, 0.07);
cProdukt p4;
p3.pokaz();
p4.wypelnij();
p4.pokaz();
cout << p4.pole_lp();
p4.pole_lp(5);
cout << p4.pole_lp();
system("PAUSE");
return(0);
}