Autor Zpráva
Martin__
Profil *
Ahoj,
rád bych se naučil objektově myslet. Učil jsem se OOP v PHP, syntaxi jsem zvládl bez problémů, ale objektové myšlení jsem tím nezískal. Doporučíte mi nějakou knihu, která mi pomůže prolomit tu mentální bariéru? Dík
Mastodont
Profil
V češtině taková kniha asi není a je otázkou, zda se to takto naučit.

Objekt je prostě nějaká entita, vyjadřující určitou část okolního světa (Zákazník, Auto, Město) nebo programu (Databáze, Protokol), který uvnitř obsahuje nějaký kód, ale dá se s ním pracovat jen tak, že měníš nebo zjišťuješ jeho charakteristiky (vlastnosti) nebo chceš, aby objekt něco provedl (voláš metodu).
Martin__
Profil *
Mastodont
A jak se tedy naučit objektově programovat?
Keilew
Profil
Martin__
Naučit se UML. Tím získáš ponětí o OOP. Nebo aspoň já jo;-)
Mastodont
Profil
To je blbost, UML potřebuješ až potom.

Martin__
Těžko říct. Studuj ukázky toho, jak se různé věci dají řešit objektově a jak procedurálně. Jak se dá jedna věc řešit objektově různým způsobem. Uvažuj o tom, co všechno se dá "zavřít" do objektu a jak to logicky provázat. Hodně koukej a přemýšlej o tom.

Ale pozor na to, že někteří lidé píšou objektově i to, co by bylo mnohem jednodušší a logičtější procedurálně. IMHO.
Martin__
Profil *
Mastodont
Procedurálně jsem si dokázal naprogramovat zatím vše bez větších obtíží. Dlouho jsem hledal například redakční systém, který by byl naprogramován objektově v PHP5, ale pak jsem to vzdal. Moc praktických ukázej jsem zatím nenašel a tak jsem si myslel, že by mi mohla pomoct kniha.
Timy
Profil
llook už tady párkrát doporučil knížku "Myslíme objektově v jazyku Java 5.0", taky po ní pokukuji.
Mastodont
Profil
Martin__
Anglicky bych ti doporučil třeba

http://www.sitepoint.com/books/phpant1/
http://www.amazon.com/PHP-5-Objects-Patterns-Practice/dp/1590593804
WanTo
Profil
http://objekty.vse.cz

Martin__
Co přesně si představuješ pod pojmem objektové myšlení?
Keilew
Profil
Mastodont
Říkám, jak jsem se to naučil já. Základy OOP si přečteš, ale myslet OOP začneš až když začneš řešit reálné problémy a situace a to se většinou stane až když se ponoříš do UML, které jest nástrojem unifikovaným pro vizualizaci OOP na papíře.
WanTo
Profil
PHP má jeden drobný nešvar - ono objektové programování přímo nevyžaduje. Můžete si psát kód tak, jak se generuje web, kombinovat ho s HTML s SQL a ačkoli na to nejspíš brzo doplatíte, nic vás objektově přemýšlet nedonutí.

Líbí se mi situace, jaká je u webového programování třeba v Pythonu nebo v Javě - tam to prostě bez objektů skoro nejde.
Keilew
Profil
WanTo
Souhlas. Mimochodem v PHP jsou ty objekty zpracovány stále dost ... nekvalitně...
Mastodont
Profil
Keilew

Ano, UML vizualizuje OOP. Čili nejdříve je potřeba chápat, co jsou objekty a pak je můžeš malovat.

Samozřejmě u každého věci fungují jinak, ale já teda nevím o nikom, kdo by nejdřív uměl UML a pak teprv začal objektově programovat.
Keilew
Profil
Mastodont
Tak jsem to nemyslel. Naučíš se základy OOP a pak to musíš dostat do neuronů a mě se to tam dostalo prostě při hraní si s UML a vymýšlení způsobů, jak to co nejefektivněji udělat apod...
WanTo
Profil
Podle mě k tomuhle hraní si není ani tak potřeba UML; stačí přemýšlet nad tužkou a kusem papíru, který narozdíl od počítače neodvádí pozornost. (Ale někdy se toho papíru počmárá zatraceně hodně :-) )
Keilew
Profil
WanTo
Tak já k tomu holt přidal "unifikovaná schémata", jinak to bylo stejný;-)
Mastodont
Profil
PHP má jeden drobný nešvar - ono objektové programování přímo nevyžaduje

To je námět na samostatné a hodně dlouhé vlákno :-))
WanTo
Profil
Mastodont
Já vím. :) Snažil jsem se to říci opatrně, protože zdejší flamy moc dobře znám. :-)
Martin__
Profil *
A nemáte nějaký typ na něco, nejlépe redakční systém, napsané v php5?
Ika
Profil *
Myslíte-li OOP vážně tak se podívejte na http://www.objects.cz/

Vaše odpověď

Mohlo by se hodit

 

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: