25
Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport. Fakulteta za matematiko in fiziko http://up.fmf.uni- lj.si Objektno programiranje Tudi: objektno/predmetno usmerjeno programiranje Osnovni pojmi

Objektno programiranje

  • Upload
    iram

  • View
    64

  • Download
    0

Embed Size (px)

DESCRIPTION

Objektno programiranje. Tudi: objektno/predmetno usmerjeno programiranje Osnovni pojmi. Objekti. Objekt je skupek podatkov, s katerim želimo upravljati kot s celoto. Ima Podatke kaj o objektu vemo/hranimo Metode Kaj objekt zna Kakšne metode lahko izvajamo nad njim - PowerPoint PPT Presentation

Citation preview

Page 1: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Objektno programiranje

Tudi: objektno/predmetno usmerjeno programiranje

Osnovni pojmi

Page 2: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Objekti

• Objekt je skupek podatkov, s katerim želimo upravljati kot s celoto.

• Ima– Podatke

kaj o objektu vemo/hranimo

– Metode Kaj objekt zna Kakšne metode lahko izvajamo nad njim

• Vsak objekt pripada nekemu razredu. Če pripada objekt x razredu C, potem pravimo tudi, da je x objekt tipa C.

Page 3: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Znani objekti

• Nekaj primerov objektov iz standardnega razvojnega okolja za javo: – Objekt tipa BufferedReader predstavlja vhodni kanal. Kadar želimo brati

s tipkovnice ali z datoteke, naredimo tak objekt in kličemo njegovo metodo readLine za branje ene vrstice.

– Objekt System.out predstavlja standardni izhod. Kadar želimo kaj izpisati na zaslon, pokličemo metodo println na objektu System.out.

– Objekt tipa Color predstavlja barvo na zaslonu.– Objekt tipa Applet je grafična aplikacija, ki jo lahko vstavimo v spletno stran

ali poženemo samostojno.

• Seveda pa so objekti uporabni predvsem zato, ker lahko programer definira nove razrede in objekte.

Page 4: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Objekti• stanja:

– Lastnosti, podatki, komponente

• “znanje”– Odzivanje na dogodke

• Združeno v celoto– Podatki in metode, ki opisujejo neko stvar/objekt– Žoga:

Podatki: velikost, barva, položaj v prostoru, … Metode: sprememba velikosti, sprememba položaja, …

– Ulomek: Podatki: števec, imenovalec Metode: spremeni števec, spremeni imenovalec, prištej drug ulomek, obratna

vrednost, lepo izpiši, ...

Page 5: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Programiranje v javi

• Sestavljanje razredov– Opis lastnosti objektov– Opis metod (“znanja” objektov)

Ustvarjanje objektov in njihova uporaba "Ukazovanje" objektom, kaj naj počnejo Objekt za izpolnitev določene naloge potrebuje druge objekte in njihove metode

• Začetek – Glavni razred (ki ima metodo main)– Izvajanje metode main – ustvarjanje objektov, ukazovanje objektom,

spremljanje reakcij objektov, …

Page 6: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Objekti

• Objekt je kakršenkoli skupek podatkov, s katerimi želimo upravljati.

• Osnovni pristop objektnega programiranja– objekt = podatki + metode za delo s podatki.

• Ko želimo kak podatek (objekt) obdelati, objektu (podatku) signaliziramo, kaj naj se zgodi. – Pokličemo ustrezno metodo v objektu.

• Objekt je "črna škatla“, ki sprejema in pošilja sporočila. Jedro objekta sestavljajo njegove spremenljivke, okrog katerih se nahajajo njegove metode.

Page 7: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Princip črne škatle• Imamo objekt obj, ki hrani podatke o neki osebi.• Zanima nas inteligenčni količnik te osebe.

– obj.kolikoJeIQ()

• Objekt se odzove z odgovorom• Uporabnika ne zanima, kako je objekt prišel do odgovora, le kaj ga lahko vpraša in

v kakšni obliki bo dobil odgovor!• Za uporabnika (tistega, ki objektu naroči izvajanje metode) ni važno, kako je objekt

odgovoril – kako je prišel do IQ (je to podatek, ki je zapisan nekje v objektu, je to rezultat nekega preračunavanja … )

Koliko je

tvoj IQ ?

92

Page 8: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Prednosti "črne škatle"• Če kasneje spremenimo notranjost "črne škatle" (razreda)• Spremembe v programih, ki razred uporabljajo, niso potrebne

– Seveda, če je način spraševanja in odgovarjanja ostal nespremenjen– Če so metode ostale enake (imajo enaka imena, nabor parametrov in

tip rezultata)

Page 9: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Klasično programiranje• Klasično programiranje:

program = metode

• Ko želimo kak podatek obdelati v klasičnem programiranju, – pokličemo ustrezno metodo z argumenti– argumenti: podatki, ki naj jih obdela.

Page 10: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Klasično/objektno progr.• metoda f na podatku x: • Klasično:

– izvedi statično metodo f na podatku x – f(x);

• Objektno: – podatku/objektu x signaliziraj, da naj izvede metodo f – x.f();

Page 11: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Od kje razredi?• Veliko vgrajenih (oziroma v standardnih knjižnicah) v javo

– Math, String, System, BufferedReader, Applet, JFrame, …

• Drugi viri– Naši “stari” razredi– Drugi programerji

• Potrebujemo ustrezno class datoteko (prevedena java datoteka)

Page 12: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Moj prvi razredOglejmo si naslednji program:

public class MojR{

private String mojNiz;

public MojR(String nekNiz) {

this.mojNiz = nekNiz;

}

public void izpisi() {

System.out.println(this.mojNiz);

}

}

public class Pozdrav {

public static void main(String[] arg) {

MojR prvi;

prvi = new MojR("Pozdravljen, moj prvi objekt v javi!");

prvi.izpisi();

}

}

Oznaka objekta

Definicija razreda

naredimo objekt

ukazujemo objektu

Page 13: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Objekt in ime spremenljivke• NekiObjekt a;

– a je naslov, kjer bo objekt (referenca na objekt)

• new NekiObjekt();– V pomnilniku se je naredil objekt tipa NekiObjekt() po

pravilih, ki so določena z opisom razreda NekiObjekt• a = new NekiObjekt();

– V pomnilniku se je naredil objekt tipa NekiObjekt() in a kaže na ta novo ustvarjeni objekt

Page 14: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Ustvarjanje objektov

• Razred je šablona, ki definira spremenljivke in metode skupne vsem objektom iste vrste.

• class – Načrt objekta, šablona

• Primerek razreda (grdo temu rečemo instanca) – konkretni objekt– Ustvarimo ga z new– Brez tega objekta NE MOREMO uporabiti – NekiObjekt a;

Objekt NE obstaja a je IME objekta natančneje

– a je ime spremenljivke, kjer hranimo NASLOV objekta vrste NekiObjekt

Page 15: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Java in objekti• Razred (class) je opis vrste objekta (načrt, kako naj bo objekt videti) – opis ideje

objekta• Primerek razreda (instanca) – konkretni objekt

class Neki {… new Neki(12, 89, 24, “red”, …

Page 16: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Ustvarjanje objektov– Ulomek ime = new Ulomek(3, 4);– Rečemo:

V objektu ime je shranjen ulomek ¾;

– Točneje V spremenljivki ime je naslov nekega objekta tipa Ulomek, ki predstavlja

ulomek ¾. Spremenljivka ime kaže na objekt tipa Ulomek, ki …

– Prvi ukaz je dejansko spoj dveh stavkov: deklaracija prireditev

– Ulomek ime;– ime = new Ulomek(3, 4);

Page 17: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Ustvarjanje objektov

– Ulomek ime;– ime = new Ulomek(3, 4);

ime: ________

2h11b11:

¾

2h11b11

Page 18: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Ustvarjanje objektov

– Brez new objekta še NI– včasih “skrito”

Nizi– String a = "bla";– String a = new String("bla");

Tabele– int[] tabela = {1, 2, 3};– int[] tabela = new int[3];– tabela[0] = 1; …

Page 19: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Še en zgled• Poglejmo si še en zgled. Denimo, da bi radi napisali program,

ki bo prebral nek ulomek in mu prištel 1/2. • "klasično" se bomo tega lotili takole

Page 20: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Povečaj ulomek "klasično"import javax.swing.*;

public class Program {

public static void main(String[] args)

{

// vnos podatkov

String beri = JOptionPane.showInputDialog(

"Števec ulomka: ");

int stevec = Integer.parseInt(beri);

beri = JOptionPane.showInputDialog(

"Imenovalec ulomka: ");

int imenovalec = Integer.parseInt(beri);

// "delo"

stevec = stevec + 1;

imenovalec = imenovalec + 2;

// izpis

System.out.println("Nov ulomek je: " + stevec +

" / " + imenovalec);

}

}

}

Page 21: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Povečaj ulomek - objektno• Razred Ulomek• Hrani podatke o svojem števcu in imenovalcu• "se zna" povečati za drug ulomek

– Vsebuje metodo, ki ta ulomek poveča za drug ulomek

Page 22: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Ulomki - objektnopublic class Ulomek {

public int stevec;

public int imenovalec;

public Ulomek(int st, int im) {

this.stevec = st;

this.imenovalec = im;

}

public void pristej(Ulomek a) {

this.stevec = this.stevec + a.stevec;

this.imenovalec = this.imenovalec + a.imenovalec;

}

}

public class ProgramUlomek

{

public static void main(String[] args)

{

// vnos podatkov

Page 23: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Ulomki - objektno// vnos podatkov

String beri = JOptionPane.showInputDialog(

"Števec ulomka: ");

int stevec = Integer.parseInt(beri);

beri = JOptionPane.showInputDialog(

"Imenovalec ulomka: ");

int imenovalec = Integer.parseInt(beri);

Ulomek moj = new Ulomek(stevec, imenovalec);

// "delo"

Ulomek polovica = new Ulomek(1, 2);

moj.pristej(polovica);

// izpis

Systrem.out.println("Nov ulomek je: " + moj.stevec + " / " +

moj.imenovalec);

Naredimo ulomek

"Ukazujemo " ulomku

Page 24: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Primerjava• "klasično"

// "delo"

stevec = stevec + 1;

imenovalec = imenovalec + 2;

• objektno

Ulomek polovica = new Ulomek(1, 2);

moj.pristej(polovica);

Page 25: Objektno programiranje

Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in

Ministrstva za šolstvo in šport.

Fakulteta za matematiko in fiziko

http://up.fmf.uni-lj.si

Objektno programiranje

• Problem– Z analizo ugotovimo, kakšne objekte potrebujemo za reševanje– Pregledamo, ali že imamo na voljo ustrezne razrede

Standardna knjižnica Druge knjižnice Naši stari razredi

– Sestavimo ustrezne manjkajoče razrede– Sestavimo “glavni” program, kjer s pomočjo objektov rešimo problem