Klasa učenik koja ima polja ime, mat, hem i fiz, te metodu procjecnaOcjena koja racuna prosjek ocjena.
class Ucenik:
def __init__(self, ime: str, mat: int, hem: int, fiz: int, razred: int):
self.ime = ime
self.mat = mat
self.hem = hem
self.fiz = fiz
self.razred = razred
def prosjecnaOcjena(self) -> float:
return (self.mat + self.hem + self.fiz) / 3
def povecajRazred(self):
self.razred = self.razred + 1
# Primjer koristenja:
ucenik = Ucenik("Marko", 5, 4, 4, 1)
print(ucenik.prosjecnaOcjena())
ucenik.povecajRazred()
print(ucenik.razred)
Napraviti listu od 10 ucenka i ispisati prosjek za svakog ucenika:
imena = ["Marko", "Ana", "Ivan", "Luka", "Petar", "Jelena", "Nikola", "Maja", "Stefan", "Sara"]
ucenici = []
for ime in imena:
ucenik = Ucenik(ime, random.randint(1, 5), random.randint(1, 5), random.randint(1, 5))
ucenici.append(ucenik)
# Example usage:
for ucenik in ucenici:
print(ucenik.ime, ucenik.prosjecnaOcjena())
Napisati klasu UcenikRacunarskogSmjera koja nasljedjuje klasu Ucenik i dodaje dva nova polja programiranje i bazePodataka.
class UcenikRacunarskogSmjera(Ucenik):
def __init__(self, ime: str, mat: int, hem: int, fiz: int, bazePodataka: int, programiranje: int):
super().__init__(ime, mat, hem, fiz)
self.bazePodataka = bazePodataka
self.programiranje = programiranje
def prosjecnaOcjena(self) -> float:
return (self.mat + self.hem + self.fiz + self.bazePodataka + self.programiranje) / 5
Napisati klasu Casovnik koja ima osobine sat, minut i sekund. Napisati metode resetuj(), dodajsat(), dodajMinut(), otkucaj() i stampajPodatke().
class Casovnik:
def __init__(self):
self.sat = 0
self.minut = 0
self.sekund = 0
def resetuj(self):
self.sat = 0
self.minut = 0
self.sekund = 0
def dodaj_sat(self):
if self.sat == 23:
self.resetuj()
else:
self.sat += 1
self.minut = 0
self.sekund = 0
def dodaj_minut(self):
if self.minut == 59:
self.dodaj_sat()
else:
self.minut += 1
self.sekund = 0
def otkucaj(self):
if self.sekund == 59:
self.dodaj_minut()
else:
self.sekund += 1
def stampaj_podatke(self):
print(f"{self.sat}:{self.minut}:{self.sekund}")
A = Casovnik()
A.sat = 16
A.minut = 14
A.sekund = 58
A.stampaj_podatke()
A.otkucaj()
A.otkucaj()
A.stampaj_podatke()
Isprogramirati klasu Auto. Objekti klase treba da imaju sledece atribute: model, radna zapremina, snaga, potrosnja na 100km, zapremina rezervoara, trenutna kolicina goriva u rezervoari, predjena kilometraza. Treba podrzati sledece metode:
- Napuni – puni rezervoar,
- Dodaj(x) – dodaje u rezervoar x litara (ako bi nakon punjenja bio prepunjen, onda smatati da je samo napunje)
- Predji(x) – prelazi x kilometara
- float predjeniPut – vraca predjeni put do tog trenutka
- float gorivo – vraca kolicinu goriva u tom trentku.
class Auto:
def __init__(self, model, radna_zapremina, snaga, potrosnja_na_100, zapremina_rezervoara, kolicina_goriva, predjena_kilometraza):
self.model = model
self.radna_zapremina = radna_zapremina
self.snaga = snaga
self.potrosnja_na_100 = potrosnja_na_100
self.zapremina_rezervoara = zapremina_rezervoara
self.kolicina_goriva = kolicina_goriva
self.predjena_kilometraza = predjena_kilometraza
def napuni(self):
self.kolicina_goriva = self.zapremina_rezervoara
def dodaj(self, x):
if self.kolicina_goriva + x > self.zapremina_rezervoara:
self.napuni()
else:
self.kolicina_goriva += x
def predji(self, x):
self.predjena_kilometraza += x
self.kolicina_goriva -= x * (self.potrosnja_na_100 / 100)
def stampaj_podatke(self):
print(self.model)
print(self.radna_zapremina)
print(self.snaga)
print(self.potrosnja_na_100)
print(self.zapremina_rezervoara)
print(self.kolicina_goriva)
print(self.predjena_kilometraza)
golf = Auto("golf", 1600, 70, 10.0, 70.0, 20.0, 10000.0)
golf.stampaj_podatke()
print() # Empty line for spacing
golf.dodaj(30.0)
golf.stampaj_podatke()
print()
golf.predji(50)
golf.stampaj_podatke()
print()
golf.napuni()
golf.stampaj_podatke()
Nasljeđivanje
Klasa koja nasljeđuje naziva se podklasa, a klasa koja je naslijeđena naziva se nadklasa (superclass i subclass ili parent class i child class).
Podklasa nasljeđuje atribute i metode nadklase i može proširiti njenu funkcionalnost.
class Video:
def __init__(self, naslov, trajanje, godina_izdanja, ocjena):
self.naslov = naslov
self.trajanje = trajanje
self.godina_izdanja = godina_izdanja
self.ocjena = ocjena
def pusti(self):
pass
def pauziraj(self):
pass
class Film(Video):
def __init__(self, naslov, trajanje, godina_izdanja, ocjena, reditelj, budzet):
super().__init__(naslov, trajanje, godina_izdanja, ocjena)
self.reditelj = reditelj
self.budzet = budzet
def prikazi_trailer(self):
pass
class Epizoda(Video):
def __init__(self, naslov, trajanje, godina_izdanja, ocjena, broj_sezone, broj_epizode, naziv_serije):
super().__init__(naslov, trajanje, godina_izdanja, ocjena)
self.broj_sezone = broj_sezone
self.broj_epizode = broj_epizode
self.naziv_serije = naziv_serije
class Podcast(Video):
def __init__(self, naslov, trajanje, godina_izdanja, ocjena, voditelj, tema, ima_transkript):
super().__init__(naslov, trajanje, godina_izdanja, ocjena)
self.voditelj = voditelj
self.tema = tema
self.ima_transkript = ima_transkript
video1 = Video("", 45, 2021, 7.5)
video2 = Video("Dokumentarac o prirodi", 90, 2019, 8.0)
film1 = Film("Terminator II", 120, 1991, 8.5, "James Cameron", 5000000)
film2 = Film("The Godfather", 95, 2020, 7.0, "Francis Ford Coppola", 2000000)
epizoda1 = Epizoda("Pilot", 42, 2023, 9.0, 1, 1, "Seinfeld")
epizoda2 = Epizoda("Episode 1", 38, 2023, 8.8, 1, 2, "Behind her eyes")
podcast1 = Podcast("Agelast 150.", 60, 2024, 8.2, "Milica Vasiljevic", "The Walking Dead review", True)
podcast2 = Podcast("Agelast 151.", 45, 2024, 7.9, "Bosko Petkovic", "It's not a sprint...", False)
print(film1.naslov)
print(podcast1.tema)