Download - Objektno programiranje
![Page 1: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Objektno programiranje
![Page 2: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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 njem
• Vsak objekt pripada nekemu razredu. Če pripada objekt x razredu R, potem pravimo tudi da je x objekt tipa R.
![Page 3: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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 standardnih knjižnic jezika C# :
– Objekt tipa StreamReader 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.Console predstavlja standardni izhod. Kadar želimo kaj izpisati na zaslon, pokličemo metodo WriteLine na objektu System.Console.
– Objekt tipa Random predstavlja generator naključnih števil.• Seveda pa so objekti uporabni predvsem zato, ker lahko programer definira nove
razrede in objekte.
![Page 4: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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, seštej, obratna vrednost, lepo izpiši, ...
•
![Page 5: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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 C#• 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, proženje dogodkov, odzivanje
na dogodke, …
![Page 6: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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!• 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://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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/objektno progr.• metoda f na podatku x: • Klasično:
– Izvedi metodo f na podatku x – f(x);
• Objektno: – podatku/objektu x signaliziraj, da naj izvede metodo f – x.f();
![Page 10: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Od kje razredi?• Veliko vgrajenih (oziroma v standardnih knjižnicah) v C#
– .NET Framework C# je .NET jezik – ima dostop do vseh razredov, definiranih v knjižnicah (zbirkah
razredov) okolja .NET Glej npr. http://msdn2.microsoft.com/sl-si/library/ms229335(en-us).aspx
– Razporejeni v imenske prostore System, System.IO …
• Drugi viri– Naši “stari” razredi– Drugi programerji
• Potrebujemo dostop do ustrezne datoteke (dll, exe)
![Page 11: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Moj prvi razredOglejmo si naslednji program:
using System;
public class MojR{
private string mojNiz;
public MojR(string nekNiz) {
mojNiz = nekNiz;
}
public void Izpisi() {
Console.WriteLine(mojNiz);
}
}
public class Pozdrav {
public static void Main(string[] arg) {
MojR prvi;
prvi = new MojR("Pozdravljen, moj prvi objekt v C#!");
prvi.Izpisi();
}
}
Oznaka objekta
Definicija razreda
naredimo objekt
ukazujemo objektu
![Page 12: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
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 13: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Ustvarjanje objektov• Razred je šablona, ki definira spremenljivke in metode skupne vsem objektom iste
vrste. • class
– Načrt objekta, šablona• Primerek razreda (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 14: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
C#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 15: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
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 16: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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;– ime = new Ulomek(3, 4);
ime: ________
2h11b11:
¾
2h11b11
![Page 17: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Š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 18: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Povečaj ulomek "klasično"using System;
namespace UlomkiKlasika {
class Program
{
public static void Main(string[] args)
{
// vnos podatkov
Console.Write("Števec ulomka: ");
string beri = Console.ReadLine();
int stevec = int.Parse(beri);
Console.Write("Imenovalec ulomka: ");
beri = Console.ReadLine();
int imenovalec = int.Parse(beri);
// "delo"
stevec = stevec + 1;
imenovalec = imenovalec + 2;
// izpis
Console.WriteLine("Nov ulomek je: " + stevec + " / " + imenovalec);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
![Page 19: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
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 20: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
"Objektni" program
![Page 21: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Ulomki - objektnousing System;
namespace UlomkiObjektno
{
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;
}
}
class Program
{
public static void Main(string[] args)
{
// vnos podatkov
![Page 22: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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 - objektnoConsole.Write("Števec ulomka: ");
string beri = Console.ReadLine();
int stevec = int.Parse(beri);
Console.Write("Imenovalec ulomka: ");
beri = Console.ReadLine();
int imenovalec = int.Parse(beri);
Ulomek moj = new Ulomek(stevec, imenovalec);
// "delo"
Ulomek polovica = new Ulomek(1, 2);
moj.pristej(polovica);
// izpis
Console.WriteLine("Nov ulomek je: " + moj.stevec + " / " +
moj.imenovalec);
Naredimo ulomek
"Ukazujemo " ulomku
![Page 23: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
Primerjava• "klasično"
// "delo"
stevec = stevec + 1;
imenovalec = imenovalec + 2;
• objektno
Ulomek polovica = new Ulomek(1, 2);
moj.pristej(polovica);
![Page 24: Objektno programiranje](https://reader033.vdocuments.pub/reader033/viewer/2022061603/56814992550346895db6d6ba/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
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