Generikus Típusok, Kollekciók



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

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

Láncolt lista Bináris keresőfa Gráf Hasító táblázat. Programozás II. labor 2. rész (Adatszerkezetek)

Collections. Összetett adatstruktúrák

Generikus osztályok, gyűjtemények és algoritmusok

Programozási technológia

Programozási Paradigmák. és Technikák

Programozási nyelvek Java

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozási nyelvek Java

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

Java és web programozás

C# Zero.4 Introducing Visual C# 2.0

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Programozás II gyakorlat. 8. Operátor túlterhelés

JAVA PROGRAMOZÁS 2.ELŐADÁS

OOP #14 (referencia-elv)

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

Bánsághi Anna

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv

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

Java és web programozás

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

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

Programozási nyelvek II.: JAVA

és az instanceof operátor

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

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

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

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

Apple Swift kurzus 3. gyakorlat

Bánsághi Anna

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

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

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

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Eseményvezérelt alkalmazások fejlesztése II 2. előadás. A C# nyelvi elemei és nyelvi könyvtára. Giachetta Roberto

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Programozási nyelvek Java

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

Fejlett programozási nyelvek C++ Iterátorok

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

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

Bevezetés a programozásba 2

A Java Persistence API PersistenceAPI / 3

Osztályok. 4. gyakorlat

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

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

Objektumok inicializálása

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

OOP és UML Áttekintés

Programozási nyelvek II.: JAVA, 3. gyakorlat

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

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

Programozás C++ -ban 2007/4

JAVA PROGRAMOZÁS 3.ELŐADÁS

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?

Informatikai Kar. 3. fejezet. alapismeretek. Giachetta Roberto

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

Bevezetés a Programozásba II 12. előadás. Adatszerkezetek alkalmazása (Standard Template Library)

Programozás C++ -ban 2007/7

PowerShell v2.0 alapok. Nagy Miklós

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

Elemi adatszerkezetek

Objektumorientált programozás C# nyelven

Smalltalk 2. Készítette: Szabó Éva

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Osztály és objektum fogalma

Bevezetés, a C++ osztályok. Pere László

Programozási nyelvek Java

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

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

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

Pénzügyi algoritmusok

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

Objektumelvű programozás

Programozási nyelvek Java

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?

C++ Standard Template Library (STL)

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

3. Osztályok II. Programozás II

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

Java programozási nyelv

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

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

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

Egy dinamikus adatbázis megvalósítása egy megrendelő-raktározó alkalmazáson keresztül.

Objektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja

Programozás II. 4. Dr. Iványi Péter

Alkalmazott modul: Programozás 9. előadás. Strukturált programozás: dinamikus adatszerkezetek

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

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

C++ programozási nyelv

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

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

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Szoftvertechnológia alapjai Java előadások

Átírás:

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 System.Collections.Generics 4 Objektum Másolás Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 2 / 26

Enumeráció Egyedi értékek Konstansok nevek Enumerációs lista Érték int byte char X public enum Currency { HUF, EUR, USD, AUD, YEN }; Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 3 / 26

Enumeráció Típus Paraméter Nyilvánosság Elérhető Értékek megadhatóak private Currency _currency; private double _amount; public Money(double amount, Currency currency){...} Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 4 / 26

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

Generikus Típusok Object osztály Újrahasznosíthatóság Típus mint paraméter Struktúra Osztály Interface Delegátum Esemény Tipikusan tároló osztályok Típus ellenőrzés Típus nem lehet Ősosztály Interface Adatstruktúrák Listák Tömbök Halmazok Fák Gráfok Map-pek Stack Queue class MyArray<T> {...} Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 6 / 26

Generikus Adattag Paraméter Típus használható Előre nem ismert típus Általános használat Rugalmasság class MyArray<T> { private T[] _array;... } Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 7 / 26

Generikus Metódus Előre nem ismert típusú paraméterek Visszatérési érték Argumentum public T Get(int index) {...} public void Set(int index, T t) {...} Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 8 / 26

Megszorítások Megszorítás Jelentés where T : struct T nek érték típusúnak kell lennie where T : class T nek referencia típusúnak kell lennie where T : new() T nek kell publikus paraméter nélkülis konstruktor where T : <ősosztály> T nek az ősosztályból kell származnia where T : <interface> T nek implementálnia kell az interface t 1. táblázat. Generikus típusok megszorítási lehetőségei Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 9 / 26

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

System.Collections Névtér Kollekciókat tartalmaz Névterei Concurent Generic ObjectModel Specialized Interface ek ICollection IComparer IEnumerable IEnumerator Osztályok ArrayList CollectionBase Comparer DictionaryBase HashTable Queue SortedList Queue Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 11 / 26

IComparer Összehasonlítást ír elő Számos implementáció (Comparer) Saját implementáció Visszatérési érték negatív x < y 0 x = y pozitív x > y public interface IComparer{ int Compare( Object x, Object y ) } Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 12 / 26

IEnumerator Kollekciók bejárása Minden elem egyszer foreach Property Current : Object Egyedi bejárás Saját bejáró osztály Metódusok MoveNext() : bool Reset() : void Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 13 / 26

IEnumerable Interface Bejárható osztály public interface IEnumerable{ IEnumerator GetEnumerator(); } Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 14 / 26

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

System.Collections.Generic Generikus Struktúrák Rugalmasság Hatékonyság Újra felhasználható elemek Névtér Collections generikus elemei List<T> HashSet<T> Dictionary<TKey,TValue> Queue<T> Stack<T> Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 16 / 26

List<T> Tulajdonságok Lista Dinamikus méret Tetszőleges típusok Properties Capacity Count Item Metódusok Add Remove RemoveAll Clear Reverse Sort(Comaper) Exsists ToArray Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 17 / 26

HashSet<T> Tulajdonságok Objektumok halmaza Egyediség IEqualityComparer Saját összehasonlító osztály Properties Comparer Count Metódusok Add Remove Clear Contains SetEquals IsSubsetOf IsSupersetOf UnionWith Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 18 / 26

Dictionary<TKey,TValue> Tulajdonságok Asszociatív tömb Leképzés Kulcs érték Kulcs egyedi KeyValuePair Properties Comparer Count Keys Values Metódusok Add Remove Clear ContainsKey ContainsValue KeyValuePair foreach Key Value Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 19 / 26

Queue<T> Tulajdonságok First In First Out Properties Count Metódusok Enqueue Dequeue Peek Clear Contains ToArray Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 20 / 26

Stack<T> Tulajdonságok Last In First Out Verem Properties Count Metódusok Push Pop Peek Clear Contains ToArray Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 21 / 26

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

Másolás Eredeti Másolat Saját állapot Egyszerű típusok Objektumok Referenciák? Hozzáférhetőség Nyilvánosság Módosíthatóság? Object osztály MemberwiseClone() Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 23 / 26

MemberwiseClone protected Object MemberwiseClone() Objektum másolás Megegyező állapot bitenkénti másolás (bit to bit copy) Érték típusok Referencia típusok Hivatkozott objektum X Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 24 / 26

Shallow Copy Gyors Olcsó Bitenkénti másolás Hivatkozott objektum nem másolódik! Biztonsági kérdések Módosíthatóság 1. ábra. Shallow Copy Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 25 / 26

Deep Copy Lassú Költséges Hivatkozott objektumok másolása! Biztonságos Másolat csak másolatban módosíthat 2. ábra. Deep Copy Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 26 / 26