programozÁs iii. - m-info.hu...angster erzsébet: az objektumorientált tervezés és programozás...

73
PROGRAMOZÁS III. 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

Upload: others

Post on 03-Feb-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

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

Források: wikipedia.org, ikron.hu, szit.hu, progalap.elte.huAngster Erzsébet: Az objektumorientált tervezés és programozás alapjai

Page 2: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

2

PROGRAMOZÁS III.● 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

Page 3: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

3

PROGRAMOZÁS III.● 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)

Page 4: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

4

PROGRAMOZÁS III.● 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

Page 5: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

5

PROGRAMOZÁS III.● 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.

Page 6: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

6

PROGRAMOZÁS III.● ISMÉTLÉS

– Adattípusok● Értékadás:

int x = 56;double f = 56.66;

Page 7: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

7

PROGRAMOZÁS III.● 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ó)

Page 8: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

8

PROGRAMOZÁS III.● 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.

Page 9: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

9

PROGRAMOZÁS III.● 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.

Page 10: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

10

PROGRAMOZÁS III.● 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.

Page 11: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

11

PROGRAMOZÁS III.● 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.

Page 12: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

12

PROGRAMOZÁS III.● 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;

}

Page 13: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

13

PROGRAMOZÁS III.● 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.

Page 14: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

14

PROGRAMOZÁS III.● 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:Terulet(a,b){

c = a*b;}

– Függvény:Terulet(a,b){

return a*b;}

Page 15: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

15

PROGRAMOZÁS III.● 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!

Page 16: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

16

PROGRAMOZÁS III.● 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);

Page 17: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

17

PROGRAMOZÁS III.● 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)

Page 18: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

18

PROGRAMOZÁS III.● 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.

Page 19: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

19

PROGRAMOZÁS III.● FEJLESZTÉSI MÓDSZEREK

– Lineáris, vízesés módszer:

Page 20: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

20

PROGRAMOZÁS III.● 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.

Page 21: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

21

PROGRAMOZÁS III.● FEJLESZTÉSI MÓDSZEREK

– Iteratív módszer:

Page 22: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

22

PROGRAMOZÁS III.● 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.

Page 23: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

23

PROGRAMOZÁS III.● 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.

Page 24: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

24

PROGRAMOZÁS III.● 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

Page 25: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

25

PROGRAMOZÁS III.● PROGRAMOZÁSI TÉTELEK, TÍPUSFELADATOK

– ÖSSZEGZÉS:

osszeg = 0

ciklus i = 0 .. n -1

osszeg = osszeg + t[i]

ciklus vége

ki osszeg

Page 26: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

26

PROGRAMOZÁS III.● 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

Page 27: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

27

PROGRAMOZÁS III.● 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

Page 28: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

28

PROGRAMOZÁS III.● 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

Page 29: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

29

PROGRAMOZÁS III.● 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

Page 30: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

30

PROGRAMOZÁS III.● 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

Page 31: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

31

PROGRAMOZÁS III.● 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

Page 32: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

32

PROGRAMOZÁS III.●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

Page 33: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

33

PROGRAMOZÁS III.●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 akö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

Page 34: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

34

PROGRAMOZÁS III.●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

Page 35: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

35

PROGRAMOZÁS III.●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

Page 36: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

36

PROGRAMOZÁS III.●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

Page 37: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

37

PROGRAMOZÁS III.●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

Page 38: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

38

PROGRAMOZÁS III.●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

Page 39: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

39

PROGRAMOZÁS III.●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

Page 40: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

40

PROGRAMOZÁS III.● 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

Page 41: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

41

PROGRAMOZÁS III.● 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

Page 42: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

42

PROGRAMOZÁS III.● 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!

Page 43: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

43

PROGRAMOZÁS III.● 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

Page 44: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

44

PROGRAMOZÁS III.● 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.

Page 45: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

45

PROGRAMOZÁS III.● 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

Page 46: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

46

PROGRAMOZÁS III.● 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

Page 47: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

47

PROGRAMOZÁS III.● 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.

Page 48: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

48

PROGRAMOZÁS III.● 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);

Page 49: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

49

PROGRAMOZÁS III.● 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.

Page 50: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

50

PROGRAMOZÁS III.● 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.

Page 51: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

51

PROGRAMOZÁS III.● 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.

Page 52: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

52

PROGRAMOZÁS III.● 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

Page 53: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

53

PROGRAMOZÁS III.● 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.

Page 54: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

54

PROGRAMOZÁS III.● 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

Page 55: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

55

PROGRAMOZÁS III.● Haladó programozás

– Programozási módszerek:● Moduláris programozás● Struktúrált programozás● Objektumorientált programozás

Page 56: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

56

PROGRAMOZÁS III.● 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.

Page 57: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

57

PROGRAMOZÁS III.● 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.

Page 58: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

58

PROGRAMOZÁS III.● 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.

Page 59: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

59

PROGRAMOZÁS III.● 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.

Page 60: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

60

PROGRAMOZÁS III.● 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

Page 61: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

61

PROGRAMOZÁS III.● 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?

Page 62: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

62

PROGRAMOZÁS III.● 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#

Page 63: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

63

PROGRAMOZÁS III.● 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

Page 64: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

64

PROGRAMOZÁS III.● 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.

Page 65: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

65

PROGRAMOZÁS III.● 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.

Page 66: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

66

PROGRAMOZÁS III.● 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.

Page 67: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

67

PROGRAMOZÁS III.● 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.

Page 68: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

68

PROGRAMOZÁS III.● 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.

Page 69: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

69

PROGRAMOZÁS III.● Haladó programozás (OOP)

– Példa:

Page 70: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

70

PROGRAMOZÁS III.● 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

Page 71: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

71

PROGRAMOZÁS III.● Haladó programozás (OOP)

– Osztálydiagram (UML diagram típusa):● Példa

Page 72: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

72

PROGRAMOZÁS III.● Haladó programozás (OOP)

– Osztálydiagram (az UML diagram egyik típusa):● Példa

Page 73: PROGRAMOZÁS III. - M-info.hu...Angster Erzsébet: Az objektumorientált tervezés és programozás alapjai 2 PROGRAMOZÁS III. Témakörök: – Fejlesztői környezet, fordítás,

73

PROGRAMOZÁS III.

KÖSZÖNÖM A FIGYELMET!