pomoże mi ktoś zrozumieć to plecenie? od pazdziernika uczylam sie programowania w C, teraz przeskoczylismy na C++/obiektowy C++, dlatego może ktoś powiedziałbymi "po ludzku" co mam zrobić?
Jeżeli jest wybór pomiędzy stosowaniem mechanizmów, funkcji, instrukcji typowych dla
języka C i C++ proszę stosować odpowiednie konstrukcje właściwe dla C++ np. char* - string,
FILE* - iostream, static_cast, tablica w stylu C – std::vector itp.
Klasa , konstruktory i destruktory, przeciążanie funkcji i operatorów
- Zaprojektować zestaw trzech klas będących obiektowym odwzorowaniem giraty, 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.
#include <iostream>
#include "gitara.h"
using namespace std;
class Gitara
{
Pudlo pudlo;
Struny *struny;
public:
Gitara()
{
#ifdef TESTPR
cout<<"Dziala konstruktor domyslny"<<endl;
}
Gitara(const Gitara &g)
{
if(g.pudlo != 0)
this -> pudlo = new Pudlo(g.pudlo);
else
this -> pudlo = 0;
cout<<"Dziala konstruktor kopiujacy"<<endl;
}
friend class Struny;
friend class Pudlo;
};
class Struny
{
float dlugosc;
float grubosc;
public:
Struny(float d = 1.0, float g = 1.0)
{
d = dlugosc;
g = grubosc;
}
void
};
int main()
{
return 0;
}