C# Zero.4 Overview of.net and introducing Visual C# 1.2

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "C# Zero.4 Overview of.net and introducing Visual C# 1.2"

Átírás

1 Session Code: N/A C# Zero.4 Overview of.net and introducing Visual C# 1.2 Fülöp Dávid MCT, MCPD

2 Témák A.NET Framework bemutatása Mi az a.net? Milyen szolgáltatásai vannak? Hogy épülnek egymásra a verziók? A C# 1.0/1.2 nyelvi elemeinek áttekintése Típusok, általános szintaktika, események, kivételkezelés, attribútumok, gyűjtemények

3 A.NET FRAMEWORK BEMUTATÁSA

4 Mi a.net Framework?

5 A.NET előnyei Konzisztens, egyszerűsített programozási modell Ami egyszer futott, mindig fog futni Egyszerűsített telepítés Széles platform-elérés Programnyelvek integrálása Automatikus memóriamenedzsment Típusbiztonság Könnyebb hibakeresés Kivételkezelés Biztonság Interoperabilitás

6 Mi a CLR és a CTS? Common Language Runtime A menedzselt (IL) kód futásáért felelős, fejlesztési szolgáltatásokat biztosít Common Type System Meghatározza, hogy a CLR hogyan definiálja és használja a típusokat Jitter Forráskód (C#) CSC assembly (IL, Meta) Gépi kód CLR

7 A CLR szolgáltatásai Base Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine MSIL to Native Compilers Code Manager Garbage Collector Class Loader

8 A Base Class Library Osztálykönyvtárak, melyek alapból részei a.net-nek. Objektum-orientáltak Általunk kiterjeszthető típusok Megvalósítják a Microsoft által is javasolt konvenciókat Jó esetben

9 A GC szemétgyűjtés Minden menedzselt objektumért felel Nincs destruktor Van finalizer, IDisposable pattern Futása automatikus, adaptív Kikényszeríthető, de ronthatja a teljesítményt A rövidebb életű objektumokat gyorsabban felszabadítja A nem-menedzselt erőforrások felszabadítása a programozó feladata!!!

10 .NET Framework 3.5 Servicing Release WPF Enhancements.NET-verziók Entity Framework ADO. NET Data Services.NET Framework 3.5 ASP.NET MVC WPF 3.5 LINQ Add-in Framework WF & WCF Enhancements.NET Framework 3.0 SP1 WPF WCF WF CardSpace.NET Framework 2.0 SP1

11 A CLR verziói SP NET 1.0.NET 1.1.NET 2.0.NET CLR 1.0 CLR 1.1 CLR 2.0 CLR 4

12 A C# 1.2 ÁTTEKINTÉSE

13 Elnevezési konvenciók I. A típusnevek nagybetűvel kezdődnek String, Int32, Byte, CultureAndRegionInfoBuilder A változók nevének első betűje kicsi MyClass myclass = new MyClass(); Az interfészek neve elé I betűt teszünk IDisposable, IEnumerable, IPhone Primitív típusok esetén, ha lehet, a CLS által meghatározott nevet használjuk int Int32, string String, float Single De ugyanarra a típusra mutatnak, felcserélhetők

14 Elnevezési konvenciók II. Ne használjunk rövidítéseket Van néhány kivétel: Async Több szóból álló neveknél: PascalCasing Egy név ne kezdődjön számmal, aláhúzással Ne álljon csupa nagybetűből egy név Programunk névterének neve ne egyezzen meg egy referált névterével se de úgyis a cég dönt az elnevezésekről.

15 Névterek A logikai csoportosítás egységei Hierarchikus csoportok Egy névtér több assemblyre lehet szétosztva Egy assembly több névteret is tartalmazhat Egy típus egyetlen assemblyben lehet Egy típusnak egyetlen névtere lehet Teljes név, Fully Qualified Name Pl.: System.Text.StringBuilder

16 A futtatható program belépési pontja A programnak kell tartalmaznia egy Main nevű, static metódust Visszatérési érték: void vagy int Paramétermentes, vagy string[]-öt fogad Ajánlott private-nek hagyni Ha több is van, nem fordítható a program csc /main kapcsolóval megadható az igazi

17 Lokális változók Használat előtt deklarálni kell őket Egyszerre többet is lehet Erősen típusosak Nem mindegy, hogy ref. vagy értéktípusúak! Az értéktípusúak automatikusan megsemmisülnek, ha a program kijut a metódusból A referenciatípusúakról a GC gondoskodik nem tudni, mikor

18 A változók hatóköre Egy adattag abban a blokkban látható, ahol deklarálták Egy blokk nem deklarálhat olyan változót, melynek neve megegyezik az őt tartalmazó blokk egy változójának nevével Két egy szinten lévő blokk deklarálhat azonos nevű változót

19 Tömbök Nincs dinamikus tömb! Példányosításkor meg kell adni az elemszámot, vagy az elemeket. Van kovariancia Futásidejű hiba lehet belőle!

20 Tömbök deklarációja és valódi tartalma class Ős,...- class Leszármazott : Ős, Ős*+ ősök = new Leszármazott*2]; Leszármazott*+ lidércek = new Ős*3]; //Viszont: ősök*0+ = new Ős(); //OK //fordítási hiba //futásidejű hiba!

