• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

soLid - Czy ten kod łamie zasade Liskov i czy o to chodziło?

Object Storage Arubacloud
0 głosów
154 wizyt
pytanie zadane 10 czerwca 2020 w PHP przez XiverKi Bywalec (2,050 p.)

Witam, staram się zrozumieć o czym konkretnie mówi zasada Liskov.

"Funkcje, które używają wskaźników lub referencji do klas bazowych, muszą być w stanie używać również obiektów klas dziedziczących po klasach bazowych, bez dokładnej znajomości tych obiektów".

Pytanie tylko jak się do tego ma przeciążanie metod? Czy aby nie łamać tej zasady zawsze musimy uruchamiać metodę rozdzica? parent::method()?

<?php
abstract class Car
{
    public function ride()
    {
        echo "riding\n";
    }
}

class NormalCar extends Car
{
    public function refuel()
    {
        echo "goolp goolp\n";
    }
}

class ElectricCar extends Car
{

    public function load()
    {
        echo "battery loading\n";
    }
}

class Bmw extends NormalCar
{
    
}

class Tesla extends ElectricCar
{
    public function ride () 
    {
        echo "no engine sound\n";
        parent::ride();
    }
}

$car1 = new Bmw();
$car1 -> ride();
$car1 -> refuel();

$tcar = new Tesla();
$tcar -> ride();
$tcar -> load();

 

1 odpowiedź

+2 głosów
odpowiedź 10 czerwca 2020 przez adrian17 Ekspert (345,160 p.)

Tu nie chodzi o pisanie metod klas, tylko o używanie klas.W kodzie który pokazałeś nie ma żadnych "Funkcje, które używają wskaźników lub referencji do klas bazowych".

Tutaj chodzi o:

function f(Car $car) {
    // ta funkcja powinna dzialac niezaleznie jaka podklase Car tutaj przekazesz

 

Podobne pytania

0 głosów
2 odpowiedzi 466 wizyt
0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 25 sierpnia 2020 w C# przez Adrian1999 Nałogowiec (34,570 p.)
0 głosów
3 odpowiedzi 556 wizyt
pytanie zadane 17 lutego 2018 w PHP przez sapero Gaduła (4,100 p.)

92,626 zapytań

141,485 odpowiedzi

319,839 komentarzy

62,006 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...