ni mahusiano ya — yaonekanwa kwa (kitu ). ni mahusiano ya — yaonekanwa kwa (kitu ). Kuchagua kitanzi sahihi ni uamuzi muhimu wa kuiga.
ni mahusiano ya — yaonekanwa kwa (kitu ). ni mahusiano ya — yaonekanwa kwa (kitu ). Kuchagua kitanzi sahihi ni uamuzi muhimu wa kuiga.
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
}
Uliza: "Je, X ni aina ya Y, au X ina/hutumia 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) ✅
Watu wanakaribiana na urithi ili kutumia tena kod, hata wakati mahusiano yaliyoo ni has-a. Ikiwa haungekuwa na njia ya kubadili darasa dogo kwa msingi kila mahali, labda si is-a — tumia composition.
Tofauti hii ni sheria ya uamuzi wa vitendo nyuma ya "pendekeza composition juu ya urithi": chagua mahusiano yanayotaka, si ile inayookoa mistari michache.
Kupata kazi sawa inahifadhi hierarchies nyingi na adimu, na inazuia ukiukaji wa Liskov ambapo "subtype" haiwezi kweli kusimama mahali pa mzazi wake.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia