OBJEKTNO ORIJENTIRANO PROGRAMIRANJE OOP UVOD Python je objektno
OBJEKTNO ORIJENTIRANO PROGRAMIRANJE (OOP)
UVOD „Python je objektno orijentirani programski jezik”
OOP § objektno orijentiranim pristupom nastojimo opisati i modelirati stvarni svijet § u stvarnom svijetu postoje objekti § te objekte opisujemo atributima § objekti se mogu svrstati u neke klase § s objektima se može nešto činiti – postoje određene metode definirane za svaku vrstu objekta
KLASA = predložak objekta Elementi klase mogu biti: Svojstva (atributi) - varijable Metode za rad nad atributima metoda = funkcija u klasi
PRIMJER: KLASA TROKUT Atributi: a, b, c Metoda: Izračun opsega Metoda: Izračun površine
OBJEKT • Jedinstvena instanca klase Objekt • Konkretizacija Ista se klasa koristi za kreiranje više objekata Objekt Klasa Objekti se razlikuju po vrijednostima atributa
SVAKI TIP PODATAKA U PYTHONU ZAPRAVO JE KLASA Tip podataka (string, int, float, bool, …) je KLASA Svaki tip podataka ima neke METODE definirane nad sobom (npr. int i string imaju definirano zbrajanje, ali int ima dijeljenje, dok string nema) Varijable su INSTANCE klase jer predstavljaju konkretnu vrijednost, konkretni objekt
DEFINICIJA KLASE class Ime. Klase: konstruktor metoda 1 metoda 2 Nazivi klasa u pravilu se pišu s velikim početnim slovom - npr. Trokut, Pravac, Ucenik Ako naziv klase ima više riječi, svaka se riječ piše velikim početnim slovom i bez razmaka ili crtica između – npr. Moja. Klasa
KONSTRUKTOR: __init__ Osnovna metoda unutar koje postavljamo atribute. Svrha konstruktora je da svojstva klase postavi na neku vrijednost. def __init__ (self, parametar 1, parametar 2, . . . ) definicija Self – obavezni parametar koji predstavlja jednu instancu klase. Preko parametra self se dolazi do atributa i metoda klase.
DEFINIRANJE KLASE MAČKA SAMO ATRIBUTI, NEMA METODA class Macka: def __init__ (self, boja, starost): self. boja = boja self. starost = starost M 1 = Macka(„bijela”, 3) M 2 = Macka(„sarena”, 0. 5) objekti klase Macka
MOGLO JE BITI I OVAKO… class Macka: def __init__ (self, x, y): self. boja = x self. starost = y M 1 = Macka(„bijela”, 3) M 1 = Macka(„sarena”, 0. 5) ovdje u klasu Macka u parametar x šaljemo vrijednost „bijela”, a u parametar y šaljemo vrijednost 3 …zatim atribut boja postaje ono što je poslano u x, a atribut starost postaje ono što je poslano u y
DOHVAĆANJE VRIJEDNOSTI ATRIBUTA OBJEKTA class Macka: def __init__ (self, boja, starost): self. boja = boja self. starost = starost M 1 = Macka(„bijela”, 3) M 2 = Macka(„sarena”, 0. 5) print(M 1. boja) print(M 2. starost) ispisuje „bijela” ispisuje 0. 5
PRIMJER – TROKUT – atributi i 1 metoda class Trokut: def __init__(self, a=0, b=0, c=0): self. A = a self. B = b self. C = c ovdje su definirane i početne vrijednosti u slučaju da netko ne unese broj da ipak postoji vrijednost def opseg(self): return self. A + self. B + self. C
STVARANJE OBJEKTA I ISPIS OPSEGA t 1=Trokut(3, 4, 5) print(t 1. opseg())
ŠTO AKO OBJEKTU NISMO PRIDRUŽILI VRIJEDNOSTI ZA NJEGOVE ATRIBUTE? t 2=Trokut() § ako nismo nikakve vrijednosti „poslali” u klasu Trokut (nismo objektu dali vrijednosti za njegove atribute), parametri imaju vrijednosti koje smo definirali u konstruktoru klase, a to su nule print(t 1. opseg()) § stoga će i opseg biti 0
VJEŽBA – KLASE I OBJEKTI Kreiraj klasu koja definira četverokut i unutar nje metodu koja vraća opseg četverokuta. Iskoristi klasu za izradu programa koji traži unos 4 stranice četverokuta i ispisuje njegov opseg
class Cetv: a=int(input("Duljina 1. str: ")) def __init__(self, a, b, c, d): b=int(input("Duljina 2. str: ")) self. a=a c=int(input("Duljina 3. str: ")) self. b=b d=int(input("Duljina 4. str: ")) self. c=c self. d=d print(Cetv(a, b, c, d). Opseg()) def Opseg(self): return self. a + self. b + self. c + self. d
- Slides: 17