21 FELADAT

22 Önálló feladat Tömbök Hozz létre egy saját osztályt (Celeb). Mezői: Név string, Id Iq int, alapértéke: 50 A Main metódusban Hozz létre egy Celeb tömböt, 5 elemmel Töltsd fel kedvenc celebeiddel! A nevüket a felhasználótól kérd be! A Console.ReadLine() a barátod Ha kész a tömb, írd ki mindegyik elem tulajdonságait a képernyőre Aki már ismeri a ciklusokat, ne fogja vissza magát!

23 Gyűjtemények: alapvetések A C#-ban nincsenek dinamikus tömbök A tömb méretét a készítésekor kell megadni Dinamikus tömbök helyett: gyűjtemények A System.Array osztályhoz nincs közük Add, AddRange, Remove, RemoveAt metódus Két altípusra oszthatók Listák Index-alapúak, olvasásuk a tömbökével egyező Szótárak Kulcs-alapúak, DictionaryEntryt tartalmaznak, a bennük lévő értékeket kulcsaikkal lehet olvasni

24 Gyűjtemények használata A C#1.2-ben a gyűjtemények vagy nem típus biztosak (ArrayList), vagy egy osztályra korlátozottak (StringCollection) Van Queue és Stack osztály!

25 Elágazások: if Az if kulcsszó Az elágazás elejét jelzi Mindenképpen követnie kell egy feltételnek Az else kulcsszó Nem kötelező, az elágazás utolsó eleme Nincs mögötte feltétel Több feltétel is lehet && és operátorok int i = 2; string s = Hello ; if (i > 2) { } else if ((i == 2) && s == ) { } else { }

26 Elágazások: switch A switch kulcsszó A vizsgált változó követi Egész szám, char, enum, string A case kulcsszó Egy literál vagy konstans követi A típusa meg kell egyezzen a vizsgált változóéval A default kulcsszó Nem kötelező A break kulcsszó (lehet goto, return vagy throw is) Nem kötelező, kilép a switchből Nincs cascading, de van fallthrough

27 A switch használata enum Suit { Clubs, Hearts, Diamonds, Spades } Suit trumps = Suit.Hearts; switch (trumps) { case Suit.Clubs : case Suit.Spades : color = "Black"; break; case Suit.Hearts : case Suit.Diamonds : color = "Red"; break; default: color = "ERROR"; break; }

28 FELADAT

29 Önálló feladat Elágazások Fejleszd tovább a Tömbök feladatot Ha a felhasználó tiltott nevet* ad meg, ne jöjjön létre a Celeb objektum *: Kiszel Tünde, Fekete Pákó

30 Ciklusok: while A while kulcsszó vezeti be A kulcsszót követő blokk tartalmazza a feltételt A blokk futtatása előtt vizsgálja a feltételt int i = 0; while (i < 10) { Console.WriteLine(i); i++; } // 0-tól 9ig írja ki a számokat

31 Ciklusok: do while A do kulcsszó vezeti be A while kulcsszó zárja A kulcsszót követő blokk tartalmazza a feltételt A blokk futtatása után vizsgálja a feltételt int i = 0; do { Console.WriteLine(i); i++; } while (i < 10) // 0-tól 9ig írja ki a számokat

32 Ciklusok: for A for kulcsszó vezeti be A kulcsszót követő blokk tartalmazza a feltételt és a ciklusváltozót A ciklusváltozó csak az if blokkján belül érvényes A blokk futtatása előtt vizsgálja a feltételt for (int i = 0; i < 10; i++) Console.WriteLine(i); Console.WriteLine(i); //Hiba! Több ciklusváltozó is megengedett for (int i = 0, j = 0;... ; i++, j++) { }

33 Ciklusok: foreach A foreach kulcsszó vezeti be Gyűjtemények végigfuttatására Előre megválasztható a ciklusváltozó típusa és neve Kevesebb a hibalehetőség ArrayList numbers = new ArrayList( ); for (int i = 0; i < 10; i++) numbers.add(i); foreach (int number in numbers) Console.WriteLine(number);

34 Ciklusok: break, continue A break kulcsszóra kilép az iterációból A continue kulcsszó Az iteráció következő lépésére ugrik int i = 0; while (true) { Console.WriteLine(i); i++; if (i < 10) continue; else break; }

35 FELADAT

36 Önálló feladat Ciklusok Fejleszd tovább az Elágazások feladatot Az egész beolvasásos dolgot rakd át egy ciklusba Bónusz: használj dinamikus tömböt, és a ciklus addig olvassa be az új Celebeket, amíg azt nem írja be a felhasználó, hogy ELÉG Ha ezzel már mind megvoltál, visszatérhetsz a farmville-hez.

37 Típusok A.NET-beli objektumok leírása Egységbe zárják az adatokat és a rajtuk értelmezett műveleteket Összefoglaló név class, struct, interface, enum, delegate, event Minden típus önleíró: metaadatok

38 Osztályok A class kulcsszó vezeti be Egységbezárás Tagok: adatok és rajtuk végzett műveletek Öröklés Minden osztály a System.Object leszármazottja Minden osztálynak csak egy őse lehet Polimorfizmus Őstípusként deklarált objektum értékül kaphat utódtípusút, fordítva nem!

