Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
Krizsán Zoltán iit 1.1.  Aszinkron történésről értesítés egy vagy több objektum számára.  Delegátumok segítségével valósítja meg a C#.  event típus,
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Programozás III KOLLEKCIÓK 2..
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Egy feladat megoldásának gondolatmenete. Feladat: Generáljuk véletlen számokat 1 és 6 között, amíg legalább 10 darab egyes és 10 darab hatos nem lesz.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
C# Alapok Krizsán Zoltán.
C# tagfüggvények.
C# osztályok Krizsán Zoltán 1.0.
C# osztályok Krizsán Zoltán 1.1.
C# tagfüggvények.
Krizsán Zoltán iit 1.2.  Nem kell vizuális felületnek lennie.  Delegátumok segítségével valósíthatja meg a.NET. Krizsán Zoltán iit Delegátumok C#-ban2.
Entity framework Krizsán Zoltán
Krizsán Zoltán.  Ha az algoritmus sokáig dolgozik,  de el akarjuk kerülni a „fagyást”.  Kisebb a költsége, mint az új folyamatnak.  Programozás szempontjából.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
5. előadás Parametrikus polimorfizmus. Generikus programozás
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Turóczy Attila (MCT, MCP, MCTS) Livesoft Kft. A.NET Framework a gyűjtemény osztályok széles skáláját biztosítja a fejlesztők számára. NévLeírás ArrayListIndex.
Biztonság.NET-ben Krizsán Zoltán iit1.0. Krizsán Zoltán iit Biztonság.NET-ben 2 Alapfogalmak  Azonosítás (authentication) –Hitelesítés – Ki az aki a.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Scala KOVÁCS VINCENT. Gyűjtemények – Collections  Scala több féle gyűjteménnyel rendelkezik:  Listák (Lists)  Halmazok (Sets)  Maps  Tuple  A gyűjtemények.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Java programozási nyelv Filekezelés
Java programozási nyelv Adatbekérés konzolról
Programozás III KOLLEKCIÓK.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
2012. március 21. Paulik Áron.  Ha a függvényünk feladata olyan, hogy nem lenne értelme a visszatérési értéknek, vagy csak nincs rá szükség, void típusúként.
Haladó Programozás Reflexió OE-NIK HP.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Programozás II. labor 2. rész (Adatszerkezetek)
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Programozási Nyelvek II.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Függvénysablonok használata
Előadás másolata:

Generics Krizsán Zoltán

Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben ez a template (sablon). Metódus, osztály Metódus, osztály Változóinak Változóinak Adattagjainak Adattagjainak típusait nem rögzítjük. Általános megoldások Általános megoldások

Jellemzők Növeli a kód újrahasznosíthatóságot Növeli a kód újrahasznosíthatóságot Egyszerűsíti a kódot, gyorsabb működés (nem kell a sok cast) Egyszerűsíti a kódot, gyorsabb működés (nem kell a sok cast) Általában gyűjtemények készítéséhez, segítéséhez használjuk. Általában gyűjtemények készítéséhez, segítéséhez használjuk. Vannak beépített generic-ek (System.Collections.Generic): Vannak beépített generic-ek (System.Collections.Generic):System.Collections.Generic List, Queue, Stack, LinkedList List, Queue, Stack, LinkedList

Beépített generics-ek ArrayList List<> Queue Queue<> Stack Stack<> Hashtable Dictionary<> SortedList SortedList<> ListDictionary Dictionary<> HybridDictionary Dictionary<> OrderedDictionary Dictionary<> SortedDictionary SortedDictionary<> NameValueCollection Dictionary<> DictionaryEntry KeyValuePair<>

Alkalmazhatóság Interfészhez, Interfészhez, Osztályhoz, Osztályhoz, Delegátumhoz, Delegátumhoz, Metódushoz, Metódushoz, Eseményhez Eseményhez

Eddigi megoldás Object alapú megoldás Object alapú megoldás Hozzáadás egyszerű, DE a kiolvasáskor cast. Következmény: Hozzáadás egyszerű, DE a kiolvasáskor cast. Következmény: Lassú kód (+ művelet a cast) Lassú kód (+ művelet a cast) Hibalehetőség: Hibalehetőség: System.Collections.ArrayList list = new System.Collections.ArrayList(); list.Add(3); list.Add("It is raining in Redmond."); int t = 0; foreach (int x in list) { t += x; // kivétel a 2. pozicióban, mert az nem integer t += x; // kivétel a 2. pozicióban, mert az nem integer}

Generics megoldás //Hozzunk létre egy konkrét típus osztályt List list1 = new List (); // nincs cast, nincs boxolás list1.Add(3); // A következő sor fordítási hibát okozna // list1.Add("It is raining in Redmond."); // a következő sorok biztosan, hibamentesen lefutnak int t = 0; foreach (int x in list) { t += x; t += x;}

Használat, működés Forráskódban: Hozzuk létre a generics típust. Hozzuk létre a generics típust. Hozzunk létre konkrét példányt Hozzunk létre konkrét példányt Futásidőben az RTL - amikor először szükség van arra a konkrét típusú osztályra – létrehozza.

Generics osztály definiálása Class osztaly {…} alakú Class osztaly {…} alakú Ezek után az osztályon belül a típusparaméterben szereplő típus azonosítók használhatók, mint típusok. Ezek után az osztályon belül a típusparaméterben szereplő típus azonosítók használhatók, mint típusok.

Típus paraméter alakú alakú Az osztályon belül használhatóak a típusok Az osztályon belül használhatóak a típusok Szabályok: Szabályok: Nem lehet sem interfész, sem ősosztály Nem lehet sem interfész, sem ősosztály Nem lehet attribútum típus Nem lehet attribútum típus

Konkretizálás Meg kell adni egy konkrét típust a példányosításnál. Meg kell adni egy konkrét típust a példányosításnál. Osztaly Objketum = new Osztaly (); Osztaly Objketum = new Osztaly (); MIND 2 OLDALON KELL A MIND 2 OLDALON KELL A

Példakód - deklaráció public class GenericList { private class Node { Node(T t) { next = null; data = t; } public Node Next { get { return next; } set { next = value; } } private T data; private T data;} private Node head; { head = null; } private Node head; { head = null; } public GenericList() { head = null; } public GenericList() { head = null; } public void AddHead(T t) { public void AddHead(T t) { Node n = new Node(t); n.Next = head; head = n; } Node n = new Node(t); n.Next = head; head = n; } public IEnumerator GetEnumerator() { public IEnumerator GetEnumerator() { Node current = head; Node current = head; while (current != null) { while (current != null) { yield return current.Data; current = current.Next; } yield return current.Data; current = current.Next; } }}

Példakód – konkretizálás, használat class TestGenericList { static void Main() { GenericList list = new GenericList (); for (int x = 0; x < 10; x++) { list.AddHead(x); } list.AddHead(x); } foreach (int i in list) { System.Console.Write(i + " "); } System.Console.Write(i + " "); }System.Console.WriteLine("\nDone");}}

Példakód – generics fv. static void Swap (ref T lhs, ref T rhs) { T temp; T temp; temp = lhs; temp = lhs; lhs = rhs; lhs = rhs; rhs = temp; rhs = temp;} public static void TestSwap() { int a = 1; int a = 1; int b = 2; int b = 2; Swap (ref a, ref b); Swap (ref a, ref b); System.Console.WriteLine(a + " " + b); System.Console.WriteLine(a + " " + b);}