Witajcie,
mam do napisania coś takiego:
Klasa , konstruktory i destruktory, przeciążanie funkcji i operatorów
- Zaprojektować zestaw trzech klas będących obiektowym odwzorowaniem Piekarnika, z których jedna będzie klasą główną, reprezentującą cały obiekt i będzie zawierać dwa obiekty pozostałych klas (podobiekty; w tym jeden automatyczny i jeden dynamiczny). Podobiekt dynamiczny oznacza, że polem obiektu głównego jest wskaźnik na podobiekt (do celów tego projektu w konstruktorze domyślnym ma być inicjowany na zero). Odwzorowanie powinno być możliwie realistyczne - dla skomplikowanych obiektów odpowiednio uproszczone. Zaprojektowane klasy będą wykorzystywane w następnym projekcie – ewentualnie będą modyfikowane.
- We wszystkich konstruktorach i destruktorach wstawić kod drukujący na ekran informację o wywołaniu (warunkowo, pod zmienną kompilacji TESTPR). Wydruki te będą pomocne w czasie śledzenia sekwencji wywołania konstruktorów i destruktorów.
- Klasa główna ma zawierać mechanizm określania liczby stworzonych obiektów tego typu (statyczne pole klasy), oraz statyczną metodę zwracającą to statyczne pole klasy (chodzi o możliwość uzyskania informacji o braku instancji klasy).
- Każda klasa powinna prawidłowo zachowywać się w przypadku kopiowania – rozważyć realizację konstruktora kopiującego lub użycie standardowego konstruktora kopiującego lub zabronienie kopiowania obiektów klasy. Podobnie rozważyć operator przypisania dla klas.
- Zaprojektować i zaimplementować dla klas kilka sensownych, różnorodnych operatorów, w tym: jeden jednoargumentowy, jeden dwuargumentowy, jeden konwersji, jeden indeksowy. Zastosować wybrane operatory jako metody klas oraz jako funkcje zaprzyjaźnione z klasami.
- Napisać program główny testujący klasę główną i jej podklasy (oddzielny moduł/plik). Dla testów stworzyć obiekty automatyczne, dynamiczne i statyczne (lokalne, globalne) w funkcji main i innej funkcji testowej (w trakcie testu powinno powstać co najmniej kilkanaście obiektów). Celem powyższych testów jest między innymi obserwowanie czasu życia obiektów oraz zachowanie się funkcji i operatorów przeciążonych. Fragment programu powinien testować kopiowanie obiektów. Program testowy powinien być nieinterakcyjny (statyczny) z odpowiednią liczbą wydruków objaśniających, co zaszło w czasie działania programu.
Stworzyłem coś takiego, ale wiem że mam minimalne błedy w tych klasach, pomoglibyście mi je załatać?
Wszystkie poza podpunktem 2. który dodam na samym końcu.
Z góry dziękuje i podsyłam kod nad którym się męcze
#include <iostream>
#include "piekarnik.h"
using namespace std;
int main(int argv, char **argc)
{
bool showContructionInfo = static_cast<bool>(argc[1]);
cout << showContructionInfo << endl;
Piekarnik::pokazIloscPiekarnikow();
Piekarnik piekarnik1; //Deklaracja klasy glownej
Piekarnik::pokazIloscPiekarnikow();
return 0;
}
#ifndef PIEKARNIK_H_INCLUDED
#define PIEKARNIK_H_INCLUDED
enum Typ_pieczenia {ZERO, TERMOOBIEG, GORADOL, GORA}; // i inne typy pieczenia
enum Typ_ciasta {BRAK, SERNIK, JABLECZNIK, MAKOWIEC}; // i inne typy ciast
class Program //Opis klasy dla pierwszego podobiektu
{
public:
int temperatura = 0;
enum Typ_pieczenia ustawiony_na = ZERO; //Program. = TEROMOOBIEG
};
class Ciasto
{
public:
enum Typ_ciasta rodzaj = BRAK;
};
class Piekarnik //A tu deklaracja klasy glownej, z podobiektami
{
static int iloscPiekarnikow;
public:
Program obecnyProgram; //Tu statyczny podobiekt
Ciasto * wlozoneCiasto = 0; //A tu dynamiczny zainicjalizowany za 0
Piekarnik(); //Deklaracja kontruktora
Piekarnik(const Piekarnik &piekarnik);
~Piekarnik(); //Deklaracja destruktora
static void pokazIloscPiekarnikow();
};
int Piekarnik::iloscPiekarnikow = 0;
#endif // PIEKARNIK_H_INCLUDED
#include "piekarnik.h"
Piekarnik::Piekarnik() //Kontruktor
{
podObiekt2 = new podKlasa2; //Dynamiczne zaalokowanie dynamicznego obiektu
iloscPiekarnikow++;
}
Piekarnik::~Piekarnik() //Destruktor
{
delete podObiekt2; //Usuniêcie dynamicznego obiektu
iloscPiekarnikow--;
}
Piekarnik::Piekarnik(const Piekarnik &piekarnik)
{
obecnyProgram = piekanik.obecnyProgram;
wlozoneCiasto = * piekarnik.wlozoneCiasto;
}
void Piekarnik::pokazIloscPiekarnikow() //pomijamy static
{
cout << "Ilosc stworzonych piekarnikow: " << iloscPiekarnikow << endl;
}