Avatar
anub.w
Člen
Avatar
anub.w:

Mám pár dotazů k oop nevím jak to nejlépe říct tak jsem přiložil dokument ve formátu doc snad se nebudete nikdo zlobit za copyright ale jinak mě to rychleji nešlo měl jsem to dost narychlo tak se omlouvám:`

Odpovědět 17.4.2014 18:58
jakej jazyk?? No ten Kterej baví
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na anub.w
Petr Nymsa:

Bylo by dobré ten soubor přiložit - nelze ho přiložit na přímo, tudíž ho někam uož a pošli odkaž

Nahoru Odpovědět 17.4.2014 19:02
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
anub.w
Člen
Avatar
Odpovídá na Petr Nymsa
anub.w:

tak to se omlouvám. Prosím mohl by jste mi poradit jak ten soubor přiložit mám ho dvakrát na ploše jednou v typu Dokument aplikace Microsoft Word s podporou maker (.docm) a podruhé normálně Dokument aplikace Microsoft Word
(.docx) obojí se otevírá v programu Microsoft Office Client Virtualization Handler

Nahoru Odpovědět 17.4.2014 21:59
jakej jazyk?? No ten Kterej baví
Avatar
anub.w
Člen
Avatar
Nahoru Odpovědět 17.4.2014 23:27
jakej jazyk?? No ten Kterej baví
Avatar
anub.w
Člen
Avatar
anub.w:

tak takhle by to mohlo být ještě abych nebyl tak neoriginální tak mam v úmyslu to navíc rozšířit

Nahoru Odpovědět 17.4.2014 23:30
jakej jazyk?? No ten Kterej baví
Avatar
coells
Redaktor
Avatar
Odpovídá na anub.w
coells:

Ahoj Anube, díval jsem se na Tvůj dokument a je vidět, že se snažíš to pochopit, ale jsi hodně mimo mísu :-)

Ve zkratce na základě Tvého dokumentu:

  • nekonzistence interního stavu nejen může, ale běžně také nastává v OOP, hlavně pokud není design aplikace korektní
  • použití objetků není ani bezpečnější, ani nedělá aplikaci stabilnější, to jsou nesmysly
  • zapouzdření nenutí používat objekt tím správným způsobem, to je omyl
  • interface nedělí vlastnosti objektu na veřejné a neveřejné - to je výmysl C++, ale s OOP má společného stejně málo jako Java
  • dané příklady jsou hodně něšťastné, nejen, že neukazují principy OOP, ale navíc obsahují nezávislé metodické chyby

Jak je to správně:

  • OOP definuje paradigma - způsob, jakým vyjádřit myšlenku
  • v OOP máme čtyři základní stavební prvky: objekt, rozhraní, kanál a zpráva

objekt - je autonomní identita, která vystavuje rozhraní
rozhraní - definuje způsob komunikace, jakým můžeme komunikovat s objektem pomocí kanálu
kanál - mezi sebou vytváří objekty na základě známého rozhraní, aby poslaly zprávu
zpráva - je komunikační prvek

  • díky těmto stavebním prvkům a jejich korektním použitím získáme tři základní koncepty OOP: zapouzředí, dědičnost a polymorfismus

zapouzdření - umožňuje skrýt interní stav objektu
dědičnost - umožňuje znovu používat již existující kód
polymorfismus - zavádí transparentnost, pokud spolu totiž komunikují dva objekty, znají pouze svoje rozhraní, aby bylo možné na jeho základě vytvořit komunikační kanál, ve skutečnosti ale objekt neví s kým komunikuje, ví pouze, že příjemce bude rozumět zprávě, kterou posílá

Programovací jazyky typu C++, Java nebo C# jsou založené na konceptu objektového programování, ale z praktických důvodů nabízejí řadu vlastností, které mají zjednodušit život. Díky tomu se OOP čím dál více vzdalují. Můžeš tedy říct, že programuješ v C# nebo v Javě, ale nemůžeš říct "rovná se OOP", protože to je na jazyku nezávislé. Podívej se na SmallTalk, asi budeš hodně vyjevený, jak málo je čistý objektový jazyk podobný těm výše uvedeným.

 
Nahoru Odpovědět  +1 18.4.2014 0:38
Avatar
anub.w
Člen
Avatar
anub.w:

objekt chápu zpráva to je jasný ale rozhraní s kanálem si neumím přirovnat k nějakému příkladu mám na mysli analogii jakoukoli.
kanál - mezi sebou vytváří objekty na základě známého rozhraní, aby poslaly zprávu
tomuto nerozumím zde se ztrácím nejlépe kdyby jsi to raději přirovnal k něčemu konkrétnímu například něco ze života či jak bych to řekl

Nahoru Odpovědět 18.4.2014 2:41
jakej jazyk?? No ten Kterej baví
Avatar
coells
Redaktor
Avatar
Odpovídá na anub.w
coells:

Pokud chceš příklad ze života, tak si představ automat na jízdenky.

Automat je složitý stroj, ale když si chceš koupit jízdenku, nezajímá Tě, co je uvnitř, je to black-box.
Automat definuje svoje rozhraní přes čelní panel s několika tlačítky, vstupem na peníze a výstupem na jízdenky.
Když chceš jízdenku, musíš znát jeho umístění (aka identifikaci instance), postavíš se před něj a připravíš se ho použít, což je vytvoření komunikačního kanálu na základě identifikace příjemce zprávy a odesílatele.
Vložení peněz a stisknutí volby je odeslání zprávy.

Když někdo vymění celý vnitřek automatu za jiný nebo novější typ, ale nechá čelní panel stejný (rozhraní), nemusíš se to vůbec dozvědět. Všechno, co potřebuješ vědět, je, jak ho použít díky jasně definovanému rozhraní - to se nazývá polymorfismus - a je to vůbec nejdůležitější stavební princip celého OOP.

Uvedu ještě jeden příklad - chceš zavolat záchranku.

  1. záchranná služba definuje svoje rozhraní - telefonní číslo 155
  2. vytočením čísla vytváříš kanál pro odeslání zprávy
  3. když se na druhé straně ozve hlas, netušíš s kým mluvíš - zapouzdření -, ale díky rozhraní víš, že dokáže zpracovat zprávu, kterou chceš poslat - polymorfismus
 
Nahoru Odpovědět  +3 18.4.2014 11:13
Avatar
anub.w
Člen
Avatar
anub.w:

mno to mě podrž asi tomu rozumím. Takže když jsem psal ten dokument tak jsem tam měl rozvést co je to polymorfismus a taky jsem tam mohl uvést jak spolu správce klient a host mluví (komunikují a přes jaké rozhraní)
teď když se zeptám hloupě když s Vámi(tebou) komunikuju tak vlastně vytvářím kanál, vím že dokážete zpracovat mé dotazy a to tak že tomu rozumím
.
vytočil jsem mj. kanál devbook.cz pak jsem vytočil diskusní fórum a pak vytvořil novou diskusi oop v C#. Jinak Devbook.cz je objekt který definuje své rozhraní přes toto fórum ale jen v tomto případě. tím že jsem založil novou diskusi jsem vytvořil kanál, tím že mohu s vámi toto rozebírat vytvářím zapouzdření, jenže připojit se k této diskusi může každý kdo zná rozhraní nebo ho vlastní. (správně?)

Nahoru Odpovědět 18.4.2014 12:08
jakej jazyk?? No ten Kterej baví
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 9 zpráv z 9.