27. 02. ponavljanje i utvrđivanje gradiva - zadaci sa rešenjima
Completion requirements
🔹 Prvi deo – Nasleđivanje, konstruktori, modifikatori pristupa
ZADATAK 1 – Osnovno nasleđivanje
Napraviti klasu Osoba sa sledećim članovima:
- protected polja:
ime,prezime - public konstruktor koji prima ime i prezime
- public metodu
PrikaziPodatke()koja ispisuje ime i prezime
Napraviti izvedenu klasu Ucenik koja:
- nasleđuje klasu
Osoba - ima dodatno privatno polje
odeljenje - ima konstruktor koji prima ime, prezime i odeljenje
- redefiniše metodu
PrikaziPodatke()tako da ispisuje i odeljenje
U Main metodi:
- kreirati objekat klase
Ucenik - pozvati metodu za prikaz podataka
using System;
class Osoba
{
protected string ime;
protected string prezime;
public Osoba(string ime, string prezime)
{
this.ime = ime;
this.prezime = prezime;
}
public virtual void PrikaziPodatke()
{
Console.WriteLine("Ime: {0} {1}", ime, prezime);
}
}
class Ucenik : Osoba
{
private string odeljenje;
public Ucenik(string ime, string prezime, string odeljenje)
: base(ime, prezime)
{
this.odeljenje = odeljenje;
}
public override void PrikaziPodatke()
{
base.PrikaziPodatke();
Console.WriteLine("Odeljenje: " + odeljenje);
}
}
class Program
{
static void Main()
{
Ucenik u = new Ucenik("Marko", "Markovic", "III-2");
u.PrikaziPodatke();
Console.ReadLine();
}
}
Pitanja za razmišljanje:
- Zašto polja u baznoj klasi nisu
private? - Šta bi se desilo da su
private? - Da li izvedena klasa može direktno pristupiti
privatečlanovima bazne klase?
-
Zato što izvedena klasa mora imati pristup tim poljima.
-
Izvedena klasa ne bi mogla da im pristupi.
-
Ne. Samo
protectedipublicčlanovima.
ZADATAK 1a – dodatak
Napraviti klasu Adresa:
- ulica
- broj
- metoda
PrikaziAdresu()
Izmeniti klasu Osoba tako da sadrži objekat klase Adresa.
Kroz konstruktor proslediti podatke i inicijalizovati adresu.
class Adresa
{
private string ulica;
private int broj;
public Adresa(string ulica, int broj)
{
this.ulica = ulica;
this.broj = broj;
}
public void PrikaziAdresu()
{
Console.WriteLine("Adresa: {0} {1}", ulica, broj);
}
}
class Osoba
{
protected string ime;
protected string prezime;
protected Adresa adresa;
public Osoba(string ime, string prezime, string ulica, int broj)
{
this.ime = ime;
this.prezime = prezime;
adresa = new Adresa(ulica, broj);
}
public virtual void PrikaziPodatke()
{
Console.WriteLine("Ime: {0} {1}", ime, prezime);
adresa.PrikaziAdresu();
}
}
🔹 Drugi deo – Apstraktne klase i interfejsi
ZADATAK 2 – Apstraktna klasa
Napraviti apstraktnu klasu Zaposleni:
- protected ime
- apstraktnu metodu
IzracunajPlatu() - metodu
PrikaziIme()
Napraviti klase:
Programer(plata = broj sati × satnica)Menadzer(fiksna plata)
abstract class Zaposleni
{
protected string ime;
public Zaposleni(string ime)
{
this.ime = ime;
}
public void PrikaziIme()
{
Console.WriteLine("Zaposleni: " + ime);
}
public abstract double IzracunajPlatu();
}
class Programer : Zaposleni
{
private int sati;
private double satnica;
public Programer(string ime, int sati, double satnica)
: base(ime)
{
this.sati = sati;
this.satnica = satnica;
}
public override double IzracunajPlatu()
{
return sati * satnica;
}
}
class Menadzer : Zaposleni
{
private double plata;
public Menadzer(string ime, double plata)
: base(ime)
{
this.plata = plata;
}
public override double IzracunajPlatu()
{
return plata;
}
}
ZADATAK 3 – Interfejs
Napraviti interfejs ILogovanje sa metodom PrijaviSe().
Implementirati interfejs u klasama:
-
Administrator -
Korisnik
interface ILogovanje
{
void PrijaviSe();
}
class Administrator : ILogovanje
{
public void PrijaviSe()
{
Console.WriteLine("Administrator se prijavio.");
}
}
class Korisnik : ILogovanje
{
public void PrijaviSe()
{
Console.WriteLine("Korisnik se prijavio.");
}
}
🔥 Zadatak (za vežbu kod kuće)
Napraviti mini sistem škole. Tu bi trebalo da postoje:
-
Apstraktna klasa
Osoba -
Izvedene klase
UcenikiProfesor -
Interfejs
IPodaci -
Statička klasa
SkolaStatistika -
Lista tipa
List<Osoba> -
Polimorfno pozivanje metoda
Last modified: Friday, 27 February 2026, 6:18 PM