39 Osztály/objektum kulcsszavai Osztály/objektum szintű kulcsszavak static this Tag: osztályszintű tag C# 2.0-tól osztály is lehet Példányszintű metódusokban az aktuális objektumra mutat, mely meghívta a metódust base Az ősre, annak metódusaira, mezőire, tulajdonságaira hivatkozhatunk vele

40 A metódusok paraméterei és visszatérése Csak -1-nél több paraméter lehet A params kulcsszóval dinamikussá tehető a lista Alapvetően érték szerint adódnak át A return kulcsszóval tér vissza a függvény Ha a függvény void, üres return Ilyenkor akár el is hagyható Lehet throw is...

41 Function overlading Egy metódusból több is lehet! Megegyezik a nevük, de különböznie kell a szignatúrájuknak Különböző számú ésvagy típusú paraméter A visszatérési típus nem része a szignatúrának Először mindig a fix paraméterlistájút értékeli ki

42 FELADAT

43 Önálló feladat Metódusok Fejleszd tovább a Ciklusok feladatot Írj egy metódust (Tanít) a Celeb osztályba A metódus írja át a Celeb Iqját a valós értékre (negatív), és adja vissza ezt az értéket egy mondatban, pl.: XY iqja mostantól -3. Írj egy overloadot a metódusnak, ami fogad egy integer értéket, és erre állítja be az Iqt, majd a fentihez hasonlóan visszaadja a mondatot A Main metódusban, miután létrejött minden Celeb, egy úthenger ciklus menjen végig rajtuk, és hívja meg ezt a metódust.

44 Önálló feladat Metódusok II. Fejleszd tovább az előző feladatot Készíts egy metódust, ami két vagy több Celeb objektumot kap paraméterként, és visszaadja közülük a legalacsonyabb Iqval rendelkezőt. Készíts egy metódust, ami egy alapértelmezett Celeb tömböt ad vissza. Néhány kész Celeb, megkönnyíti a további munkát.

