Objektumorientált programozás C# nyelven

Hasonló dokumentumok
Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven III.

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Objektumorientált Programozás VI.

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektumorientált programozás C# nyelven

Java programozási nyelv 9. rész Kivételkezelés

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Globális operátor overloading

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

Java programozási nyelv 4. rész Osztályok II.

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

OOP #14 (referencia-elv)

Objektumorientált Programozás III.

Programozási nyelvek Java

7. K: JAVA alapok Konzultáció

Kivételek, kivételkezelés a C++ nyelvben

Pénzügyi algoritmusok

Informatika terméktervezőknek

Kivételek. A program végrehajtása során ritkán bekövetkező események Nem a fő végrehajtási ág ; logikailag alacsonyabbrendű feladat jelzése

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Kivételkezelés a C++ nyelvben Bevezetés

Objektumorientált Programozás IV.

C#, OOP. Osztályok tervezése C#-ban

Objektum Orientált Programozás IV.

Objektumorientált Programozás VI.

Objektumorientált programozás C# nyelven

Java programozási nyelv 5. rész Osztályok III.

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Abstract osztályok és interface-ek. 7-dik gyakorlat

Osztályok. 4. gyakorlat

Objektumorientált programozás C# nyelven

Objektum Orientált Programozás VII.

Java és web programozás

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Bánsághi Anna

Kivételkezelés, naplózás. Exception handling, logging

Johanyák Zsolt Csaba: Kivételkezelés oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Java és web programozás

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

OOP: Java 8.Gy: Abstract osztályok, interfészek

Programozási technológia

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Osztályszintű elérés, kivételkezelés, fájlkezelés

Programozás II. labor

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozási nyelvek Java

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Objektumorientált programozás IX. Osztályok, objektumok

Szoftvertervezés és -fejlesztés I.

C# osztályok. Krizsán Zoltán

S ha kettészelik is: balfelöl belőle Valamivel mindig - Valamivel mindiq több marad. (Nyugat )

C++ programozási nyelv Konstruktorok-destruktorok

BME MOGI Gépészeti informatika 4.

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

OOP és UML Áttekintés

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Pénzügyi algoritmusok

C++ programozási nyelv

BME MOGI Gépészeti informatika 8.

és az instanceof operátor

Vizuális, eseményvezérelt programozás XI.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Segédanyag: Java alkalmazások gyakorlat

Objektumok inicializálása

Elemi Alkalmazások Fejlesztése II.

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Objektumorientált programozás C# nyelven

A C# programozási nyelv alapjai

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Java és web programozás

Java programozási nyelv 6. rész Java a gyakorlatban

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

III. OOP (objektumok, osztályok)

Programozás II. 6.Öröklés Dr. Iványi Péter

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Programozási nyelvek II.: JAVA

Programozási nyelvek Java

Objektum-orientált programozás

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozási nyelvek Java

Java II. I A Java programozási nyelv alapelemei

C++ programozási nyelv

Osztálytervezés és implementációs ajánlások

Átírás:

Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2006. szeptember 8. 2 1

Tulajdonságok (1) A tulajdonságok olyan intelligens mezők, amelyek olvasását és írását a programozó által megadott ún. hozzáférési metódusok végzik Az osztályt felhasználó kód számára mezőnek tűnnek Az osztály fejlesztője számára metóduspárként jelennek meg A hozzáférési metódusok bármilyen műveletet végrehajthatnak (pl. beírandó adat ellenőrzése, kiolvasandó adat kiszámítása) Nem célszerű hosszan tartó műveletekkel lelassítani a tulajdonság elérését Kerülni kell a felhasználó kód számára váratlan mellékhatásokat 2006. szeptember 8. 3 Tulajdonságok (2) Létrehozhatók csak olvasható vagy csak írható tulajdonságok is Ha nem adjuk meg az írási, illetve olvasási metódust, akkor csak olvasható, illetve csak írható tulajdonság jön létre Az olvasási és írási metódushoz hozzáférési szint adható meg Ezzel a módszerrel például létrehozhatók nyilvánosan olvasható, de csak a saját vagy a leszármazott osztályok által írható tulajdonságok Az olvasási metódust a get, az írási metódust a set kulcsszó segítségével kell megadnunk A hozzáférési metódusokat a tulajdonság definícióján belül kell megadnunk 2006. szeptember 8. 4 2

using System; Tulajdonságok (példa) class Személy private string vezetéknév = "<üres>"; private string keresztnév = "<üres>"; public string Vezetéknév get return vezetéknév; set if (value!= "") vezetéknév = value; public string Keresztnév get return keresztnév; set if (value!= "") keresztnév = value; public string Név get return vezetéknév + " "+ keresztnév; Gyakori megoldás, hogy a nyilvános tulajdonság neve nagybetűs, a hozzá tartozó privát mező neve pedig ugyanaz kisbetűs változatban A tulajdonság értékét a return kulcsszóval adjuk vissza a hívónak Nem adtunk meg set metódust, így ez a tulajdonság csak olvasható A tulajdonság megadott új értékét mindig egy value nevű rejtett paraméter tartalmazza tulajdonságok.cs 2006. szeptember 8. 5 Tulajdonságok (példa) class Személykezelő static void Main() Személy Pistike = new Személy(); Console.WriteLine("Üres nevem: " + Pistike.Név); Pistike.Keresztnév = "István"; Console.WriteLine("Félkész nevem: " + Pistike.Név); Pistike.Vezetéknév = "Kovács"; Pistike.Keresztnév = ""; Console.WriteLine("Nevem: " + Pistike.Név); Console.ReadLine(); tulajdonságok.cs 2006. szeptember 8. 6 3

