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.

Objektumorientált programozás C# nyelven

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

Objektumorientált programozás C# nyelven

Bánsághi Anna

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

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

Programozás II. labor

Magas szintű programozási nyelvek 2 Előadás jegyzet

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

Programozási nyelvek Java

Informatika terméktervezőknek

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

Bevezetés a C++ programozási nyelvbe

Származtatási mechanizmus a C++ nyelvben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

117. AA Megoldó Alfréd AA 117.

Programozás C++ -ban 2007/4

Java és web programozás

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

Access adatbázis elérése OLE DB-n keresztül

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

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

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

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.

7. K: JAVA alapok Konzultáció

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

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?

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

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

A WEB programozása - JSP1 dr.gál Tibor őszi félév

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

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

Programozás II gyakorlat. 4. Öröklődés

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

INFORMATIKAI ALAPISMERETEK

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

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

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

PHP5 Új generáció (2. rész)

C++ programozási nyelv

Java és web programozás

INFORMATIKAI ALAPISMERETEK

Kalapácsvetés 2016 szöveges

Segédanyag: Java alkalmazások gyakorlat

Szoftvertechnológia alapjai Java előadások

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

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

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

BME MOGI Gépészeti informatika 4.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Bánsághi Anna

OOP #14 (referencia-elv)

Programozási nyelvek II.: JAVA

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

4. Öröklődés. Programozás II

C# feladatok gyűjteménye

Elıírt lépésszámú ciklusok

Elemi Alkalmazások Fejlesztése II.

Hallgatói adatok szolgáltatása a FIR felé

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

Programozás II. ATM példa Dr. Iványi Péter

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Modern unit és integrációs tesztelés

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

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

BME MOGI Gépészeti informatika 8.

Java és web programozás

Eseményvezérelt alkalmazások fejlesztése II 3. előadás. Windows Forms dinamikus felhasználói felület, elemi grafika

2.3. A C nyelv utasításai

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

.NET alapszolgáltatások 2.

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Programozási nyelvek II.: JAVA

FELÜLET...13 PROJEKTTERV...14

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

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

C# gyorstalpaló. Készítette: Major Péter

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

Internet programozása. 3. előadás

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Pénzügyi algoritmusok

Az új be- és kimenet könyvtár

Általános statisztika II. Kriszt, Éva Varga, Edit Kenyeres, Erika Korpás, Attiláné Csernyák, László

CSORVÁS VÁROS ÖNKORMÁNYZATA KÉPVISELŐ-TESTÜLETÉNEK 16/2014.(XI.30.) ö n k o r m á n y z a t i r e n d e l e t e

Á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

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

Tulajdonságok (példa) using System; class Személy private string vezetéknév = "<üres>"; private string keresztnév = "<üres>"; 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 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; 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

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 Minden más szempontból megegyeznek a tulajdonságokkal class Indexelı 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

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

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

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