BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező o string név o int Munkaóra egy hónapban ledolgozott órák száma o int Órabér o egy sztring és két egész típusú paraméterrel rendelkező konstruktor, melyekkel a mezők inicializálásra kerülnek; a mezők alapértelmezett értékei az üres sztring és nulla. elérési metódusok get és set metódusok a mezőre. virtuális metódus o Fizetés paramétere nincs, a visszaadott hosszú egész típusú érték a munkaóra és az órabér szorzataként kiszámított fizetés, o Megjelenít paramétere nincs, a beosztott nevét, ledolgozott munkaóráit, órabérét és fizetését adja vissza formázott sztringként. Vezető osztály, mely a Beosztott osztályból származik: o long Alap havi fizetés o long Prémium az egy hónapban kapott prémium o egy sztring és két hosszú egész típusú paraméterrel rendelkező konstruktor, melyekkel a mezők inicializálásra kerülnek; a munkaóra és az órabér nulla értékkel kerüljön inicializálásra; a mezők alapértelmezett értékei az üres sztring és a nulla. virtuális metódusokat lecserélő metódusok o Fizetés paramétere nincs, a visszaadott hosszú egész típusú érték az alapfizetés és prémium összegeként kiszámított fizetés, o Megjelenít paramétere nincs, a beosztott nevét, ledolgozott munkaóráit, órabérét, alapfizetését, prémiumát és a fizetését adja vissza formázott sztringként. A főprogramban az adatok beolvasásával vagy konstans adatokkal hozzon létre legalább egy vezető és két beosztott objektumpéldányt, majd írassa ki a képernyőre az adataikat! Megoldási mód: konzolalkalmazás Oktatási cél: öröklés és polimofizmus bemutatása 1
A fenti osztályok osztálydiagramja: A programkód: static void Main(string[] args) Vezető v1 = new Vezető("Kovács Tamás", 750000, 2500000); Console.WriteLine("A fönök adatai: \n" + v1.megjelenít()); Beosztott d1 = new Beosztott(); d1.setnév("nagy Balázs"); d1.munkaóra = 201; d1.órabér = 1570; Beosztott d2 = new Beosztott("Kiss Anna", 176, 1250); Console.WriteLine("\nA beosztottak adatai: "); Console.WriteLine(d1.Megjelenít()); Console.WriteLine(d2.Megjelenít()); Console.ReadLine(); class Beosztott // protected mező a származtatott osztályból látható, de kívülről nem protected string név; public int Munkaóra set; get; // tulajdonság public int Órabér set; get; // tulajdonság // konstruktorok public Beosztott(string név = "", int munkaóra = 0, int órabér = 0) this.név = név; Munkaóra = munkaóra; Órabér = órabér; 2
// elérési metódusok public string getnév() return név; public void setnév(string érték) név = érték; // virtuális metódusok virtual public long Fizetés() return Munkaóra * Órabér; virtual public string Megjelenít() return String.Format("0,-15 1,10 2,10 3,12 ", név, Munkaóra, Órabér, Fizetés()); class Vezető : Beosztott private long Alap get; set; private long Prémium get; set; // konstruktor public Vezető(string név, long alap, long prémium) : base(név, 0, 0) Alap = alap; Prémium = prémium; // a virtuális metódusokat lecserélő metódusok override public long Fizetés() return Alap + Prémium; override public string Megjelenít() return String.Format("0,-15 1,10 2,10 3,10 4,12 5,12", név, Munkaóra, Órabér, Alap, Prémium, Fizetés()); 3
Gyakorló feladatok - öröklés 1. Készítsen konzolalkalmazást egy évfolyamra vonatkozó adatok kezelésére! A feladat megoldásához hozza létre a következő struktúrát és osztályokat! Eredmény osztály o string Neptunkód o int Jegy o egy sztring és egy egész típusú paraméterrel rendelkező konstruktor, ami inicializálja a tulajdonságokat. metódus o Megjelenít paramétere nincs, a neptun kódot és a jegyet adja vissza formázott sztringként. Azonosító osztály: o string Neptunkód o string Név o két sztring paraméterrel rendelkező konstruktor, melyekkel a tulajdonságok inicializálásra kerülnek; a tulajdonságok alapértelmezett értékei az üres sztringek. virtuális metódus o Megjelenít paramétere nincs, a neptunkódot és a nevet adja vissza formázott sztringként. Tantárgy osztály, ami az Azonosító osztályból származik: o int Óraszám o int Kredit o két sztring és két egész típusú paraméterrel rendelkező konstruktor, melyekkel a tulajdonságok inicializálásra kerülnek; a mezők alapértelmezett értékei az üres sztringek és nullák. virtuális metódust lecserélő metódus o Megjelenít paramétere nincs, a tárgy nevét, neptunkódját, óraszámát, kreditértékét adja vissza formázott sztringként. A sztring létrehozásakor használja az alaposztály hasonló metódusát! Hallgató osztály, ami az Azonosító osztályból származik: tulajdonság o long Ösztöndíj o List<Eredmény> Tárgyai o Tantárgyak FelvethetőTárgyak o két sztring és egy hosszú egész típusú paraméterrel rendelkező konstruktor, melyekkel a mezők inicializálásra kerülnek; a mezők alapértelmezett értékei az üres sztring és nulla; a konstruktor hozza létre a Tárgyai listát is. Ezen kívül a konstruktor elkészíti a 4
Tantárgyak osztály FelvethetőTárgyak objektumát, amelyből a tárgyakat kiválaszthatjuk. metódusok o TárgyatFelvesz paramétere tárgy Neptun kódját tartalmazó sztring és egy egész típusú jegy adat, visszaadott értéke nincs, létrehoz a paraméterekkel egy Eredmény objektumot, és azt hozzáadja a Tárgyai listához, o TárgyatKeres - paramétere tárgy Neptun kódját tartalmazó sztring, és visszaadja az Eredmény típusú objektumot, ami jelzi, ha a tárgyat felvette a hallgató, ellenkező esetben null a visszatérési érték. o TárgyatTöröl - paramétere egy sztring, visszaadott értéke nincs, a Tárgyai listából törli a Neptun kód sztringgel azonosított elemet, o ÖsszesÓraszám paramétere nincs a visszaadott egész érték a tárgyai listában szereplő Neptun kódú tantárgyak óraszámainak összege. o ÖsszesKredit paramétere nincs a visszaadott egész érték a tárgyai listában szereplő Neptun kódú tantárgyak kreditjeinek összege. o SúlyozottÁtlag paramétere nincs a visszaadott egész érték a tárgyai listában szereplő Neptun kódú tantárgyak kreditjeinek és eredményeinek súlyozott átlaga. o virtuális metódus o Megjelenít paramétere nincs, a nevet és a neptunkódot, valamint a tárgyai listában szereplő tantárgyak adatait formázottan tartalmazó listát ad vissza sztringként. Tantárgyak osztály: private adatmező o List<Tantárgy> tárgyak o paraméter nélküli konstruktor, mely létrehozza a tárgyak listát, és feltölti értékekkel. metódusok o GetTárgynév paramétere a tárgy Neptun kódját tartalmazó sztring, és visszaadja a kódhoz tartozó tárgynevet (string), vagy üres stringet, ha nincs ilyen tárgy. o GetÓraszám paramétere a tárgy Neptun kódját tartalmazó sztring, és visszaadja a kódhoz tartozó óraszámot (int), vagy nullát, ha nincs ilyen tárgy. o GetKredit paramétere a tárgy Neptun kódját tartalmazó sztring, és visszaadja a kódhoz tartozó kreditszámot (int), vagy nullát, ha nincs ilyen tárgy. o Megjelenít paramétere nincs, tárgyak listában szereplő tantárgyak adatait formázottan tartalmazó listát ad vissza sztringként. o Szükség esetén további private metódusok is definiálhatók, mint például a TárgyatKeres(). 5
A fenti osztályok osztálydiagramja: 6