Indexelők Az indexelők olyan tulajdonságok, amelyek segítségével egy osztály egyes elemei tömbhöz hasonló indexekkel érhetők el Az indexelők mindig példány szintűek Az indexelők neve mindig this Egy osztályhoz eltérő paraméterlistával több indexelőt is megadhatunk class Indexelő Minden más szempontból megegyeznek a tulajdonságokkal private int[] tömb = new int[100]; public int this[int index] get return tömb[index]; set tömb[index] = value; Indexelő próba = new Indexelő(); próba[3] = 1; System.Console.WriteLine(próba[3]); 2006. szeptember 8. 7 class HaviÉrtékesítés private int[] értékesítés = new int[12]; public int this[int index] get return értékesítés[index]; protected set értékesítés[index] = value; Indexelők (példa) public int this[string hónap] get switch (hónap) case "január": return értékesítés[0]; case "február": return értékesítés[1]; default: return 3000; Az indexelő értékét ennél az osztálynál csak az osztály saját metódusai vagy egy leszármazott osztály metódusai módosíthatják... indexelők.cs 2006. szeptember 8. 8 4

... Indexelők (példa) class HaviÉrtékesítésLekérdező static void Main() HaviÉrtékesítés kimutatás = new HaviÉrtékesítés(); System.Console.WriteLine(kimutatás[10]); System.Console.WriteLine(kimutatás["január"]); System.Console.WriteLine(kimutatás["december"]); indexelők.cs 2006. szeptember 8. 9 Kivételkezelés (1) A kivételek egyrészt nem várt, rendkívüli események, másrészt a kezelésükre szolgáló speciális osztályok Segítségükkel a hibakezelés elkülöníthető a program logikájától és egységes, strukturált módon kezelhetők a felmerülő események A kivételkezeléssel ellátott programrészt háromféle típusú blokkra osztjuk fel: A try kulcsszóval jelölt blokk tartalmazza a normál programot A catch kulcsszóval jelölt blokkok a kivételkezelő kódot tartalmazzák Egy try blokkhoz egynél több catch blokk is megadható az egyes kivételtípusok különálló kezelésére (az ún. univerzális catch blokk viszont minden kivételt kezel) Használata nem kötelező A finally kulcsszóval jelölt blokkok olyan kódot tartalmaznak, amelynek mindenképpen le kell futnia, attól függetlenül, hogy a normál programrészben történt-e rendkívüli esemény vagy sem Használata nem kötelező Hiba esetén a throw kulcsszóval hozhatunk létre kivételt 2006. szeptember 8. 10 5

Kivételkezelés (2) A kivételkezelés menete: Egy try blokkon belül hiba következik be, melynek hatására létrejön a megfelelő kivételosztály egy példánya A program nem hajtja végre a try blokk hátralévő utasításait, hanem megkeresi az első olyan catch blokkot, amely képes kezelni a bekövetkezett kivétel típusát Ha nem talál ilyet az adott metódusban, akkor először végrehajtja a try blokkhoz tartozó finally blokk utasításait, majd folytatja a keresést a metódust eredetileg hívó metódusban, és így tovább Ha megtalálta a megfelelő catch blokkot, akkor végrehajtja Ha a programban sehol sem talál megfelelő catch blokkot, akkor a program leáll A futtatókörnyezet minden programot egy univerzális catch blokkal ellátott try blokkban hajt végre, így akkor is lekezeli a bekövetkező kivételt, ha a program nem (de a program így sem folytatódhat) A megfelelő catch blokk végrehajtása után folytatódik a végrehajtás Ha létezik a megtalált catch blokkhoz tartozó finally blokk, akkor ennek az elején Ha nem létezik, akkor a megtalált catch blokkhoz tartozó try blokk vége után Destruktor végrehajtása közben keletkező kezeletlen kivételek Ha az ősosztálynak van destruktora, akkor meghívódik; ha nincs, akkor a kivétel nyom nélkül megszűnik 2006. szeptember 8. 11 Kivételkezelés (3) A futtatókörnyezet sok kivételosztályt előre definiál Ezekből származtathatunk saját kivételeket Származtatáshoz az ajánlott ősosztály a System.ApplicationException Object Exception SystemException ApplicationException ArgumentException IOException ArgumentNullException ArithmeticException ArgumentOutOfRangeException FileNotFoundException DirectoryNotFoundException StackOverflowException OutOfMemoryException DivideByZeroException OverflowException FileLoadException 2006. szeptember 8. 12 6

Kivételkezelés (példa) class Matek public static string Maradékképzés(int x, int y) try int z = x % y; return z.tostring(); catch (System.DivideByZeroException e) return e.targetsite + " Nullával sajnos nem lehet osztani."; catch (System.Exception e) return e.source + " Ismeretlen hiba történt."; finally Itt olyan kódot helyezhetnénk el, amelynek még hiba esetén is mindenképpen le kell futnia... kivételkezelés.cs 2006. szeptember 8. 13... Kivételkezelés (példa) class Kivételkezelő public static void Main() System.Console.WriteLine(Matek.Maradékképzés(5, 1)); System.Console.ReadLine(); System.Console.WriteLine(Matek.Maradékképzés(9, 0)); kivételkezelés.cs 2006. szeptember 8. 14 7