50
Objektno usmjereno programiranje

Objektno usmjereno programiranje - IPAQ PETAipaq.petagimnazija.hr/wp-content/uploads/2014/12/...Primjer klase - Trokut unutar klase Trokut definirajmo metodu crtaj() koja će, ukoliko

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

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.