11. évfolyam Informatikai rendszerüzemeltető 2018. Források: wikipedia.org, ikron.hu, szit.hu, progalap.elte.hu Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai
Témakörök: Fejlesztői környezet, fordítás, forráskód Programozás alapfogalmai, adattípusok, vezérlési szerkezetek Programozási típusfeladatok, tételek Dokumentálás Haladó programozás OOP fejlesztés (objektum orientált programozás) SQL alapok 2
ISMÉTLÉS Szoftverfejlesztés Programnyelv: C# v. JAVA (Pascal, Fortran, C/CC++...stb.) Szintaktika Forráskód Futtatható kód (bináris kód) 3
ISMÉTLÉS Szoftverfejlesztés IDE: integrált fejlesztői környezet pl. Visual Studio Forráskód Bináris állomány Köztes kód Objekt formátum stb. Fordító (compiler) Linker (szerkesztő) (bináris, futtatható állomány) Terjesztés (pl. github-ra) Team Development (csapatban fejlesztés) Verziókövetés (SVN) Telepítőkészlet készítése 4
ISMÉTLÉS Adattípusok Változók Szöveges, string Karakteres Numerikus (egész, tört - lebegőpontos) Dátum Logikai Konstansok (állandók) Szöveges, numerikus stb. 5
ISMÉTLÉS Adattípusok Értékadás: int x = 56; double f = 56.66; 6
ISMÉTLÉS Vezérlési szerkezetek A vezérlési szerkezetek elemei elemi utasításokból állnak, ill. ezek kombinációja, amely a program vezérlési felépítését valósítja meg. Alapvető vezérlési szerkezetek: Szekvencia Elágazás Ciklus (iteráció) 7
ISMÉTLÉS Vezérlési szerkezetek Szekvencia: Szekvenciának nevezzük egyes utasítások (vagy blokkkok) egymás után történő végrehajtását. Rendkívül gyakran használt szerkezet, főleg az imperatív jellegű nyelvekben. Általában nem, vagy csak minimálisan kell jelezni. Jele az utasítások egymás mögé (alá) írása, vagy a ';', esetleg a ',' karakter lehet. 8
ISMÉTLÉS Vezérlési szerkezetek Elágazás: ha valamilyen feltételtől függően a programnak az adott helyzetben mást és mást kell elvégeznie. A végrehajtható ágak száma akár több is lehet. 9
ISMÉTLÉS Vezérlési szerkezetek Ciklus (iteráció): ha egy programrész valamilyen feltételtől függően többször egymás után hajtódik végre. A feltételt ciklusfeltételnek, a részt a ciklus magjának hívjuk. 10
FÜGGVÉNYEK Függvény fogalma: a függvény és az eljárás egy nagyobb program forráskódjának része, amely egy adott feladatot hajt végre, a kód többi részétől viszonylag független egység, és többször felhasználható anélkül, hogy a program kódjának több példányban is tartalmaznia kellene. Hasonló fogalmat jelölnek a szubrutin, metódus, procedúra vagy alprogram nevek is. 11
FÜGGVÉNYEK Függvény definiálása: a függvényt definiálni kell, hogy pontosan mit hajtson végre. Pl.: Terulet(int a,b) { int c; c = a * b; return c; } 12
FÜGGVÉNYEK Mi a különbség a függvény és az eljárás között? Az eljárás a végrehajtása során keletkező új adatokat a program egy közös tárhelyen helyezi el, amelyeket a program többi része az egyéb esetekben szokásos módon használ fel. A függvény egy visszatérési értéket ad vissza, nem a közös tárhelyen helyezi el az adatot. 13
FÜGGVÉNYEK Mi a különbség a függvény és az eljárás között? Példa: Eljárás: Függvény: Terulet(a,b) { c = a*b; } Terulet(a,b) { return a*b; } 14
FÜGGVÉNYEK Paraméterek: Függvényeknek, eljárásoknak lehet paramétere ezeket át kell adni a függvény részére, amivel dolgozni fog. Pl.: Terulet(a,b) Két paramétere van: a,b ezeket használja fel a feldolgozás során. Ezek a változók lokális változók! 15
FÜGGVÉNYEK Hívása: Függvényeket meg kell híni, hogy végrehajtódjanak. Meghívás a függvény nevével és paramétereivel (ha van) Pl.: Terulet(3,4); Terulet(x,y); 16
FEJLESZTÉSI MÓDSZEREK Több csoportosítás létezik, a legfontosabbakat kiemelve: Lineáris, vízesés módszer Iteratív módszer Agilis módszer (Scrum) 17
FEJLESZTÉSI MÓDSZEREK Lineáris, vízesés módszer: A módszertan lényege, hogy a fejlesztést több részfolyamatra bontják és minden fázist az előző jóváhagyása és befejezése után indítanak el. A folyamat kidolgozása előre meghatározott sorrendben történik, így nagy hangsúlyt kell fektetni a rendszer megtervezésére. Mivel a vízesés modell egy lineáris lépéssorozat, ezért a projektben bekövetkező visszalépés, javítás minden esetben határidőcsúszást és költségnövekedést jelent. A módszertan előnye, hogy nem csak szoftverfejlesztési, hanem termékfejlesztési területen is kiválóan alkalmazható magas fokú szabályozottsága révén. Egyszerű és könnyen menedzselhető felépítése miatt a kisebb és jól definiált projektekhez gyakran használják. 18
FEJLESZTÉSI MÓDSZEREK Lineáris, vízesés módszer: 19
FEJLESZTÉSI MÓDSZEREK Iteratív módszer: A határidők és a költségvetési határok betartását eredményezi a kiemelkedő színvonal megtartása mellett. Alapja az iteráció, melynek segítségével eltérő szakaszokban ugyanazon fejlesztési terület kidolgozását teszi lehetővé a precízebb végeredmény érdekében. 20
FEJLESZTÉSI MÓDSZEREK Iteratív módszer: 21
FEJLESZTÉSI MÓDSZEREK Agilis módszer (Scrum): Az agilis szoftverfejlesztés a gyors és rugalmas megoldásokat segíti elő. Multifunkcionális és önszervező csapatok együttműködésével fejlődik a szoftver a követelmények és megoldások összehangolásával. A Scrum egy agilis szoftverfejlesztési módszertan, mely a csoporton belüli összetartásra összpontosít. A folyamatos szóbeli kommunikáció és személyes találkozók szervezésével hatékony módszert alkot a fejlesztési területen. A Scrum meghatározott szerepeket és tevékenységeket állít fel, mellyel lefedi az összes munkafolyamatot. A módszertan alapvető elgondolása, hogy az ügyfél által a tervezési fázisban felállított követelmények a fejlesztés során megváltozhatnak. Ebben az esetben a fejlesztési csapat elsődleges feladata, hogy az új igényekhez a legrövidebb idő alatt alkalmazkodjanak és a kivitelezést az új szempontok szerint megvalósítsák. 22
FEJLESZTÉSI MÓDSZEREK Agilis módszer (Scrum): A legtöbb agilis módszer lebontja a feladatot kisebb feladatokra. Egy fejlesztési ciklus (azaz iteráció vagy sprint) maximum 4 hétig tart. Ezt az időtartamot idődoboznak hívjuk. Minden iterációban lévő feladat elkészítése egy keresztfunkcionális fejlesztői csoport feladata, amely a tervezéstől, elemzéstől a programozáson át a tesztelésig és átvételi tesztig mindent elvégez. Az iteráció végén bemutatják az elkészült feladatokat a megrendelőnek. Így minimalizálhatóak a hosszú fejlesztésből fakadó kockázatok, és a projekt gyorsan alkalmazkodhat a változásokhoz. Az inkrementum talán nem alkalmas az értékesítésre önmagában, azonban cél, hogy minden fejlesztési ciklus végén potenciálisan szállítható termék készüljön el. A módszer ismétlődésen alapul (minden iterációban azonos szakaszokon megy végig a fejlesztőcsoport), és növekményes, mert mindig a már elkészült inkrementumot egészítik ki. 23
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK A programozási tételek gyakran használt algoritmusokat takarnak. Ezeket az algoritmusokat általában tömbökön hajtjuk végre. Az adatok persze jöhetnek billentyűzetről, fájlból vagy adatbázisból is. A tömbök indexelését 0-val kezdjük. Az értékadást egy darab egyenlőségjel (=) jelenti, az egyenlőség vizsgálatot két egyenlőségjel (==) jelzi, a nem egyenlőt egy kisebb-mint és egy nagyobb-mint jel jelzi (<>). Lehetnek: halmazból halmaz v. halmazból egy elem 24
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK ÖSSZEGZÉS: osszeg = 0 ciklus i = 0.. n -1 osszeg = osszeg + t[i] ciklus vége ki osszeg 25
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK MEGSZÁMLÁLÁS: Adott feltételek alapján a tömb bizonyos elemeit megszámolom. Pl.: Megszámoljuk mennyi negatív szám van a tömbben szamlalo = 0 ciklus i = 0.. n - 1 ha t[i] < 0 akkor szamlalo = szamlalo + 1 ha vége ciklus vége ki szamlalo 26
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK ELDÖNTÉS: Szeretnénk tudni, hogy egy érték megtalálható-e egy tömbben. van = 0 ciklus i = 0.. n-1 ha tomb[i] = keresett_ertek akkor van = 1 ha vége ciklus vége 27
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK KIVÁLASZTÁS: Az adott elem a tömb hányadik helyén van. A kiválasztás tételt akkor használjuk, ha tudjuk, hogy a keresett értéket tartalmazza a tömb. i = 0 ciklus amíg tomb[i] <> ker i = i + 1 ciklus vége ki i + 1 28
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK LINEÁRIS (szekvenciális) KERESÉS: Adott elem szerepel-e a tömbben és hányadik helyen. ker = 30 i = 0 ciklus amíg i<n és t[i]<>ker i = i + 1 ciklus vége Ha i<n akkor ki "Van ilyen" ki: "Indexe: ", i különben ki: "A keresett érték nem található" ha vége 29
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK MÁSOLÁS: Egy sorozat elemet átmásolom egy másik sorozatba, miközben valamilyen átalakítást végzek az egyes elemeken. ciklus i = 0.. n b[i] = művelet(a[i]) //valamilyen művelet a[i]-vel ciklus vége 30
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK KIVÁLOGATÁS: A tömb elemit egy másik tömbbe rakom, feltételhez kötve. j = 0 ciklus i = 0.. n - 1 ha a[i] < 5 b[j] = a[i] j = j + 1 ha vége ciklus vége 31
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK SZÉTVÁLOGATÁS: Két tömbbe válogatjuk szét egy tömb elemeit. Pl.: adott a tömb, amely egész számokat tartalmaz. A b és c tömb pedig üres. Az a elemeit b tömbbe rakjuk ha kisebbek 5-él, különben c-ben tároljuk. j = 0 k = 0 ciklus i = 0.. n-1 ha a[i] < 5 b[j] = a[i] j = j + 1 különben c[k] = a[i] k = k + 1 ha vége ciklus vége 32
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK METSZET: Két tömb azonos elemeinek kiválogatása egy harmadik tömbbe. Adott A, B halmaz (tömb) és a közös elemeket szeretnénk C tömbbe elhelyezni: k = 0 ciklus i = 0.. n-1 j = 0 ciklus amíg j<m és b[j]<>a[i] j = j + 1 ciklus vége ha j<m akkor c[k] = a[i] k = k + 1 ha vége ciklus vége 33
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK UNIÓ: A és B tömb minden elemét szeretnénk C tömbbe tenni.: ciklus i = 0.. n-1 c[i] = a[i] ciklus vége k = n ciklus j = 0.. m-1 i = 0 ciklus amíg i<n és b[j]<>a[i] i = i + 1 ciklus vége ha i>=n akkor c[k] = b[j] k = k + 1 ha vége ciklus vége 34
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK MAXIMUM kiválasztás: Keressük a tömb legnagyobb elemét. max = t[0] ciklus i = 1.. n - 1 ha t[i]> max akkor max = t[i] ha vége ciklus vége ki max 35
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK MINIMUM kiválasztás: Keressük a tömb legkisebb elemét. min=t[0] ciklus i = 1.. n-1 ha t[i] < min min = t[i] ha vége ciklus vége ki min 36
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK BUBORÉKOS rendezés: Feltételezzük, hogy az n a tömb elemeinek száma. A sorozat két első elemét összehasonlítjuk, és ha fordított sorrendben vannak felcseréljük. Utána a másodikat és a harmadikat hasonlítom össze. Ha a nagyobb számokat a végén szeretném látni, akkor az első körben a legnagyobb szám tulajdonképpen a sor végére kerül. Ezért a következő körben azzal már nem foglalkozunk, ezért megyünk mindig a belső ciklusban csak i változó értékéig. A külső ciklus így megmutatja meddig kell mennünk. ciklus i = n-1.. 1 ciklus j = 0.. i ha t[j] > t[j+1] akkor b = t[j+1] t[j+1] = t[j] t[j] = b ha vége ciklus vége ciklus vége 37
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK MAXIMUMKIVÁLASZTÁSOS rendezés: Kiválasztjuk a legnagyobb elemet és a tömb végére rakjuk. Például a tömb végétől kezdve feltételezem, hogy a legutolsó a legnagyobb. De nem magát a számot, hanem annak indexét jegyzem fel. Ezek után elölről kezdve átnézem, hogy a feltételezettnél nagyobb-e valamelyik. A végén mindenképpen cserélek. ciklus i := n.. 1 max := i ciklus j := 1.. i ha t[j] > t[max] akkor max := j ciklus vége csere(t[i], t[max]) ciklus vége 38
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK MINIMUMKIVÁLASZTÁSOS rendezés: Megkeressük a legkisebbet és a tömb elejére tesszük. ciklus i := 1.. n-1 min := i ciklus j := i+1.. n ha T[j] < T[min] akkor min := j Elágazás vége ciklus vége ha min <> i akkor Csere(i,min) Elágazás vége ciklus vége 39
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK ÖSSZEFUTTATÁS (összefésülés): Itt is két tömb unóját szeretném megkapni, viszont a tömbök most rendezettek, és az unióképzés után szeretném megtartani a rendezettséget. i := 0 j := 0 k := -1 ciklus amíg (i< n) és (j<m) k := k + 1 ha a[i] < b[j] akkor c[k] := a[i] i := i + 1 ellenben ha a[i] = b[j] akkor c[k] := a[i] i := i + 1 j := j + 1 ellenben ha a[i]> b[j] akkor c[k] := b[j] j := j + 1 ha vége ciklus vége ciklus amíg i < n k := k + 1 c[k] := a[i] i := i + 1 ciklus vége ciklus amíg j < m k := k + 1 c[k] := b[j] j := j + 1 ciklus vége 40
PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK Programozási tételek alkalmazása: Specifikáljuk a konkrét programozási feladatot A specifikáció ismeretében eldöntjük, hogy az adott feladat programozási tétellel megoldható-e Ha megoldható, akkor a megfelelő kiválasztása A tételben szereplő általános elemeket megfeleltetjük a konkrét feladat elemeivel A behelyettesítés módszerével megoldjuk a feladatot 41
DOKUMENTÁLÁS Miért kell dokumentálni? A program egy termék, és egy termékhez mindig tartozniuk kell különböző leírásoknak. Mire is lehet szükség egy program kapcsán? Először is egy leendő felhasználónak el kell döntenie, hogy milyen programot, akar használni. Ha a programot megvette, akkor el szeretné helyezni a számítógépén, majd használni szeretné, és a felhasználásban segítséget vár. Nemcsak a felhasználónak van szüksége dokumentációra, hanem a fejlesztőnek, karbantartónak is (nem véletlenül adnak például háztartási készülékeinkhez műszaki leírást is). Milyen dokumentáció létezik akkor? Többféle? Igen! 42
DOKUMENTÁLÁS Dokumentációk fajtái? Fejlesztői dokumentáció Felhasználói dokumentáció Programismertető Installálási kézikönyv, operátori kézikönyv 43
DOKUMENTÁLÁS FEJLESZTŐI dokumentáció Kinek szól? Fejlesztők A fejlesztői dokumentációt használja az, akinek a programban hibát kell keresnie, a hibát ki kell javítania, a programot hatékonyabbra kell írnia, át kell vinnie más gépre, át kell írnia más nyelvre, valamint tovább kell fejlesztenie. 44
DOKUMENTÁLÁS FEJLESZTŐI dokumentáció Tartalma: specifikációk, követelményanalízis (korlátozások, pl. megkívánt hatékonysági jellemzők, alkalmazandó adatszerkezetek). A feladat és a megoldástól elvárt követelmények meghatározása. Ezt még a feladat kitűzője adta, vagy vele történt megbeszélés során pontosodott a megoldás első lépéseként; a futási környezet leírása: számítógép, operációs rendszer, memóriaméret, (speciális) perifériaigény, grafikus kártya stb. fejlesztői környezet leírása: a választott programnyelv(ek), és verziószáma(i); eljáráskönyvtárak, unitok az algoritmusok és az adatok (típusok, osztályok, programkonstansok) leírása 45
DOKUMENTÁLÁS FEJLESZTŐI dokumentáció Tartalma: kód, implementációs szabványok (ún. kódolási szabályok, egyéni konvenciók) tesztesetek, azaz milyen (jellegzetes) bemeneti adatokra, milyen eredménnyel válaszol a program hatékonysági mérések (hatékonysági tesztesetek), megfontolások, javaslatok az esetleges hatékonyabbra írásra fejlesztési lehetőségek a készítő adatai 46
DOKUMENTÁLÁS FEJLESZTŐI dokumentáció A programkészítés közben keletkezhetnek olyan dokumentumok, amelyek az elkészítést támogatják, majd lényegük később beépülhet a fejlesztői dokumentációba. Ezek a következők: Koncepcióterv: Feladata a probléma lehetséges megoldásainak bemutatása és értékelése. Felhasználásával a feladat kitűzője választhat megoldási lehetőségek között. Rendszerterv: Tartalmaznia kell a szükséges hardver-szoftver környezet leírását, amely meghatározza a rendszer használhatósági körét. Itt konkrét döntéseket kell megfogalmazni, következményeikkel, indoklásukkal együtt. Ez az a dokumentum, amelynek alapján a tényleges programozási munka elkezdődhet. 47
DOKUMENTÁLÁS FELHASZNÁLÓI dokumentáció Kinek szól? felhasználó, az üzembe helyező, a betanító Tartalma: a feladat egy rövid összefoglaló leírás is kell az áttekintés miatt és egy részletes a pontos használathoz; a futási környezet leírása: számítógép, operációs rendszer, memóriaméret, perifériaigény, grafikus kártya a használat leírása hogyan kell a programot betölteni/elindítani, milyen kérdéseket tesz fel, mik a lehetséges válaszok, mik a program egyes lépései, lehetőségei (nagyvonalú funkcionális leírás); 48
DOKUMENTÁLÁS FELHASZNÁLÓI dokumentáció Tartalma: bemenő adatok, eredmények, szolgáltatások részletes leírása: mit, mikor, milyen sorrendben kell megadni (részletes funkcionális leírás); mintaalkalmazás példafutás. A felhasználó főleg a betanító ennek alapján tudja előre gép nélkül elképzelni a programot; hibaüzenetek és a hibák lehetséges okai mi a teendő valamely hibaüzenet láttán. 49
DOKUMENTÁLÁS PROGRAMISMERTETŐ Kinek szó? vásárló, programkereső, felhasználó A programismertető célja: leírás, a választás megkönnyítése. Tartalma: a feladat rövid, szöveges leírása, áttekintési céllal; a program tulajdonságainak rövid leírása. minimális hardver és szoftver (operációs rendszer és az esetlegesen megkívánt egyéb, a programmal együtt nem szállított szoftverkellékek, pl. driverek, dll-ek stb.) környezet. 50
DOKUMENTÁLÁS INSTALLÁLÁSI- OPERÁTORI kézikönyv Kinek szó? Kezelő, üzemeltető Nagyobb programok esetén külön installálási (üzembe helyezési) kézikönyvet mellékelnek, máskor ez a felhasználói dokumentáció része. Telepítési, üzemeltetési információkat tartalmazza, ha az a felhasználótól nem várható el. 51
DOKUMENTÁLÁS A dokumentáció tulajdonságai Szerkezet: ne legyen túl hosszú ne legyen túl rövid legyen világosan tagolt, és a tagolás segítse elő az egyes tudnivalók gyors keresését legyen tömör: az olvasója ne vesszen el a részletekben legyen olvasható: a túlságos (és kizárólagos) formalizálás az érthetőség rovására megy legyen pontos: az olvasója minden kérdésére tartalmazza a választ 52
DOKUMENTÁLÁS A dokumentáció tulajdonságai Forma: Tartalomjegyzék Index Világos szerkezetű kell legyen: kitalálható mondanivalójú fejezetekre bontva. További stílusjegyek megegyeznek bármely szakmai kiadványéval. 53
DOKUMENTÁLÁS A dokumentáció tulajdonságai Stílus: felhasználói dokumentáció elsősorban részletes szöveges leírás, amely időnként lehet szájbarágó is. (Célszerű figyelembe venni a várható felhasználói kört a leírás részletességének, a szájbarágósság szintjének megtervezésénél. Például teljességgel fölösleges egy Windows környezetben futó program esetében az ablakkezelésről általánosságban szólni.) fejlesztői dokumentációban minden más szempontnál fontosabb a pontosság, emiatt ebben kerülhet elő a matematikai leírás, a formális specifikáció installálási, illetve az operátori kézikönyv elsősorban utasítások, teendők pontos felsorolása, utalva a lehetséges válaszok következményeire 54
Haladó programozás Programozási módszerek: Moduláris programozás Struktúrált programozás Objektumorientált programozás 55
Haladó programozás Moduláris programozás: A modulokon belüli erős összetartás, a modulok között laza kapcsolat. A modulok szintaktikailag jól elkülöníthetőek. Modulok közötti kapcsolatok száma minél kevesebb. Kicsi interfésze legyen a moduloknak. Az interfész legyen egyértelmű és jól definiált. Minél nagyobb része legyen zárt és sérthetetlen. 56
Haladó programozás Struktúrált programozás: Program = adat + algoritmus. Bármely algoritmus leírható az alábbi 3 vezérlési szerkezet véges sokszori alkalmazásával: szekvencia szelekció Iteráció A legkisebb modul az eljárás. 57
Haladó programozás Struktúrált programozás: Az eljárások adatokon dolgoznak, a zártság érdekében megpróbáljuk a globális adatokat minimalizálni. A lokális adatok elvesznek az eljárásból való kilépéskor, ezért az ilyen zártság nem minden esetben megoldás. 58
Haladó programozás Struktúrált programozás: Az eljárások adatokon dolgoznak, a zártság érdekében megpróbáljuk a globális adatokat minimalizálni. A lokális adatok elvesznek az eljárásból való kilépéskor, ezért az ilyen zártság nem minden esetben megoldás. 59
Haladó programozás Objektum-orientált programozás (OOP): Objektumokra épülő programozás a valós világ modellezésére. Osztályok objektumok 60
Haladó programozás (OOP) Lényege: A valóság pontosabb leírása, modellezése. Objektumokra épül Egységbe foglalják az adatokat és hozzájuk tartozó műveleteket Milyen programnyelv alkalmas erre? 61
Haladó programozás (OOP) Programnyelvek osztályozása: Hagyományos: C, Pascal stb. OOP-t támogató nyelvek: Object Pascal, C++ Tisztán OOP nyelvek: JAVA, C# 62
Haladó programozás (OOP) Fogalmak: Osztály: az adatformátum és az elérhető metódusok definíciója az adott típus vagy a típushoz tartozó objektumok számára. Az osztályok is tartalmazhatnak adattagokat és metódusokat, amelyek műveleteket végeznek az osztály adattagjain. Összetartozó adatok és függvények, eljárások egysége. Objektum, példány: az Osztály egy konkrét példánya 63
Haladó programozás (OOP) Fogalmak: Osztálynak vannak tagjai, lehetnek: Tulajdonságai (attribútum, adat, mező) Metódusai (művelet, eljárás) Öröklődés: Egy osztályból újabb osztályt hozhatunk létre, ennek folyamatát nevezzük öröklésnek. Az öröklés során az új osztály örökli az előző minden tagját, beleértve a mezőket és a metódusokat. 64
Haladó programozás (OOP) Fogalmak: Többalakúság (polimorfizmus): A metódusok és a konstruktorok több alakban is meghívhatók, az egyes osztályok példányai másként viselkedhetnek egy adott helyzetben. a leszármazott osztály felülírja az ősosztályában meglévő viselkedést. 65
Haladó programozás (OOP) Fogalmak: Virtuális metódus: Egy metódus akkor virtuális, ha az örökölt osztályokban felülírható. A programozási nyelvekben ezt az ősosztályban kell beállítani, általában a virtual kulcsszóval. A Java nyelvben nem szükséges ezt megtenni, mivel minden metódus alapértelmezettként felülírható, vagyis virtuális. 66
Haladó programozás (OOP) Fogalmak: Elérés, láthatóság: Az osztály egyes tagjai (változók és metódusok) elérése változtatható: A public elérés, azt jelenti, hogy az adott tag más osztályokból is elérhető. A private elérés, azt jelenti, hogy más osztályokból nem érhető el a tag, még az örökölés lévén létrejött osztályokban sem. A protected elérés, az jelenti, hogy csak az örökölés során létrehozott osztályokban érhető el. 67
Haladó programozás (OOP) Fogalmak: Alapmetódusok: Konstruktor: az objektum létrehozásakor fut le, inicializálás Destruktor: az objektum megszűnésekor fut le, memória felszabadítás stb. 68
Haladó programozás (OOP) Példa: 69
Haladó programozás (OOP) Osztálydiagram (UML diagram típusa): Az osztálydiagram osztályokat és azok kapcsolatait ábrázolja. Az osztály jele alapesetben egy függőlegesen három részre osztott téglalap. A legfelső részbe írandó az osztály neve, a középsőbe az attribútumok, az alsóba az metódusok (operációk) specifikációja. A fejlesztés korai fázisaiban még nincs feltétlenül minden rész kitöltve, és a kitöltés részletessége is változhat. Láthatóság, elérés: + public # protected ~ csomagszintű - private 70
Haladó programozás (OOP) Osztálydiagram (UML diagram típusa): Példa 71
Haladó programozás (OOP) Osztálydiagram (az UML diagram egyik típusa): Példa 72
KÖSZÖNÖM A FIGYELMET! 73