« 1 2
Autor Zpráva
ah01
Profil
Ještě jsme zapomněli konkrétně zmínit jeden důležitý aspekt OOP návrhu, a to abstrakci. Když uvažuji nad nějakým problémem, snažím se jej co nejvíc zobecnit. Například výše zmíněné auto, vím, že musí mít metodu "nastartuj", ale vůbec se zatím nezajímám, jak taková metoda bude fungovat. Takový objekt auto považuji za černou skříňku. Později začnu vymýšlet třídu Auto, a opět si říkám, že metoda "nastartuj" bude asi hodně záviset na motoru, tedy na objektu motor, takže se jí zase vyhnu a nechám to na objektu motor, tzv. deleguji metodu "nastartuj" na motor. Prostě se snažím co nejvíc odsunout vlastní psaní funkčního kódu (algoritmu). Pak budu třeba chtít jednou vyměnit motor a nebudu kuli tomu muset měnit metodu "nastartuj" vlastního auta.
CyberLuke
Profil *
Jednodušší varianta je si nastavení vytáhnout z databáze hned někde na začátku stránky a uložit do globální proměnné a ve funkci login_check pak používat tu globální proměnnou.

>>> A bezpecnejsi objektova varianta je udelat objekt Session nebo Login a ukladat nastaveni o databazi ze zacatku skriptu a definovat to jako private, pak mohou ostatni objekty cist prihlasovaci udaje napr pres isLogged(); a to vrati jen false nebo true - tim ze je to globalni promenna, to muze kdokoliv zmenit = hack ;-)
thingwath
Profil
Pozor, hlavně nepodléhat omylu, že soukromé členské proměnné jsou kvůli bezpečnosti!
Gazijou
Profil *
Ahoj. Drive jsem si napsal "redakcni system" v PHP, aby odpovidal mym pozadavkum. Nicmene jsem jej nyni potreboval zmenit a zjistil jsem, ze bude nejjednoduzsi ho predelat. S OOP jsem prisel do styku ve skole, kde jsem pomoci nej realizoval zakladni datove struktury (v jazyce ObjectPascal).
Proto bych chtel cely "redakcni system" udelat objektove, ale nevim, jak navrhnout ty objekty na abstraktni urovni, abych mohl pracovat i s databazi atd. Proto vas prosim o radu!
Čávo
Profil *
Objektové programovanie v PHP je masochizmus - horší jazyk na OOP už snáď ani neexistuje. ak sa chcete seriózne zaoberať tvorbou web aplikácií najlepšie bude začať s Javu prípadne C#(VB.NET).
Čávo
Profil *
btw: Na výučbu OOP je delphi ako stvorené.
luax
Profil
Zdravím, taky mám problém s OOP přesněji řečeno s návrhem databáze a s ukládáním dat do databáze
Když vidím, že Gazijou položil dotaz k tvorbě redakčního systému, tak se taky přidam a nastíním konkrétní problém.

Řekněme, že chci evidovat ve svém systému 2 typy článků
1. obyčejný článek, který bude mít název a text článku
2. reklamni článe,k který bude mít název, text článku a odkaz na nějakou stránku

Jak bude v tomto případě vypadat struktura tabulek a jak budou vypadat třídy a metody pro vložení a aktualizaci článků?
finc
Profil
to luax:
Co se týče struktury tabulek, tak to není o OOP, ale o správném navrhnutí DB, která nemá přímou vazbu na to, jakým způsobem v PHPku programujete.
Připojení k DB, se dá řešit pomocí statických atributů třídy, kdy se connect vytvoří jen jednou a ten poté využíváte

class DB
{

private static $mysql;

public function mysql()
{
if (!self::$mysql) {
self::$mysql = new mysqli(/* connect */);
}
return self::$mysqli;
}

}

$query = "SELECT * FROM table";
if ($result = DB::mysql()->query($query)) {
while($row = $result->fetch_assoc()) {
// zpracovani
}
$result->close();
}

$mysql->close();
ronnie
Profil
Takže. Pokud chceš (téměř) kompletní manuál pro OOP, podívej se do google cache na web oop.ronnieweb.net nebo na aktuální verzi na php.interval.cz (zde je však zatím velmi málá část, během několika měsíců snad vyjdou všechny články a přibydou hlavně některé oblasti, které jsem nepopisoval).

