C# objektumorientált programozás

11. osztály 11.évf_c# C# programozás Programozás

Az obejktum orientált programozás célja, hogy egyszerűsítse a szoftver tervezést és megvalósítást. Az objektum orientált programozás alapelemei az osztályok. Egy osztály tartalmazhat változókat és metódusokat. Az osztályokból készülnek tulajdonképpen az objektumok (példányok).

Például: készítünk egy Ember osztályt, amelynek 3 tulajdonsága lesz: név (string) kor (int) település (string). Ebből készíthetünk el egy konkrét személyt valamilyen konstruktorral. Lásd: 3.példa.

Fogalmak:

Osztály: egy sablon, ami alapján létrehozzuk az objektumokat.

Konstruktor: Olyan metódus, ami az objektum létrehozásakor automatikusan lefut. Általában a tagváltozóknak adunk vele kezdőértéket.

Objektum, példány: a valóság modellezendő része. Logikailag összetartozó rész. Részei a tagváltozók és a metódusok. Példányosítás: amikor egy osztály alapján hozunk létre objektumot.

Tagváltozó: az objektum adattárolásra használt részei, az objektum tulajdonságait tárolják.

Metódus: eljárás, vagy függvény, ami az adott objektumon műveletet végez.

Statikus tagválltozó: osztályon belüli változó, amit az osztály minden példánya használhat.

Statikus metódus: osztályon belüli közös metódus. Használhatjuk vele a statikus tagváltozókat.

Encapsulation (beburkolás): privát adattagok és metódusok használatát jelenti az osztályokban. Az encapsulation biztosítja, hogy az osztályok adattagjai csak a metódusokon keresztül érhetőek el, ami megakadályozza az adatok véletlen módosítását és a program hibáit. Az objektumok elrejtik belső állapotukat a külvilág elől.

Inheritance (öröklődés): lehetővé teszi az osztályok tulajdonságainak, viselkedésének öröklődését. Ezek alapján új osztályokat is létre lehet hozni egyszerűen.

Polimorfizmus: lehetővé teszi, hogy az osztályok metódusai a különböző paraméterekre más és más módon reagáljanak.

Absztrakció: segít modellezni a valós világ dolgait.

Tagváltozók és metódusok hozzáférési szabályai:

Public: a programból bárhonnan elérhetőek

Private: csak abból az osztályból elérhetőek, ahol létrehoztuk (deklaráltuk) őket

Protected: nem csak a saját osztályból, hanem a leszármazottakból is elérhetőek.

Rövidítés

Sok érettségi feladatban látunk ilyen jelet => Mit jelent? Ez egy rövidítés. (property expression)Például van egy azonosító kódja minden személynek, aminek az utolsó karaktere f (férfi) vagy n (nő). Készítsünk egy függvényt, ami nők esetében igaz értéket ad vissza!

Példák, feladatok

példa1: saját osztály létrehozása: class kulcsszó, nagybetűs névvel célszerú jelölni. A példány létrehozásánál hasonlóan járunk el, mint a változóknál: megnevezzük az osztályt, majd az objektumot. Ennek az osztálynak lesz 2db tagváltozója is. Ezeknek adunk 1-1 értéket is.

példa2: osztály bővítése eljárással. Kérjük be a tagváltozók értékét eljárás segítségével!

példa 3: Olvassuk be személyek adatait (név, kor, település: Teszt Elek, Békéscsaba, 33) egy txt fájlból. Minden sor egy személy adatait tartalmazza. Az adatokat tároljuk el listában, amihez készítünk egy saját osztályt is.

Először definiáljuk saját osztályunkat, amelynek a struktúráját a beolvasni kívánt adatoknak megfelelően alakítjuk ki. class Ember…

Ezután beolvassuk a szöveges fájlt soronként, és minden sorát átalakítjuk egy ember osztálypéldánnyá: A beolvasást a StreamReader végzi, soronként képes adatokat beolvasni fájlból. A while ciklus addig fut, amíg a fájl végére nem ér.
Az adatok[] tömbbe olvasunk be egy konkrét sort a txt-ből, majd daraboljuk szét a sor.Split(‘,’) segítségével. Az Ember ember = new Ember(); tehát az aktuális személyt jelenti, akinek az adatait éppen feldolgozzuk. Ember a típusa, hiszen ez az osztályunk neve. Ennek az adott személynek mentjük el külön-külön az adatait. ember.Nev = adatok[0] Tehát az adatok tömb 0. eleme lesz a neve. Ha minden adatát beolvastuk, akkor az ember objektumot hozzáadjuk a lista nevű listához.
Ha szeretnénk kiíratni valamelyik személy adatait, akkor a listaelem indexével, és a tulajdonságával tudjuk ezt megtenni.

Tehát az első személy, aki a txt-ben volt, lesz a lista[0] Ezt így nem lehet még kiíratni, meg kell adni, konkrétan melyik adatát akajuk kiválasztani. A neve így néz ki: lista[0].nev

Az összes adata: lista[0].Nev, lista[0].Kor, lista[0].Varos

Ha esetleg van fejléc a txt fájlban, mint érettségin, akkor az első sort be lehet olvasni egy plussz változóba., majd utána folytatni a while ciklussal.

Ha a File.ReadAllLines-t használjuk, akkor így néz ki a beolvasás:
Ha van fejléc, de nem kell, mint pl. a 2022-es SuperBowl feladatnál, a for ciklus 1-től megy nem 0-tól.
Ha mégis kell a fejléc, akkor egy if segítségével el tudjuk menteni a 0. sor értékét külön.