Zadanie - figury geometryczne i programowanie obiektowe

1

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;
}
0

Chętnie to zrobię w całości za 50 zł. Jeśli jesteś zainteresowany, to odezwij się na PW w celu omówienia paru szczegółów.

0

Napisałem PW :)

0
MałyTerrorysta napisał(a):

Napisałem PW :)

Nie mam żadnej, nowej wiadomości. Jak coś, to możesz też napisać na maila: amb00pl @ gmail.com

1 użytkowników online, w tym zalogowanych: 0, gości: 1