Oddělení aplikační a prezenční logiky (v C++) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Oddělení aplikační a prezenční logiky (v C++) – C / C++ – Fórum – Programujte.comOddělení aplikační a prezenční logiky (v C++) – C / C++ – Fórum – Programujte.com

 

bukaj0
Věrný člen
30. 6. 2008   #1
-
0
-

Hledal jsem různě po internetu, ale stále jsem nacházel informace, které jsem nepotřeboval. Proto se teď obracím sem, protože zapravé, jak se říká, víc hlav víc ví, zadruhé toto již někdo mohl hledat a úspěšně. A sice toto vlákno zakládám v sekci C/C++, ale pokud byste věděli o něčem, kde jsou příklady v jiném jazyku, je mi to docela jedno -- jsem dosti variabilní v tomto případě. A teď již, o co se to vlastně jedná? Rozhodl jsem se udělat jednu desktopovou aplikaci, tudíž s GUI. Doteď jsem žádnou větší věc tohoto typu nedělal (maximálně pár různých hello worldů atp.), a tak jsem začal hledat různé informace. Jediné, co se mi ovšem dostalo, byl opět hello world na sto a jeden způsob. Párkrát se tam také vyskytly články upozorňující na důsledné oddělení aplikační a prezenční logiky, ve kterých se ovšem nacházelo pouze, že se to tak musí dělat, ale nějaké "how-to" a/nebo ukázky postupů nikde. Dále jsem samozřejmě narazil na hromadu referenčních příruček k různým toolkitům apod., ale to pořád není, co bych potřeboval.

V knize Rapid GUI Programming with Python and Qt jsou příklady, které bych označil krásnými ukázkami míchání logik. Např. máme třídu dědící z QMainWindow (widget představující hlavní okno), která v konstruktoru obstará inicializace všech potřebných widgetů a jejich spojení s vlastními metodami, které obstarávají kupř. načítání a ukládání souboru z argumentů příkazové řádky, načítání a ukládání seznamu naposledy použitých soubor atp. Tohle se mi rozhodně nezdá. Ale chápu, že v této knize jde hlavně o vysvětlení použití Qt.

TO HLAVNÍ:

Neznáte nějaký článek, seriál, knihu či podobně, který/á by se zabýval(a) právě oddělením logik (nejlépe s nějakým příkladem (nejlépe v C++ :)))? Nebo něco, kde by se probíralo psaní aplikací pod různými toolkity (protože tam by toto oddělení mělo být samozřejmostí)? Či něco podobného spíše teoretického zaměření (nikoli referenční příručku) -- příklady aplikace MVC pattern --, kde by se o tomto psalo či mluvilo?

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
DavMar0
Newbie
30. 6. 2008   #2
-
0
-

No, v tom asi neporadím, jelikož v práci pracují s J2EE a jako MVC používám Jakarta Struts ( Pro "xicht" jsp) ...

Nahlásit jako SPAM
IP: 89.102.248.–
"RGF2bWFyIA=="
survik1
~ Moderátor
0
Posthunter
30. 6. 2008   #3
-
0
-

To DavMar : To jsi nemusel odpovídat

Nahlásit jako SPAM
IP: 89.102.163.–
Život je jen hra, která se nedá vyhrát.
Jura
~ Anonymní uživatel
637 příspěvků
30. 6. 2008   #4
-
0
-

Zdravím,

no, tak já pro změnu v práci dělám s MFC, což není uplně přesně MVC architektura, ale jen framewok používaící Document-View architekturu. Nciméně kdysi dávno jsem taky hledal něco obecného, bohužel nic příliš dobrého jsem nenašel. Nějakou zmíňku najdeš třeba http://www.adobe.com/devnet/actionscript/articles/ora_as3_design_patterns.html - dole je odkaz na kapitolu knížky, která se tak trochu zabývá i MVC a dále další zdroj(nevím jak seš na tom s C++ a WinAPI, ale to by nemělo vadit) je např. http://relisoft.com/win32/generic.html, moc v tom nenajdeš, ale princip se dá pochytit. Pokud bys taky něco našel, tak dej vědět.

Nahlásit jako SPAM
IP: 85.207.192.–
Quiark0
Věrný člen
30. 6. 2008   #5
-
0
-

Tak já bych doporučil přelouskat nějaký ten tutorial k MVC, většina jich bude asi pro webové stránky.

