Avatar
Ondřej Krsička
Redaktor
Avatar
Ondřej Krsička:

Umět programovat neznamená umět vytvořit konzolovou kalkulačku, ale ovládat objektově orientované programování a dokázat tvořit komplexní systémy.
David Čápka

Ahoj lidi. Nemáte radu, jak se učit navrhovat komplexnější programy?
Já napíšu 2 metody do 1 třídy, ale něco víc už mi dělá problém. Nemám dost praxe v tomto.
Prosím o nějaké rady jak pokročit, co si přečíst, co dělat atd. Třeba jak jste se toto učili vy? Všechny možné i nemožné zkušenosti a rady sem :D, Ondra :)

 
Odpovědět 8.7.2015 22:30
Avatar
Denis Homolík (Alfonz):

Na to je nejlepší praxe. Prostě programuj a neboj se složitějších aplikací a ono to přijde samo :)

Nahoru Odpovědět  +3 8.7.2015 22:35
Vše je možné, dokud si to myslíte!
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Asi tě teď popletu, ale nejlepší na ověření OOP jsou testy. Když chceš program testovat, musíš jej mít rozdělený do logických bloků s oddělenou zodpovědností. Rázem se ti z jedné původní třídy ůvylíhne" například tříd 5, protože musíš vytvořit abstrakci pro jednotlivé kroky.
Uvedu příklad. Obyčejná konzole. Když chceš otestovat, že výstup z programu je podle tvých očekávání, tak musíš výstup získat. Pokud bude každá třída přistupovat přímo ke konzoli, uvidíš výstup, ale program je netestovatelný. Pokud mezi konzoli a testovanou třídu vložíme další třídu, přes kterou půjde veškterý výstup, můžeme aplikaci mnohem lépe testovat.
Abych to shrnul - testování tě nenaučí správně OOP, ale zajistí, že bude program naprogramován skutečně podle OOP.

Jinak jak se naučit...praxe. Programuj, někomu to pošli, ať ti to zhodnotí a programuj dál. Tohle je spíše o praxi než o naučení se.

Nahoru Odpovědět  +2 8.7.2015 22:40
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na patrik.valkovic
Ondřej Krsička:

Dík za rady. Možná bude dobrý číst prve nějaký návody a knihy a pak cizí kódy, kde pochopím použití a následně ozkouším.
Vidíš to jako dobrý plán? Případně kde konkrétně najdu ty cizí kódy?

 
Nahoru Odpovědět 8.7.2015 22:50
Avatar
Dominik Gavrecký:

Github ale určite skús aj miestne návody a hlavne tie prémiové ...

Nahoru Odpovědět  ±0 8.7.2015 22:59
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Michal Žůrek (misaz):

zkus http://www.itnetwork.cz/…59ceebd60fb5. Když to stihneš, tak na to dostaneš zpětnou vazbu.

Nahoru Odpovědět  -3 8.7.2015 23:00
Nesnáším {}, proto se jim vyhýbám.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Dominik Gavrecký
Ondřej Krsička:

Nechce se mi utrácet 25kč za článek. Když to sečtu, dá se do toho vrazit slušná pálka.
GitHub super

 
Nahoru Odpovědět  -1 8.7.2015 23:03
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Ondřej Krsička:

No až na to že nemám ponětí kde u toho programu začít :\

 
Nahoru Odpovědět  +1 8.7.2015 23:04
Avatar
Odpovídá na Ondřej Krsička
Michal Žůrek (misaz):

tak si to zadání přečti, ono je dost "objektově" napsané.

Nahoru Odpovědět  -4 8.7.2015 23:06
Nesnáším {}, proto se jim vyhýbám.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Ondřej Krsička
patrik.valkovic:

Jestli chceš, udělej například kalkulačku a pošli mi to. Podle profilu předpokládám že děláš C#. Mrknu se ti na to a řeknu co a jak.
Jinak návody nebo knihy....podle mě to musíš cítit. Je pár jednoduchým praviděl, které stačí.
http://stackoverflow.com/…ules-for-oop

Nahoru Odpovědět  +1 8.7.2015 23:07
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na patrik.valkovic
Ondřej Krsička:

Pošlu ti celou knihovnu dll co jsem naprogramoval (jsem za ní hrdej :D), ale až zítra z PC. Mně hold jdou spíš algoritmy programy jako celek.

 
Nahoru Odpovědět  -1 8.7.2015 23:15
Avatar
Dominik Klapuch:

Ze začátku mi dost pomohlo, že jsem si hledal zdroje o návrhových vzorech. Je tam dost informací, co ti pomůžou postavit komplexní aplikace. Vzory jako Decorator, Null Object, Strategy, Template Method mi dost pomohli a používám je velmi často i teď.

Jako další věc, která mi nesmírně pomohla byly rozhraní (Interface) s použitím Dependency Injection. Objekty se poté stanou velmi flexibilní.

Potom doporučuji se kouknout na SOLID principy. Najdeš v nich dost informací, které ti taky pomůžou k psaní čistšího kódu.

Nicméně, nejdůležitější část OOP jsou jména. Jak tříd, metod, rozhraní tak proměnných. To právě oni slouží k tvarování OO programu.

Je toho dost, ale věřím, že pokud přejdeš přes tyto věci, které jsem ti napsal, jistě najdeš mnoho dalších informací.

Nahoru Odpovědět  +1 8.7.2015 23:21
Kód a data patří k sobě.
Avatar
Richard
Člen
Avatar
Richard:

Tak hlavně tyhle (tady dost časný) nesmysly nebrat moc vážně, viz. hláška že umět programovat znamená umět oop.

Nahoru Odpovědět  +3 8.7.2015 23:28
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Odpovídá na Richard
Dominik Klapuch:

To bude tím, že lidé mají různý názor na to, co to je vůbec OOP. Někteří za OOP považují to, když používají třídy.

Nahoru Odpovědět  -1 8.7.2015 23:32
Kód a data patří k sobě.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Richard
Ondřej Krsička:

Pravda, OOP je důležitý, ale není to všechno.

 
Nahoru Odpovědět  +1 8.7.2015 23:32
Avatar
Richard
Člen
Avatar
Odpovídá na Ondřej Krsička
Richard:

Pro určitý obory softwaru je důležitý, pro určitý obory je kompletně zbytečný/nevhodný. Tvrdit že člověk co dělá v tý první skupině oborů umí programovat a ten v tý druhý skupině ne je.. Minimálně nevhodné.

Nahoru Odpovědět  +7 8.7.2015 23:37
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Richard
Ondřej Krsička:

Můžeš být konkrétní? Dost by mě to zajímalo :).
*Když tak zítra.

 
Nahoru Odpovědět  +1 8.7.2015 23:40
Avatar
Odpovídá na Ondřej Krsička
Dominik Klapuch:

Jsou nízkoúrovňové jazyky, ve kterých se objektově dělat nedá. V případě Davidova citátu by to teda mohlo znamenat, že věci běžící na C dělali amatéři :)

Nahoru Odpovědět  +4 8.7.2015 23:46
Kód a data patří k sobě.
Avatar
Richard
Člen
Avatar
Odpovídá na Ondřej Krsička
Richard:

My děláme soft na prediktivní analytiku, 2,3M řádků (což by mohlo splňovat tu podmínku komplexního systému), ale nikdo z těch 70 lidí co na tom za dobu vývoje dělalo neřekl nic ve stylu "hele chlapi, přepíšeme to do oop, to teď frčí", jednoduše protože je to jeden z těch oborů kde pro oop není místo.

Nahoru Odpovědět  +2 8.7.2015 23:54
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Richard
Člen
Avatar
Odpovídá na Richard
Richard:

Jsem blbec a zapomněl jsem napsat co jsem tím vlastně chtěl říct - několik lidí z těch co na tom dělali nikdy nic objektovýho nenapsali, ale do jednoho je označuju jako geniální programátory ( a to označení si zaslouží).

Nahoru Odpovědět  +2 9.7.2015 0:11
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Richard
Ondřej Krsička:

Ou, netuším co to je, ale aspoň vím, že to vůbec je :D.

Jo a lidi díky za rady, případné další příspěvky prosím více k úvodnímu tématu.

 
Nahoru Odpovědět 9.7.2015 6:27
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Richard
Ondřej Krsička:

No wikipedia řekla víc a ta prediktivní analytika geniální!

 
Nahoru Odpovědět 9.7.2015 6:37
Avatar
Ondřej Krsička
Redaktor
Avatar
Ondřej Krsička:

Nemáte nějaké tipy jak navrhovat / navrhnout objektově orientovaný software?

 
Nahoru Odpovědět 21.7.2015 18:21
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Nedávno tu proběhl machr na OOP, tak se podívej a vem si vzor (ikdyž ne vše je tak úplně OOP, tak pozor).

Nahoru Odpovědět 21.7.2015 18:25
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Ondřej Krsička
Redaktor
Avatar
Ondřej Krsička:

Mrknu se

 
Nahoru Odpovědět 22.7.2015 14:12
Avatar
Odpovídá na Ondřej Krsička
Michal Štěpánek:

Začni třeba pročtením místních tutoriálů a začnou tě napadat další prográmky, které bys mohl spáchat. Těžko ti někdo poradí jak "správně" navrhovat OOP aplikace, protože pod pojmem "správně" každý uvidí trošičku něco jiného... Jedno ti ale řeknu z vlastní zkušenosti. Učil jsem se programovat podle zdejších tutoriálů a každý další prográmek, který jsem tvořil byl (podle "norem" OOP) lepší, než ten předchozí. Ten první bych se dokonce styděl i někomu ukázat... %P Takže asi takto: čím víc toho naprogramuješ, tím lépe to pak budeš umět. 8-)

Nahoru Odpovědět  +1 23.7.2015 13:37
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Asi po posledních zkušenostech i něco o OOP napíšu. Nenaučí tě to jak co naprogramovat, ale co nedělat, potom už je jenom malý krůček :)

Nahoru Odpovědět  +2 23.7.2015 13:43
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Ondřej Krsička
Redaktor
Avatar
Ondřej Krsička:

Nechápu.

 
Nahoru Odpovědět  -1 24.7.2015 14:05
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

Všechny ty testy, interface, dependency injection, návrhový vzory. Na to se prozatím můžeš v klidu vyprdnout. Jsou to dobré rady, ale jsou to prostředky jak dělat OOP dobře. Naplň první písmenko ve zkratce OOP a nauč se myslet v objektech a v jejich vzájemné spolupráci. Počítač ani nespouštěj. Vem si tužku a papír a navrhnit si jenoduchý proces. Třeba oběd. Objekty Oběd, Člověk, Stůl, Jídlo. Instance Máma, Táta, Ségra a Ty. Stůl pojme 4 lidi. Oběd zahajuje Máma a končí když už nikdo nemá Jídlo. Přemýšlej jaké vlastnosti objektů budeš potřebovat, jaké nebudeš potřebovat. Jak ty objektu budou spolu kooperovat. Sedíš ty u Stolu, nebo stůl má X instancí typu člověk. Přemýšlej. Vem to z mnoha úhlů. Vem si mnohé jiné jednoduché situace. Dej tomu čas. Klidně týden. Programy se nerodí na klávesnici počítače, ale v mozku programátora.

Otázka co dál. Zazněly tu mnohé dobré rady. Programování přes interface, testovatelnost objektů. Načti trochu teorie. Ale nezačni něco smažit na klávesnici. Ještě budeš daleko od toho dělat OOP dobře. Uč se od ostatních. Jsou zde soutěže a zdrojáky psané v OOP. Nech si něco doporučit. Třeba tu kalkulačku nebo cokoli jiného.(kalkulačka může být i dost složitá, byly tady nějaká sloutěže? XX lidí řešilo jednu věc XY způsoby, popros organizátory o zdrojáky, všimni si kdo vyhrál a proč, to bude ta "dobrá" cesta) Ne nezapínej žádný VisualStudio/In­telliJ. Udělaj si vlastní "kalulačku", v hlavě/na papíře - jaký tam asi budou objekty. Jak spolu budou spolupracovat. Pak si otevři "kalkulačku", ale ne jednu, ale klidně pět. Každá bude trochu jiná. Každý přemýšlí trochu jinak. Všímej si stejných věcí. Všímej si rozdílů. Proč tenhle používá enumy a tenhle si vystačí 'se stringama'. Co z toho bude lepší? Viděl jsi tam interface co ses naučil v teorii? Fajn. K čemu to bylo. No třeba k tomu aby se objekt dal testovat nebo k něčemu jinému. K čemu? ... A pak začni s čímkoli co se ti zamane a začni myslet, kreslit na papíře a bušit do klávesnice.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +11 24.7.2015 19:33
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Ondřej Krsička
David Čápka:

