![Page 1: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/1.jpg)
Objektno usmjereno programiranje
![Page 2: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/2.jpg)
Osnovni pojmovi
Primjer 1:
Vožnja automobila
Osnovni elementi:
autmomobil (marka, maksimalna brzina, snaga motora, broj šasije,...)
vozač (ime, prezime, visina, težina, OIB,...)
Radnje:
Uključivanje motora, ubacivanje u brzinu, dodavanje gasa,...
![Page 3: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/3.jpg)
Osnovni pojmovi
klasa - predložak u kojem se čuvaju podaci o nekom elementu: automobil i vozač, te ima implementirane neke radnje nad podacima
elementi klase:
svojstva (atributi) – čuvaju vrijednosti važne za neki element koji opisujemo (marka automobila, maksimalna brzina, ime vozača,....)
metode – radnje koje izvodimo nad elementima (uključivanje motora, dodavanje gasa, kočenje,...)
![Page 4: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/4.jpg)
Osnovni pojmovi
klasa - predložak u kojem se čuvaju podaci o nekom elementu: automobil i vozač, te ima implementirane neke radnje nad podacima
elementi klase:
svojstva (atributi) – čuvaju vrijednosti važne za neki element koji opisujemo (marka automobila, maksimalna brzina, ime vozača,....)
metode – radnje koje izvodimo nad elementima (uključivanje motora, dodavanje gasa, kočenje,...)
objekt – konkretizacija klase – nakon što klasi dodamo vrijednosti svojstava, konkretni element koji možemo pokazati
klasa automobil = bilo koji automobil na ovom svijetu
objekt automobil = točno određeni automobil koji možemo pokazati na ulici
![Page 5: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/5.jpg)
Primjeri poznatih klasa Pythona
String
svojstvo – niz znakova koji je
pohranjen u stringu
metode – upper(), replace(), split(),...
lista
svojstva – članovi liste
metode – append(), sort(),...
![Page 6: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/6.jpg)
Objektno usmjereno programiranje
u programskom jeziku Python
definicija klase:
class ImeKlase:
definiraranje klase
definiciju čini niz metoda (funkcije) te svojstva (varijable)
svaka metoda obavezno ima parametar self – preko njega dolazimo do svih svojstava i metoda klase
![Page 7: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/7.jpg)
Objektno usmjereno programiranje
u programskom jeziku Python
konstruktor klase
osnovna metoda unutar koje se
postavljaju vrijednosti svojstava klase
posrednik koji se poziva prilikom
kreiranja objekta iz klase
def __init__(self [, parametri]):
definicija
![Page 8: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/8.jpg)
Primjer klase - Trokut
class Trokut:
def __init__(self, a = 0, b = 0, c = 0):
self.A = a
self.B = b
self.C = c
return
def opseg(self):
return self.A + self.B + self.C
def povrsina(self):
s = self.opseg() / 2
return (s * (s - self.A) * (s - self.B) * (s –
self.C)) ** 0.5
![Page 9: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/9.jpg)
Primjer klase - Trokut
>>> t = Trokut(3, 4, 5)
>>> t.A
3
>>> t.opseg()
12
>>> t.povrsina()
6.0
![Page 10: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/10.jpg)
Primjer klase - Trokut
>>> t.B = 3
>>> t.C = 3
>>> t.opseg()
9
![Page 11: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/11.jpg)
Primjer klase - Trokut
>>> t = Trokut()
>>> t.A
0
>>> t.opseg()
0
![Page 12: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/12.jpg)
Primjer klase - Trokut
>>> t = Trokut(2, 3)
>>> t.A
2
>>> t.B
3
>>> t.C
0
![Page 13: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/13.jpg)
Primjer klase - Trokut
>>> t = Trokut(b = 2, c = 3)
>>> t.A
0
>>> t.B
2
>>> t.C
3
![Page 14: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/14.jpg)
Primjer klase - Trokut
unutar klase Trokut definirajmo metodu crtaj()
koja će, ukoliko se radi o pravokutnom trokutu
nacrtati taj trokut pri ćemu će vrh pravog kuta
biti u ishodištu kornjačinog koordinatnog sustava.
Trokut treba biti ispunjen bojom b, pri čemu će b
biti parametar metode. Ukoliko se ne radi o
pravokutnom trkutu metoda treba ispisati poruku
u grafičkom ekranu da trokut nije pravokutan.
![Page 15: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/15.jpg)
Primjer klase -
Trokut
from turtle import *
def crtaj_trokut(a, b):
pu()
home()
pd()
begin_fill()
fd(a)
goto(0, b)
home()
end_fill()
return
class Trokut:
...
def crtaj(self, boja =
'black'):
color(boja)
if self.A ** 2 + self.B
** 2 == self.C ** 2:
crtaj_trokut(self.A,
self.B)
elif self.A ** 2 +
self.C ** 2 == self.B ** 2:
crtaj_trokut(self.A,
self.C)
elif self.B ** 2 +
self.C ** 2 == self.A ** 2:
crtaj_trokut(self.B,
self.C)
else:
pu()
home()
pd()
write('Trokut nije
pravokutan')
return
![Page 16: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/16.jpg)
Primjer klase - Trokut
>>> t = Trokut(90, 120, 150)
>>> t.crtaj('blue')
![Page 17: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/17.jpg)
Primjer klase - Razlomak
class Razlomak:
def __init__(self, b = 0, n = 1):
self.B = b
self.N = n
self.krati()
return
def krati(self):
b = self.B
n = self.N
while b != n:
if b > n:
b -= n
else:
n -= b
self.B //= b
self.N //= b
return
![Page 18: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/18.jpg)
Primjer klase - Razlomak
>>> r = Razlomak(4, 6)
>>> r.B
2
>>> r.N
3
>>> r
<__main__.Razlomak object at 0x025FD810>
![Page 19: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/19.jpg)
Predefinirane nazivi metoda za neke
standardne operacije u Pythonu
Naziv metode Opis
__add__(self, b) zbrajanje (+)
__sub__(self, b) oduzimanje (-)
__mul__(self, b) množenje (*)
__floordiv__(self, b) cjelobrojno dijeljenje (//)
__truediv__(self, b) dijeljenje (/)
__mod__(self, b) ostatak cjelobrojnog dijeljenja (%)
__pow__(self, n) potenciranje
__lt__(self, b)
[gt, ge, le, eq, ne]
manje (<)
(>, ≥, ≤, =, ≠)
__repr__() izgled ispisa u interaktivnom sučelju
__str__() izgled ispisa korištenjem naredbe print()
![Page 20: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/20.jpg)
Primjer klase - Razlomak
definirajmo metodu kojom ćemo ispisati objekt tipa razlomak u interaktivnom sučelju:
def __repr__(self):
if self.B == 0:
return '0'
elif self.N == 1:
return str(self.B)
else:
return '{0} / {1}'.format(self.B, self.N)
![Page 21: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/21.jpg)
Primjer klase - Razlomak
>>> r = Razlomak(4, 6)
>>> r
2 / 3
>>> r = Razlomak(5)
>>> print(r)
5
![Page 22: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/22.jpg)
Primjer klase - Razlomak
definirajmo množenje i dijeljenje razlomaka:
def __mul__(self, b):
br = self.B * b.B
na = self.N * b.N
return Razlomak(br, na)
def __truediv__(self, b):
r = Razlomak(b.N, b.B)
return self * r
![Page 23: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/23.jpg)
Primjer klase - Razlomak
>>> r1 = Razlomak(4, 6)
>>> r2 = Razlomak(4, 5)
>>> r3 = r1 * r2
8 / 15
>>> r1 / r2
5 / 6
![Page 24: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/24.jpg)
Primjer klase - Razlomak
Implelemntirajmo operacije zbrajanja razlomaka:
def __add__(self, b):
return Razlomak(self.B * b.N + b.B *
self.N, self.N * b.N)
def __sub__(self, b):
b.B = -b.B
return self + b
![Page 25: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/25.jpg)
Primjer klase - Razlomak
>>> r1 = Razlomak(3, 2)
>>> r2 = Razlomak(1, 2)
>>> r1 + r2
2
>>> r1 - r2
1
![Page 26: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/26.jpg)
Primjer klase - Razlomak
definirajmo uspoređivanje razlomaka:
def __gt__(self, b):
return self.B * b.N > b.B * self.N
def __lt__(self, b):
return b > self
def __ge__(self, b):
return self.B * b.N >= b.B * self.N
def __le__(self, b):
return self.B * b.N <= b.B * self.N
def __eq__(self, b):
return self.B * b.N == b.B * self.N
def __ne__(self, b):
return self.B * b.N != b.B * self.N
![Page 27: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/27.jpg)
Primjer klase - Razlomak
>>> r1 = Razlomak(4, 6)
>>> r2 = Razlomak(4, 5)
>>> r1 == r2
False
>>> r1 <= r2
True
>>> r2 > r1
True
![Page 28: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/28.jpg)
Nasljeđivanje klasa
nasljeđivanjem kreiramo novu klasu koja od
prethodne klase preuzima sva svojstva i metode
te definira neka dodatna svojstva i metode
odnosno predefinira neka svojstva i metode
klase koja se nasljeđuje
klasa koja nasljeđuje neku postojeću klasu na
svojevrstan način nadograđuje tu klasu
![Page 29: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/29.jpg)
Nasljeđivanje klasa
![Page 30: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/30.jpg)
Nasljeđivanje klasa
unutar konstruktora nove klase moramo pozvati
konstruktor klase koju nasljeđujemo (super().__init__())
klasa može nasljediti najviše jednu klasu
klasa A nasljeđuje klasu B:
class A(B):
definicija klase A
![Page 31: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/31.jpg)
Nasljeđivanje klasa - primjer
definirajmo klasu četverokut čija će svojstva biti duljine stranica četverokuta a imat će jednu metodu koja će vraćati opseg četverokuta:
class Cetverokut:
def __init__(self, a, b, c, d):
self.A = a
self.B = b
self.C = c
self.D = d
return
def opseg(self):
return self.A + self.B + self.C + self.D
![Page 32: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/32.jpg)
Nasljeđivanje klasa - primjer
definirajmo klasu Pravokutnik koja nasljeđuje klasu Cetverokut te ima još metodu za računanje površine pravokutnika:
class Pravokutnik(Cetverokut):
def __init__(self, a, b):
super().__init__(a, b, a, b)
return
def povrsina(self):
return self.A * self.B
![Page 33: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/33.jpg)
Nasljeđivanje klasa - primjer
>>> p = Pravokutnik(3, 4)
>>> p.A
3
>>> p.C
3
>>> p.opseg()
14
>>> p.povrsina()
12
![Page 34: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/34.jpg)
Nasljeđivanje klasa - primjer
>>> c = Cetverokut(3, 4, 5, 6)
>>> c.opseg()
18
>>> c.povrsina()
Traceback (most recent call last):
File "<pyshell#88>", line 1, in <module>
c.povrsina()
AttributeError: 'Cetverokut' object has no
attribute 'povrsina'
![Page 35: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/35.jpg)
Klasa Date
Naziv metode Opis
date(godina, mjesec, dan) konstruktor
year godina
month mjesec
day dan
weekday() redni broj dana u tjednu (0 – ponedjeljak)
today() današnji datum
toordinal() redni broj dana od 1.1.1.
fromordinal(n) datum koji dolazi n dana nakon 1.1.1.
![Page 36: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/36.jpg)
Klasa Date- primjer
>>> from datetime import *
>>> d = date(2014, 5, 6)
>>> d
datetime.date(2014, 5, 6)
>>> d.toordinal()
735359
>>> d.day
6
![Page 37: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/37.jpg)
Klasa Date- primjer
>>> d2 = d.fromordinal(735360)
>>> d2
datetime.date(2014, 5, 7)
>>> d2.weekday()
2
>>> d.month
5
>>> print(d)
2014-05-07
![Page 38: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/38.jpg)
Nasljeđivanje klasa - primjer
Definirajmo klasu Datum koja nasljeđuje klasu
Date te ima implementiranu funkcionalnost ispisa
datuma u obliku dd.mm.yyyy., osim toga ima
implementirane operacije račnanja razlike dvaju
datuma (razlika je broj dana) te dodavanja
određenog broja dana nekom datumu
![Page 39: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/39.jpg)
Nasljeđivanje klasa - primjer
class Datum(date):
def __init__(self, g, m, d):
super().__init__()
return
![Page 40: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/40.jpg)
Nasljeđivanje klasa - primjer
def __repr__(self):
d = str(self.day)
m = str(self.month)
g = str(self.year)
if len(d) < 2:
d = '0' + d
if len(m) < 2:
m = '0' + m
return '{0}.{1}.{2}'.format(d, m, g)
def __str__(self):
return self.__repr__()
![Page 41: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/41.jpg)
Nasljeđivanje klasa - primjer
def __add__(self, n):
k = self.toordinal()
k += n
d = self.fromordinal(k)
return Datum(d.year, d.month, d.day)
def __sub__(self, d):
return self.toordinal() –
d.toordinal()
![Page 42: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/42.jpg)
Nasljeđivanje klasa - primjer
>>> d = Datum(2014, 5, 6)
>>> d
06.05.2014.
>>> d2 = d + 30
>>> d2
05.06.2014.
>>> d2 - d
30
![Page 43: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/43.jpg)
Složene klase - primjer
Definirajmo klasu Ucenik čija će svojstva biti ime i
prezime učenika te datum rođenja učenika
Implementirajmo mogućnost ispisa podataka o
učeniku u interaktivnom sučelju upisivanjem
imena varijable tima Ucenik
![Page 44: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/44.jpg)
Složene klase - primjer
class Ucenik: def __init__(self, ime, prezime, datR): self.Im = ime self.Pr = prezime self.Dr = datR return def __repr__(self): i = ' ' * (20 - len(self.Im)) + self.Im p = ' ' * (20 - len(self.Pr)) + self.Pr return i + p + ' ' + str(self.Dr)
![Page 45: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/45.jpg)
Nasljeđivanje klasa - primjer
>>> u1 = Ucenik('Pero', 'Perić',
Datum(2000, 12, 12))
>>> u1
Pero Perić 12.12.2000.
>>> d = Datum(2000, 3, 18)
>>> u2 = Ucenik('Ana', 'Anić', d)
>>> u2
Ana Anić 18.03.2000.
![Page 46: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/46.jpg)
Složene klase - primjer
Definirajmo klasu Razred čija će svojstva biti
oznaka razreda te lista svih učenika koji polaze u
taj razred
Implementirajmo mogućnost ispisa podataka o
razredu: oznaku razreda te popis svih učenika
razreda poredanih prema datumu rođenja
uzlazno
Definirajmo metodu dodajUcenika() koja će
dodavati učenika u razred
![Page 47: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/47.jpg)
Složene klase - primjer
class Razred:
def __init__(self, oznaka):
self.Oz = oznaka
self.Uc = []
return
def dodajUcenika(self, uc):
self.Uc.append(uc)
return
![Page 48: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/48.jpg)
Složene klase - primjer
def __repr__(self):
s = 'Razred: ' + self.Oz + '\n'
s += '=' * 52 + '\n'
l= sorted(self.Uc,key=lambda t:t.Dr)
for u in l:
s += str(u) + '\n'
return s
![Page 49: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/49.jpg)
Složene klase - primjer
>>> r = Razred('2E')
>>> u = Ucenik('Pero', 'Perić',
Datum(2000, 12, 12))
>>> r.dodajUcenika(u)
>>> u = Ucenik('Ana', 'Anić',
Datum(2000, 3, 18))
>>> r.dodajUcenika(u)
![Page 50: Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko](https://reader030.vdocuments.pub/reader030/viewer/2022040316/5e25a5e5bc1e576e48103bd2/html5/thumbnails/50.jpg)
Složene klase - primjer
>>> r
Razred: 2E
====================================================
Ana Anić 18.03.2000.
Pero Perić 12.12.2000.