Malo kasno, ali nadam se korisno.
Evo sta kazu GoF u Desing Patterns knjizi. Eh, sad cu da se ubijem prepisujuci. Imas sve na strani 17, pretpostavljam da vam je biblioteka tu (ovo kazem filmilu)super pa potrazi. Stvarno je super knjiga.
Citat:
It's also important to understand the difference between class inheritance and interface inheritance (or subtyping). Class inheritance defines an object's implementation in terms of another object's implementation. In short, it's a mechanism for code and representation sharing. In contrast, interface inheritance (or subtyping) describes when an object can be used in place of another.
It's easy to confuse this two concepts, because many languages don't make ditinction explicit...
I tako dalje. Koliko ja znam, Java se pojavila posle ove knjige, sto nije toliko bitno, vec je bitno da je do tada vec otprilike shvaceno kako treba praviti objektni softver i Java je dizajnirana da to olaksa. C# je dosao jos kasnije, i moguce je da lupam jer ne znam C#, neke stvari su to jos doradjene u odnosu na javu (npr. automatski seteri i geteri).
Jos dva saveta iz knjige:
Citat:
Program to an inteface, not an implementation
Citat:
Favor object composition over class inheritance
Ja to shvatam da ako ti ikad zatreba visestruko nasledjivanje, sva je prilika da ces to moci da uradis pomocu kompozicije objekata, sto ce ti se na duge staze jos i isplatiti jer ces lako moci da promenis neki od objektata koje koristis. Plus su implementacije odvojene u vise klasa sa manjom zavisnoscu i kod je lakse odrzavati.
Ako pogledas neke nove frameworkove, npr. na jakarta.apache.org videces da imaju hijerarhiju intefejsa i hijerarhiju implementacionih klasa. Sve je maksimalno fleksibilno.