« 1 2 »
Autor Zpráva
Joe
Profil *
O knihach sa uz toho popisalo vela.
Ja by som bol rad, keby ste mi mohli poradit co najlepsiu knihu na vyuku PHP a OOP v PHP a to asi uz nie pre zaciatocnikov.

AKy je vas nazor?

Ktora je najlepsia?

Vdaka
Mistr
Profil
Joe
Kolega suky zde na diskusi sepsal přehled zdrojů OOP v PHP. Tam sis nevybral?
suky
Profil
Joe
Dalsi ;o) Neexistuje nejlepsi kniha tykajici se OOP v PHP. V knihach jsou jen ukryty vedomosti, jak s nimi nalozis dale a jestli ti vubec k necemu budou je dalsi vec. Objektove mysleni se neda vysvetlit v jedne odpovedi, postupem casu na nej prijdes. Moje rada tedy zni, cim vic toho prectes tim budes mit lepsi rozhled a vice znalosti. Kam az chces s OOP v PHP zajit je jen na tobe. Pokud chces poradit se kterou knihou zacit, musis nejprve napsat tve zkusenosti s programovanim a ucel, za kterym OOP v PHP budes studovat...
Joe
Profil *
suky
Moje jedine vysvetlenie je, ze si chcem kupit knihu. Zo skusenosti viem, ze najlepsia cesta je taka, ze si da clovek poradit. Uz som totiz kupil knihu, ktora stala dost a bola na nic. Nechcem si urobit doma kniznicu z nepouzitelnych knih.

Objekty som este ani nezacal a v PHP som v poho. Dokazem tvorit, ale problem je, ze sa tomu nevenujem pravidelne a potom stale hladam tie iste veci, co som uz vedel, ale nezapamatal som si ich.
Potrebujem dobru knihu, kde si to viem stale najst.
Najradsej pracujem s pdf verziami, ale tazko je ich zohnat v SK alebo CZ jazyku.
Mastodont
Profil
Z toho, co znám, je nejlepší PHP in Action, ale ta česky těžko vyjde ...
suky
Profil
Joe
Pokud jeste neumis objektove programovani, mozna by se ti hodilo, nejdriv se ho naucit a pak ho teprve praktikovat na PHP. Jak uz jsem ale psal, zalezi ale, co od neho ocekavas...
Joe
Profil *
suky
Mozes to konkretizovat?
Co myslis tym "nejdriv se ho naucit" ?
Měsíček
Profil
Myslet v OOP != znát syntaxi OOP v určitém jazyku (PHP, C++) ...
Joe
Profil *
Měsíček
A k veci :o) = rada, odpoved.
suky
Profil
Joe
Reknu ti to tak, ze se nejdriv musis naucit objektove myslet (teoreticky nemusis, ale mel bys!), aby si mohl znalosti uplatnit v nejakem programovacim jazyku, napr. PHP.
Joe
Profil *
suky
Dik.
Mozes definovat "objektove myslet"?
Nemam vobec tusenie, co pod tym vsetci myslite.
Sorrac.

Mozno to uz zvladam, ale neviem, co to ma byt :o).
Měsíček
Profil
Je to nic moc, ale snad by jsi mohl pochytit alespoň mini-základy. http://objekty.vse.cz/Objekty/ObjektoveMysleni
Joe
Profil *
Měsíček

Nie som si isty spravnostou vysvetlenia, ale napisal by som to asi takto:

- chcem nakreslit sestuholnik na stranke, co je vlastne objekt a tak logicky musim rozmyslat, ako vytvorit tzv. triedy a ake triedy.

Ako napr: pozicia jednotlivych bodov, farba, objem ....

Idem spravnou cestou?

Ako si sa to naucil ty? Měsíček
Měsíček
Profil
Já ještě myslet v OOP neumím, ovládám jen syntaxi :) to se zeptej sukyho ten by o tom něco vědět měl.
Joe
Profil *
Měsíček
A ako si sa teda naucil ovladat sytaxi?
Měsíček
Profil
Čtením knih, specifikací a pošilháváním do kódu jiných zkušenějších lidí ;-)
Timy
Profil
Joe
Možná struktura může vypadat takto:

