Cześć mam takie zadanie do wykonania (studia informatyczne), ktoś chciałby pomóc ?
Stwórz kolekcję figur geometrycznych dziedziczących ze wspólnej klasy bazowej Figura. Klasa ta powinna posiadać chronione pole 'kolor', metody dostępowe do tego pola oraz konstruktor pobierający początkowy kolor figury.
Z klasy Figura powinny dziedziczyć 2 kolejne klasy: Trojkat (składający się z 3 linii) i Czworokat (składający się z 4 linii). Każda z nich powinna posiadać konstruktor pobierający kolor i 3 lub 4 punkty, z których konstruują swoje linie.
Następnie dopisz 2 klasy: Kwadrat -> Prostokat -> Czworokat -> Figura. Do skonstruowania prostokąta wystarczy podać, oprócz koloru, 2 punkty (np. lewy-górny i prawy-dolny), zaś do skonstruowania kwadratu - 1 punkt (np. lewy-górny) i długość boku. Wg tych zasad zaprojektuj odpowiednie konstruktory, pamiętając przy tym, że muszą one "wywoływać" konstruktory klasy bazowej (super, base, ...).
W programie głównym wykaż, że z napisanych klas można tworzyć obiekty i korzystać z odziedziczonych pól i metod.
****TUTAJ ZNALAZŁEM PODOBNE ZADANIE ALE NIE MA TYCH KILKU "Smaczków" z zadania. Płacę w szeklach jak ktoś pomoże.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Punkt
{
int x, y;
public:
Punkt()
{
x = y = 0;
}
Punkt(int x, int y)
{
this->x=x;
this->y=y;
}
void przesun(int dx, int dy)
{
x+=dx;
y+=dy;
}
};
class Linia
{
Punkt *p1, *p2;
public:
Linia()
{
p1 = new Punkt();
p2 = new Punkt(1,1);
}
Linia(Punkt &p1, Punkt &p2)
{
this->p1 = new Punkt(p1);
this->p2 = new Punkt(p2);
}
Linia(const Linia &l)
{
this->p1 = l.p1;
this->p2 = l.p2;
}
void przesun(int dx, int dy)
{
p1->przesun(dx,dy);
p2->przesun(dx,dy);
}
~Linia()
{
delete p1;
delete p2;
}
};
class Trojkat
{
Linia *l1, *l2, *l3;
public:
Trojkat()
{
this->l1 = new Linia();
this->l2 = new Linia();
this->l3 = new Linia();
}
Trojkat(Punkt &a, Punkt &b, Punkt &c)
{
l1 = new Linia(a,b);
l2 = new Linia(b,c);
l3 = new Linia(c,a);
}
Trojkat(const Trojkat &trojkat)
{
this->l1 = trojkat.l1;
this->l2 = trojkat.l2;
this->l3 = trojkat.l3;
}
void przesun(int dx, int dy)
{
l1->przesun(dx, dy);
l2->przesun(dx, dy);
l3->przesun(dx, dy);
}
~Trojkat()
{
delete l1;
delete l2;
delete l3;
}
};
class Czworokat
{
Linia *l1, *l2, *l3, *l4;
public:
Czworokat()
{
this->l1 = new Linia();
this->l2 = new Linia();
this->l3 = new Linia();
this->l4 = new Linia();
}
Czworokat(Punkt &a, Punkt &b, Punkt &c, Punkt &d)
{
this->l1 = new Linia(a, b);
this->l2 = new Linia(b, c);
this->l3 = new Linia(c, d);
this->l4 = new Linia(d, a);
}
Czworokat(const Czworokat &czworokat)
{
this->l1 = czworokat.l1;
this->l2 = czworokat.l2;
this->l3 = czworokat.l3;
this->l4 = czworokat.l4;
}
void przesun(int dx, int dy)
{
l1->przesun(dx,dy);
l2->przesun(dx,dy);
l3->przesun(dx,dy);
l4->przesun(dx,dy);
}
~Czworokat()
{
delete l1;
delete l2;
delete l3;
delete l4;
}
};
class Obraz
{
Trojkat *TablicaTrojkat = new Trojkat [20];
int licznik = 0;
public:
void DodajTrojkat(Trojkat trojkat)
{
TablicaTrojkat[licznik++] = trojkat;
}
};
int main()
{
Punkt *pierwszy = new Punkt(1,1);
Punkt *drugi = new Punkt(2,2);
Punkt *trzeci = new Punkt(4,8);
Punkt *czwarty = new Punkt (15,17);
Linia *l1 = new Linia(*pierwszy,*drugi);
l1->przesun(4,4);
Trojkat *trojkat = new Trojkat(*pierwszy,*drugi,*trzeci);
Czworokat *czworokat = new Czworokat(*pierwszy,*drugi,*trzeci,*czwarty);
return 0;
}