DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Apsraktna klasa sa svim implementiranim metodama, kad koristiti ? (http://www.devprotalk.com/showthread.php?t=11443)

tasmaniski 24. 02. 2013. 00:53

Apsraktna klasa sa svim implementiranim metodama, kad koristiti ?
 
Pozdrav,

U magentovom coru postoji jako puno klasa koje su apstraktne, a imaju sve metode implementirane npr. a postoje takve klase i u javi npr.
Predpostavljam da je to posledica Template paterna sto je OK.

Medjutim, vidim da dosta developera proglasava klasu apstraktnom samo da bi zabranio njeno instanciranje (iako su sve metode implementirane), da li je to ispravno?
U kojim sve slucajevima treba imati apstraktnu klasu bez apstraktnih metoda i da li vi to koristite?

svlada 24. 02. 2013. 12:24

Jedina takva primena (barem u java svetu), na koju sam naišao do sada, je baš Template pattern koji navodiš.

Najpoznatiji primerak je verovatno nezaobilazna klasa HttpServlet http://www.docjar.com/html/api/javax...vlet.java.html

Ukoliko bih hteo da zabranim instanciranje neke klase, proglasio bih njen konstruktor privatnim.

tasmaniski 24. 02. 2013. 13:02

Iskreno prvi put sam se susreo sa ovim slucajem i tek sad vidim da dosta ljudi tako koristi abstrac class bez ijedne abstract metode, pa i u drugim paternima (npr. decoration).
Ali i pored toga u potpunosti mi je neprirodno da u tu svrhu koristim apstraktnu klasu.. C++ bi izbacio error ako bi pokusao da napravis abstract klasu sa svim konkretnim metodama ...


fina diskusija se razvila o tome i na:
http://www.linkedin.com/groups/We-ha...26.S.112043042

Samo mala napomena da konstruktor treba da bude protected - nije dovoljno private.. al tako bih i ja to uradio ...

svlada 28. 02. 2013. 21:46

Od kako si pokrenuo ovu temu, baš gledam hoću li naleteti u svakodnevnom radu na ovak slučaj.

I što je najgore nailazim.

Klasa iz OpenSAMLa => org.opensaml.saml2.binding.encoding.BaseSAML2Messa geEncoder

jablan 28. 02. 2013. 22:45

Nisam baš u skorije vreme radio sa PHP-om, u čemu je uopšte poenta toga da dinamički jezik ima apstraktne klase?

webarto 28. 02. 2013. 23:24

PHP nije Java.

I otkad je Magento primjer dobrog codea?

Je li želiš da budeš "Magento Expert" ili?

tasmaniski 01. 03. 2013. 11:55

Racunao sam da Magento core developeri ipak nesto znaju :)

Ne planiram da se bavim Magentom skorije, ali dosta ispitujem kakava je arhitektura ostalih open source resenja, ne bi li dobio inspiraciju i nesto upotrebio u svom sistemu/backendu.
Cesto nailazim na ovaj slucaj, pa bih voleo da cujem nekoga ko tako radi da mi objasni sto?


Jablane, mozes molimte biti malo precizniji, ti ne koristis apstraktne klase uopste ?

webarto 01. 03. 2013. 16:25

Zend Framework 2 @ Github
Kohana 3.3 @ Github

jablan 02. 03. 2013. 21:46

Citat:

Originalno napisao tasmaniski (Napišite 109970)
Jablane, mozes molimte biti malo precizniji, ti ne koristis apstraktne klase uopste ?

Pa koristim kad radim u npr. Javi, ali ne koristim kad radim u one-who-must-not-be-named jeziku, jer u istom nemaju smisla. Jezik mi ne brani da pozovem metodu koja će biti implementirana u potklasama, a ako želim da zabranim instanciranje klase, baciću exception u konstruktoru.

japan 03. 03. 2013. 14:52

Jedno pet puta već čitam pokušavajući da shvatim tvoj argument, ali mi ne uspeva. Daj, molim te, objasni mi šta hoćeš da kažeš...


Vreme je GMT +2. Trenutno vreme je 10:43.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.