Diskuze: Jak na OOP
Tvůrce
Zobrazeno 39 zpráv z 39.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.
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?
Github ale určite skús aj miestne návody a hlavne tie prémiové ...
zkus http://www.itnetwork.cz/…59ceebd60fb5. Když to stihneš, tak na to dostaneš zpětnou vazbu.
Nechce se mi utrácet 25kč za článek. Když to sečtu, dá se do toho
vrazit slušná pálka.
GitHub super
No až na to že nemám ponětí kde u toho programu začít :\
tak si to zadání přečti, ono je dost "objektově" napsané.
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
Pošlu ti celou knihovnu dll co jsem naprogramoval (jsem za ní hrdej ), ale až zítra z PC. Mně hold jdou spíš algoritmy programy jako celek.
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í.
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.
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é.
Můžeš být konkrétní? Dost by mě to zajímalo .
*Když tak zítra.
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
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.
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ží).
Ou, netuším co to je, ale aspoň vím, že to vůbec je .
Jo a lidi díky za rady, případné další příspěvky prosím více k úvodnímu tématu.
No wikipedia řekla víc a ta prediktivní analytika geniální!
Nemáte nějaké tipy jak navrhovat / navrhnout objektově orientovaný software?
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).
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... Takže asi takto: čím víc toho naprogramuješ, tím lépe to pak budeš umět.
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
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/IntelliJ. 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.
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.
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/
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.
Tak to je dobrý nápad, budu se tím řídit. I hodně palců nahoru, takže víc lidí souhlasí.
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.
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.
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.
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!"
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.
Zobrazeno 39 zpráv z 39.