Definisati osnovnu klasu Artikal sa privatnim atributima:
nabavna cena, nabavljena koliina proizvoa-naziv proizvoaa prodata koliina i metod IzracunajProdajnuCenu sa argumentom prodata koliina koji e se definisati u izvedenim klasama. Definisati izvedene klase koja nasleuju klasu Artikal i u kojima se koristei definisan metod Izraunaj!rodajnu"enu odreuje prodajna ena : #. Secer - nabavna ena se uveava za 2$%. 2. Cokolada - nabavna ena se uvea za 2$% ukoliko je prodata koliina manja od #$$& u suprotnom se uveava za '$%. '. Kafa - nabavna ena se uveava za #(% ukoliko je prodata koliina manja od ($$& u suprotnom se uveava za 2(%. ) glavnoj funkiji uneti za svaki artikal podatke o nabavnoj eni& koliini i proizvoau i koliko je robe prodato. *drediti kolika je ukupna vrednost robe u magainu& ispisati podatke o trenutnom stanju svakog artikla u magainu i kolika je dobit ostvarena. using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Artikal { class Program { public class Artikal /!e"nici#a klase sa pri$atnim atributima/ { pri$ate %ouble naba$na&cena; / !eklaraci#a realnog pri$atnog atributa / pri$ate int kolicina; pri$ate string na'i$&proi'$o%#aca; pri$ate int pro%ata&kolicina; // Po%ra'ume$ani konstruktor public Artikal() { naba$na&cena * +.+; kolicina * +; na'i$&proi'$o%#aca * String.Copy(,,); pro%ata&kolicina * +; - // konstruktor inici#ali'aci#e public Artikal(%ouble nc. int kol. string na'i$. int p) { naba$na&cena * nc; kolicina * kol; na'i$&proi'$o%#aca * String.Copy(na'i$); pro%ata&kolicina * p; - public %ouble GetSetCena/!e"nici#a s$o#st$a 'a pristup pri$atnom atributu/ { get { return naba$na&cena; - set { naba$na&cena * $alue; - - public int GetSet/olicina { get { return kolicina; - set { kolicina * $alue; - - public string GetSetProi'$o%#ac { get { return na'i$&proi'$o%#aca; - set { na'i$&proi'$o%#aca * $alue; - - public int GetSetPro%ata/olicina { get { return pro%ata&kolicina; - set { pro%ata&kolicina * $alue; - - / !e"nici#a $irtuelne 0unkci#e u ok$iru osno$ne klase/ public $irtual %ouble 1'racuna#Pro%a#nuCenu(%ouble GetSetPro%ata/olicina) { return +.+; - - // 2o$e i'$e%ene klase. ko#e nasle%#u#u klasu Artikal // 1'$e%ena klasa Secer public class Secer 3 Artikal { / !e"nici#a o$erri%e (re%e"nisane) 0unkci#e u ok$iru i'$e%ene klase/ public o$erri%e %ouble 1'racuna#Pro%a#nuCenu(%ouble GetSetPro%ata/olicina) { %ouble pro%a#naCena; pro%a#naCena * base.GetSetCena 4 base.GetSetCena +.5; return pro%a#naCena; - - // 1'$e%ena klasa Cokola%a public class Cokola%a 3 Artikal { public o$erri%e %ouble 1'racuna#Pro%a#nuCenu(%ouble GetSetPro%ata/olicina) { %ouble pro%a#naCena; i0 (GetSetPro%ata/olicina 6 7++) { pro%a#naCena * base.GetSetCena 4 base.GetSetCena +.5; - else { pro%a#naCena * base.GetSetCena 4 base.GetSetCena +.8; - return pro%a#naCena; - - // 1'$e%ena klasa /a0a public class /a0a 3 Artikal { public o$erri%e %ouble 1'racuna#Pro%a#nuCenu(%ouble GetSetPro%ata/olicina) { %ouble pro%a#naCena; i0 (GetSetPro%ata/olicina 6 9++) { pro%a#naCena * base.GetSetCena 4 base.GetSetCena +.79; - else { pro%a#naCena * base.GetSetCena 4 base.GetSetCena +.59; - return pro%a#naCena; - - // :nos static $oi% :nosPo%ataka(Artikal a) { Console.;riteLine(,2aba$na cena3 ,); a.GetSetCena * %ouble.Parse(Console.<ea%Line()); Console.;riteLine(,/olicina3 ,); a.GetSet/olicina * int.Parse(Console.<ea%Line()); Console.;riteLine(,Proi'$o%#ac3 ,); a.GetSetProi'$o%#ac * Console.<ea%Line(); Console.;riteLine(,/olicina pro%ate robe3 ,); a.GetSetPro%ata/olicina * int.Parse(Console.<ea%Line()); Console.;riteLine(,,); - // 1spis static $oi% 1spisPo%ataka(Artikal a) { Console.;riteLine(,2aba$na cena3 {+3=5-,. a.GetSetCena); Console.;riteLine(,Pro%a#na cena3 {+3=5-,. a.1'racuna#Pro%a#nuCenu(a.GetSetPro%ata/olicina)); Console.;riteLine(,2aba$l#ena kolicina3 {+-,. a.GetSet/olicina); Console.;riteLine(,Proi'$o%#ac3 {+-,. a.GetSetProi'$o%#ac); Console.;riteLine(,/olicina pro%ate robe3 {+-,. a.GetSetPro%ata/olicina); Console.;riteLine(,Trenutna kolicina robe3 {+-,. a.GetSet/olicina> a.GetSetPro%ata/olicina); -
static $oi% ?ain(string@A args) { int i * +; %ouble ukupnaBre%nost. %obit; ukupnaBre%nost * +.+; %obit * +.+; string@A s * { ,Secer,. ,Cokola%a,. ,/a0a, -; Artikal@A a * neC Artikal@8A; // ni' o% n poka'i$aca na po%atke tipa Artikal a@+A * neC Secer(); a@7A * neC Cokola%a(); a@5A * neC /a0a(); 0oreacD (Artikal t in a) { Console.;riteLine(s@i44A); // t * neC Artikal(); // po'i$ po%ra'ume$anog konstruktora :nosPo%ataka(t); //i'racuna$an#e ukupne pro%a#ne cene s$iD %obit 4* (t.1'racuna#Pro%a#nuCenu(t.GetSetPro%ata/olicina) > t.GetSetCena) t.GetSetPro%ata/olicina; //i'racuna$an#e ukupne naba$ne cene s$iD artikala ukupnaBre%nost 4* t.GetSetCenat.GetSet/olicina; - Console.;riteLine(); Console.;riteLine(,:kupna $re%nost robe u magacinu3 {+3=5-,. ukupnaBre%nost); Console.;riteLine(); Console.;riteLine(); Console.;riteLine(,>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>,); Console.;riteLine(,Po%aci o trenutnom stan#u artikala3 ,); i * +; 0oreacD (Artikal t in a) { Console.;riteLine(s@i44A); 1spisPo%ataka(t); Console.;riteLine(); - Console.;riteLine(,>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>,); Console.;riteLine(); Console.;riteLine(); // 1spis ost$arene %obiti