Čada: Objektové programování

Mr. Pointless

Re:Čada: Objektové programování
« Odpověď #45 kdy: 18. 06. 2015, 18:24:00 »
Thinking in C++ 2nd Edition by Bruce Eckel

Free Electronic Book
Volume 1 & Volume 2

http://mindview.net/Books/TICPP/ThinkingInCPP2e.html


SB

Re:Čada: Objektové programování
« Odpověď #46 kdy: 19. 06. 2015, 07:41:34 »
Tak ono už jenom zapouzdření znamená mimořádný nárůst izolace částí modelu. Dá se využít někde mimo objektový model?
:o Třeba tak nějak úplně všude? Nesetkal jsem se s jazykem, ve kterém by se nedaly detaily schovat za nějaké rozhraní.

Rozhraní má i objekt. Rozhraní čeho máte na mysli? Jak je realizována zvenku nepřístupná doména? Knihovnou? Nějak jinak?

SB

Re:Čada: Objektové programování
« Odpověď #47 kdy: 19. 06. 2015, 07:44:47 »
Jestli chcete donekonečna obhajovat hledání metod podle názvu za běhu, tak s Váma končím, tato myšlenka je zcela pomýlená. Na odůvodněné případy stačí reflexe.

„Reflexi“ hybridních jazyků jsme už probrali. Takže jsme už probrali asi všechno, nemusíme dál pokračovat.

Kit

Re:Čada: Objektové programování
« Odpověď #48 kdy: 19. 06. 2015, 09:07:39 »
Pozor, mezi ZÁKLADNÍ vlastnosti určitě patří i to zapouzdření, je to nutným požadavkem pro zajištění konzistence stavů a zabránění objektovým orgiím.

Kéž by vývojáři takové zapouzdření dělali. Místo toho tam nacpou hromady getterů a setterů...

l

Re:Čada: Objektové programování
« Odpověď #49 kdy: 19. 06. 2015, 09:27:25 »
Kéž by vývojáři takové zapouzdření dělali. Místo toho tam nacpou hromady getterů a setterů...

Getter a Setter je zapouzdření. G/S jsou normální metody jako každé jiné a můžeš si tam napsat cokoliv jako do každé jiné metody. Není pravda že Setter je povinně this->m_variable=new_value Pokud si to takhle myslíš, žiješ v hlubokém omylu. Je pravda, že spousta programátorů v tomto hlubokém omylu žije.


Kit

Re:Čada: Objektové programování
« Odpověď #50 kdy: 19. 06. 2015, 09:39:37 »
Kéž by vývojáři takové zapouzdření dělali. Místo toho tam nacpou hromady getterů a setterů...

Getter a Setter je zapouzdření. G/S jsou normální metody jako každé jiné a můžeš si tam napsat cokoliv jako do každé jiné metody. Není pravda že Setter je povinně this->m_variable=new_value Pokud si to takhle myslíš, žiješ v hlubokém omylu. Je pravda, že spousta programátorů v tomto hlubokém omylu žije.

Právěže v tom omylu nežiji a pokud sis všiml, tak mám proti těmto nešvarům dost vyhraněný postoj. Osobně zapouzdřuji bez getterů a setterů. Nepotřebuji je, protože práci s objektem implementuji uvnitř objektu a případné závislosti injektuji.

Re:Čada: Objektové programování
« Odpověď #51 kdy: 19. 06. 2015, 09:58:19 »
Kdo používá (g/s)etry je zrádce rasy a bude exkomunikován.

l

Re:Čada: Objektové programování
« Odpověď #52 kdy: 19. 06. 2015, 10:17:25 »

Postoj můžeš mít jaký chceš, G/S jsou zapouzdření.

Pro změnu objektu buď zavoláš nějakou metodu a je jedno jestli je si ji pojmenuješ SetX nebo MoveHorizontal, nebo přestoupíš na víru immutable a při jakékoliv změně vytvoříš objekt nový a nové vlastnosti nastavíš v konstruktoru. Jiné možnosti moc nejsou.

Re:Čada: Objektové programování
« Odpověď #53 kdy: 19. 06. 2015, 10:28:21 »
Tak, tak. G/S jsou zapouzdreni. Leckdy to neni dobry navrh, ale nikde neni psano, ze zapouzdreni + polymorfismus samo o sobe k dobremu navrhu staci...

JSH

Re:Čada: Objektové programování
« Odpověď #54 kdy: 19. 06. 2015, 10:38:41 »
Tak ono už jenom zapouzdření znamená mimořádný nárůst izolace částí modelu. Dá se využít někde mimo objektový model?
:o Třeba tak nějak úplně všude? Nesetkal jsem se s jazykem, ve kterém by se nedaly detaily schovat za nějaké rozhraní.

Rozhraní má i objekt. Rozhraní čeho máte na mysli? Jak je realizována zvenku nepřístupná doména? Knihovnou? Nějak jinak?
Sorry, nechápu dotaz. Ten původní jsem pochopil jako "Dá se zapouzdření využít někde mimo objektový model?" Vzhledem k tomu, že zapouzdření není nic jiného než skrytí nepodstatných detailů, tak se využívá v čistých i nečistých, objektových i neobjektových jazycích.
A na mysli mám rozhraní čehokoliv.

rootacek

  • *
  • 47
  • Linux je dobrá volba, Windows je cesta do pekla!
    • Zobrazit profil
    • E-mail