Problém mnoha lidí je ten, že vnímají objekty procedurálně (viz názor, že je to jen soubor funkcí a proměnných). Ono je opravdu velmi obtížné OOP popsat, to se zkrátka musí pochopit...naučit se syntaxi OOP porozumět a pak prozkoumat nějaké kódy OOP a člověk si to pak uvědomí.
Joker
Profil
Čávo: Správný objektový fundamentalista programuje jedině ve Smalltalku :-)
luax: Tohle se netýká OOP, to je problém návrhu databáze... spíš by to bylo na samostatné téma. Jinak bych asi všechny články ukládal do jedné tabulky a rozlišoval je třeba podle nějakého sloupce "kategorie". Ale jak říkám, to nepatří k tomuhle tématu.
thingwath
Profil
Slovo Smalltalk bych neříkal moc nahlas, nebo smalltalkeři opravdu přijdou. Ale je to poučné aspoň to zkusit, vřele doporučuji.
ah01
Profil
ronnie myslím že tvé články o oop jsou dobré, ale pro úplné začátečníky tam chybí to prvotní vysvětlení problematiky. Takový mam aspoň pocit ze současného stavu na intervalu, co bylo na původní adrese, si již nepamatuji a obávám se, že cache je už fuč.


Poznámka k příspěvku od fince, pro ty, kteří již pochopili, oč v OOP běží:

To co finc použil, myslím ten statický atribut pro spojení s db a metodu myslq(), tomu se říká Singleton Pattern a je to jeden z velmi často používaných návrhových vzorů. Návrhové vzory jsou takový souhrn problémů a jejich optimálního řešení, se kterými se při programování (hlavně složitějších programů) setkáme. Mezi návrhové vzory patří např. i MVC (čas od času se na této diskusi zmiňuje), nebo pokud vás zajímalo, jak je v dnešních programech uděláno to kouzelné tlačítko "Zpět", tak to také řeší jeden návrhový vzor.

Pokud vás návrhové vzory zaujali, doporučuji se podívat na Návrhové vzory (design patterns) a pokud máte trochu rychlejší připojení, tak se můžete podívat na přednášku Rene Stein, Návrhové vzory a jejich implementace v .Net Frameworku
Anonymní
Profil *
pre tych co vedia anglicky, tu je suhrn OOP v php5

http://somabo.de/talks/200403_php_cruise_php5_object_oriented.pps
http://ilia.ws/files/frankfurt_oop.pdf
Glacier
Profil
Sháněl sem knihu o OOP a v češtině sem nic pořádného nenašel (OOP bez předchozích znalostí která tu už byla zmíněna mi přijde dost málo praktická a vůbes se mi nelíbí) částečně se o OOP zmiňuje snad jen Dokonalý kód ze kterého sem docela pochopil teorii a vůbec onu "myšlenku OOP". Pátral jsem v angličtině a co se týče PHP vypadá opravdu dobře Object-Oriented PHP: Concepts, Techniques, and Code a co se teorie obecně týče poněkud větší a obsáhlejší ale asi dobrá bude Object-Oriented Software Construction (2nd Edition).
Zatím zvažuji nákup toho PHPka v angličtině.
Anonymní
Profil *
podla mojho je zbytocne nakupovat knihy, ked na internetu je toho strasne furu
ja som do oop skocil rovnymi nohami, objektove myslenie prislo neskor.. neraz som cely kod prerabal (menil dizajn)
nevravim ze zaciatky boli lahke ale ked to clovek vytrpi tak sa pozera na veci... objektovo, snazim sa veci robit co najviac abstraktne..
Glacier
Profil
podla mojho je zbytocne nakupovat knihy, ked na internetu je toho strasne furu
Nemyslím, knížka se především čte daleko líp..... já bych knihu na PC číst delší dobu nemohl. Potom se v ní líp listuje a můžu si jí vzít všude s sebou (cestou do školy a pod.) A nakonec je ucelená a člověk se to z ní naučí podle mě líp než sbíráním informací různě na internetu. Toť můj názor.

I přesto ale pokud znáš odkaz na něco pořádnýho co by knihu nahradilo bude to supr, ušetřím za knihu :-) zatím, mám pocit, se tu žádnej takovej neobjevil.
Anonymní
Profil *
staci ked si precitas nieco kde mas popisane zaklady napr http://php.interval.cz/clanky/zaklady-oop/
a tie suvisiace clanky, tie ta nakopnu a potom sa vrhnes na kod, mozno nebude to dielo velkolepe ale postupne sa to bude zlepsovat..

