Diskuze: Jak řešit složité objekty

C# .NET .NET (C# a Visual Basic) Jak řešit složité objekty American English version English version

Avatar
Petr Žlebek
Neregistrovaný
Avatar
Petr Žlebek:

V našem informačním systému máme několik modulů (Obecný, Ekonomika, Mzdy, Personalistika...). Obecný modul je využívaný všemi ostatními. Nejsou vazby mezi ostatními moduly (Ekonomika nereferencuje Mzdy). S několika třídami jsou ale problémy co se týká zakládání.
Řekněme, že máme třídu Osoba, která patří do obecného modulu jelikož je využívána ve všech modulech. Třídu Osoba téměř všechny moduly potřebují o něco svého specifického rozšířit. Mzdy o plat osoby, Majetek o seznam půjčeného majetku...
Jelikož například mzdy jsou agendou modulu mezd, tak rozšíření osoby o mzdu patří do modulu Mezd.
Existuje pak formulář, ve kterém se editují osoby a to přes všechny pohledy (obecný, ekonomický, personální...)
Pro to abych mohl takhle složitou třídu osoba z mnoha specifickými rozšířeními editovat mám několik možností.

  1. Vytvořit speciální modul, něco jako Sdružující modul. Tento modul bude všechny ostatní moduly referencovat a tak můžu vytvořit třídu MegaOsoba, která bude mít všechny vazby zachycené.
  2. Formulář pro editaci osob vytvořit dynamicky, tedy že seskládá jednotlivé editační formuláře z jednotlivých modulů (obecný, mzdy, majetek....) a pak nějak transakčně bude jednotlivé rozšíření ukládat. Napřed obecné informace, pak informace o mzdě, majetku...

Vidíte ještě nějaké jiné řešení?

 
Odpovědět 9.12.2013 9:56
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Žlebek
David Čápka:

Mně připadá divné, že mzdy rozšiřují osobu. Spíše bych si udělal objekt mzda a ten by měl uložené ke které osobě se váže.

Nahoru Odpovědět 9.12.2013 10:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Žlebek
Neregistrovaný
Avatar
Petr Žlebek:

Děkuju za reakci.
Popsal jsem to zjednodušeně ale tak to v našem IS je.
Často existuje dvojí pohled na některé entity. Například na vztah, že Osoba má půjčený nějaký matek se můžete dívat ze dvou pohledů. Jeden je právě, že se najdete osobu a s ní se zobrazí i evidenci půjčeného majetku. Druhý je pak nějaký formulář Majetku, kde se eviduje mj. co se které osobě půjčilo.
Co se týká vámi zmiňované mzdy, tak jsou u osoby zobrazovány evidenční listy důchodového pojištění, atd.

 
Nahoru Odpovědět 9.12.2013 10:57
Avatar
hanse
Člen
Avatar
Odpovídá na Petr Žlebek
hanse:

V tom by neměl být problém - taková tabulka (v db) zapůjčení může mít více cizích klíčů k osobě (na 1 item v db) 1 Sloupec kdo půjčil (Veritel_OsobaID) a 1 sloupec komu půjčil (Dluznik_OsobaID) - při dobrém datovém návrhu je pak poměrně jednoduché vytáhnout z db potřebné údaje...

 
Nahoru Odpovědět 9.12.2013 21:32
Avatar
Petr Žlebek
Neregistrovaný
Avatar
Petr Žlebek:

Na úrovni databáze jsou reference již vyřešené pomocí klíčů. Pracuji nad již navrženou databází a snažím se existující Windows aplikaci vytvořit v .NETu objektově. Bojuju právě s objektovým návrhem, konkrétně jak zachytit takové komplexní vazby mezi objekty v různých modulech.

 
Nahoru Odpovědět 10.12.2013 9:04
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Žlebek
David Čápka:

"snažím se existující Windows aplikaci vytvořit v .NETu objektově" - Buď použij Entity Framework nebo to nedělej objektově vůbec. Něco mezi nemá smysl.

Nahoru Odpovědět 10.12.2013 10:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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 6 zpráv z 6.