Návrhové vzory v jazyce C?

Kit

Re:Návrhové vzory v jazyce C?
« Odpověď #15 kdy: 01. 06. 2018, 22:10:00 »
Jistě, v C nemáš objekty, ale můžeš si je do potřebné míry implementovat. Třídu můžeš reprezentovat strukturou, její metody funkcemi, které jako parametr berou adresu té struktury. Dědičnost znamená, že struktura potomka v sobě obsahuje strukturu rodiče. Polymorfismus lze implementovat prostřednictvím pointerů na funkce (callbacky).

Docela výstižné. Struktura by mohla obsahovat pointer na "třídu", která bude obsahovat pointery na "rodiče" a "metody".


backup

Re:Návrhové vzory v jazyce C?
« Odpověď #16 kdy: 02. 06. 2018, 12:05:22 »

Y,

Re:Návrhové vzory v jazyce C?
« Odpověď #17 kdy: 02. 06. 2018, 12:21:08 »
Vždycky jsem si myslel, že návrhové vzory jsou spíš způsob myšlení a způsob kompozice / dekompozice problému/funkcionality na mensi celky, aby výsledný systém byl udrzovatelny I déle než měsíc po vydání pre-alpha. Jistě, některé "vzory" jsou jednodušší v jednom jazyku, jiné v druhém, některé třeba v jistých jazycích nedávají smysl, ale to jsou podle mne jen detaily. Viz třeba zde zmíněné oop v C.

I/O

Re:Návrhové vzory v jazyce C?
« Odpověď #18 kdy: 02. 06. 2018, 13:18:33 »
Tak to bys řekl špatně. Mimochodem, ve staticky typovaných objektových jazycích dělám už hooodně dlouho a nejakých závažných neřešitelných rozporů jsem si nevšiml.
I to se některým lidem stává.

jouda

Re:Návrhové vzory v jazyce C?
« Odpověď #19 kdy: 02. 06. 2018, 13:36:22 »
Jistě, v C nemáš objekty, ale můžeš si je do potřebné míry implementovat.
Docela výstižné. Struktura by mohla obsahovat pointer na "třídu", která bude obsahovat pointery na "rodiče" a "metody".
To už mi připadá jako dost překombinované (spíš "jak do C vnutit OOP za každou cenu" versus "jak v C využít to "dobré" z OOP" - pokud bych chtěl psát čistě OOP, tak asi použiju nějaký OOP jazyk, stejně jako nebudu implementovat monádu v nasmu i když by to šlo ;-) ).

Ale dva základní běžné přístupy jsou asi nějaké základní struktura která obsahuje nějaký typový field a v kódu se pak předává pointer na tento typ, společný kód je normální a speciality pro "zděděné třídy" nějaký switch/if plus přetypování (případně i funkce když je toho víc) - dost často to na daný problém plně postačuje, i když je zřejmé že se míchá kód rodiče a potomka.

A pak druhá možnost jak už bylo řečeno, do základní třídy prostě přihodit pointer na funkci na zpracování požadavku a máme klasickou virtuální metodu, když je obsluha rozdílná tak je to určitě přehlednější, ale když jde jen o jeden řádek navíc proti rodiči, tak je IMHO přehlednější první způsob.

Oboje může být dost přehledné i bezpečné, ale taky se dá krásně zprasit, jako v každém jazyce ;-)


Kit

Re:Návrhové vzory v jazyce C?
« Odpověď #20 kdy: 02. 06. 2018, 13:56:13 »
Vždycky jsem si myslel, že návrhové vzory jsou spíš způsob myšlení a způsob kompozice / dekompozice problému/funkcionality na mensi celky, aby výsledný systém byl udrzovatelny I déle než měsíc po vydání pre-alpha. Jistě, některé "vzory" jsou jednodušší v jednom jazyku, jiné v druhém, některé třeba v jistých jazycích nedávají smysl, ale to jsou podle mne jen detaily. Viz třeba zde zmíněné oop v C.

To stále platí. Vzory slouží i pro pojmenování abstrakcí. Pokud jinému vývojáři řeknu, že to logování má udělat přes vzor Observer, tak by mi měl rozumět bez ohledu na jazyk, ve kterém programuje.

L.

Re:Návrhové vzory v jazyce C?
« Odpověď #21 kdy: 02. 06. 2018, 14:02:03 »
Tak to bys řekl špatně. Mimochodem, ve staticky typovaných objektových jazycích dělám už hooodně dlouho a nejakých závažných neřešitelných rozporů jsem si nevšiml.
I to se některým lidem stává.
Spíš se některým stává, že svoji neschopnost a hloupost považují za neřešitelný problém něčeho jiného.

I/O

Re:Návrhové vzory v jazyce C?
« Odpověď #22 kdy: 02. 06. 2018, 15:12:13 »
Tak to bys řekl špatně. Mimochodem, ve staticky typovaných objektových jazycích dělám už hooodně dlouho a nejakých závažných neřešitelných rozporů jsem si nevšiml.
I to se některým lidem stává.
Spíš se některým stává, že svoji neschopnost a hloupost považují za neřešitelný problém něčeho jiného.
A. Kay ke staticky typovaným OO jazykům: I’m not against types, but I don’t know of any type systems that aren’t a complete pain, so I still like dynamic typing.

Re:Návrhové vzory v jazyce C?
« Odpověď #23 kdy: 02. 06. 2018, 15:17:43 »
A?

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Návrhové vzory v jazyce C?
« Odpověď #24 kdy: 02. 06. 2018, 15:45:28 »
Tak to bys řekl špatně. Mimochodem, ve staticky typovaných objektových jazycích dělám už hooodně dlouho a nejakých závažných neřešitelných rozporů jsem si nevšiml.

I/O psal, že problémy jsou řešitelné návrhovými vzory. Jestli používáš návrhové vzory, tak potvrzuješ co psal I/O.

L.

Re:Návrhové vzory v jazyce C?
« Odpověď #25 kdy: 02. 06. 2018, 17:49:56 »
I/O psal, že problémy jsou řešitelné návrhovými vzory.

To právě nepsal. Přečti si ten jeho příspěvek pořádně. I když obojí tvrzení je pitomost.

nm

Re:Návrhové vzory v jazyce C?
« Odpověď #26 kdy: 03. 06. 2018, 11:56:43 »
Návrhové vzory bych tedy nechal spíše pro OOP jazyky. V jazyce C by mě spíše tedy zajímali nikoliv návrhové vzory, ale spíše určité už vymyšlené a běžně používané konstrukce. Existuje tedy něco takového? Už zde byly zmiňované jakési "idiomy" nebo patterny. Takže existují nějaké zažité konstrukce, jak řešit jisté problémy?

Re:Návrhové vzory v jazyce C?
« Odpověď #27 kdy: 03. 06. 2018, 13:41:57 »
Návrhové vzory bych tedy nechal spíše pro OOP jazyky. V jazyce C by mě spíše tedy zajímali nikoliv návrhové vzory, ale spíše určité už vymyšlené a běžně používané konstrukce. Existuje tedy něco takového? Už zde byly zmiňované jakési "idiomy" nebo patterny. Takže existují nějaké zažité konstrukce, jak řešit jisté problémy?

https://www.root.cz/knihy/pruvodce-labyrintem-algoritmu/
https://algoritmy.net/
https://www.root.cz/knihy/object-oriented-programming-in-ansi-c/
https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books.md

Google dnes nefunguje?