Programozási nyelvek Java



Hasonló dokumentumok
JAVA PROGRAMOZÁS 3.ELŐADÁS

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

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

Programozási nyelvek Java

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

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

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

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

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

OOP: Java 4.Gy: Java osztályok


Programozás II. labor

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

1.sz melléklet Nyári gyakorlat teljesítésének igazolása Hiányzások

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

OOP: Java 7.Gy: Öröklődés, referenciák

Programozás I. Első ZH segédlet

JAVA PROGRAMOZÁS 2.ELŐADÁS

3. Gyakorlat Ismerkedés a Java nyelvvel

Öröklés és Polimorfizmus

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

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

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

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

Bánsághi Anna

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

Programozási Paradigmák és Technikák

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?

Bánsághi Anna

Programozási nyelvek Java

Osztály és objektum fogalma

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

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

Java és web programozás

C# gyorstalpaló. Készítette: Major Péter

Objektumorientált programozás C# nyelven

Adatstruktúrák, algoritmusok, objektumok

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Szoftvertechnológia alapjai Java előadások

Objektumorientált programozás C# nyelven

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Osztályok. 4. gyakorlat

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

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

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

Java VII. Polimorfizmus a Java nyelvben

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

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Java VII. Polimorfizmus a Java nyelvben

A Jáva programozási nyelv rejtelmei

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

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

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

Programozási technológia

Borkereskedő. Dokumentáció a Programozási módszertan elmélete című tárgy beadandó programjához. Magyar Attila mattila@inf.elte.hu

OOP #14 (referencia-elv)

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

Programozási nyelvek Java

117. AA Megoldó Alfréd AA 117.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Objektumorientált programozás C# nyelven

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

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

Programozási nyelvek Java

Fizika InfoRmatika Kémia Alapok. Az Erdélyi Magyar Műszaki Tudományos Társaság kiadványa. Megjelenik kéthavonta (tanévenként 6 szám)

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

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

Programozási nyelvek Java

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

Java és web programozás

100% BIO Natur/Bio kozmetikumok és testápolás

Programozási nyelvek II.: JAVA

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Informatikai Kar. 4. fejezet. Giachetta Roberto

Java programozási nyelv

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Bevezetés a Python programozási nyelvbe

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

A WEB programozása - JSP1 dr.gál Tibor őszi félév

ANDROID ALKALMAZÁSFEJLESZTÉS

és az instanceof operátor

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

Programozás 5. Dr. Iványi Péter

BME MOGI Gépészeti informatika 8.

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

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


Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

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

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

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

RIA Rich Internet Application

Programozás alapjai II. (4. ea) C++

ANDROID ALKALMAZÁSFEJLESZTÉS

Információs Technológia

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

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

Segédanyag: Java alkalmazások gyakorlat

Generikus Típusok, Kollekciók

Átírás:

Objektum-orientált szemlélet - Egységbe zárás (incapsulation) - Információ elrejtés - Öröklődés altípusosság dinamikus kötés Öröklődés Programozási nyelvek Java - kiterjesztem, kibővítem, megváltoztatom - extends kulcsszó Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 6. előadás class Employee { class Boss extends Employee { különbség az Employee-hoz képest A különbséget kell programozni. Parciális rendezési reláció (Reflexív, Antiszimmetrikus, Tranzitív)

Kört nem tartalmazhat. Egy szülő osztálynak lehet több gyermek osztálya, de JAVA-ban többszörös öröklődés nincsen. (Azaz egy gyermeknek nem lehet kettő szülője) Minden nem származtatott osztály a java.lang.object ből származik. Öröklődés kód újrahasznosításban fogalmak hierarchiája altípusosság Bázis típus (supertype) Altípus (subtype) Liskov-féle helyettesítési elv (Liskov substitution principle) Ha egy programban a Bázis típusba tartozó objektumokat lecseréljük altípusba tartozó objektumokra, akkor nem romlik el semmi Polimorfizmusok ( több alakúság ) - Altípusos polimorfizmus ( több típussal való együttműködés ) - bázis típusokhoz megírt kódot használjuk altípusbeli értékekre - Egyebek (több féle polimorfizmus létezik)

Felüldefiniálás (Override / Redefine) Egy megörökölt művelet implementációját lecseréljük (JAVA-ban) hatékonysági szempontból (Pl.: Téglalap kerülete, Négyzet kerülete) Más eredmény (teljesen más vagy kiegészítés) (Pl.: Dolgozók fizetése Főnök fizetése) class Employee{ int salary(){ class Boss extends Emp{ // @Override annotáció, opcionális a kiírása, de jó ha van @Override int salary(){[emp salary-től eltérő] super.salary() + supplement() bázis osztálybeli megfelelője Boss osztályban: - this.salary() Boss-os salary() - super.salary() Emp-es salary() Emp e = new Emp(); Boss b = new Boss(); e.salary(); // Emp-es salary() b.salary(); // Boss-os salary e = b; (kompatibilitás (altípusra)) Legális! Boss Emp e.salary() Boss salary lesz (felüldefiniált változat) [DINAMIKUS KÖTÉS] e HEAP b

Dinamikus kötés (Késői kötés [Late binding]) Az objektum létrehozó osztályához felülről legközelebb álló implementáció végrehajtása a felüldefiniált implementációk közül. Emp e = new Emp(); Boss b = new Boss(); Emp s = new Boss(); Object o = new Boss(); Helytelen: String str = new Boss();, mivel a String nem bázis típusa a Bossnak. Statikus típus: referencia deklarált típusa Dinamikus típus: a hivatkozott objektum osztálya A statikus típus bázis típusa a dinamikus típusnak, esetleg meg is egyeznek. Dinamikus típus szerint Emp Boss Statikus típus - nem változik - fordítási időben (static time) ismert Dinamikus típus - változékony (pl.: értékadás) - csak futási időben (dinamic time) ismert dinamikus kötés : runtime overhead (Kevésbé hatékony az OOP Java, mint a procedurális C) Hatékonyság: C > C++ > JAVA Primitív típusok kompatibilitása long l = 13L; - 8 bájt: kettes komplemens int i = 13; - 4 bájt: kettes komplemens l = i; e = 12; - utasításokat elfogadja, pedig típus hibás. Ebben az esetben egy adatkonverzió és egy értékadás is történik 0 0 0 0 0 0 64 bit (8 bájt) long : int : Kompatibilitás JAVAban ( ) bool <: short <: int <: long <: float <: double 32 bit (4 bájt) Megjegyzés: Tisztább az osztályok közötti, mint a primitív típusok közötti.

Konstruktorok - Minden osztályt önmagában kell vizsgálni ilyen szemszögből - Nem öröklődik class Emp { class Boss extends Emp { default default class Emp{ Emp(String name){ class Boss extends Emp { Ebben az esetben egy Boss(){ super(); konstruktor hívódik meg, ami fordítási hibát okoz! (Emp-ben nincs paraméter nélküli konstruktor!) Javítása: class Boss extends Emp{ Boss(String name){ super(name); Az alosztály-beli konstruktorból egy bázisosztály-beli konstruktort hívunk meg kivéve, ha van a bázisosztályban paraméter nélküli konstruktor. (Utóbbinál ugyan is a bázisosztályban található paraméter nélküli konstruktor fog meghívódni, amennyiben az alosztályban nem definiáltunk konstruktort.)