45 Adattagok láthatóságai (C#) public: bárki, bárhol bármit láthat private: csak az osztály/objektum maga éri el protected: csak az osztály/objektum, illetve leszármazottai érik el internal: csak az osztály és a vele egy assemblyben lévő osztályok érik el protected internal: csak az osztály, annak leszármazottai ésvagy az osztállyal egy assemblyben lévő objektumok érik el

46 Paraméterek kulcsszavai Metódusparaméterek fontos kulcsszavai ref out Használata esetén a metódus nemcsak egy másolatot kap az adatból, hanem egy referenciát Pointerátadás Akárcsak a ref, de itt a kapott referenciát nem kell előre inicializálni Akkor érdemes használni, ha a metódusnak több kimeneti értéke kell, hogy legyen

47 Konstansok kulcsszavai Konstansok kulcsszavai const Fordítási idejű konstans Deklarációnál kell, hogy értéket kapjon readonly Futásidejű konstans A konstruktorban adhatunk neki értéket

48 Példányosítás Deklaráció Osztály esetén: hely foglalása a stacken Értéktípus esetén: hely foglalása és inicializálása A new operátor feladata Osztály esetén: hely foglalása és kinullázása a heapen Azonnali értékadás: értéktípusoknál Plusz a Stringnél (Plusz, ahol megírjuk )

49 Példányosítás: a konstruktor A konstruktor feladatai és felépítése Láthatóság, visszatérési érték Default konstruktor Statikus konstruktor Konstruktorláncolás A this kulcsszóval A közvetlen ős konstruktorának hívása A base kulcsszóval Kötelező, ha az ősnek nincs default konstruktora

50 Destruktor? A lefoglalt memóriát felszabadítják, nem? Elvileg nem nagyon A stack automatikusan felszabadul A heapről a GC gondoskodik Ha írunk destruktort, felszabadításkor hívódik Kézzel nem hívható, a Finalize metódus hívja A destruktor Nincs visszatérési típusa, paramétermentes Neve az osztály nevével egyezik, előtte ~ Ha egy mód van rá, inkább ne írjunk Inkább az IDisposable interfészt valósítsuk meg

51 Konstruktor- és destruktor-hívási lánc Konstruktorok Az objektumokat belülről kifelé készítik el Az inicializálás alulról felfelé történik Csak így oldható meg a base()-paraméterátadás! A futtatás fentről lefelé Destruktorok Az objektumokat kívülről befelé bontják le Az inicializálás és a futtatás is alulról felfelé történik

52 Tulajdonságok Mi a baj a mezőkkel? Nem szabályozható a hozzáférés Legfeljebb readonly-vá tehető, de az se sokat segít Mindig egy adott értéket tárol, nem számolhat A tulajdonság megoldja ezeket a gondokat get és set accessorok két metódus, elrejtve Itt még öröklik a property láthatóságát Nem feltétlenül kell egy mezőhöz kapcsolni Megoldható velük a lazy initialization

53 FELADAT

54 Önálló feladat Tulok, konstruktor Fejleszd tovább az előző feladatot Írj egy konstruktort a Celebnek, mely fogadja és beállítja a név és iq adatokat A két mezőt írd át tulajdonságra. A Név csak olvasható legyen kívülről.

55 Beágyazott típusok Osztály az osztályban Láthatja az őt tartalmazó osztály privát tagjait is Ha public, akkor kívülről létrehozható Elbonyolíthatja a kódot és a tesztelhetőséget, jól gondoljuk meg, hogy szükség van-e rá

56 Struktúrák A struct kulcsszó vezeti be Csak a System.ValueType lehet a szülője Automatikusan lezártak Adataik helyben helyezkednek el Thread stack, a szállal együtt semmisül meg Ref. objektum tagjaként a heapen van Kis típusok esetén érdemes használni Másoláskor az adat másolódik

57 Struktúrák létrehozása és törlése Konstruktor Deklarációkor hívható a default konstruktor Ezt nem lehet felüldefiniálni Nem mindig kell kézzel meghívni Egyéb konstruktoruk lehet, de minden mezőt inícializálnia kell Egy paraméterezett konstruktor megléte nem törli a defaultot! A deklarációkor csak a const mezők kaphatnak értéket Nem lehet destruktoruk

58 Típusok csoportosítása Referenciatípusok Értéktípusok Osztály, interfész, delegált, esemény Jellemzően nagyok Az adatok a heapen helyezkednek el A GC kezeli őket Struktúra, enumeráció Kicsik, gyorsan elérhetők A stacken helyezkednek el A GC nem felügyeli őket Nincs köztük leszármazás!

59 Mi a különbség? class Alma { public int X = 5; public int Y = 3; } struct Alma { public int X = 5; public int Y = 3; } Alma a1 = new Alma(); Alma a2 = new Alma(); a2.x = 8; a2.y = 1; a2 = a1; a1.x = 11; Console.WriteLine(a2.X); //mit ír ki? Bónusz kérdés: mi a hiba?

60 Értékek és referenciák

61 Itt mi történik? Object o = new Object(); int a = 42; o = a; int b = (int)o;

62 Dobozolás, kidobozolás Boxing: értéktípus -> referenciatípus Ha egy értéktípusú változót ref. típusúként használunk, dobozolásra kerül sor Unboxing: referenciatípus -> értéktípus Az un/boxing lassít, kerülendő!

63 Enumerációk Az enum kulcsszó vezeti be Átláthatóbbá teszik a kódot Tulajdonképpen csak egy szám, aminek egyes értékeihez nevet rendelünk Alapesetben egy int van mögötte Szűkíthető vele a felhasználható értékek halmaza A System.Enum típus könnyít használatukon public enum Colors { Red, Green, Blue }

64 Az öröklés szerepe Kiterjeszthető egy típus funkcionalitása Adott esetben akár teljesen megváltoztatható Csak a referenciatípusokra alkalmazható Cross-language inheritance A System.Object mindennek az őse Minden objektum rendelkezik egy alaptudással Equals, Finalize, GetHashCode, GetType, MemberwiseClone, ReferenceEquals, ToString

65 Az öröklés megvalósítása A típusnév után :, és az őslista Egyetlen ősosztály lehet, ez az első Sok gondtól megkíméltek minket... Ez után bármennyi interfész következhet Itt azért előjöhetnek bizonyos problémák... Láthatóságok Az őstípusnak azonos vagy nagyobb láthatósággal kell rendelkeznie Tagok láthatóságai Használjuk a protected láthatóságokat

66 FELADAT

67 Önálló feladat Öröklés Fejleszd tovább az előző feladatot! Származtass egy OkosCeleb osztályt a Celebből Rendelkezzen egy Iskola string tulajdonsággal Származtass egy ButaCeleb osztályt a Celebből Rendelkezzen egy HetiBulizásokSzáma int tulajdonsággal Oldd meg, hogy a Celeb mezői elérhetők legyenek a leszármazottakban Oldd meg, hogy a kód leforduljon A probléma, hogy a Celebnek nincs paramétermentes konstruktora

68 Öröklési kulcsszavak Öröklésnél fontos kulcsszavak virtual Metódus: a közvetlen leszármazottakban felüldefiniálható a metódus. override new Metódus: a szülő virtuális metódusának felüldefiniálása. Metódus: azonos szignatúrájú ősmetódus elrejtése. Nem kötelező használni.

69 FELADAT

70 Önálló feladat Virtuális metódusok Fejleszd tovább az előző feladatot! Készíts egy tulajdonságot a Celeb osztályba(/n) SzerepIndex, int, 0 kezdőértékkel Írj egy új metódust a Celeb osztályba(/n) SzerepelABlikkben, nincs visszatérési értéke, nincs paramétere. Írja ki a képernyőre, hogy a Celeb szerepel a Blikkben, és megnöveli eggyel a SzerepIndex értékét. Írd felül a SzerepelABlikkben metódust a leszármazottakban. Más szöveget jelenítsen meg, az indexet növelje.

71 Öröklési módosítók Amivel osztályokat is megjelölhetünk abstract Osztály: nem példányosítható. Metódus: nem rendelkezik kóddal. Egyben virtual is! sealed Osztály: nem származtatható belőle más osztály. Metódus: nem definiálható felül. A newval továbbra is elrejthető. Nemvirtuálissá teszi a metódushívásokat!

72 FELADAT

73 Önálló feladat Abstract Fejleszd tovább az előző feladatot! Tedd absztrakttá a Celeb Tanít metódusát (legalább az egyiket) Írd felül a Tanít metódust a leszármazottakban

74 Interfészek Az interface kulcsszó vezeti be Saját öröklési fájuk van Nem-beágyazott esetben csak public vagy internal lehet Nem példányosíthatók De egy interfészt megvalósító objektumra lehet interfészként hivatkozni Csak metódus-szignatúrákat és tulajdonságokat tartalmazhatnak Minden tagjuk implicit módon public abstract

75 Interfész vagy absztrakt osztály? Az absztrakt osztály többre képes Lehet bennük kód is Származhatnak más osztályból, megvalósíthatnak interfészeket Az interfészek csak más interfészekből származhatnak Lehetnek mezőik Lehet (van) konstruktoruk és destruktoruk Az interfésszel kevesebb a kötöttség Struktúrák is megvalósíthatnak interfészeket

76 Interfészek megvalósítása Explicit interfész-kifejtés Egy osztály megvalósíthat bármennyi interfészt A láthatóság eltűnik nem érhető el a tag Kasztolás után újra elérhető Az interfészt megvalósító osztály leszármazottainál dupla kasztolásra lehet szükség

77 FELADAT

78 Önálló feladat Interarc Fejleszd tovább az előző feladatot! Készíts egy ILégzőképes interfészt Tartalmazzon egy void Lélegzik paramétermentes metódust Fejtsd ki ezt az interfészt a Celeb osztályon Készíts egy Egysejtű osztályt Rendelkezzen egy Méret int: 1 tulajdonsággal Valósítsd meg rajta is az interfészt A Main metódusban készíts egy olyan tömböt, ami képes eltárolni Celebeket és Egysejtűeket Tegyél róla, hogy minden elem vegyen levegőt

79 Típuskonverziók Őssé kasztolás Leszármazott biztonságosan alakítható őssé Átalakítás után csak az ős tagjait érjük el Értéktípusoknál nem ennyire egyszerű... Mivel az interfész referenciatípus, dobozolni kell Memóriafoglalás, elveszett idő, kiszámíthatatlan működés Leszármazottá kasztolás Nem biztonságos

80 A típuskonverzió fajtái Implicit konverzió Nem kell jelölni Bővítő konverzióknál automatikus Nem dobhat kivételt Explicit konverzió (kasztolás) Jelölni kell InvalidCastExceptiont dobhat Az as operátor Átalakítja az objektumot, ha nem tudja, nullt ad vissza nincs kivétel

81 Operátorfajta Operátorok Példa Egyenlőség ==!= Reláció < > <= >= is Feltételes &&?: Értéknövelő/csökkentő Aritmetikai + - * / % Hozzárendelő = += -= *= /= %= <<= >>= &= ^= = int i = 0; // 0 i++; // 1 --i; // 0 i = i + 42; // 42 i -= 42; // 0

82 Saját operátor készítése Az operator kulcsszó vezeti be Meg kell adni, hogy mely operátort definiáljuk felül, vagy hogy milyen típusok között szeretnénk konverziót megvalósítani public, static metódusnak kell lennie Konverziónál több típusa van Implicit Explicit

83 Néhány szabály az operátorfelülíráshoz Nem definiálhatók felül a következők Tagoperátor (.) Hívásoperátor (()) Értékadás és összetett értékadás (=, +=, -=,...) Feltételes operátorok (&&,,?:) A checked és unchecked, a new, a typeof, az as, az is, a tömb (*+) és a pointer operátorok Ajánlott párban felüldefiniálni őket Ajánlott metódust írni helyettük

84 FELADAT

85 Önálló feladat Operátorfelülírás Fejleszd tovább az előző feladatot! Írd felül a + operátort az Egysejtű osztályban Adjon vissza egy új Celeb objektumot Ha régimódi vagy akkor visszaadhat egy olyan Egysejtűt, melynek mérete a két összeadott Egysejtű méretének összege Írj egy konverziós operátort az Egysejtű osztályba, ami képes egy Egysejtűt Celebbé alakítani A Main metódusban próbáld ki az operátorokat, hogy rendben működnek-e

86 Mi a szép ebben a kódban? int ret = myobject.dosomething(); if (ret == -1) CleanUpMess5(); else if (ret == -2) CleanUpMess2(); else if (ret == -3) CleanUpMess7(); else if (ret == -4) CleanUpMess8(); else if (ret == -5) CleanUpMess1(); else if (ret == -6) CleanUpMess666(); ret = myotherobject.dosomethingutoo(); if (ret == -1) CleanUpMessInfinity();...

87 Kivételkezelés: miért? Biztonság A kivételt nem lehet figyelmen kívül hagyni! Garantált a cleanup-kód futása Átláthatóság Jól elválik a BL és a hibakezelés Az adott kivételt kezelő blokk akár szintekkel a kivétel keletkezésének helye felett is lehet Építhetünk a kivételek hierarchiájára Gazdagabb információ a hibáról Teljes stacktrace, belső kivétel

88 Kivételkezelés: try, catch A try kulcsszó nyitja a logika blokkját A catch kulcsszó nyitja a hibakezelő blokkot A kulcsszó után adhatjuk meg a kezelendő kivétel típusát és nevét try { Console.Write("Enter a number: "); int i = int.parse(console.readline()); } catch (OverflowException oex) { Console.WriteLine(oex); }

89 Kivételkezelés: catch, catch Több catch blokkunk is lehet Minden blokk egy típust és az abból származókat kapja csak el A kiértékelés felülről-lefelé halad, az első nyer A legspecifikusabbtól a legáltalánosabbig haladjunk try { /* kivételeket kiváltó kód */ } catch (ArgumentNullException anex) { /**/ } catch (ArgumentException aex) { /**/ } catch (Exception) { /*névtelen blokk*/ } catch { /*üres blokk*/ } //???

90 Kivételkezelés: finally A finally kulcsszó nyitja a cleanup blokkot A finally blokk mindenképpen lefut Csak egy lehet belőle, a catchek után Ha van finally, nem kötelező a catch Jellemzően a fájlok lezárását stb. tesszük ide Monitor.Enter(x); try { } finally { Monitor.Exit(x); }

91 Kivételkezelés: throw A throw kulcsszóval dobhatunk saját kivételt Példányosítanunk kell egy System.Exceptionből származó objektumot Egy catch blokkban az üres throw továbbdobja az elkapott kivételt Akkor is, ha nincs rá referencia if (minute < 1 minute >= 60) { throw new InvalidTimeException( minute + " is not a valid minute"); }

92 Kivételkezelés: irányelvek Kivételdobás Normális futásnál, várható eseményeknél sose használjuk! System.Exception típust sose dobjunk! Mindig adjunk érthető leírást a Message tulajdonságban. Mindig a lehető legspecifikusabb osztályt dobjuk. Kivételkezelés Ügyeljünk a catch blokkok sorrendjére. Ha egy mód van rá vagy nem ez a cél, ne engedjünk egy kivételt a Main metódusig.

93 FELADAT

94 Önálló feladat Kivételkezelés Fejleszd tovább az előző feladatot! Ellenőrizd minden paraméterezett metódus paramétereit híváskor, ha probléma van, dobd a megfelelő kivételt. Null-referencia, értelmetlen érték Teszteld a metódusokat, és híváskor kapd el a keletkező kivételt.

95 Tömbök mélyebben, mert az jó A tömbök fajtái Vektorok, mátrixok (...), fűrészfogas tömbök A stack, queue stb. fajták nem részei a nyelvnek A tömbök tulajdonságai System.Array-leszármazottak a heapen vannak Az elemek elhelyezkedése típusfüggő Immutable nem változtatható meg a struktúra Alapesetben nem szinkronizáltak IsSynchronized: mindig false (hasznos ^^) SyncRoot

96 A System.Array tudása A tömbök használatát könnyítő metódusok Normál metódusok BinarySearch, Clear, Constrained/Copy, CopyTo, CreateInstance, Clone, GetEnumerator, GetLength, GetLongLength, GetUpplerBound, GetLowerBound, GetValue, IndexOf, Initialize, LastIndexOf, Resize, Reverse, SetValue, Sort Generikus metódusok (C#2) AsReadOnly, BinarySearch, ConvertAll, Exists, Find, FindAll, FindIndex, FindLast, FindLastIndex, ForEach, IndexOf, LastIndexOf, Resize, Sort, TrueForAll

97 Delegáltak A delegate kulcsszó vezeti be A delegált egy típus biztos függvénymutató A delegált és a hivatkozott metódus visszatérési értékének és paramétereinek egyezniük kell class Piano { public void StartMozart() {... } }... public delegate void PlayCallback(); PlayCallback callback; Piano piano = new Piano() callback = new PlayCallback(piano.StartMozart); callback();

98 FELADAT

99 Önálló feladat Képviselők ^^ Fejleszd tovább az előző feladatot! Írj két metódust az Egysejtű osztályba Méretnövelés és Méretcsökkentés néven. Eggyel növelik/csökkentik az állat méretét. Ha penge vagy (igen, Wesley Snipes), akkor erre a feladatra felülírhatod a ++ és -- operátorokat is. Írj egy metódust (ÁtméretezésInit), ami egy boolt fogad: true, ha növelni akarjuk a méretet. Egy osztályszintű delegáltat beállítja valamelyik metódusra. Írj egy metódust (Átméretezés) Egy integert fogad, és ennyiszer futtatja a delegáltat.

100 Események Az event kulcsszó vezeti be Egy objektum/osztály eseményeken keresztül értesít másokat az állapotáról Publisher és subscriber: sok-sok kapcsolat Az esemény egy delegáltra épül A paramétereket ajánlott EventArgsleszármazott formájában átadni

101 Események használata Definiálás Feliratkozás public delegate void PlayCallback(); private event PlayCallback MozartStarted; Listener lis = new Listener(); MozartStarted += new PlayCallback(lis.Listen); Feliratkozottak értesítése public void StartMozart() { if (MozartStarted!= null) { MozartStarted(); } }

102 FELADAT

103 Önálló feladat Események Fejleszd tovább az előző feladatot! Az Egysejtű dobjon fel egy eseményt, amikor beállítjuk a delegáltat valamelyik metódusra A Celeb dobjon fel egy eseményt, amikor megváltozik egy tulajdonságának értéke Iratkozz fel ezekre az eseményekre, és teszteld őket

104 Példafeladat AZ ÁLLATORVOSI LÓ 1.2

105 Az állatorvosi ló megszületése Az eddig tanultak alapján, a C# 1.2 eszközeivel készítsük el a Ló osztályt, mely rendelkezik egy névvel, egy születési idővel, egy árral és egy listával az állat eddig begyűjtött díjairól. Legyen továbbá egy eseménye (Verseny), melyre más objektumok feliratkozhatnak, és legyen egy Versenyez metódusa, mely feldobja ezt az eseményt. készítsük el az erre feliratkozó Függő osztályt. készítsünk egy listát a lovakból, és jelenítsük meg őket ábécérendben, valamint listázzuk ki a kreditnél drágább lovakat. gondoljuk meg, hogyan tudjuk a még ár nélküli lovakat kezelni.

106 RECAP

107 Összefoglalás A C# első verziója lerakta a nyelv alapjait Menedzselt, letisztult, 21. századi OOP nyelv A most megtanultak a nyelv alapjai szinte kivétel nélkül így működnek a későbbiekben Rengeteg fejlesztenivaló van... Erősen típusos, dinamikus gyűjtemények A delegate-ek kiterjedtebb használata Null értékkel rendelkező értéktípusok Kovariancia engedélyezése az eseményekre való feliratkozásnál

108 A ma megismert snippetek Használjuk őket, különben egy búúús panda leszek! class, struct, enum, interface for, while, do, foreach if, else, switch ctor propfull try, tryf Aki ezek nélkül kódol holnap, az hős. nem kap csokit!!!

109 Q&A

110 Overview of.net and introducing Visual C# 1.2 KÖSZÖNÖM A FIGYELMET!

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

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

Már megismert fogalmak áttekintése

Már megismert fogalmak áttekintése Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak

Részletesebben

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18 C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi

Részletesebben

Interfészek. PPT 2007/2008 tavasz.

Interfészek. PPT 2007/2008 tavasz. Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált

Részletesebben

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

C# osztályok. Krizsán Zoltán C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC

Részletesebben

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

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus

Részletesebben

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

C# Zero.4 Introducing Visual C# 2.0

C# Zero.4 Introducing Visual C# 2.0 Session Code: N/A C# Zero.4 Introducing Visual C# 2.0 Fülöp Dávid MCT, MCPD david.fulop@live.com Témák Mik a problémák a nyelvvel? Hol segít a C# 2.0? Fejlesztett tulajdonságok Statikus és részleges osztályok

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

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

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 1. ELŐADÁS - C# ÁTTEKINTÉS - 1 2015 Bánsághi Anna 1 of 84 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 84

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

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

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani Mi a legabsztraktabb típus a JAVA-ban? Object Mikor preferált interface-ek használata a konkrét típusok helyett? Ha egy osztály több interfacet is használhasson, vagy ha fvek implementálását a az osztályra

Részletesebben

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

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

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

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

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

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?

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? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

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

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási

Részletesebben

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

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

Generikus Típusok, Kollekciók

Generikus Típusok, Kollekciók Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26 Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections

Részletesebben

Öröklés és Polimorfizmus

Öröklés és Polimorfizmus Öröklés és Polimorfizmus Egy létező osztályból egy (vagy több) újat készítünk A létező osztályt ősnek, az újakat utódnak nevezzük Az utódok öröklik az ős minden tagját Az utódok az öröklött tagokat újakkal

Részletesebben

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

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

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

C#, OOP. Osztályok tervezése C#-ban C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat

Részletesebben

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven 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

Részletesebben

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

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

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

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

Részletesebben

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

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java 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. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ programozási nyelv Konstruktorok-destruktorok C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Láthatósági szintek Névterek és hatókörök Osztály szintő tagok Beágyazott osztályok

Részletesebben

Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven III. Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

OOP és UML Áttekintés

OOP és UML Áttekintés OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés

Részletesebben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás

Részletesebben

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

Magas szintű programozási nyelvek 2 Előadás jegyzet Magas szintű programozási nyelvek 2 Előadás jegyzet 1. Rendszerfejlesztés 0. lépés: Elemzés (analízis) 1. lépés: Tervezés a, technológia független rész b, technológia függő rész 2. lépés: Megvalósítás

Részletesebben

Programozás II gyakorlat. 6. Polimorfizmus

Programozás II gyakorlat. 6. Polimorfizmus Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven 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

Részletesebben

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

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4 C# versus Java Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3 Bedők Dávid 2016.10.01. v0.4 Azonosságok I. Curly-bracket nyelvek ({}) C, C++, PHP, JavaScript, stb.) ProgrammingTheorem

Részletesebben

Interfészek. Programozás II. előadás. Szénási Sándor.

Interfészek. Programozás II. előadás.  Szénási Sándor. Interfészek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Polimorfizmus áttekintése Interfészek Interfészek alkalmazása

Részletesebben

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

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 2. Előadás Dr. Bécsi Tamás Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok

Részletesebben

Apple Swift kurzus 3. gyakorlat

Apple Swift kurzus 3. gyakorlat Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract

Részletesebben

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok

Részletesebben

Globális operátor overloading

Globális operátor overloading Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal

Részletesebben

Vizuális, eseményvezérelt programozás X. V 1.0

Vizuális, eseményvezérelt programozás X. V 1.0 Vizuális, eseményvezérelt programozás X. V 1.0 ÓE-NIK, 2011 1 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,

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

I. rész: A Microsoft Visual C# és a Microsoft Visual Studio 2005 bemutatása. 1. Üdvözöljük a C# világában! 3

I. rész: A Microsoft Visual C# és a Microsoft Visual Studio 2005 bemutatása. 1. Üdvözöljük a C# világában! 3 Köszönetnyilvánítás Bevezetés Honnan kezdjük a könyv olvasását? A könyvben használt konvenciók és egyéb jelölések Konvenciók Egyéb jelölések Online kiegészítő tartalom Technológiai frissítések Rendszerkövetelmények

Részletesebben

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016 Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS 2015-2016 Objektumorientált programozás OOP PHP-ben 2 A PHP az 5.0-as verziójától megvalósítja az OO eszközrendszerét OO eszközök:

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Bánsághi Anna 2014 Bánsághi Anna 1 of 33 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

Részletesebben

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1 Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Eseményvezérelt alkalmazások fejlesztése II 1. előadás. A.NET keretrendszer és a C# programozási nyelv. A.NET keretrendszer Eredete

Eseményvezérelt alkalmazások fejlesztése II 1. előadás. A.NET keretrendszer és a C# programozási nyelv. A.NET keretrendszer Eredete Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 1. előadás és a C# programozási nyelv 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

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.

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. 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. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat

Részletesebben

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

Részletesebben

Programozás II. labor

Programozás II. labor Programozás II. labor 1. rész Programozási tételek Öröklődés Interfészek Eseménykezelés Kivételkezelés Visszalépéses keresés Programozás II. Programozási tételek OOP alapok ismétlése Öröklődés Öröklődés

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)

Részletesebben

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;

Részletesebben

Programozás 2., I. kötet Az objektumorientált paradigma alapjai

Programozás 2., I. kötet Az objektumorientált paradigma alapjai TÁMOP-4.1.1.F-14/1/KONV-2015-0009 A GÉPÉSZETI ÉS INFORMATIKAI ÁGAZATOK DUÁLIS ÉS MODULÁRIS KÉPZÉSEINEK KIALAKÍTÁSA A PÉCSI TUDOMÁNYEGYETEMEN Achs Ágnes Szendrői Etelka Programozás 2., I. kötet Az objektumorientált

Részletesebben

Objektumorientált Programozás VI.

Objektumorientált Programozás VI. Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 13. gyakorlat 2017. december 11-15. 13. gyakorlat Programozási nyelvek II.: JAVA 1 / 32 Az 13. gyakorlat tematikája Generikus típusokés öröklődés Clone Comparator Névtelen

Részletesebben

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 5. előadás Tömbök átméretezése public static void Resize( ref T[] array, int newsize ) Példa: int[] a=new int[20]; Array.Resize(ref a, 22); 2016. 10. 19.

Részletesebben

Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven III. Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és

Részletesebben

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

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

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

Kivételek, kivételkezelés a C++ nyelvben 2009. Kivételek, kivételkezelés a C++ nyelvben Haladó C++ programozás Kurucz Attila ELTE - IK 2009.06.09. Tartalomjegyzék Tartalomjegyzék... 2 Mi a kivételkezelés?... 3 Alapfogalmak... 3 Kivétel... 3 Try

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

Programozási alapismeretek 4.

Programozási alapismeretek 4. Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)

Részletesebben

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 6. előadás Objektumorientált programozás: öröklődés és polimorfizmus 2011.10.24. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:

Részletesebben

Felhasználó által definiált adattípus

Felhasználó által definiált adattípus Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési

Részletesebben

A Java és a C++ összehasonlítása

A Java és a C++ összehasonlítása A Java és a C++ összehasonlítása Kozsik Tamás kto@elte.hu http://kto.web.elte.hu/ Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék 2008. Kozsik Tamás (ELTE) A Java és a C++

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Bevezetés a programozásba Előadás: A const

Bevezetés a programozásba Előadás: A const Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout

Részletesebben

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor. Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Függvénymutatókkal Származtatással Interfészekkel Egyéb

Részletesebben

JAVA PROGRAMOZÁS 3.ELŐADÁS

JAVA PROGRAMOZÁS 3.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram

Részletesebben

.Net adatstruktúrák. Készítette: Major Péter

.Net adatstruktúrák. Készítette: Major Péter .Net adatstruktúrák Készítette: Major Péter Adatstruktúrák általában A.Net-ben számos nyelvvel ellentétben nem kell bajlódnunk a változó hosszúságú tömbök, listák, sorok stb. implementálásával, mert ezek

Részletesebben