objektno programiranje
Post on 15-Jan-2016
69 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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.
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.
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, ...
•
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, …
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!• 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/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();
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)
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
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 (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
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”, …
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
Š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"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);
}
}
}
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
"Objektni" program
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
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
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
top related