Programozás III OOP ALAPOK.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

ADATBÁZISOK.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
AZ OOP ALAPJAI.
C++ programozási nyelv Gyakorlat hét
EE/R adatmodell (Extended E/R) 1 Az objektum orientált szemlélet elterjedésével egyre nőtt az igény az olyan SDM (Semantic Data Model) modellek iránt,
Programozás III KOLLEKCIÓK 2..
3. A programozás eszközei, programozás-technikai alapismeretek
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Microsoft Access V. Készítette: Rummel Szabolcs Elérhetőség:
Ö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.
OBJEKTUMORIENTÁLT PROGRAM
Bevezetés a Java programozásba
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Vizuális modellezés Uml és osztálydiagram UML eszközök
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
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
Mutatók, tömbök, függvények
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/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.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
OOP ÖRÖKLŐDÉS, INTERFÉSZ
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
A valós világ modellezése. Az embert a valós világ modellezésekor a következő gondolatok vezérlik: Absztrakció Megkülönböztetés Osztályozás Általánosítás,
Objektumorientált tervezés és programozás II. 3. előadás
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
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.
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.
Objektumorientált programozás
Objektumorientált tervezés
Objektumorientált tervezés Út az objektumig Az objektum fogalma, jellemzői Objektummal kapcsolatos fogalmak Hardverfogalmak A rendszer modell nézetei Objektumorientált.
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 Adatbekérés konzolról
Adatbázis-kezelés.
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.
Programozás III KOLLEKCIÓK.
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Objektumvezérelt rendszerek tervezése
OOP ÖRÖKLŐDÉS, INTERFÉSZ
Programozás III OOP ALAPOK.
Programozás III OOP ÖRÖKLŐDÉS.
Programozás III KOLLEKCIÓK.
Gyurkó György. Az állapotmodellezés célja Általánosságban ugyanaz, mint a többi dinamikus modellezési technikáé: Jobban megismerni a problémát. Finomítani.
UML modellezés 3. előadás
Objektumorientált alapjai ISZAM III.évf. részére Bunkóczi László.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
Ficsor Lajos Objektumok inicializálása CPP4 / 1 Objektumok inicializálása Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
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.
A szoftver mint komplex rendszer: objektumorientált megközelítés.
Neumann János Informatikai Kar
Hernyák Zoltán Programozási Nyelvek II.
Előadás másolata:

Programozás III OOP ALAPOK

OBJEKTUM-ORIENTÁLT PARADIGMA Alan Kay diplomamunkája 1969: Tervek és elképzelések a SmallTalk programozási nyelv megtervezése

OBJEKTUM-ORIENTÁLT PARADIGMA Alapja: a természetes emberi gondolkozás Az objektumorientált modellezés során elvonatkoztatunk, megkülönböztetünk, osztályozunk, általánosítunk, leszűkítünk, kapcsolatokat építünk, stb.  absztrahálunk. Olyan programozási módszer, amely lehetővé teszi különböző bonyolult változók (objektumok) létrehozását és kezelését. Objektum-orientált program: Egymással kapcsolatot tartó, együttműködő objektumok összessége, ahol minden objektumnak megvan a jól meghatározott feladata.

OBJEKTUM-ORIENTÁLT GONDOLKOZÁS, MODELLEZÉS Tényleg a természetes emberi gondolkozás az alapja? Hogyan gondolkozunk? „Ha az emberi agy olyan egyszerű lenne, hogy megérthetnénk, akkor olyan egyszerűek lennénk, hogy nem tudnánk megérteni.” Emerson Pugh

OBJEKTUM-ORIENTÁLT GONDOLKOZÁS, MODELLEZÉS De azért mégis: Hogyan gondolkozunk? Megfigyeljük a világot, és közben – osztályozzuk a látottakat: a hasonló dolgok egy osztályba kerülnek; a különbözőek más-más osztályba így alakulnak ki a fogalmaink Eközben a dolgokat megkülönböztetjük a számunkra lényeges tulajdonságaik, viselkedési módjuk alapján.

OBJEKTUM-ORIENTÁLT GONDOLKOZÁS, MODELLEZÉS Megfigyeljük a világot, és közben – általánosítunk és specializálunk: így tovább finomítjuk az osztályozást Pl.: Az autó olyan jármű … A háziállat olyan állat … A diák olyan ember … A foci egy speciális sport … stb… Általában: a speciálisnak olyan tulajdonságai, viselkedés-módja van, mint az általánosabbnak, csak vannak még további jellemzői.

OBJEKTUM-ORIENTÁLT GONDOLKOZÁS, MODELLEZÉS Vagyis a világ megfigyelése közben – absztrahálunk: Elvonatkoztatunk a számunkra pillanatnyilag nem fontos, közömbös információktól, és kiemeljük az elengedhetetlen fontosságú részleteket. Azaz leegyszerűsítjük a valós világot úgy, hogy csak a lényegre, a cél elérése érdekében feltétlenül szükséges részekre összpontosítunk.

Picasso

OBJEKTUM-ORIENTÁLT GONDOLKOZÁS, MODELLEZÉS Az absztrakció révén osztályhierarchiát hozhatunk létre, de dolgozni csak konkrét egyedekkel, vagyis az osztályok példányaival, az objektumokkal tudunk. Az osztály egy-egy fogalom definiálására szolgál. Leírásakor egy-egy speciális típust határozunk meg, abból a célból, hogy később ilyen típusú változókkal tudjunk dolgozni. Az Osztaly típusú változó majd Osztaly típusú objektumot tartalmaz.

