Junior — Middle
Μπορείτε να δώσετε ένα παράδειγμα για το πώς εφαρμόζεται η αρχή αντικατάστασης του Liskov στην πρακτική προγραμματισμού;
sobes.tech AI
Απάντηση από AI
Η Αρχή Υποκατάστασης του Liskov (Liskov Substitution Principle, LSP) δηλώνει ότι τα αντικείμενα μιας υποκλάσης πρέπει να μπορούν να αντικατασταθούν με αντικείμενα της βασικής κλάσης χωρίς να διαταράσσεται η ορθότητα του προγράμματος.
Παράδειγμα σε JavaScript (Node.js):
class Bird {
fly() {
console.log('Το πουλί πετάει');
}
}
class Sparrow extends Bird {
fly() {
console.log('Το σπουργίτι πετάει');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('Το στρουθοκάμηλο δεν πετάει');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // Το σπουργίτι πετάει
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Σφάλμα — παραβίαση του LSP
Εδώ, η κλάση Ostrich παραβιάζει την αρχή υποκατάστασης του Liskov, καθώς η υποκλάση δεν υποστηρίζει τη συμπεριφορά της βασικής κλάσης (τη μέθοδο fly). Για να τηρηθεί το LSP, είναι καλύτερο να διαχωρίσετε τις κλάσεις σε πουλιά που πετούν και πουλιά που δεν πετούν, π.χ., μέσω διεπαφών ή ξεχωριστών βασικών κλάσεων.