Wpis z mikrobloga

Chciałbym zwrócić uwagę na jeden artykuł na Helion, który wprowadza w błąd, bo gdy go znalazłem to zgłupiałem i aż dodałem posta na 4programmers sądząc, że może żyłem w nieświadomości co do reguły Liskov skoro takie rzeczy piszą w artykule.
https://helion.pl/blog/mnemonik-solid-l-jak-liskov-substitution-principle-55
Screen z częścią, która wprowadza w błąd jest niżej.

Tu post z wyjaśnieniem:
https://4programmers.net/Forum/C_i_.NET/372614-zasada_podstawienia_liskov

#programista15k #programista25k #programowanie #programista
aleksc - Chciałbym zwrócić uwagę na jeden artykuł na Helion, który wprowadza w błąd, ...

źródło: aaaaa

Pobierz
  • 6
@aleksc: bł.ad jest tylko w linijce:
"Musi zajść równość: (...)"
bo klasa powinna się zachowywać w ten sam sposób. czyli w przykładach z dizedziczeniem prosoką i kwadrat nadal metoda Area powinna zwrócić pole ale wartość może być inna. Zresztą moga byc metody które nić nie zwracają. Np możemy mieć metody Validate() i Send(). Jeśli w bazowej Send() robi Validate() to i w potomnej też Send() musi zrobić Validate(). Nie wynik ma
@aleksc: Tak, to jest bzdura. W zasadzie Liskov chodzi o dwie powiązane ze sobą rzeczy:

1. Kod używający klasy jest implementowany pod kontrakt określony dla klasy bazowej i *nie polega* na wiedzy o tym jakiej klasy jest obiekt ani nie polega na żadnych specyficznych szczegółach implementacyjnych klas pochodnych. Stąd jak masz gdzieś jakieś instanceof czy używasz innego podobnego mechanizmu do rozpoznania z jaką implementacją masz do czynienia, to łamiesz LSP.

2.
@aleksc: to pisał jakiś debil. W LSP chodzi tylko o to (obrazek) co oznacza, że klasa dziedzicząca musi mieć te same właściwości do klasa bazowa. Oczywiście nie da się tego jednoznacznie roztrzygnąć, bo interfejs obiektów jest często niejasny. Jeśli interfejsem jest to, że a.MyMethod() zawsze zwraca string o długości 5 a klasa potomna zwraca długość 6 to mamy pogwałcenie tej zasady. Z drugiej strony ten sam kod może być całkowicie ok,
Saly - @aleksc: to pisał jakiś debil. W LSP chodzi tylko o to (obrazek) co oznacza, ż...

źródło: image

Pobierz