Až to budeš programovat, možná pomůže představit si to, že ke stejné funkcionalitě potom budeš ještě vedle GUI dělat rozhraní přes příkazovou řádku a přes web. S tímhle stále na mysli se ti to myslím podaří oddělit docela dobře :)

Nahlásit jako SPAM
IP: 194.212.43.–
DavMar0
Newbie
30. 6. 2008   #6
-
0
-

To survik1 : Nepsal přímo, že chce C++, tak kdyby náhodou ...

Nahlásit jako SPAM
IP: 89.102.248.–
"RGF2bWFyIA=="
enzoe
~ Anonymní uživatel
5 příspěvků
30. 6. 2008   #7
-
0
-

Bohužel přímo odkaz na nějaký tutorial nemám, ale v zásadě nejde o nic složitého. Tomu na co se ptáš se říká vrstvená architektura (multitier architecture). Tento přístup je založen na objektovém přístupu k programování.

Představ si, že chceš vytvořit program například pro analýzu nějakých logovacích XML souborů. První věc, kterou tento program musí zvládat je samotné čtení potřebných dat ze souborů. Proto vytvoříš třídu, která bude obstarávat všechno potřebné pro načtení dat s metodou například nactiData(), která data předá jako návratovou hodnotu. Potom bude určitě potřeba data nějak zpracovat, takže vytvoříš další třídu (říkejme jí třeba aplikační), která místo aby složitě načítala data, prostě vytvoří instanci třídy kterou sis připravil v předchozím kroku a zavolá její metodu nactiData(). Data jsou načtená velice jednoduše jedním příkazem, takže zbytek kódu se může zabývat jen jejich zpracováním, například metodou zpracujData(), která jako navratovou hodnotu bude předávat výsledek tohoto zpracování. No a na závěr je třeba samotné výsledky nějak prezentovat, napřklad formou pěkného grafu. Proto vytvoříš poslední třetí třídu (prezentační), která zajistí vytvoření okna a vykreslení pěkného grafu. Samozřejmě, aby bylo možné vykreslit graf, musíš mít k dispozici zpracovaná data. Proto vytvoříš instanci aplikační třídy a zavoláš metodu zpracujData(), tedy jediným příkazem provedeš načtení i zpracování dat. Dále už se staráš jen o to aby ten tvůj graf byl co nejhezčí a otázka nějakého zpracování souborů tě netrápí, protože to za tebe udělají nižší vrstvy programu.

A na závěr dvě velice důležité zásady. Nižší vrstva nikdy nesmí používat žádné metody vrstev vyšších. Další zásadou je opravdu striktní oddělení vrstev, tedy v každé vrstvě se vyskytuje pouze kód souvysející s jejím úkolem a účelem.

Doufám, že mi podařilo ti tuto problematiku alespoň částečně přiblížit. Víc se dozvíš například na wikipedii http://en.wikipedia.org/wiki/Multitier_architecture

Nahlásit jako SPAM
IP: 88.100.183.–
bukaj0
Věrný člen
2. 7. 2008   #8
-
0
-

Díky všem za odkazy a rady. Pokud by ještě kdokoli cokoli našel, jeho příspěvěk je samozřejmě vítán.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Opozdilec
~ Anonymní uživatel
2 příspěvky
7. 7. 2008   #9
-
0
-

To bukaj : Vím, že si nechtěl "referenční příručky", ale když už si zmínil to Qt, tak přímo na na jejich stránkách je taky popis MVC (viz doc.trolltech.com/4.4/model-view-programming.html), mě se na tom právě líbilo, že je to skutečně v kontextu (v realitě).

Nahlásit jako SPAM
IP: 85.70.255.–
bukaj0
Věrný člen
7. 7. 2008   #10
-
0
-

Opozdilec
Díky za odkaz. Ale tomuhle bych se přesně chtěl vyhnout -- vázání se k službám jednoho toolkitu.

Vím, že si můžete říct, že jsem mimo, ale toolkit bych chtěl využívat pouze a jen pro prezentaci, do modelu by se neměl míchat.

Nahlásit jako SPAM
IP: 85.70.13.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
Opozdilec
~ Anonymní uživatel
2 příspěvky
7. 7. 2008   #11
-
0
-

To bukaj : Jak chceš, já jsem to spíš poslal jako "inspirační" příklad, resp. konkrétní využití něčeho abstraktního

Nahlásit jako SPAM
IP: 85.70.255.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

Podobná vlákna

Aplikační domena — založil asd

Aplikační server - nastaveni URL — založil NotBeginner

Oddělení konce textu — založil dragon124

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý