Professional Documents
Culture Documents
Vežbe 02
Vežbe 02
Kreirajte novi projekat pod nazvom PrimerUgnjezdeneKlase i iskopirajte kod i prodjite kroz komentare
koje sam ostavio kako biste bolje razumeli vezbu. Ukoliko imate pitanja, slobodno se obratite putem
mejla na levai@vtsns.edu.rs.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PrimerUgnjezdeneKlase
//fabrika Automobila Priboj je klasa koja sadrzi podklase vozilo, motor i klase autobus i kamion koje
nasledjuju klasu vozilo
//U ovom primeru cemo proci kroz pojmove kao sto su nasledjivanje, kompozijija, polimorfizam i
interfejs
//takodje cemo saznati kako da kreiramo recnik tj. Dictionary, foreach petlju, Task.Delay funkciju
{2,new Kamion(FAP.Kamion.ModelKamiona.Vojni) }
};
public void IspisStanjaVozila()//metoda klase FAP pomocu koje mozemo da vidimo koja su nam
vozila na stanju
Console.ReadLine();//metoda klase Console koja prima bilo sta sto korisnik unese sa tastature
brojacVozila++;
VozilaNaStanju.Add(brojacVozila,k);
await Task.Delay(2000);//ostavicemo korisnika da saceka par sekundi taman dok procita prvu
recenicu, a zatim da mu se ispisu sva vozila
this.IspisStanjaVozila(); //poziv metode koja je definisana u klasi FAP i koja ispisuje sva vozila iz
recnika vozila koja su na stanju
string x = Console.ReadLine(); //promenljiva x string i u nju se smesta ono sto korinik unese na
tastaturi i klikne enter
int id;// id je promenljiva koja ukoliko je korisnik uneo vrednost koja moze da se konvertuje u tip
int postaje vrednost za koju cemo proveriti da li postoji takav kljuc u recniku i ukoliko postoji obrisacemo
to vozilo iz recnika
if(VozilaNaStanju.ContainsKey(id))
if( VozilaNaStanju.Remove(id))
public class Vozilo //klasa vozilo je nadklasa klasa autobus i kamion te ona ima svojstva zajednicka
za te klase
protected Motor MotorVozila { get; set; }//svako vozilo mora da ima motor te se njegov objekat
ovde definise kao svojstvo sto je primer Kompozicije
protected bool Cipovan { get; set; }//true ili false vrednost true ako je cipovano vozilo i false ako
nije
Naziv = Marka;
Cipovan = false;
string str = "Vozilo pod nazivom: " + Naziv + ",\r\n Firme " + Marka + MotorVozila.ToString();
if (Cipovan)
return str;
public class Motor //ugnjezdena klasa motora sa 2 enuma i tri int svojstva koja su zajednicka za
sve motore
dizel,
benzin,
plin
EU3,
EU4,
EU5
}
this.Kubikaza = Kubikaza;
this.SnagaKW = SnagaKW;
this.SnagaKS = SnagaKS;
this.TipMotora = TipMotora;
this.Gorivo = Gorivo;
return str;
//Javna metoda kojoj se moze pristupiti iz klase Auta ona proverava da li je snaga veca od nula i
ako jeste tada moze da poveca snagu
if (SnagaKW > 0)
return true;
return false;
//interfejs prepravka je najjednostavniji primer interfejsa gde je definisana metoda koja mora da se
implementira u klasi
Model = model;
}
public enum ModelAutobusa
A5374CNG,
A537,
A5375
{//pomocu switch case grananja mozemo u zavisnoti od modela da kreiramo drugaciji objekat
klase motor
switch (Model)
case ModelAutobusa.A5374CNG:
Naziv = "Gradski";
break;
case ModelAutobusa.A537:
Naziv = "Gradski";
break;
case ModelAutobusa.A5375:
break;
}
}
if (Cipovan)
return "Vas Autobus je vec cipovan. Nije preporucljivo dodatno povecavanje snage.";
{ return "Vase vozilo je sad cipovan i njegove specifikacije su: " + MotorVozila.ToString(); }
else { return "Za zadato vozilo nije moguce obaviti cipovanje jer nije definisan kako je
predvidjeno."; }
public class Kamion : Vozilo,Prepravka//klasa kamion je slicna klasi autobus te mislim da nij
epotrebno dodatno objasnjenje
Model = model;
SpecifikacijaNaOsnovuModela();
if (Cipovan)
return "Vas Kamion je vec cipovan. Nije preporucljivo dodatno povecavanje snage.";
{ return "Vase vozilo je sad cipovan i njegove specifikacije su: " + MotorVozila.ToString(); }
else { return "Za zadato vozilo nije moguce obaviti cipovanje jer nije definisan kako je
predvidjeno."; }
Naziv = Model.ToString();
switch (Model)
case ModelKamiona.Sanducar:
break;
case ModelKamiona.Tegljac:
break;
case ModelKamiona.Kiper:
break;
case ModelKamiona.Vojni:
break;
Sanducar,
Tegljac,
Kiper,
Vojni
class Program
//u glavnoj metodi programa cemo kreirati vise automobila i pozvati moguce metode klasa auta i
motora
fap.IspisStanjaVozila();
fap.DodajNovAutobusNaStanje(FAP.Kamion.ModelKamiona.Vojni);
//ispisivanje kako bismo videli da li je stvarno unet objekat vozila odnosno kamiona u ovom
slucaju
fap.IspisStanjaVozila();
fap.ObrisiVoziloSaStanja();
Console.ReadLine();}}}