ako sa posunut dalej v programovani?

Programovacie jazyky, rady, poradňa...
Stanley30
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 07 feb 2009, 11:29

ako sa posunut dalej v programovani?

Príspevok od používateľa Stanley30 »

Zdravim vsetkych,
mam problem s tym, ze uz asi mesiac studujem knihy o programovani v Java, Javascript, php-cko a nie a nie sa posunut dalej. Stale ostanem zaseknuty v tom stadiu pred OOP. Viem co-to programovat v PHP a MySQL, vytvoril som uz zopar stranok, niektore jednoduche, niektore zlozitejsie.. momentalne programujem jednu stranku aj s komplet admin rozhranim a nejakych mensim eshopom, takze html, css, php a mysql ovladam na slusnej urovni (na strednej som mal pascal). A tak som sa rozhodol ze sa chcem posunut dalej, na vyssie level a tak som sa zacal obzerat po jav-e, javascript-e a aj OOP v php-cku. mam rozne knihy, no mam pocit ze tomu oop nepochopim. Ked zacnem knihu citat, tak rozumiem vsetkemu az po stadium ked sa zacnu pouzivat triedy, metody a nikde to nie je vysvetlene ze preco je to lepsie pouzivat takto a takto.. Javu som teda na cas odlozil, pohraval sa s myslienkou oop v php, no po precitani zopar clankov som tam kde aj na zaciatku, ze neviem o com to tam tocia. A tak som sa vrhol na javascript no ten ma tiez kopec metod a tried a ja nemozem nejak do hlavy vtrepat filozofiu OOP. Preto sa chcem opytat vas, zbehlych programatorov, ako postupit dalej, akym stylom sa uberat? Knihy mi vela nedaju, tie zaklady ano, ale nic viac, lebo na pochopenie programovania potrebujem vediet preco sa to robi tak a tak a preco nie inak, v com je to vyhodnejsie a vysvetlit aj veci ktore sa v knihach nevysvetluju alebo to beru tak ze je to samozrejme.. Pripadne vase skusenosti, ako sa naucit spravne programovat a mysliet v oop. Ak by ste napriklad aj vedeli o nejakom vhodnom kurze ci skoleni, to by mi asi pomohlo najviac (nasiel som napr. itlearning.sk).
Vopred dakujem za kazdy vas prispevok ci odpoved.
Rayiner
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 889
Registrovaný: 03 aug 2008, 11:34
Bydlisko: Zvolen

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa Rayiner »

Neviem ci pomoze ale skus www.w3schools.com
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa javatar »

1. javascript ma trosku odlisny objektovy model - ten by som na ucenie sa OOP nevyuzival
2. mozes pokojne zneuzit tuto temu a klast konkretne otazky pri konkretnych pripadoch, myslim ze to bude lepsie ako sa snazit vsetko pochopit sam...
Aiden
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2213
Registrovaný: 06 apr 2007, 14:28

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa Aiden »

Pozri OOP tu. Po precitani tohto tutu, mi bolo vela veci jasnejsich :)
Stanley30
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 07 feb 2009, 11:29

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa Stanley30 »

to Rayiner: dik za tip, ale toto uz poznam a casto aj pouzivam no tiez je to take ako keby som si cital hocaku knihu. su tam vysletlene zaklady, ukazky kodov a nie vela o tom preco to alebo tamto

javatar: tak to velmi rad vyuzijem hned ak mozem (dufam, ze nemusim zakladat novu temu, ale staci to postnut tu)

moj prvy problem je pochopit to, preco je vlastne dobre OOP, ved v podstate je to iba o tom vytvorit triedu, kde su premenne a funkcie, cize vlastne len vytvaram ako keby funkciu, kde su zoskupene dalsie funkcie, len nerozumiem na co je to dobre? vytvorim si funkciu
function nova_funkcia () { vykonavaci kod }
no a v oop by som si vlastne musel este vytvorit aj triedu, do nej strcit tuto funkciu, nasledne ju zlozitejsie volat cez objekt. Ja viem ze to len zle chapem, ale takto mi to pripada o dost zlozitejsie a co sa tyka kodu aj objemnejsie ako to naprogramovat bez oop.

