Citat:
Nedeljko:
Citat:
jablan: Dobar indikator da je knjiga (tutorijal, kurs...) o OOP loša, je kad krenu da pričaju o klasama na primeru Pas -> Životinja ili Trougao -> GeometrijskaFigura. Nije mi jasno zašto ne uzmu bilo koji primer iz bilo koje standardne OOP biblioteke (Rational -> Numeric, File -> IO itd)
Da mi je znati šta je loše u uzimanju opšte poznatih primera.
Veoma retko se koriste u praksi, tako da početnici nauče to kao pesmicu, a nemaju pojma gde se u praksi koristi nasleđivanje niti šta je svrha.
Problem je što je proces u praksi obrnut - prvo se u projektovanju pojave pojedinačne klase, pa kad se utvrdi da neke od njih imaju značajan broj istih atributa (i eventualno metoda), onda se vrši generalizacija - kreira se apstraktna klasa iz koje se izvode odgovarajuće klase.
Zašto, šta je problem imati sve to bez nasleđivanja?
Pa, šta ako rešite da neki od atributa umesto tipa Float budu Double, ili umesto Int budu String (tokom refactoring procesa ili iz nekog drugog razloga)? Ako je jedan od tih atributa deklarisan u svakoj klasi nezavisno, ko će da juri gde se on sve nalazi kako bi promenio deklaraciju? Lakše je ako je deklarisan u apstraktnoj klasi (ne mora da bude apstraktna u smislu kao kod Jave).
Ali, opet ni to nije očigledno kod jednostavnih klasa.
Dovoljno je pogledati GUI aplikacije, svaki dijalog ima isti oblik (pravougaonik), okvir, moguće kontrolne elemente... lakše je napraviti jednu klasu pa izvođenjem kreirati različite vrste dijaloga, nego raditi sa 100 različitih klasa koje se razlikuju za po jedan atribut, jer u slučaju da treba nešto izmeniti kod svih 100 vrsta dijaloga, samo se izmeni u apstraktnoj klasi.
Zato se početnicima zada problem sa 30 različitih tipova knjiga (koje imaju deo istih atributa i metoda, čak metode mogu biti i sve iste), pa videti da li će kreirati 30 različitih klasa ili koristiti nasleđivanje.
Onima koji naprave 30 različitih klasa reći da sve knjige imaju još 10 novih atributa, a kad i to odrade, kažete im da se zahteva još 50 novih vrsta knjiga.
Ako sve to i urade, onda im pokažete primer sa nasleđivanjem i pitate ih koji bi kod radije održavali i unapređivali.
Blessed are those who can laugh at themselves, for they shall never cease to be amused.