objektno programiranje
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 PresentationTRANSCRIPT
![Page 1: Objektno programiranje](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081421/5681498e550346895db6d3c7/html5/thumbnails/25.jpg)
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