Ahojte
chcem si napisat jednu "mensiu" aplikaciu skor na precvicenie. Mala a bude komunikovat s DB(MS SQL). Tu aplikacnu resp funkcnu cast aplikacie by som mal zvladnut, no mam problem s navrhom. Niekde som sa docital, ze spravna aplikacia v OOP by mala byt viacvrstvova(datova, prezencna ... ). Co presne to znamena a ako to realizovat ? Mam navrhnut jednu samostatnu triedu, ktora sa bude volat napr "databaza" a bude sluzit na ukladanie dat isteho objektu ? A co graficka cast ? (bude to vo WinForms). Dik
Fórum › .NET
Navrh aplikacie
Necital si o MVC modeli? Pretoze OOP s tym vela spolocneho nema (aj ked vies OOP vyzit v MVC - zalezi od charakteru ulohy).
Spravidla pre mini aplikacie by si mal oddelit graficke rozhranie a business logiku. Business logika moze byt zapuzdrena v DB / odelena / alebo zdielana. Uplne postaci ak teda oddelis logiku - s cim aj tak vacsina programatorov ma problem, vyextrahovat logiku.
Ak zmyslom aplikacie je napr. komunikovat s nejakym serverom, treba oddelit (alebo zapuzdrit) komunikacnu logiku. Potom vytvorit vseobence rozhranie, co moze byt trieda, ale aj sada statickych metod. Tie preberu udaje z aplikacie a transformuju ich tak, aby sluzba vedela komunikovat so serverom. Vyhodou takehoto pristupu je, ze ak zmenis napr. server (providera / sluzbu / etc.) tak upravujes vzdy len jednu vrstvu. Interface by mal ostat nemenny, cim minimalizujes rizika dopadu takejto zmeny len na komunikaciu (tester uz nemusi znova testovat GUI).
Ak mas takto poodelovanu logiku, vies potom pisat unit testy aj na komplexnejsie ulohy (bez toho aby si vymyslal kde-ake somariny s klikanim mysky po screene). Taktiez takyto kod ak je dobre napisany, je v podstate okamzite znovapouzitelny v inom systeme (prave extrakcia rozhrania a logiky je kumst), cim mozes setrit cas a prostriedky pri vyvoji obdobneho systemu (vyuzivajuci len jednu cast).
V pripade databazy je zasa jednoduchsie migrovat na iny system - vzdy prepises len "ovladac", aplikacie by sa to mohlo dotknut len minimalne.
Ak mas teda logiku rozlezenu po celej aplikacii (GUI / kod / DB) je potom zlozitejsie takyto system rozsirovat a pracovat v teame - pretoze je tazke odhadnut dopad akejkolvek zmeny pre cloveka, ktory danu cast nenavrhoval.
To Fazula : dik moc. Mrkol som sa na ten priklad, ale jedna vec mi nie je jasna. Preco sa v triede BOcustomer metody add a update ked sa nachadzaju aj v triede DAcustomer ? Teda, chapem, ze to prinasa iste vyhody a pouzijem to, ale je to nevyhnutne ?
Uz mi to trklo. Ja vlastne budem vsetko ukladat cez instanciu BOcustomer. Ja som to doteraz robil zle a to tak, ze som vsetko ukladal pomocou triedy s metodami Add, Insert, Delete ... ktorych parametrom bol objekt ktory som chcel ulozit.
este ma zaujima. Pokial teda oddelim datovu vrstvu a data z nej chcem pouzivat napr DataGrodView. Je v poriadku vytvorit v datovej vrstve metodu ktora priamo pracuje s DGV a DGV jej potom predat len ako parameter ? Nenapada ma ako inak to spravit ...
Teda okrem toho, ze by ta metoda vracala DataSet ktory by som v GUI spojil s DGW.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Modulárny návrh aplikácie/zásuvné moduly — založil m->29
C++ a graficke aplikacie — založil Tom@sQo
Ikony aplikácie — založil Trebor
FB prihlasovanie do aplikacie — založil nord
Zmena štýlu aplikácie... — založil Mega.Lama
Moderátoři diskuze