korzystanie z metody klasy dziedziczącej przez obiekt klasy bazowej

0

Mamy np. dwie klasy oraz definicje metod i akcesorów, które one zawierają.

 
class punkt
{
private:
	 float x, y;
public:
	punkt (float, float);
	void przesun (float, float);
	float odcieta();
	float rzedna();
};

punkt::punkt (float a, float b)
{
	x = a;
    y = b;
}

void punkt::przesun(float dx, float dy)
{
	x = x + dx;
    y = y + dy;
}
float punkt::odcieta()
{
	cout << "Wspolrzedna x: " << x << endl;
	return x;
}

float punkt::rzedna()
{
	cout << "Wspolrzedna y: " << y << endl << endl;
	return y;
}

class punkta : public punkt
{
public:
    punkta(float, float);
    float promien();
};

float punkta::promien()
{
    float r=0, a=0;
    a=odcieta()*odcieta()+rzedna()*rzedna();
    r=sqrt(a);
    return r;
}

Klasą bazową dla "punkta" jest klasa "punkt". Klasa "punkta" zawiera metodę "promien", która zwraca wartość typu float (odległość punktu od środka układu współrzędnych kartezjańskich).

Tworzymy obiekt typu "punkt" i inicjalizujemy go. Klasa ta nie zawiera jednak metody "promien", zawiera ją natomiast klasa pochodna - "punkta". Teraz pytanie - w jaki sposób obiekt klasy bazowej może użyć metody klasy pochodnej ?

Coś takiego nie zadziała.

 int main()
{
    float x=0, y=0, r=0;

    cout << "Podaj wspolrzedne punktu:" << endl;
    cout << "x: "; cin >> x;
	cout << "y: "; cin >> y;
	punkt a (x, y);
	a.odcieta();
	a.rzedna();

	r=a.promien();
	cout << "Promien: " << r << endl << endl;;

    getch();
	return 0;
}

Kod się lekko "rozjechał" po wrzuceniu na forum.

0

Utwórz obiekt typu punkta.

0

Wiem, że tak można i to jest konsekwencja wykorzystywania dziedziczenia. Ale czy da się zrealizować to, o czym napisałem ? Wykorzystać metodę klasy pochodnej dla obiektu klasy bazowej.

0

jedynie jest jest statyczna

0
cichociemny napisał(a)

Wiem, że tak można i to jest konsekwencja wykorzystywania dziedziczenia. Ale czy da się zrealizować to, o czym napisałem ? Wykorzystać metodę klasy pochodnej dla obiektu klasy bazowej.

Jaki to ma mieć niby sens?

0

Dla mnie żaden, ale wykładowca tak sobie wymyślił.

1

Powiedz lepiej wykładowcy, że jest debilem.

1

A ja myśle że autor po prostu nie słuchał na zajęciach a zadanie ma obrazować polimorfizm -> ma stworzyć obiekt punkta i przypisać go do wskaźnika na punkt a potem wywołać metodę i pokazać że wywołała się ta z klasy pochodnej.

0
Shalom napisał(a)

A ja myśle że autor po prostu nie słuchał na zajęciach a zadanie ma obrazować polimorfizm -> ma stworzyć obiekt punkta i przypisać go do wskaźnika na punkt a potem wywołać metodę i pokazać że wywołała się ta z klasy pochodnej.

Słuchał, słuchał. Programowanie to moje ulubione zajęcia :) Tylko, że uczy nas facet, który nie bardzo potrafi wytłumaczyć niektóre rzeczy i czasem trzeba go poprawiać. Sam mówi, że on to z programowania "nie bardzo" :P Pytanie, dlaczego w takim razie uczy ? Nie mówiąc już o zadaniach, które pochodzą z Google -> "zadania z c++". :)

Zresztą nie ważne. Akurat przed chwilą też wpadłem na pomysł, by zrobić to wskaźnikami, ale rano się tym zajmę.

0

pewnie chodzi o metodę wirtualną.

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