1 / 24

Objektno programiranje

Objektno programiranje. Objektno programiranje. 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

meena
Download Presentation

Objektno programiranje

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Objektno programiranje Objektno programiranje

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

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

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

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

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

  7. Princip črne škatle 92 Koliko je tvoj IQ ? • 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 …

  8. 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)

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

  10. 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)

  11. Moj prvi razred Definicija razreda Oznaka objekta naredimo objekt ukazujemo objektu Oglejmo 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(); } }

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

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

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

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

  16. Ustvarjanje objektov Ulomek ime; ime = new Ulomek(3, 4); ime: ________ 2h11b11 2h11b11: ¾

  17. Š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

  18. 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); } } }

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

  20. "Objektni" program

  21. Ulomki - objektno using 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

  22. Ulomki - objektno Naredimo ulomek "Ukazujemo " ulomku 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); 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);

  23. Primerjava "klasično" // "delo" stevec = stevec + 1; imenovalec = imenovalec + 2; objektno Ulomek polovica = new Ulomek(1, 2); moj.pristej(polovica);

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

More Related