uvediem len jeden priklad..
mam funkciu ktora ked sa zavola tak len vykona update mysql tabulky a presmeruje prehliadac spat na nejaku hlavnu stranku

Kód: Vybrať všetko

switch ($action) {
case "edit":
$query = "UPDATE $tab SET vyrobok=\"".$_POST["var"]."\", rozmer=\"".$_POST["rozmer"]."\", druh=\"".$_POST["druh"]."\", seria=\"".$_POST["seria"]."\"
                                      , novinka=\"".$_POST["novinka"]."\", parent=\"".$_POST["parent"]."\", hmotnost=\"".$_POST["hmotnost"]."\"
                                      , rozmer_bal=\"".$_POST["rozmer_bal"]."\", cena1=\"".$_POST["cena1"]."\",
                                        cena2=\"".$_POST["cena2"]."\", cena3=\"".$_POST["cena3"]."\",
                                        cena4=\"".$_POST["cena4"]."\" WHERE id=\"".$_POST["id"]."\"";
              mysql_query ($query) or die ("SQL nebol uspesne napojeny - ". mysql_error() );
              header ( "Location: $adresa" );
              break;
              
ako sa napriklad tento kod da urobit v oop hlavne tak aby bol efektivnejsi a prinosnejsi?
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa javatar »

voci PHP OOP som pocul viacere vyhrady no sam som si nic neodskusal (PHP som vzdal hned ako som zistil ze sa to neda klasicky debugovat krokovanim - mozno sa to uz teraz da, ale uz som sa vrhol na nieco ine)

aby som bol priamy - sila OOP netkvie v tom urobit veci efektivnejsie ako strukturovane, ale mat kod pripraveny na zmenu daleko lepsie ako je to mozne u struktur

a odpoved na tvoju otazku ako by to malo vyzerat v OOP:
v tom switch zavolas funckiu (s prislusnymi parametrami) inej tried ktora ti vysklada query, executne ho a vrati vysledok (ok alebo chyba)
Stanley30
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 07 feb 2009, 11:29

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa Stanley30 »

cize vlastne to iste ako keby som to robil aj proceduralne.. lebo v tom switchi by som tiez mohol zavolat funkciu (s vlozenymi parametrami) ktora mi vysklada query, vykona ho a vrati spat vysledok. V OOP vlastne budem musiet este vytvorit triedu do nej vlozit tu metodu a potom to vsetko volat..
ten update robim viac krat pre rozne tabulky s roznym poctom/menami stlpcov a takze mam zvlast subory php kde kazdy jeden update upravim presne podla poziadavky tej ktorej tabulky. Bolo by mozno v oop urobit jednu triedu "tabulka", vramci nej metodu "update" a ta by si sama zistovala ktoru tabulku ma upravit a ake query vyskladat? lebo aj teraz ma napadlo ze takto by som to vedel napisat aj bez oop :oops: asi som uz velmi poznaceny "klasickym" stylom programovania a stale nedokazem pochopit to oop.

pre mna je hlavne problem najst nejake realne veci/realne casti kodu kde sa ukaze aky je vlastne prinos OOP. vsade je len vysvetlene ze takto sa to urobi v oop, ale nikde uz nie je ukazane ze keby sa to malo robit proceduralne tak by to bolo o tolko zlozitejsie a takto a takto narocnejsie. Vsade sa len pise o tom ako chapat OOP, zakladne rozdieli oproti proceduralnemu programovaniu ale nic realne. Program robi to a to, proceduralne by to vyzeralo takto, keby sme chceli urobit to a to, tak by bolo potrebne vykonat taketo upravy, no v oop by stacilo iba urobit toto a hento a na vsetky moznosti by to pamatalo.
inak.. dik za trpezlivost
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa sharky-no »

mozno by ti pomohlo pouzit nejaky PHP framework, naucis sa nieco nove, je to objektovo orientovane a je s nim daleko efektivnejsia praca nez klasicke proceduralne riesenie.

Ja osobne vyuzivam framework CodeIgniter, nie je prilis zlozity, ponuka rozsiahlu UserGuide a komunita je tiez dostatocne siroka. Ak ta to zaujima, tak si skus prejst tutorialy ( slovensky tut alebo anglicky tut )
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa javatar »

Stanley30 napísal:Bolo by mozno v oop urobit jednu triedu "tabulka", vramci nej metodu "update" a ta by si sama zistovala ktoru tabulku ma upravit a ake query vyskladat?
Toto je velmi dobre uvazovanie. A hned na tom postavim aj priklad.

Predstav si ze ma triedu databaza (ty si ju nazval tabulka ale verim ze myslime to iste) a v nej mas metody na komunikaciu s databazou. Nemusis mat len jednu ktora bude zistovat co ma robit - to zavisi od teba. Kod je o cosi prehladnejsi.

V druhom projekte to mas poriesene ze to pises ako si napisal (priklad kodu co si postol vyssie) -> volas priamo akciu vo switch.

Teraz ti pride poziadavka na oboch projektoch:
1. zmen databazu z MySQL na postgre
2. zmen databazovy model
3. prestahuj databazu

Alebo lubovolna kombinacia tychto troch poziadavok. V ktorom projekte sa podla teba viac namakas ak chces realizovat zmenu?
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa c-ice »

ked to robis tak ako to chceš tak je to bordel ked to robis v OOP tak je to organizovaný bordel ...
vytvoris si triedu ako si napisal tabulka do konstruktoru (neviem ci to podporuje PHP) vlozis "NazovTabulky" ($nejakaTabulka = new Tabulka("NejakaTabulka");)..
trieda tabulka bude obsahovat XY funkci ale ktore su pre kazdu tabulku rovnake dalej bude obsahovat aj nejake nastavovatelne parametre a tak dalej ty si tam definuješ par funkcii ktore chceš volat z vonku (neviem ci PHP rozoznava Public/Private....) to bude akoby tvoje API pri ktorom budes ocakavat na dany vstup urcity vystup alebo zmenu... ked si tuto triedu raz nakodis spravne tak ju mozes pouzit vo vsetkych dalsich tvojich projektoch a moze ju pouzit aj niekto iny a jeho vobec nebude zaujimat co je vnutry ako to je nakodene on len vie ze ked zavola funkciu Update() spravi sa to a to ... tymto to mas zabalene co je myslim najdolezitejsie no ja o PHP neviem nic mne najlepsie vidno OOP na Jave...

este jedno pozeras sa na to moc z dola pozeraj sa na to z vrchu "vsetko" je objekt a objekt moze obsahovat dalsie objekty
ako objekt Auto ... funkcie chodDopredu(); krutVolantom(kam); brzdi();prerad();podrad();getRychlostnyStupen()... obsahuje objekty: prevodovka, klimatizacia....
napr. implementacia

Kód: Vybrať všetko

funkcia prerad(){
prevodovka.rychlostnyStupen++;
}
podrad(){
prevodovka.rychlostnyStupen--;
}
chodDopredu(){
if(jeNastartovane){
  pridajPlyn();
  if(dostOtacokNaDalsiStupen)
    prerad();
}else{
  nastartuj();
  chodDopredu();
}
}
Ono tie priklady su vsetky jednoduche a zda sa ti to zbytocne len aplikuj to na väčší projekt a uvidiš ten rozdiel
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa harrison314 »

Ja som sa OOP pre php naucil s tadialto
http://interval.cz/stitek/oop-php/
je to tam celkom dobre vysvetlene a hlavne je tam vetcina veci co s tym suvisi.

No tutorial kde by bolo naozaj dobre vysvetlene OOP a naco je dobre som este nevidel, ale nato dojdes aj sam.
FrewCen
Light Expert
Light Expert
Príspevky: 75
Registrovaný: 11 aug 2011, 10:30

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa FrewCen »

Na OOP v PHP sa mi veľmi nepáči, a na učenie OOP odporúčam C++. Podľa mňa nemá ďaleko k PHP a je to pomerne jednoduché. OOP je veľmi zaujímavá vec v každom programovacom jazyku a veľmi sa zíde pri programovaní stránok či SW, ktorý plánuješ v budúcnosti rozvýjať na vyššiu úroveň.
Stanley30
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 07 feb 2009, 11:29

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa Stanley30 »

sharky-no: dik za tip, pustim sa asi do frameworku. Uz som pozeral po nejakych ale nikdy som sa do toho nepustil.

javatar, c-ice: praveze, takto nejako si to predstavujem ze by to mohlo fungovat len neviem ako to tak urobit. Aj tym vasim prikladom rozumiem, len to neviem zaradit do realnej praxe.. ja mam napriklad ten update query rozny.. a ked by to bolo v oop, tak by som sa vpodstate stale odvolaval na triedu databaza a jej metodu update. A v metode update by bol len vseobecny kod na update a metoda by si sama podla vlozenych parametrov urcila ze co bude updatovat, v ktorej tabulke a ktore stlpce? Ja by som pri volani len proste menil objekty, napr.

Kód: Vybrať všetko

var data_baza = new Databaza;
data_baza->update(tabulka, hodnota1, hodnota2);
data_baza->update(tabulka2, hodnota1, hodnota2, hodnota3);
s tym ze metoda update by mala v sebe nejake podmienky ze ked je tabulka1 tak urob toto a ked je tabulka2 tak urob toto. alebo by sa urobili dve metody s rovnakym nazvom a program si uz sa zisti ze kolko ma premennych podla toho vyberie tu spravnu?

harrison314: vdaka za tip.. idem pozriet, lebo toto som este nevidel

FrewCen: chcel som zacat s JAV-ou, ale tam som sa zasekol prave ked to zacalo v oop, uz som prestaval chapat, ze o com sa to tam toci :oops: a kedze php ako-tak ovladam, tam to skusam najskor v php

velka vdaka vsetkym co mi odpisali/odpisuju :)
javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa javatar »

