Objektno programiranje

Preview:

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

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

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.

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.

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, ...

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, …

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.

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

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)

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.

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();

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)

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

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

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

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”, …

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);

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

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; …

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

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);

}

}

}

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

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

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

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);

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

Recommended