1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.

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.
Ö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.
Programozás alapjai.
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.
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Programozás II. 3. Gyakorlat C++ alapok.
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
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.
A C++ programozási nyelvSoós Sándor 1/14 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
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.
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
A PHP 5 újdonságai Az OOP terén. Miről lesz szó? Osztályok kezelése – Új direktívák – Konstruktor – Destruktor Interfészek Kivételkezelés.
Objektum orientált programozás a gyakorlatban
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.
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 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.
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.
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 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.
AAO Csink László november.
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
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ú,
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
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.
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Informatikai gyakorlatok 11. évfolyam
V 1.0 Programozás I. Osztályok, objektumok 1 ÓE-NIK-AII, 2014.
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.
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][,
„Designer-barát” játéklogika
Hernyák Zoltán Programozási Nyelvek II.
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
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
Függvénysablonok használata
Előadás másolata:

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz

2 Adatrejtés : Az osztály a kritikus mezőit elrejti a külső programrészek elől Az adatrejtés az egységbezárás alproblémája. Cél: Az objektum képes legyen adatokat tárolni, azokat a külvilág képes legyen lekérdezni és megváltoztatni, de csak ellenőrzött módon!

3 Védelmi szintek : PRIVATE: csak az adott osztályon belül érhető el PROTECTED: az adott osztály, és a belőle származtatott gyerekosztályok érhetik el PUBLIC: bárki elérheti Ha az osztály egy DLL-ben van definiálva, akkor még külön rendelkezni kell a DLL-en kivülről láthatóságról: INTERNAL: az adott programon (DLL) belül mindenki, kifelé (külső.exe, külső.dll) senki INTERNAL PROTECTED: az adott programon belül mindenki (public), kifelé is elérhető, ha származtatunk az adott osztályból.

4 Védelmi szintek : Az alapértelmezett védelmi szint = PRIVATE. A védelem gyakorlatilag hatáskört módosít. Metódus védelme: meghívható-e? Változó védelme: lekérdezhető és módosítható-e? Sajnos nincs arra mód, hogy egy változó lekérdezhetőségét és megváltoztathatóságát külön szabályozzuk pontosan azért, mert a védelem hatáskört jelent. Ha nincs hatáskör -> nincs hozzáférés. Ha van hatáskör -> módosítható is.

5 public static void Main() { TVerem v1=new TVerem(); v1.Init(); v1.Push(16.3); v1.Push(12.4); while (v1.vm>0) float x = v1.Pop(); } public static void Main() { TVerem v1=new TVerem(); v1.Init(); v1.Push(16.3); v1.Push(12.4); while (v1.vm>0) float x = v1.Pop(); } A PRIVATE teljesen elrejti, kiolvasása sem lehetséges! class TVerem { private int vm; private float tomb[100]; public void Init() { vm = 0; } public void Push(float x) { tomb[ vm ] = x; vm++; } public float Pop() { vm--; return tomb[ vm ]; }

6 public static void Main() { TVerem v1=new TVerem(); v1.Init(); v1.Push(16.3); v1.Push(12.4); while (v1.vm>0) float x = v1.Pop(); v1.vm = ; } public static void Main() { TVerem v1=new TVerem(); v1.Init(); v1.Push(16.3); v1.Push(12.4); while (v1.vm>0) float x = v1.Pop(); v1.vm = ; } A PUBLIC teljesen láthatóvá teszi, nemcsak a kiolvasás, hanem a (gonosz) módosítás is lehetséges! class TVerem { public int vm; private float tomb[100]; public void Init() { vm = 0; } public void Push(float x) { tomb[ vm ] = x; vm++; } public float Pop() { vm--; return tomb[ vm ]; }

7 class TVerem { private int vm; public void setVM(int ujErtek) { if (ujErtek>=0 && ujErtek<vm) vm = ujErtek; else throw new Exception(”Hibás érték!”); } public int getVM() { return vm; } while (v1.getVM()>0) x += v1.Pop(); v1.setVM( ); while (v1.getVM()>0) x += v1.Pop(); v1.setVM( );

8 while (v1.vm>0) x += v1.Pop(); v1.vm = ; while (v1.vm>0) x += v1.Pop(); v1.vm = ; Azt ‘hiszi’, van ‘vm’ nevű mező. Pedig nincs. Ezek valójában fv hívások !! class TVerem { private int _vm; public int vm { set { if (value>=0 && value <_vm) _vm = value; else throw new Exception(”Hibás érték!”); } get { return _vm; }

9 Property : Virtuális adatmező. Fizikailag nem létezik az adatmező, a memóriába nem foglalódik neki hely (takarékos). Van/lehet neki ‘get’ és ‘set’ része. A ‘set’ részben a beírandó új értéket a ‘value’ kulcsszóval lehet elérni. Nem kötelező mindkét részt kidolgozni: csak ‘get’ -> csak olvasható mező csak ‘set’ -> csak írható mező

10 Előnyök: ‘szebb’, elegánsabb kód a felhasználói oldalon (mint a fv hivás) Előnyök: könnyedén tudunk csinálni meglévő fizikai mezőből virtuálisat, a közben elkészült felhasználó kódban pedig nem kell változtatni.

11 Hátrányok: sebesség-megtévesztő: a felhasználó azt hiszi, ez egy gyors elérésű fizikai mező, holott lassú fv-hívás. E miatt nem jut eszébe a sokszoros ‘fv hívások kiküszöbölése’-re figyelni: while (v.vm>0) // fv hívás !!! { … } int db = v.vm; while (db>0) { … db --; }

12 class Teglalap { public int X1,X2; public int Y1,Y2; public int Szeles { get { return X2-X1; } set { X2 = X1+value; } Teglalap t = new Teglalap(); t.X1 = 10; t.Y1 = 12; t.Szeles = 30; Teglalap t = new Teglalap(); t.X1 = 10; t.Y1 = 12; t.Szeles = 30;