Is-a shine dangantaka na nau'i — da aka ƙera ta hanyar inheritance (a ). shine dangantaka na — da aka ƙera ta hanyar (a ). Zaɓar daidai shine shaɓa-shaɓar tsarawa.
Is-a shine dangantaka na nau'i — da aka ƙera ta hanyar inheritance (a ). shine dangantaka na — da aka ƙera ta hanyar (a ). Zaɓar daidai shine shaɓa-shaɓar tsarawa.
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
}
Tanbaya: "Shin X nau'i ne na Y, ko X yana da/yana amfani da 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) ✅
Jama'a sukan nufo ga inheritance don sake amfani da lambar, ko da yake dangantaka shine is-a. Idan ba za ku iya maye gurbin subclass ga tushe a ko'ina ba, zaɓi ba shi ba ne is-a — yi amfani da composition.
Warin bambanci shine kwakwalwa na amfani a bayan "fi composition girma fiye da inheritance": zaɓi dangantaka da ta yace gaskiya, ba ta da wanda ke kaiwa.
Samun daidai aiki yana toshe gidaje na gajere kuma sautin, kuma yana toshe Liskov violations inda "subtype" ba za ta iya tsaye ajiye ga iyayenta ba.