PROGRAMOZÁS III. 11. évfolyam Informatikai rendszerüzemeltető 2018.

Hasonló dokumentumok
Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

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

OOP #1 (Bevezetés) v :39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

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

Programozási alapismeretek 4.

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

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

Név: Neptun kód: Pontszám:

Programozás alapjai (ANSI C)

ELEMI PROGRAMOZÁSI TÉTELEK

Már megismert fogalmak áttekintése

C++ programozási nyelv

Java programozási nyelv

Objektumorientált paradigma és a programfejlesztés

Programtervezés. Dr. Iványi Péter

Objektumelvű programozás

Programozás módszertan p.1/46

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklé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

Objektumorientált szoftverfejlesztés alapjai

Bevezetés az informatikába

Objektumorientált paradigma és programfejlesztés Bevezető

Objektum orientált programozás Bevezetés

Absztrakció. Objektum orientált programozás Bevezetés. Általános Informatikai Tanszék Utolsó módosítás:

OOP. Alapelvek Elek Tibor

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Java és web programozás

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Információtartalom vázlata

Interfészek. PPT 2007/2008 tavasz.

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Objektumorientált programozás C# nyelven

Összetett programozási tételek

OOP és UML Áttekintés

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

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

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Programozási tételek. Dr. Iványi Péter

Az informatika kulcsfogalmai

Alkalmazások fejlesztése A D O K U M E N T Á C I Ó F E L É P Í T É S E

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Informatikai alkalmazásfejlesztő Információrendszer-elemző és - tervező

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

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

OOP #14 (referencia-elv)

Osztályok. 4. gyakorlat

Programozási nyelvek Java

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

Web-programozó Web-programozó

JAVA PROGRAMOZÁS 2.ELŐADÁS

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

INFORMATIKA ÉRETTSÉGI VIZSGAKÖVETELMÉNYEK AZ ÉRETTSÉGI VIZSGA RÉSZLETES TEMATIKÁJA

PROGRAMOZÁSI TÉTELEK

Objektum orientált programozás (Object Oriented Programming = OOP)

Objektum orientált programozás (Object Oriented Programming = OOP)

Programozás alapjai Bevezetés

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Algoritmusok, adatszerkezetek, objektumok

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

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

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

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?

C++ programozási nyelv

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Programozási segédlet

Programozási nyelvek (ADA)

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

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

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

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Struktúra nélküli adatszerkezetek

III. Alapfogalmak és tervezési módszertan SystemC-ben

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

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Apple Swift kurzus 3. gyakorlat

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

ELTE, Informatikai Kar december 12.

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

Osztálytervezés és implementációs ajánlások

Eljárások és függvények

Iman 3.0 szoftverdokumentáció

Osztálytervezés és implementációs ajánlások

Objektumorientált Programozás VI.

Adatszerkezetek 2. Dr. Iványi Péter

INFORMATIKAI ALAPISMERETEK

Átírás:

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