është një marrëdhënie e — modeluar me (një ). është një marrëdhënie e — modeluar me (një ). Zgjedhja e duhur është një vendim themelor modelimi.
është një marrëdhënie e — modeluar me (një ). është një marrëdhënie e — modeluar me (një ). Zgjedhja e duhur është një vendim themelor modelimi.
CarVehicleCarEngine// IS-A → inheritance
class Vehicle { void move() {} }
class Car extends Vehicle { } // a Car IS A Vehicle
// HAS-A → composition
class Engine { void start() {} }
class Car2 {
private Engine engine = new Engine(); // a Car HAS AN Engine
void start() { engine.start(); } // delegate to the part
}
Pyesni: "A është X një lloj Y, apo X ka/përdor një Y?"
A Dog IS-A Animal → inheritance ✅
A Car HAS-A Engine → composition ✅
A Square IS-A Shape → inheritance ✅
A Manager HAS Employees → composition (a list) ✅
A Stack HAS-A list (not IS-A) → composition (see earlier pitfall) ✅
Njerëzit përdorin trashëgimin për të ripërdorur kodin, edhe kur marrëdhënia është me të vërtetë has-a. Nëse nuk do ta zëvendësonit kurrë nënklasën për klasën bazë kudo, atëherë ndoshta nuk është is-a — përdorni përbërjen.
Ky dallim është rregulla praktike përhapur pas "favorizoni përbërjen mbi trashëgimet": zgjidhni marrëdhënien që është e vërtetë, jo atë që kursen disa rreshta.
Zgjidhja e saktë e mban hierarkinë të cekët dhe të sinqertë, dhe parandalon shkeljet Liskov ku një "nënlloj" nuk mund të qëndrojë në vend të klases së saj mëmë.
Një bibliotekë pyetjesh intervistash IT me përgjigje të detajuara — nga Junior te Senior.
Dhuro