Co to jest polimorfizm?

Odpowiedz Nowy wątek
Nakuryltorepek
2012-03-25 16:41
Nakuryltorepek
0

Cześć, może kotś mi rozjaśnić czym jest owe zagadnienie, dopiero uczę się obiektowego, klasy, dziedziczenia zrozumiałem bez problemu, z tym mam kłopot.

Pozostało 580 znaków

2012-03-25 16:59

Rejestracja: 10 lat temu

Ostatnio: 4 lata temu

2

Najbardziej łopatologicznie to:

  1. Masz klasę Figura posiadającą metodę polePowierzchni()
  2. Masz klasę Trójkąt dziedziczącą po Figura
  3. Masz klasę Kwadrat dziedziczącą po Figura
  4. Masz np. tablicę obiektów klasy Figura, do której wstawiasz (uwaga !) obiekty klas Trójkąt i Kwadrat
  5. Potem iterujesz sobie po kolejnych elementach tej tablicy i wywołujesz metodę polePowierzchni() -> zostanie ona wywołana dla obiektów Trójkąt/Kwadrat w zależności od tego, jaki obiekt jest pod danym indeksem tablicy (żeby tak się stało, to polePowierzchni() musi być metodą wirtualną -> doczytaj)

Więc polimorfizm to tego typu zachowania obiektów ;) Ale to bardzo uproszczone podejście ;)

Pozostało 580 znaków

2012-03-25 19:02

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

12

Dam inny przykład: Mamy wskaźnik na człowieka, każdy człowiek ma metodę szukajInforamcji(string temat). Teraz są dwie klasy pochodne informatyk i leń.
Każda z tych klas implementuje tę metodę inaczej.
Informatyk szuka kolejno w źródłach: książka/podręcznik/dokumentacja, google, forum.
leń natomiast stosuje w najlepszym wypadku stosuje odwrotną kolejność, ale zwykle ogranicza się jedynie do forum.
Mając wskaźnik na człowieka, nie muszę wiedzieć, z kim mam do czynienia, posługując się poszczególnymi metodami, można nim swobodnie manipulować (to jest właśnie polimorfizm).
W praktyce jednak zwykle wiadomo z jaką klasą człowieka ma się do czynienia.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22, 2012-03-25 19:05
Dobry przykład. - Oak 2012-03-25 19:27
ale suchar! - Raf Rafal 2018-10-31 12:25

Pozostało 580 znaków

msm
2012-03-25 19:27
msm
Administrator

Rejestracja: 10 lat temu

Ostatnio: 1 tydzień temu

1

@MarekR22 - +20 :>

Ja bym to ujął inaczej:
Polimorfizm to możliwość stosowania tego samego kodu dla obiektów różnych typów. Czyli jeśli mam jakiś reużywalny kod (czyli z reguły funkcję) która działa jednocześnie dla danych typu A i danych typu B, to nie muszę mieć wskaźnika, nie muszę pisać w C++, nie muszę nawet używać języka obiektowego a z polimorfii i tak korzystam.

edytowany 3x, ostatnio: msm, 2012-03-25 19:30

Pozostało 580 znaków

Odpowiedz

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