Re:Čada: Objektové programování
« Odpověď #55 kdy: 22. 06. 2015, 17:40:45 »
Jsem rád, že tady jsou lidi s tímto názorem.Nejlepší je, že spoléhajíci na OOP, ale bez procedurálu či paradigmat by to neexistovalo...
Ja bych řekl, že oop, je líné programování.A o dost jednodušší a v podstatě z programátora se stává ovce, která vlastně programovat neumí umí jen
Kód: [Vybrat]
$this->result(); např možná :) .

Přibližte mi, co je na Smalltalku procedurálního, to mě hodně zajímá...
Jaká paradigmata máte na mysli?
OOP je v první řadě systém organizace modelu a jeho výpočtu, který má zjednodušit vedení velkých projektů. To samo o sobě neznamená, že by vývojář nemusel přemýšlet. Důkazem je mi právě ona praxe, kdy drtivá většina vývojářů není schopna vytvořit objektový model dané domény. Takže ono to pro úplné blbce asi nebude, spíš se potkávám s těmi nasranými, že jim to nejde.

Myslel jsem to v obecné rovině. Ne ve Smalltalku. Neříkám, pro blbce, ale asi logicky, je něco jiného programovat v nižším jazyce, než ve vyšším.Kde mám většinu nízkoúrovňových věcí hotovou. A hezky si dělám ten svůj estetický přehledný kód se syntaktickým cukrem.

SB

Re:Čada: Objektové programování
« Odpověď #56 kdy: 23. 06. 2015, 07:44:45 »
Tak ono už jenom zapouzdření znamená mimořádný nárůst izolace částí modelu. Dá se využít někde mimo objektový model?
:o Třeba tak nějak úplně všude? Nesetkal jsem se s jazykem, ve kterém by se nedaly detaily schovat za nějaké rozhraní.

Rozhraní má i objekt. Rozhraní čeho máte na mysli? Jak je realizována zvenku nepřístupná doména? Knihovnou? Nějak jinak?
Sorry, nechápu dotaz. Ten původní jsem pochopil jako "Dá se zapouzdření využít někde mimo objektový model?" Vzhledem k tomu, že zapouzdření není nic jiného než skrytí nepodstatných detailů, tak se využívá v čistých i nečistých, objektových i neobjektových jazycích.
A na mysli mám rozhraní čehokoliv.

Já zase nechápu odpověď. Rozhraní je jen předpis funkcionality systému, který popisuje, kterou funkcionalitu systém určitě implementuje, ale neznamená, že neimplementuje nic dalšího, takže nijak neomezuje využití jeho dalších funkcionalit, např. přes další rozhraní či např. objektově posláním zprávy (u hybridních jazyků třeba před „posláním“ (čti voláním) přetřídovat (čti přetypovat)). Takže rozhraní mechanismem zapouzdření není.
Uveďte jiný příklad implementace zapouzdření.

SB

Re:Čada: Objektové programování
« Odpověď #57 kdy: 23. 06. 2015, 07:59:26 »
Jsem rád, že tady jsou lidi s tímto názorem.Nejlepší je, že spoléhajíci na OOP, ale bez procedurálu či paradigmat by to neexistovalo...
Ja bych řekl, že oop, je líné programování.A o dost jednodušší a v podstatě z programátora se stává ovce, která vlastně programovat neumí umí jen
Kód: [Vybrat]
$this->result(); např možná :) .

Přibližte mi, co je na Smalltalku procedurálního, to mě hodně zajímá...
Jaká paradigmata máte na mysli?
OOP je v první řadě systém organizace modelu a jeho výpočtu, který má zjednodušit vedení velkých projektů. To samo o sobě neznamená, že by vývojář nemusel přemýšlet. Důkazem je mi právě ona praxe, kdy drtivá většina vývojářů není schopna vytvořit objektový model dané domény. Takže ono to pro úplné blbce asi nebude, spíš se potkávám s těmi nasranými, že jim to nejde.

Myslel jsem to v obecné rovině. Ne ve Smalltalku. Neříkám, pro blbce, ale asi logicky, je něco jiného programovat v nižším jazyce, než ve vyšším.Kde mám většinu nízkoúrovňových věcí hotovou. A hezky si dělám ten svůj estetický přehledný kód se syntaktickým cukrem.

Smalltalk jsem uvedl schválně jako jazyk, který se docela dobře obešel bez imperativního paradigmatu.
Vysokoúrovňové programování je o tom, že máte 3 prde_le práce se sestavením modelu a nemáte čas se srát (a pokaždé znovu) s hovadinami, jak projít seznam ap.

yorik

Re:Čada: Objektové programování
« Odpověď #58 kdy: 23. 06. 2015, 09:51:43 »
kniha OOP, pre uplnych zaciatocnikov:
OOP - Naučte se myslet a programovat objektově, Rudolf Pecinovský

http://knihy.cpress.cz/oop.html

JSH

Re:Čada: Objektové programování
« Odpověď #59 kdy: 23. 06. 2015, 10:40:33 »
Já zase nechápu odpověď. Rozhraní je jen předpis funkcionality systému, který popisuje, kterou funkcionalitu systém určitě implementuje, ale neznamená, že neimplementuje nic dalšího, takže nijak neomezuje využití jeho dalších funkcionalit, např. přes další rozhraní či např. objektově posláním zprávy (u hybridních jazyků třeba před „posláním“ (čti voláním) přetřídovat (čti přetypovat)). Takže rozhraní mechanismem zapouzdření není.
Uveďte jiný příklad implementace zapouzdření.
Rozhraní taky není mechanismus zapouzdření. Rozhraní je popis toho, co je přes zapouzdření vidět.

Příklad zapouzdření by bylo třeba několik exportovaných funkcí a data schovaná za nějaký abstraktní handle (void ptr, int). Tady to zapouzdření nedělají objekty, ale moduly.