Těleso: bude mít vlastnost barva a případné další vlasnosti společné všem objektům.
-- Bod: podmnožina libovolného tělesa. Bude mít vlastnosti x a y (souřadnice).
-- N-uhelnik: podmnožina tělesa. Bude mít vlastnosti vrcholy, barvy, vyplneny, ohraniceny. N-uhelnik už může mít i další metody, třeba obsah. Vlastnost vrcholy bude poté obsahovat seznam bodů.
---- Ctverec: podmnožina N-úhelníku. Teoreticky tuto třídu není třeba definovat, protože je to skutečně jen specifický případ N-úhelníku, ale pro přehlednost si ji definovat můžeme. Zde můžeme přepsat metodu pro výpočet obsahu, protože obecná metoda na výpočet obsahu N-úhelníku je celkem složitá.
-- Kruznice: opět podmnožina tělesa. Bude mít vlastnosti vrchol (ten bude obsahovat jeden bod), polomer, vyplneny, ohraniceny. Může mít metodu pro výpočet obsahu.
atd.

Na tomto krátkém příkladu můžu demonstrovat princip dědičnosti: všechny třídy jsou potomky Tělesa, jakožto libovolného geometrického útvaru, a protože třída Těleso má vlastnost barva, všechny ostatní třídy tuto vlastnost zdědí také. Takže ve třídě Ctverec mohu použít něco ve smyslu this.barva = "red" a čtverci se nastaví červená barva. Přitom samotnou vlastnost barva nemusím ve čtverci definovat. Mimochodem samotná "barva" může být také třída, samozřejmě. Bude to lepší v tom, že si pak mohu napsat různé metody pro různý způsob zadávání barev (slovně, RGB v 16 soustavě, RGB v 10 sosutavě apod.). Může to pak vypadat nějak takhle: barva.setName("red"); nebo barva.setRGB("FF0000");

A polymorfismus je tu taky trochu vidět. Třída N-uhelnik má metodu pro výpočet obsahu. Ale ta metoda bude celkem komplikovaná. Pokud ale vím, že budu pracovat se čtvercem, mohu vytvořit objekt ctverec a tam metodu obsahu předefinovat na a*a. A pokud teď budeš mít seznam (pole...) těles, můžeš je projít foreachem (nebo normálním cyklem) a na každé těleso aplikovat metodu obsahu, aniž bys zjišťoval, jaký typ tělesa to je. U n-úhelníku se zavolá metoda n-úhelníku, u čtverce se zavolá metoda čtverce a u kružnice se zavolá metoda kružnice. Nemusíš tam mít tisíc ifů (switchů) a zjišťovat, jestli je to typ kružnice a pokud ano, zavolej funkci obsah_kruznice() apod. Ještě poznámka: ta metoda by se měla definovat ještě pro bod, protože pokud by v seznamu byl i objekt bod, který by tu metodu neměl, tak by to vyhodilo chybu. U bodu může vracet třeba 0 nebo výjimku nebo něco takového.
Timy
Profil
Joe
A ako si sa teda naucil ovladat sytaxi?
Na syntax se vykašli, tu pochopíš asi za hodinu, když už umíš OOP "teoreticky".
Joe
Profil *
Timy
Dik za vysvetlenie. Fakt super.
Este mat tak prepis tohoto prikladu priamo na kod ako priklad, tak to by bolo super.
Timy
Profil
Joe
Na to už čas nemám :-P.
suky
Profil
Timy
Myslim, ze Joemu toto vysvetleni stejne nic neprineslo. Chapej, ty umis objektove myslet, on ne. Nedokaze si tedy predstavit tvuj priklad jak teoreticky, tak v praxi.

Joe
Pochopit objektove mysleni je dlouha cesta, na teto demonstrativni ukazce je jen ukazana jedna z prvnich kapitol knihy zabyvajici se OOP. Objektove mysleni se na diskuzi popsat neda :D Byt tebou, zacal bych P.1. V teto knize pochopis, z ceho se OOP sklada a nejake zakladni programatorske pristupy. Po precteni ale urcite nebudes schopny napsal objektovou aplikaci, at uz v PHP nebo jakemkoli jinem jazyce. Navic v PHP je to s pravym OOP trochu tezsi. (Presne touto problematikou se nejvic zabyvam.) Existuje spousta frameworku, ktere jsou zalozene na objektovem pristupu, programator vsak pravy objektovy pristup nepotrebuje. Pravym objektovym pristupem se zabyva P.2, ktera je ale na obecne teoreticke urovni a s PHP nema co docineni!

