Programozási nyelvek Java

Hasonló dokumentumok
Programozási nyelvek Java

Programozási nyelvek Java

Osztályok. 4. gyakorlat

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozási nyelvek Java

Memóriakezelés, dinamikus memóriakezelés

Java és web programozás

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

Java és web programozás

OOP #14 (referencia-elv)

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

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

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

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

Mutatók és mutató-aritmetika C-ben március 19.

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

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

Programozási Nyelvek: C++

A C programozási nyelv III. Pointerek és tömbök.

Java és web programozás

A C programozási nyelv III. Pointerek és tömbök.

Programozás alapjai. 10. előadás

ISA szimulátor objektum-orientált modell (C++)

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

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Bevezetés a Python programozási nyelvbe

Pénzügyi algoritmusok

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

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

Pénzügyi algoritmusok

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

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

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?

Programozási nyelvek Java

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

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

5. Gyakorlat. struct diak {

Objektumorientált Programozás VI.

Objektumelvű programozás

C++ programozási nyelv Konstruktorok-destruktorok

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Programozási nyelvek Java

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Készítette: Nagy Tibor István

Programozás C++ -ban

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

1. Alapok. Programozás II

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

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

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

Programozás C++ -ban

C++ programozási nyelv

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Programozás I. zárthelyi dolgozat

Alkalmazott modul: Programozás 10. fejezet. Strukturált programozás: dinamikus memóriakezelés. Giachetta Roberto

Objektum Orientált Programozás V.

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Bevezetés a programozásba. 9. Előadás: Rekordok

MATLAB alapismeretek I.

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

Objektumorientált Programozás V.

Bánsághi Anna

A JavaScript főbb tulajdonságai

Programozási nyelvek Java

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Alkalmazott modul: Programozás 8. előadás. Strukturált programozás: dinamikus memóriakezelés. Dinamikus memóriakezelés. Dinamikus memóriakezelés

Generikus Típusok, Kollekciók

ELTE SAP Excellence Center Oktatóanyag 1

Szoftvertechnológia alapjai Java előadások

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Osztály és objektum fogalma

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás C++ -ban 2007/7

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása. Biztonságos adattípusok megvalósítása

3. Osztályok II. Programozás II

Programozási nyelvek Java

Adatszerkezetek 1. Dr. Iványi Péter

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

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

Programozási nyelvek (ADA)

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Programozási segédlet

1. Jelölje meg az összes igaz állítást a következők közül!

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

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

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Globális operátor overloading

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

Programozás. Osztályok, Származtatott osztályok. Fodor Attila

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

Számítógép és programozás 2

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

7. fejezet: Mutatók és tömbök

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

Átírás:

-en objektumot tárolunk. Automatikus változók Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás - végrehajtási vermen (execution stack) jönnek létre - alprogramok lokális változói (beleértve a formális paramétereknek megfelelő lokális változókat) - primitív típusok és referenciák lehetnek - automatikusan jön létre és automatikusan szűnik meg a stack-en Dinamikus változók - dinamikus memória területen (heap) jönnek létre - objektumok, mezőik - objektum, primitív típusok vagy referenciák lehetnek - utasítással hozzuk létre (allokáció) a new kulcsszó segítségével megszűnése utasítás hatására (deallokáció) Java nyelvben ilyen nincsen szemétgyűjtés Java nyelvben ez az egyetlen módja Point p = new Point(); Point q = p; 0 x 0 y p q Amennyiben p és q objektum mezőjeként van implementálva, úgy a heapen, ha alprogramban, akkor a stacken tárolódik. A fentebbi kis példa az aliasing-ot mutatja be, mikor is ugyan arra a referenciára több hivatkozás is van. Ilyenkor fontos arra figyelnünk, hogy például p.x = 1; és q.x = 2; utasítások végrehajtásakor az első és a második utasítás is ugyan azon objektum x mezőjének értékét fogja

módosítani, ellenben azzal a látszattal, hogy a p = q val két ugyan olyan tartalmú objektumot hoztunk létre. Tehát az utasítások lefutása után a Point objektum x mezőjében 2-es fog szerepelni, akkor is, ha p által iratjuk ki az x-et és akkor is, ha q által! Point p = new Point(); Point q = p; Point r = new Point(); 0 x 0 y 0 x 0 y p q r class Point{ int x,y; void movetome(point other){ other.x = this.x; this other.y = this.y; other }... void set (int x, int y){ this.x = x; STACK this.y = y; } r.movetome(p); } Ha p.x-ben például 5 szerepelne visszaíródna az értéke 0-ra

class Point{ int x,y; void movetome(point other){ other.x = this.x; other.y = this.y; other = new Point(); } void set (int x, int y){ this.x = x; this.y = y; } } indirekt hatás p(az akt. paraméter) által hivatkozott mező értéke változik az aktuális paramétert nem befojásolja Létre jön egy olyan objektum a heapen, amire nem mutat semmi. A Java nyelvben a Garbage-collector megtalálja és felszabadítja az objektumnak allokált helyet! Megjegyzések : Fontos tudni, hogy a szemétgyűjtés egy költséges folyamat, ezért a Java nyelv hatékonyság szempontjából roszabb például a C++-nál. C++ nyelvben nekünk kell számon tartanunk a létre hozott objektumokat és ezen objektumok megszüntetésével is a legtöbb esetben nekünk kell foglalkozni. Amennyiben ezt elhalasztanánk, úgy Memória leak keletkezhet. Pár szó a Garbage collector működéséről: Megnézi, hogy a végrehajtási verem akivációs rekordjaiban milyen hivatkozások vannak, majd ezen hivatkozásban vannak-e további hivatkozások és azokban is vannak-e továbbiak, amelyik objektum ily módon nem érhető el az szemét. szemét

Tömb A Java nyelvben objektum. A tömbtípus hasonlít az osztályhoz. String[] int[] int[][] A new kulcsszóval hozható létre, ebből adódóan a heap-en jön létre. Meg kell adni a méretét is. A tömb típusú változó egy referencia. A tömb egy olyan adatszerkezet, melynek elemeit gyorsan megtaláljuk a memóriában. (Indexelhető) t = new int[4]; t Aritmetikai műveletekkel meg tudjuk mondani az x. elemét. t legyen a tömb kezdete, i az indexe, s egy tömbelem mérete, ekkor képlet alapján tudjuk kiszámolni az i. indexű elem helyét a memóriában. Amennyiben 0-tól indexelünk, úgy hatékonyabb lesz a fentebbi számítás mivel, ekkor kiesik a kivonás művelet. Az így kapott képlet: Ahoz, hogy eme adatszerkezetről beszélhessünk az alábbi feltételeknek kell teljesülnie: - a tömbelemek egymás után legyenek letárolva a memóriában - minden tömbelem ugyan annyi memóriát kell, hogy igényeljen (s ugyan akkora) - nem változtathatjuk a méretét Méretnövelést csak új allokálással és az előbbi tömb értékeinek egyenkénti átmásolásával tudunk elérni. Primitív típusú tömb esetén egy tömb létrehozása kezdőértékekkel: t = new int[5]{2, 9, 7, 3, 4};

String[] string referenciákat tartalmaz String[] s = new String[3]; Olyan referenciák, amik nem hivatkoznak semmire! s s[0] = new String( Pityu ); s[1] = Jani ; s[2] = Peti ; s[0] = Pityu ; Pityu Jani Peti s Itt is oda kell figyelni, hogy referenciákról van szó: Például s[2] = s[1]; s Pityu Jani Peti Lásd Point q = p; probléma (aliasing)!

Nézzük a következő utasításokat: Point[] ps = new Point[3]; ps[0] = new Point(); ps[0].x = 5; ps[1] = new Point(); ps[1].x = 2; ps[2] = ps[1]; ps[2].x = 3; Majd irassuk ki ps[1].x-et. A konzolon a 3-as szám fog megjelenni (a sokak által várhatott 2 helyett.) Miért? : ps a ps[2].x = 3 hatására: 5 x 2 x 2 x 3 x 0 y 0 y felülíródik a 2-es 3-asra. Mivel s[1] és s[2] referencia ugyan arra a memóriaterületre hivatkozik ezért ps[1].x et kiiratva ugyan olyan mintha ps[2].x et iratnánk ki.