OBJEKTUM-ORIENTÁLT PARADIGMA Az osztályokban megadjuk azokat a tulajdonságokat és viselkedéseket, amelyekkel az ebbe az osztályba tartozó objektumokat jellemezni akarjuk.  A hasonló tulajdonságokkal és viselkedéssel rendelkező objektumok egy osztályba kerülnek. Az objektum az osztály egy példánya – a példányosítás során jön létre.

OBJEKTUM-ORIENTÁLT PARADIGMA Az objektum egy információtároló egység, vannak tulajdonságai  adatok viselkedése  metódusok Minden objektum egyedi! Pl.: Nagy Jóska – objektum Tulajdonságai: név életkor nem … stb. Viselkedése: tanul() barátkozik() … stb. Kis Mari – objektum Tulajdonságai: név életkor nem … stb. Viselkedése: tanul() barátkozik() … stb.

OBJEKTUM-ORIENTÁLT PARADIGMA Példa: Az előző Nagy Jóskához, Kis Marihoz hasonló diákok: Lehet: példány-változó, osztály-változó; példány-metódus, osztály-metódus. osztály objektumok Ez egy szabványos leírás, az UML

OBJEKTUM-ORIENTÁLT PARADIGMA Példányváltozó: példányonként más-más lehet az értéke. A példány állapotát írja le. Egy osztály minden példánya saját adattagokkal rendelkezik. A példányosítás során lefoglalódik az adatoknak megfelelő tárrész. Ahány példány van, annyiszor foglalunk helyet a tárban. Osztályváltozó (statikus változó): csak egyetlen példányban létezik

OBJEKTUM-ORIENTÁLT PARADIGMA Példány metódus: a példányok viselkedését írja le. Osztálymetódus (statikus metódus): objektumok nélkül is tud dolgozni, nem kell példányosítani. Csak statikus példányváltozókra hivatkozhat. Egy osztálymetódus az osztályok közötti üzenettel hívható: Osztály.osztályMetódus

OBJEKTUM-ORIENTÁLT PARADIGMA – TULAJDONSÁGOK Objektum: adattagok + műveletek (metódusok) Információt tárol, kérésre feladatokat hajt végre. Belső állapota van, üzeneten keresztül lehet megszólítani. Felelős feladatainak korrekt elvégzéséért. Az objektumnak mindig van egy állapota (adattagok pillanatnyi értékei írják le). Két objektumnak ugyanaz az állapota, ha az adattagok értékei megegyeznek. Az objektum műveleteket hajt végre, melyek hatására állapota megváltozhat, de mindig emlékszik állapotára. Minden objektum egyértelműen azonosítható.

OBJEKTUM-ORIENTÁLT PARADIGMA – MŰKÖDÉS Egy objektumorientált program egymással kommunikáló objektumok összessége, melyben minden objektumnak megvan a feladatköre:

OBJEKTUM-ORIENTÁLT PARADIGMA – FOGALMAK Osztály – Példány: Osztály (class): Olyan objektumminta vagy típus, mely alapján példányokat (objektumokat) hozhatunk létre. Minden objektum egy jól meghatározott osztályhoz tartozik. Objektum életciklusa: „megszületik”, „él”, „meghal” Az objektumot létre kell hozni, és inicializálni kell! Objektum inicializálása: – konstruktor (constructor) adatok kezdőértékadása objektum működéséhez szükséges tevékenységek végrehajtása

OBJEKTUM-ORIENTÁLT PARADIGMA – ALAPELVEK Az OOP alapelvei (1): (a többi később) Egységbezárás (encapsulation): az adatokat és a hozzájuk tartozó eljárásokat egyetlen egységben kezeljük (osztály) A feladatok elvégzésének „hogyan”-ja az objektum belügye. Az objektum belseje sérthetetlen. Az objektummal csak az interfészen keresztül lehet kommunikálni. Az osztály adatai, metódusai csak a konkrét objektumon keresztül érhetők el, az osztály változóit csak a metódusokon keresztül változtathatjuk meg.

OBJEKTUM-ORIENTÁLT PARADIGMA – ALAPELVEK Egységbezárás:

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA A korábban említett példa egy lehetséges Java megvalósítása

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Először az osztályt definiáljuk osztálynév: Diak változók: nev, nem szuletesiEv !!! metódusok: tanul() baratkozik() eletkor() !!!

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Az osztálystruktúra UML diagramja statikus vezérlő osztály ebben példányosítunk

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Miért private az adattag?

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA példányosítás De ki az egyik, ki a másik?! Használjunk konstruktorokat!

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Életkor kiíratása: System.out.println (egyik.eletkor()); De kinek a kora? – Ki kellene íratni a nevet is.

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Mi a helyzet a korábbi példányosítással? Diak egyik = new Diak() Az üres konstruktor csak akkor jön létre automatikusan, ha nem adunk meg konstruktort. Ha mi magunk definiálunk egyet, akkor az automatikus már nem jön létre. Ha szükségünk van rá, nekünk kell létrehozni.

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Hogyan lehet megkérdezni az egyes diákok nevét? System.out.println(egyik.getNev() + ” kora: ” + egyik.eletkor()); És hogy lehet értéket beállítani? Pl. hajszínt.

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Mi van, ha több diák objektumot akarunk? tömb Ez még csak deklaráció, nem példányosítás!!!

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA Maga a példány pl. itt jön létre: vagy itt:

OBJEKTUM-ORIENTÁLT PARADIGMA – JAVA PÉLDA

Auth Gábor (volt pollackos ): Java-Forum/Java-suli: JAVA OSZTÁLYOK Jó és rövid () leírás: Auth Gábor (volt pollackos ): Java-Forum/Java-suli: http://www.javaforum.hu/javaforum/10/java_suli/java_suli/20/show/java_osztalyok