Top Banner
Objektno usmjereno programiranje
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

Dec 26, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Složene klase - primjer

>>> r

Razred: 2E

====================================================

Ana Anić 18.03.2000.

Pero Perić 12.12.2000.