130 likes | 215 Views
Microsoft.NET környezet. Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz. 1. Adattagok, adatmezők. Adattag : Az osztály mezői, amelyek az objektum állapotát tárolják. Kétfajta mező létezik: Példányszintű mező : ebből annyi darab lesz, ahány
E N D
Microsoft.NET környezet Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz 1
Adattagok, adatmezők Adattag: Az osztály mezői, amelyek az objektum állapotát tárolják. Kétfajta mező létezik: Példányszintű mező: ebből annyi darab lesz, ahány példányt készítünk az adott osztályból. Minden példánynak saját mezője lesz, ezek nem közösek a példányok között. A mező elérése: … példánynév.mezőnév … Osztályszintű mező: ebből az egész program futása során 1 db lesz, függetlenül attól, hány példányt készítünk (akár ha 0 db-t is). Ezen mezőt minden példány (is) elérheti, a mező közös a példányok között. A mező elérése: … osztálynév.mezőnév … 2
Mezők elrejtése class TKutya { publicstatic bool tudRepulni = false; publicstatic bool tudUszni = true; publicstatic int labakSzama = 4; public double sulya; publicstring neve; }; public static void Main() { TKutya bloki = new TKutya(); bloki.sulya = 4.3; bloki.neve = ”Bodri”; bloki.tudRepulni = true; // hibás TKutya.tudRepulni = true; // jó } Új ‘TKutya’ létrehozása = double+string memóriaigénye. STATIC kulcszó: osztálymező Jelöletlen mező: példányszintű 3
Adattagok, adatmezők Konstans: Az osztály olyan mezője, amely a kezdőértékadás során kapja meg az értékét, és később ezt már nem lehet megváltoztatni. Minden konstans egyúttal osztályszintű mezőnek minősül. Hivatkozni ezért osztálynéven keresztül lehet rá: … osztálynév.konstansnév … class TKor { public const double Pi = 3.14; public double sugar; } Osztályon kívül az elérés osztálynéven keresztül TKor kor = new TKor(); kor.sugar = 12.4; double kerulet = TKor.Pi * kor.sugar * kor.sugar; 4
Adattagok, adatmezők class TKor { public const double Pi = 3.14; public double sugar; public double kerulet() { return sugar*sugar*Pi; } } TKor kor = new TKor(); kor.sugar = 12.4; double k = kor.kerulet(); Osztályon belül az elérés közvetlen. 5
Metódusok Az osztályok a mezőkön kívül fv-eket és eljárásokat tartalmaznak. Ezeket közös néven metódusoknak nevezzük. Kétfajta metódust ismerünk: Példányszintű metódus: meghívása példányon keresztül történhet. Hozzáfér az osztály példányszintű és osztályszintű mezőihez is. Osztályszintű metódus: meghívása osztáynéven keresztül történik. Nem férhet hozzá példányszintű mezőkhöz, csak osztályszintűekhez. 6
Adattagok, adatmezők class TAllat { public int xPos, yPos; public double Menj(int ujX, int ujY) { xPos = ujX; yPos = ujY; } } TAllat kacsa = new TAllat(); kacsa.Menj(10,20); TAllat macska = new TAllat(); macska.Menj(30,20); 7
Adattagok, adatmezők class TTermeszet { static public string Evszak; public void evszakValt() { switch(Evszak) { ”nyár”: Evszak = ”ősz”;break; ”ősz”: Evszak = ”tél”;break; ... } } TTermeszet.Evszak = ”tavasz”; TTermeszet.evszakValt(); string most = TTermeszet.Evszak; Nem túl szerencsés megoldás. 8
Metódusok Osztályszintű metódust alkalmazunk, ha: A metódus futásához minden információt paraméterként adunk át: class Math { public static double Sin( double degree ) { ... } } 9
Metódusok Osztályszintű metódust alkalmazunk, ha: Az adott osztályból úgysem lesz példányosítva, mert úgyis csak 1 db példány lenne belőle. Ekkor az osztály minden mezője osztályszintű, és minden metódusa osztályszintű: class Console { public static double WriteLine(...) { ... } } 10
Metódusok Osztályszintű metódust alkalmazunk, ha: Az adott metódus nem hivatkozik példányszintű mezőre, sem metódusra. Csak az osztályszintű mezőkkel dolgozik: class TTermeszet { static public string Evszak; public void evszakValt() { switch(Evszak) { ”nyár”: Evszak = ”ősz”;break; ”ősz”: Evszak = ”tél”;break; ... 11
Metódusok Osztályszintű metódusból hívhatunk másik metódust, de csak ha az is osztályszintű! Példányszintű metódus hívására nincs lehetőség ( ugyanis példányszintű metódus hívásához példány is kellene ) class TTermeszet { static public string Evszak; static public int datum; public void datumNovel() { datum ++; if (datum==60) // március 1 evszakValt(); 12
Metódusok Példányszintű metódusból meghívhatunk másik példányszintű metódust is, és osztályszintű metódust is. class TKutya { double sulya = 10; public void eszik() { sulya += 0.1; // 10 dekát hízik vakkantas(); } public void vakkantas() { Console.Write(”vau-vau”); } 13