[ Justice4All @ 24.07.2017. 21:10 ] @
Pozdrav svima, nadam se da će neko ukapirati šta hoću da postignem ;)
Imam (prilično obiman) program koji koristi klasu cArtikli u kojoj su svi relevantni podaci o artiklima: naziv, j.mere, tarifa itd... Uz nju ide i forma za unos/ispravku podataka, a koristim je i za pretragu, kada treba pronaći šifru artikla. Znači, poziva se na MNOOOGO mesta u programu. Sada imam komintenta koji radi sa limovima, i njega zanimaju potpuno drugi podaci: debljina, širina, kvalitet... Da sve to strpam u jednu klasu deluje mi glupo, a ne znam da definišem šta mi tačno treba od OOP komponenti. Znači, da imam dve različite forme sa različitim podacima a da se kasnije u programu ništa ne menja (kad kažem cArtikli myArtikal=new cArtikli() da otvori onaj koji mi treba, recimo na osnovu neke globalne promenljive koja bi se učitavala na početku programa. Ili da napravim dva DLLa pa da linkujem po potrebi??
Ovo mi deluje kao školski primer OOP-a ali stvarno ne mogu da definišem šta da iskoristim!
P.S. u međuvremenu mi se javio i lik koji prodaje patike... njega zanima model, boja, brojevi... Znači...bar tri modela klase...
[ dejanet @ 24.07.2017. 22:46 ] @
Ako razumem treba ti novi property u cArtikli List<Osobina> Osobine (uzmi nazive uslovno)
Takodje klasa Osobina sa properties npr.: Naziv, Vrednost.
Property Vrednost moze da ti bude string, pa da cast-ujes u zavisnosti od slucaja. U tom smislu mozes da dodas u klasu Osobina property Tip(int, decimal, string...), koji ce da definise type vrednosti.
[ Predrag Supurovic @ 24.07.2017. 23:29 ] @
Citat:
Justice4All:
Ovo mi deluje kao školski primer OOP-a ali stvarno ne mogu da definišem šta da iskoristim!


Nažalost nije to školski primer već jedan od kompleksnijih problema.

Ovo kako je dejanet predložio je jednostavno rešenje ali ograničeno i primenljivo su nekim jedsnotavnijim bazama.

Problemje što jedna osobina može biti univerzalna tako da se može odnositi na sve proizvode (recimo, cena, masa, u neku ruku i dimenzije) ali može biti i specifična za jedan proizvod ili za grupu proizvoda (npr. muški/ženski) ili može imati različite skupove dozvoljenih vrenosti za različite proizvode ili različite grupe proizvoda (npr. veličina, boja, dezen, materijal).

Ti si za sada naleteo samo na limove i patike ali takvih "specifičnosti" ima u stvari mnogo tako da je neophodno napraviti sistem koji omogućava da se svi podaci unesu dinamički, po istom šablonu ali tako da se može raditi prikaz i pretaga po tim karakteristikama.

Uzmi za primer patike. Naveso i soboine boja i broj (veličina) a to nisu osobine specifične za patike već za svu obuću. I odeća ima iste osobine ali moguće vrednosti su mogu biti sasvim drugačije. Kod veličina je to očigledno - obuća ima brojeve vezane za dužinu stopala a odeća ili borjeva ili slovne oznake veličina.

Kad su boje u pitanju tu tek postaje komplikovano: neki kupac će recimo hteti da kupi sve plavo: i patike, i čarape i šorc i majicu, možda čak i kačket. To sugeriše da je boja zajednička za mnogo artikala. Međutim, boja je vrlo nezogna osobina koja za neke artike može da bude i veoma specifična - prosto nekia rtikli pored univerzalnih boja mogu iamti i paletu nikih veoam specifičnih boja koej se ne pojavljuju kod drugih artikala.

Da stvar postane složenija, ne moraju samo osobine da budu specifične za neki nivo artikala, već to mogu biti grupe osobina. na priemr, sva obuića iam neke grupe osobina zajedničke ali neke vrste obuiče imaj neke svoje kaakterističen osobine (ili grupe osobina).

Gde je tu rešenje? U stvari u tome do kog nivoa komleksnosti moraš da ideš. Kada to odlučiš onda ćeš znati kako i da rešim model podataka. Nažalsot, kakvu kod granicu kompleksnosti da postaviš, Marfi kaže da će ti se pojaviti neki proizvodi koji traže veći nivo kompleksnosti.
[ dejanet @ 25.07.2017. 00:39 ] @
@Predrag Supurovic

To cemu ti pricas se resava klasifikacijom artikala/proizvoda. Klasifikacija je tree/drvo i koliko se secam u programima za robno k. nesretno reseno kao grupe i podgrupe.
Klasifikacija implicira i oznacavanje artikala.
[ Predrag Supurovic @ 25.07.2017. 01:02 ] @
Ne ja sam pricao o osobinama artikala. Klasifikacija je drugo, mada osobine mogu biti vezane i za klase.
[ Branimir Maksimovic @ 25.07.2017. 02:54 ] @
Napravi interfejs za patike, pa za lim pa eventualno bazni za njih sta tu ima zajednicko. Opalis heterogenu listu pa ako hoces patike samo filtriras na osnovu objekata koji implementiraju patike itd....
[ ravni @ 31.07.2017. 08:55 ] @
@Branimir
To je jedna strana medalje - treba razmisljati i kako ce podaci biti snimljeni u bazu.