V sekci OOP tu máš 14 článků úplně zadarmo (beru to z C#, ale ostatní jazyky to mají podobné). Placených je posledních 7 článků v celkové hodnotě 175 Kč. Každá dovednost stojí čas a peníze a jestli se ti nechce investovat ani takhle malý obnos, tak je to možná na zvážení tvého přístupu ke vzdělání. To co já umím jsem se naučil samozřejmě za peníze (školení, knihy, kvalitní soukromá VŠ) a takovéhle investice se ti v životě vrátí tisíckrát.

Nahoru Odpovědět  ±0 24.7.2015 20:04
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
vitamin
Člen
Avatar
vitamin:

Hlavne nebrat OOP ak nabozenstvo. Su aj ine programovacie paradigma ktore mozu byt v niektorych situaciach lepsie pripadne sa daju kumbinovat s OOP. Priklad: https://web.archive.org/…amming-in-c/

 
Nahoru Odpovědět  +2 25.7.2015 21:17
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na David Čápka
Ondřej Krsička:

Samozřejmě máš pravdu, ale nejsi jediný zdroj informací. Já si je taky můžu sehnat jinde a levněji :-) A takhle je to se vším.

 
Nahoru Odpovědět  -2 26.7.2015 11:50
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Milan Křepelka
Ondřej Krsička:

Tak to je dobrý nápad, budu se tím řídit. I hodně palců nahoru, takže víc lidí souhlasí.

 
Nahoru Odpovědět 26.7.2015 11:53
Avatar
Ondřej Krsička
Redaktor
Avatar
Ondřej Krsička:

Díky všem (a hlavně cicobasket-ovi..) za ochotu, trpělivost a za pomoc. Zatím mi stačí, co jste mi poradili a už vím, co teď programovat a navrhovat.

 
Nahoru Odpovědět 26.7.2015 12:05
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Ondřej Krsička
Milan Křepelka:

Nenech se zmýlit. Investovat do svého zvzdělání se vyplatí. Na internetu lze sehnat hodně zdrojů "zadarmo". Důležité je mít zdroj které dané téma rozebírá v ucelené formě. Proto preferuji knížky. Je to podle mě lepší forma a má lepší poměr cena/výkon. Na druhou stanu mít to s kým rozebrat a nechat si poradit je nezanedbatelná výhoda.

 
Nahoru Odpovědět 26.7.2015 12:15
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Milan Křepelka
Ondřej Krsička:

Taky mám raději knihy. A super je, že rozebrat to a nechat si poradit můžu tady na fóru. Opravdu jsou tu super lidi.

 
Nahoru Odpovědět 26.7.2015 12:31
Avatar
Odpovídá na Ondřej Krsička
Neaktivní uživatel:

Ak ti smiem poradiť, tak najlepšie je kupovať a čítať knihy od profesionálnych programátorov s dlhoročnou praxou a skúsenosťami, ktorí už čo to dokázali a majú dobrú reputáciu. Je to záruka kvality minimálne po tej informačnej stránke :) "Learn from experts!"

Nahoru Odpovědět 26.7.2015 18:28
Neaktivní uživatelský účet
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Ondřej Krsička:

Žel na Donalda Knutha ještě nemám :D

 
Nahoru Odpovědět 26.7.2015 20:11
Avatar
Odpovídá na Ondřej Krsička
Neaktivní uživatel:

Tu nejde o to, to je všeobecná rada platná pre takmer akúkoľvek oblasť ak chceš byť skutočne dobrý. V dnešnom svete je na internete nepreberné množstvo informácii, dôležité je vedieť vybrať si tie správne.

Nahoru Odpovědět  +1 26.7.2015 20:55
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 39 zpráv z 39.