kniha ako takova ma i svoje vyhody nepochybne, ja osobne som si taktiez na zaciatok kupil programujeme profesionalne v PHP asi pred par rokmi, no dnes pouzivam vyhradne php.net pretoze robim v oop5
Glacier
Profil
takhle základy umím, to nepotřebuju, spíš něco praktičtějšího.....
mila
Profil
Dobré jsou klasické knihy o oop - mě přišli velmi přínosné např. "Refactoring" či "Návrh pomocí vzorů."
Bohužel si nepamatuji autory, možná někdo doplní.
llook
Profil
"Refaktoring" (autor: Martin Fowler) je super, ale úplné základy to nejsou. Když už jsme u agilní aliance, tak mě hodně nadchlo "Programování řízené testy" od Kenta Becka.
"Návrh programů pomocí vzorů" napsal takzvaný Gang of Four a přiznám se, že jsem to nečetl (ačkoli to mám už pár let v plánu). Je to snad ta největší klasika v OOP, ale prý jsou v českém překladu překládány i názvy vzorů, což se mi moc nelíbí.

Byl tu několikrát zmíněn Rudolf Pecinovský, ten napsal "Myslíme objektově v jazyku Java 5.0" a na tuto knížku jsem zatím zaregistroval pouze kladné reference. Důvěru vzbuzuje i tím, že je především pedagog a na výuku OOP se přímo specializuje.
O knížce "OOP bez předchozích znalostí" se tento pán v jiném tématu zde na JPW vyjádřil, že to není ani trochu dobrá knížka (něco ve stylu "tohle jsme o OOP říkali před dvaceti lety a teď se za to stydíme").
finc
Profil
to: Glacier
Už jsem to tady psal. Vyzkoušej ZEND Framework. Je to praktický příklad využití OOP v praxi. Navíc je zde použit model MVC (model-view-controller), což jsou v podstatě návrhové vzory.
U objektového programování je jedna věc, která spoustu lidem unikla a dost mate (včetně mě). Jde o názvy jednotlivých oblastí, věcí, metod, apod..
Když začátečníkovi někdo řekne: Použil jsem MVC, framework, design patterns, atributy třídy, metody, abstrakci, singleton pattern, apod. je z toho akorát zmatený. To už se nebavím např. o javovských výrazech jako: sping, hibernate, apod.
Předně si myslím, že je dobré znát způsob vytváření tříd (je to vesměs všude stejné PHP, C++, Java), vyzkoušení použití dědičnosti, abstraktních tříd viditelnosti atributů a metod, apod.
Pak je dobré naučit se používat věci jako setry a getry a dodržovat určitý standart psaní kodu.
Např.: http://interforum.interval.cz/ShowPost.aspx?PostID=30899
Docela dlouho trvá, než si člověk dostane pod kůži základní vlastnosti a ovládání OOP.
Další věcí je vůbec se naučit objektově nad kodem přemýšlet (stále s tím mám problémy).
Naučit se UML pro analyzu.
apod. apod. apod.
Možná rozdíl je znát už v tom, že phpčkář má 2xkrát nižší plat než programátor javy nebo C++. A proč? Zejména proto, že umí OOP a vše co k tomu patří (a ne, že by toho bylo málo).
Já osobně jsem rád, že umim zatím tak nějak použít abstraktní třídy (i když ne úplně ideálně). Ale chce to stále zkoušet, zkoušet, zkoušet. Jinak než praxí se to člověk nenaučí. Každý křičí, že OOP z knížky nechápe, ale ono to dost dobře ani nejde. Knížka Vás nenaučí jinak nad problémem přemýšlet, dá vám možná tak cestu jak to zkoušet, to je celé.
Gazijou
Profil *
POtrebuju poradit - jak to ze mi nejde v PHP ve tride pouzit klicove slovo private? Prosim poradte!
ah01
Profil
Gazijou A požíváš PHP verzi 5?
Gazijou
Profil *
Tezko! :(
thingwath
Profil
llook
Pecinovského Javu jsem viděl a též myslím, že je to dobrá knížka.
Čávo
Profil *
Joker:
Správný objektový fundamentalista programuje jedině ve Smalltalku :-)

Správny objektový fundamentalista programuje jedine v Eiffel-y :-).
mila
Profil
llook
prý jsou v českém překladu překládány i názvy vzorů, což se mi moc nelíbí
Ano, je to přeložené, ale je tam vždy i originální název. Takže jediný problém s tím je, že se nedá podle anglického názvu hledat v seznamu.

finc
Když začátečníkovi někdo řekne: Použil jsem MVC, framework, design patterns, atributy třídy, metody, abstrakci, singleton pattern, apod. je z toho akorát zmatený.
Ono ale právě o tomto je. Je samozřejmě důležité umět vytvořit třídu, ale aby to mělo svůj přínos, je právě třeba umět používat tyto různé vzory a postupy.
K ničemu ti není narvat celý kod do jedné fce jedné třídy a zavolat run.
« 1 2
Toto téma je uzamčeno. Odpověď nelze zaslat.

0