Metoda ustaw w klasie pochodnej ma korzystać z metody w klasie nadrzędnej.

0

Witam.
Metoda ustaw w klasie pochodnej ma korzystać z metody w klasie nadrzędnej. Proszę również o poprawianie wszelkich niedoskonałości w kodzie.

#include <iostream>

using namespace std;

class Punkt
{

protected:
	float x, y;
public:

	Punkt()
	{
		x = 0;
		y = 0;
	}
	
	Punkt(float x, float y)
	{
		this->x = x;
		this->y = y;
	}
	
	void wypisz()
	{
		cout << "X: " << x << ", Y: " << y << endl;
	}
	
	void przesun(float przesunX, float przesunY)
	{
		this->x += przesunX;
		this->y += przesunY;
	}
	//Tu
	void ustaw(float x, float y)
	{
		this->x = x;
		this->y = y;
	}
};

class Punkt3d: public Punkt
{
private:
	float z;
public:
	Punkt3d():Punkt()
	{
		z = 0;
	}
	Punkt3d(float x, float y,float z):Punkt(x, y)
	{
		this->z = z;
	}

	void wypisz()
	{
		cout << "X: " << x << ", Y: " << y << ", Z: " << z <<endl;
	}

	void przesun(float przesunX, float przesunY, float przesunZ)
	{
		this->x += przesunX;
		this->y += przesunY;
		this->z += przesunZ;
	}	
	//Tu
	void ustaw(float z)
	{
		this->z = z;
	}
};

int main()
{
	
	//klasa punkt
	Punkt *p = new Punkt(3.2,1.3);
	p->wypisz();
	p->przesun(3,2);
	p->wypisz();

	//klasa punkt 3d
	Punkt3d *p3d = new Punkt3d();
	p3d->wypisz();
	p3d->ustaw(2222);
	p3d->wypisz();
	p3d->przesun(1,1,1);
	p3d->wypisz();

	delete p;
	delete p3d;
	//korzystanie klasy pochodne z nadrzednej
	
	system("pause");
	return 0;
}

1

Nie widzę w tym sensu, dla mnie, przestrzenie o różnych wymiarach to różne typy; ale, jak już coś to przestrzeń dwuwymiarowa, mogła by być podprzestzrenią trójwymiarowej, z trzecią współrzędną, z równą zero.

2

Doskonały przykład nieprawidłowego użycia dziedziczenia.
To co chcesz zrobić jest naruszeniem zasady podstawienia Liskov.

0

Zaproponuj metodę ustaw ustawiającą wartości współrzędnych w klasach Punkt oraz Punkt3d tak aby metoda w klasie pochodnej korzystała z metody w klasie nadrzędnej.
Dokładnie tak brzmi polecenie...

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