ma PHP staticke metody?
pripadne neaky singleton sa v php da spravit?

lebo s konkretnou implementaciou ti v php nepomozem - kazdu chvilu ale vytvarat objekt Databaza je blbost... toto je jednoznacne vec pre singleton
Stanley30
Light Expert
Light Expert
Príspevky: 39
Registrovaný: 07 feb 2009, 11:29

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa Stanley30 »

fuuu :)
tak daleko zase nie som ale viem ze staticke metody ma (aj ked neviem na co su a aku maju funkciu)

no a podla manualu php ma aj singleton (to uz vobec netusim co je)

ale nehladiac na to ze to je php, ako by sa to robilo v inom jazyku?

este jedna hlupa otazka.. vsade sa pise o konstruktoroch, ibaze ani z jedneho vysvetlenia som nepochopil presne co to vlastne je. podla mna je to vlastne len objekt ktory inicializuje triedu
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa harrison314 »

javatar: samozrejme ze ma, PHP ma plnohodnotny OOP model.

Kód: Vybrať všetko

 class SinglTon
 {
   private static $instance = null;
   public static function getInstance()
   {
     if(self::$instance==null) self::$instance = new SinglTon(); // alebo new self()
     return self::$instance;
   }
   protected function __construct()
   {
   }
 }


javatar
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6112
Registrovaný: 12 aug 2010, 14:49
Bydlisko: I don't exist at all.

Re: ako sa posunut dalej v programovani?

Príspevok od používateľa javatar »

takze stanley:

1. konstruktor je metoda ktora sa vykona pri vytvarani objektu, jedna trieda != jeden objekt, z jednej triedy mozem urobit kolko chcem objektov
2. singleton je navrhovy vzor - je to v podstate akysi sposob riesenia isteho typu situacie, v tomto pripade vhodny
3. staticke metody a premenne patria triede, nie objektu - nemusis teda vytvorit objekt aby si ich pouzil
Napísať odpoveď