Citat:
misk0: Nisam neki guru OOP-a, koristim ga mozda i manje ,sticajem okolnosti, nego sto bih htio ali ne vidim i dalje opravdanje za koristenje metoda bez parametara zbog toga sto 'to nije pravi OOP'. Ne kazem da sam u pravu, ali bih htio dobiti kakve reference (uputstva, dokumente) gdje je receno da se to mora izbjegava.
Mislim da je OOP u Java jako dobro rjesen ali tako jako puno objekata ima more metoda koje su override-vane sa razlicitim parametrima i tako dozvoljavaju da zapravo jedan metod radi zapravo isti posao ali u razlicitim okolnostima.
Ne znam javu, samo sam vrlo malo citao o njoj, ali sam ukapirao da su sve te klase multi-praktik. Zato i moraju da imaju mnogo parametara jer ta klasa zaista ne moze da ti procita misli. Ok, ovo je neko moje vidjenje stvari, mozda gresim jer nisam radio u javi, ali me podseca na programiranje u c-u; svaka funkcija operativnog sistema, cak i ispis obicnog teksta, se prilicno zakomplikuje.
Kod php-a, ti znas unapred da ce vojnik da ocisti lisce, pusku, ponekad mozda i da puca... Da da, vojska nije samo ciscenje i pranje

Zato ti i nisu potrebni ulazni parametri; procitaj opet moje objasnjenje i vidi sa koliko malo linija koda ti zavrsavas posao. protected metoda je ta koja ce da se pobrine oko nabavke metle.
Vrlo je bitno da public metode nemaju parametre ili imaju jako malo. Odrzavanje i prosirivanje programa je mnogo lakse jer ce ti API biti nepromenjen. Zamisli da imas metodu sa npr. 3 parametra koja se poziva sa vise mesta; ti prosiris tu metodu, automatski moras da menjas kod SVUDA gde se ta metoda poziva. Da li me sad razumes?
Citat:
- Klasa vojnik ima metod 'clean' ali ne zna cime (jer nema parametara.
Ovo sam vec objasnio.
Citat:
- Vojnik instancira novu metlu (pod uslovom da postoji u bibliotekama)
Class Broom ce da postoji u svakom slucaju, bez obzira da li ce vojnik sam da je uzme ili kapetan da mu je da.
Citat:
- Ocisti, oslobodi metlu
I to vojnik sam radi. U pravoj vojsci (ne civilnoj) niko nikome nije mama pa da mu daje metlu, ciste carape, ociscenu pusku itd. Vojnik mora sam da se snadje, nema tamo mame koja ce sve da radi za njega. Zbog tog nacina rada, u vojsci skoro nikad nema ispada.
Drugo; tom podelom rada, tacno se zna ko je pogresio.
Citat:
- Kapetan pogleda i kaze 'nije dobro, ajd ponovo'
- Vojnik ponovo instancira metlu, ocisti , oslobodi
...
Kapetana samo interesuje da posao bude obavljen. Sto se njega tice, vojnik moze i cetkicom za zube da ocisti lisce. Ali.... ovo je ipak programiranje; ako ces ti u kontroloru/action klasama (prouci MVC) da radis sve to sto u stvari treba metode da rade... pa gde je tu onda OOP?
Citat:
Ovde vidim nekoliko nedostataka:
- zar ne bi bilo bolje prije ciscenja instancirati metlu i drzati je postojecom dok ne budemo sigurni da nam vishe ne treba.
- metla negdje mora postojati definisana, sta se desava ako vojnik ne moze pronaci metlu - moras napraviti okruzenje, bez toga da znas sve detalje (jer nemas parametara) i nadati se da ce ta metoda raditi. Ne saljes joj parametre pa moras pratiti exceptione i gledati sta joj fali.
Zasto vojnik ne bio nasao metlu? new Broom() ce uraditi to za tebe.
Citat:
Mislim da je ovde i (moj, subjektivni) trip oko toga 'drzati stvari pod kontrolom'. Jer ako ja nekoj metodi posaljem 'ocisti' ja ne znam kako ce ona ocistiti i cime ce, ali znam/nadam se da ce posao biti zavrsen. Ali ako joj recimo posaljem 'ocisti metlom i vrati je kad zavrsis' znam da sam joj obezbjedio sve potrebno i da ce zavrsiti posao.
Kazem opet, to je sve IMHO, ucim i naucicu sta je bolje ali argument 'to ti nije pravi OOP jer ima 3 parametra' mi ne pije bas vodu.
To i jeste poenta; tebe ne zanima kako ce stvar biti obavljena, sve dok je ona obavljena. Ako izbacimo vojsku iz price, razmisljaj ovako: tvoj program i njegove klase imaju neki API. Ako metode nemaju parametre, API se nece narusiti. Ako dodas brdo parametara, nikad neces zavrsiti program, API nije stabilan i niko ziv se nece snaci u tvom programu.
Ali ako dodajes samo protected metode, API je i dalje isti. Nadam se da me razumes; objekat moze nesto da uradi, ne samo da drzi metode. Enkapsulacija je i dalje proceduralni kod koji se ponavlja i ponavlja i ponavlja.... cemu to?
Ako ti ne ide ovo, probaj sledece; napisi neki program koji ce slediti moju logiku. Koliko god te vuklo, odupri se tome da metode imaju parametre. Kad zavrsis kod, videces da sam bio u pravu.
U medjuvremenu, pogledaj onaj video klip sto sam postovao; jeste kvalitet los, ali ces videti prednosti mog nacina rada.