Edit: preklep
Timy
Profil
suky
Myslim, ze Joemu toto vysvetleni stejne nic neprineslo. Chapej, ty umis objektove myslet, on ne. Nedokaze si tedy predstavit tvuj priklad jak teoreticky, tak v praxi.
Jasně, ale nic lepšího mu tady na diskusi IMHO nikdo neřekne -- samozřejmě kromě odkazů na další stránky a knihy. Ten můj psot rozhodně neměl za cíl vysvětlit OOP, ale tak nějak zlehka naťuknout.
Mastodont
Profil
Timyho příklady jsou velmi dobré. A taky jde o problematiku, kde se objekty vyloženě hodí. Dnes bohužel je tendence nacpat objekty úplně všude.
suky
Profil
Timy
Jasny, presne tak jsem to i pochopil.

Mastodont
Timyho příklady jsou velmi dobré.
Nerikam, ze jsou spatne, ale myslis, ze prinesou neco cloveku, ktery se zabyva ciste PHP (dejme tomu, ze s GD knihovnou pracuje jen mirne). Takovy priklad se hodi spis pro nejake jazyky, ktere vykresluji grafiku. Pamatuji si, ze jste (ty, bukaj a BetaCam) mi radili podobnym zpusobem. Pokud bych mel objektivne rict, jestli jsem tyto priklady pochopil spravne, musim odpovedet ze ne. Proste jsem si to v te dobe nedokazal predstavit. Chapu, ze rady byly spravne, ale pro cloveka, ktery s OOP zacinal, neprinosne! Zpetne prichazim i na spatne polozene dotazy nebo spatne pochopene odpovedi.
Mastodont
Profil
suky
Ono je to těžké - třeba já jsem s principy OOP nikdy problémy neměl a moc nechápu, co na tom lidé nechápou :-) Běžné analogie s reálnými objekty by měly IMHO stačit.
suky
Profil
Mastodont
Běžné analogie s reálnými objekty by měly IMHO stačit.
Tak s tim bohuzel nesouhlasim. Pokud nekomu prirovnas objekty v programovani s objekty v realnem svete, nediv se potom, ze musis psat komentare typu: „Dnes bohužel je tendence nacpat objekty úplně všude.“. Dotazujici je presvedcen objekty pouzivat, ale k cemu mu je vedet, jak na dedicnost a pretezovani metod, kdyz je neumi spravne a na spravnem miste pouzit... Tim ti chci jen naznacit, ze je o neco slozitejsi vysvetlovat neznalemu cloveku, co je OOP a ze se musis vzit na jeho uroven ;o) Ja uz to mam z teto diskuze vyzkousene...
pEeLL
Profil
Běžné analogie s reálnými objekty by měly IMHO stačit.

kdyz jsem o oop nevedel nic, tak takovehle vety me zmatly najvic. vubec jsem nechapal jakou ma souvislost ze se veci v realnem svete nejak ovlivnuji a jak tohle muzu pouzit v programovani. vsude byly hromady teoretickych popisu aj. ale praktickych dobre okomentovanych prikladu se naslo minimum.

napriklad priklad od timyho by imho pro zacinajiciho mel 100x vyssi hodnotu kdyby u nej byl ukazkovy okomentovany kod. osobne si myslim ze vysvetlovat oop na praktickych ukazkach ma mnohem vetsi smysl.
suky
Profil
pEeLL
vysvetlovat oop na praktickych ukazkach
Jasny, jako prvni pohled (dotazujici netusi co OOP je) nebo zkuseny pohled (uplatneni konkretni teoreticke oblasti v praxi) je to dobre, zalezi take na hloubce teorie a praxe, ktere chce dotazujici dosahnout, ale mezi temito obdobimi je mezera pro teorii, kterou se clovek musi naucit... Kazdopadne ja teorii uprednostnuju.
pEeLL
Profil
suky
me prijde ze z dobrych praktickych prikladu vyplyne teorie sama.
Na druhou stranu kazdemu vyhovuje neco jineho.
suky
Profil
pEeLL
Presne tak a na to si i sam dotazujici vetsinou prijde sam :o) Stejne treba jako ja nebo ty...
« 1 2 »

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: