Programozási technikák Pál László
Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák - Pál László
Előadás tematika 1. 2. 3. 4. 5. 6. 7. 8.
Pascal ismétlés, kiegészítések Objektum orientált programozás (OOP) Delphi környezet Komponensek bemutatása Több űrlapos alkalmazások Kivételkezelés Grafika Adatbázis-kezelés 2
Programozási technikák - Pál László
Laborgyakorlat tematika 1.
2.
Nagyjából követi az előadás tematikát. Kitűzött feladatok közös illetve egyéni megoldása. Használt software: Delphi 7, 8
3
Programozási technikák - Pál László
Könyvészet -1/3 [1] Angster Erzsébet : Programozás tankönyv I.- II. Akadémia nyomda, Martonvásár, 1999
[2] Angster Erzsébet : Az objektumorientált tervezés és programozás alapjai : UML Turbo Pascal 4 Kör Bt., Budapest, 2000
4
Programozási technikák - Pál László
Könyvészet – 2/3 [3] Baga Edit : Delphi másképp Akadémia nyomda, Martonvásár, 1999
[4] Marco Cantú : Delphi 7 mesteri szinten I. –II. Kiskapu Kft, 2003
5
Programozási technikák - Pál László
Könyvészet - 3/3 [5] Pál László, Máté Szilárd: Alkalmazásfejlesztés Delphiben, Nyomtatás alatt. Előadások, labor feladatok, egyéb dokumentációk megtalálhatók az alábbi linken: www.emte.siculorum.ro/~pallaszlo
6
Programozási technikák - Pál László
Vizsgakövetelmények 1.
Felmérési mód: kollokvium a) b) c)
Zárthelyi vizsga I.: 40% (8. hét) Zárthelyi vizsga II.: 40% (14. hét) Elméleti teszt: 20% ( 14. hét)
7
Programozási technikák - Pál László
1. ELŐADÁS Turbo Pascal ismétlés és kiegészítés Objektumorientált programozás (OOP)
8
Programozási technikák - Pál László
Pascal típusai
Egyszerű típusok
9
Programozási technikák - Pál László
Pascal típusai
Összetett típusok
Típusdefiniálás (type): segítségével készíthetünk saját változó típusokat
Felsorolt típus
Példa: Madarak = (fecske, golya, sas, bagoly);
Intervallum típus
Definició: Type ujvaltozotipusnev = változótipus; Példa: Type Szovegtipus = String; Var Bekert_szoveg : Szovegtipus;
Betuk : 'A'..'Z'; MunkaNapok : Hetfo..Pentek;
Tömb típus
Type Sor = array[1..20] of real; Type Tablazat = array[1..10,1..20] of real; 10
Programozási technikák - Pál László
Pascal típusai
Összetett típusok
Rekord típus: különböző típusokból állhat
Példa: Type Datum = record Ev : 1900..2050; Ho : 1..12; Nap : 1..31; end; var d:Datum; d.Ev:= 2009;d.Ho:=9;d.Nap:=14;
Halmaz típus: Példa: Type KarakterKeszlet = set of char; szamok = 1..10; sz10 = set of szamok; Var paros: sz10; paros := [2,4,6,8,10]; Műveletek: + egyesítés, * metszet, - Különbség
11
Programozási technikák - Pál László
Iterációk
Elől tesztelős ciklus while kifejezes do utasitas; Hátul tesztelős ciklus repeat utasitas until feltetel; Növekményes ciklus fel for kezdo to veg do utasitas; Növekményes ciklus le for kezdo downto veg do utasitas; 12
Programozási technikák - Pál László
Szelekció
Feltételes utasítás: if feltetel then utasitas; if feltetel then utasitas1 else utasitas2;
Választás: case kifejezes of ertek1:utasitas1; ertek2:utasitas2; … else utasitas; end; 13
Programozási technikák - Pál László
Függvények, eljárások
Függvények: function nev(argumentumok):tipus; Lokális változók begin Utasítások; nev:= tipus; end;
Eljárások: procedure nev(argumentumok); Lokális változók begin Utasítások; end; 14
Programozási technikák - Pál László
Egységek (Unit-ok)
Egység (Unit): a főprogramhoz hozzászerkeszthető tárgykód Az egység célja:
Korábban kipróbált, bevált programrészek hozzáférhetővé tétele más programokban Megvalósítási részletek elrejtése
15
Programozási technikák - Pál László
Egységek felépítése
Egységfej
Unit azonosító;
Illesztő rész
Interface [Uses azonosító [,azonosító...];] –
Kifejtő rész
Implementation [Uses azonosító [,azonosító...];] –
Globális deklarációk (változók, típusok, konstansok, eljárásfejek...)
A globális és lokális eljárások kifejtése
Végrehajtó rész
[Begin [utasítás [; utasítás...]] End. 16
Programozási technikák - Pál László
Példa egységre Egység
Főprogram
17
Programozási technikák - Pál László
Objektumorientált Programozás (OOP) 1. 2. 3. 4. 5.
Objektum, osztály Objektum létrehozása, inicializálása Hozzáférés az adatokhoz Öröklődés Object Pascal megvalósítás
18
Programozási technikák - Pál László
Objektumorientált Programozás (OOP) Természetes gondolkodást, cselekvést közelítő módszer. Valós világ modellezése Modellezési alapelvek:
Absztrakció
Megkülönböztetés
Osztályozás
Két legfontosabb eleme: objektum, osztály 19
Programozási technikák - Pál László
Objektum Információkat tárol, kérésre feladatokat hajt végre Adatok (attribútumok) és metódusok összessége, mely felelős feladatai elvégzéséért Minden objektum rendelkezik
20
Programozási technikák - Pál László
Objektum példa Üzenetek megy(táv) elmegy(x,y) fordul(szög)
andor
andor (100,50) 30º
pozíció(x,y) irányszög Adatok (attribútumok) 21
Programozási technikák - Pál László
Objektum példa Üzenetek Lathato(true) Pozició(40,8) Méret(20,16) Cim("Ablak")
Ablak (20,16) (100,80) "Ablak" true
Adatok pozicio(x,y) meret(sz,m) cim lathato
22
Programozási technikák - Pál László
Objektum állapota Az objektumnak mindig van egy állapota (adatok pillanatnyi értékei) Két objektumnak ugyanaz az állapota, ha az adatok értékei megegyeznek Az objektum operációkat hajt végre, melyek hatására állapota megváltozhat Az objektum mindig emlékszik állapotára
23
Programozási technikák - Pál László
Objektum azonossága Minden objektum egyértelműen azonosítható Az objektum azonossága független a tárolt értékektől Két objektum akkor sem azonos, ha állapotaik megegyeznek!
24
Programozási technikák - Pál László
Osztály, példány
Osztály (class)
Olyan
objektumminta vagy típus, mely alapján példányokat (objektumokat) hozhatunk létre
Példány (instance)
Minden
objektum születésétől kezdve egy osztályhoz tartozik
25
Programozási technikák - Pál László
Osztály, példány - Példa Ember
zsófi
pozíció(x,y) iránySzög kati
megy(táv) elmegy(x,y) fordul(szög)
andor
26
Programozási technikák - Pál László
Osztály, példány - Példa Ablak pozicio(x,y) meret(sz,m) cim lathato Lathato(lathato) Pozicio(x,y) Meret(sz,m) Cim(cim) 27
Programozási technikák - Pál László
Osztály és példány jelölése UML-ben UML (Unified Modeling Language): egységesített modellezési nyelv Példány (Objektum) Osztály neve Ablak
Adatok/ Attribútumok/ Információk/ Változók/ Mezők
pozicio(x,y) meret(sz,m) cim: String lathato: boolean
Metódusok/ Operációk/ Rutinok
Lathato(lathato) Pozicio(x,y) Meret(sz,m) Cim(cim)
aAblak:Ablak pozicio=(10,6) meret=(20,12) cim="Ablak" lathato=true
Osztály 28
Programozási technikák - Pál László
Objektum létrehozása, inicializálása
Objektum életciklusa: „megszületik”, „él”, „meghal” Az objektumot létre kell hozni és inicializálni kell! Konstruktor (constructor) : speciális eljárás, memóriát foglal le az objektum számára, inicializálja az adattagokat - Create Destruktor (destructor): felszabadítja az erőforrásokat mielőtt az objektum megsemmisül – Destroy
Free
metódus 29
Programozási technikák - Pál László
Objektum inicializálása Ember pozíció(x:number,y:number) iránySzög:number Create(x:number,y:number) megy(táv:number) elmegy(x:number,y:number) fordul(szög:number)
kati = Ember.Create(100,50) kati:Ember pozíció=(100,50) iránySzög=0
30
Programozási technikák - Pál László
Láthatóság, védelem
Az információ elrejtése azt jelenti, hogy az objektum elrejti „belügyeit”, azt csak az interfészén keresztül lehet megközelíteni Implementáció
Interfész
metódus1 metódus2 metódus3 . . metódusN .
Adatok
31
Programozási technikák - Pál László
Láthatóság, védelem
Hozzáférési módok
Publikus
(public): az adatok a program bármely részéről elérhetünk
Védett (protected): az adott osztályból és abból származó alosztályokból lehet elérni az adatokat
Privát (private): az adatmezők és metódusok kívülről nem érhetők el 32
Programozási technikák - Pál László
Láthatóság, védelem - Példa Osztály +publikusAdat #védettAdat -privátAdat +publikusMetódus #védettMetódus -privátMetódus
objektum.publikusAdat objektum.publikusMetódus objektum :Osztály objektum.védettAdat objektum.védettMetódus objektum.privátAdat objektum.privátMetódus33
Programozási technikák - Pál László
Öröklődés (Inheritance)
Már meglévő osztály továbbfejlesztése, módosítása. Meglévő osztály: ős, szülő, alap. Továbbfejlesztett osztály: utód, gyerek, származtatott. Származtatás:
Jelölés Õs osztály
Új
tulajdonságokat veszünk fel
Műveleteket veszünk fel: új művelet,
módosítjuk az ős viselkedését Utód osztály 34
Programozási technikák - Pál László
Öröklődés megvalósítása
Örökítéskor három lehetőségünk van: Új változókat adunk hozzá az utód osztályhoz
Új metódusokat adunk hozzá az utód osztályhoz
Az ősosztály metódusait felülírjuk
Ember Nev Szülév Tanul Beszél
Hallgató
Oktató
TanfSzám Eredmény
Tanszék Fizetés
Tanul
Tanít Beszél
35
Programozási technikák - Pál László
Utód osztály adatai, üzenetei - Példa Küldhetõ üzenetek Õs Ob1 : Õs
A B
A, B
M1
Õs.M1
M2
Õs.M2
M1 M2 M3
Utód.M1 Õs.M2 Utód.M3
M1 M2
Utód C D M1 M3
Ob2 : Utód A, B, C, D
36
Programozási technikák - Pál László
Objektumok, osztályok Object Pascalban Osztály deklaráció Osztály deklaráció – Példa
Type osztalynev = class Adatlista Metoduslista End;
Metódus definíció - Példa
37
Programozási technikák - Pál László
Objektumok, osztályok Object Pascalban Objektum létrehozás
Az Object Pascal, objektum hivatkozási modellre épül nev fizetes alk1 Hivatkozás
Objektum adatai
Osztály TAlkalmazott nev:string fizetes:integer fizetestEmel(f: integer) Kiir
Objektum példány alk1 : TAlkalmazott nev = 'Kiss Istvan' fizetes = 1000 38
Programozási technikák - Pál László
Konstruktor - Példa
39
Programozási technikák - Pál László
Láthatóság, védelem
Az osztályok egységekben vannak tárolva Hozzáférési módok: •Public (+) •Protected (#) •Private (-) •Published
40
Programozási technikák - Pál László
Öröklődés Object Pascalban Osztály származtatás:
UML diagram
Ős osztály, utód osztály deklaráció
TAlkalmazott nev fizetes Create fizetestEmel fizetesKi Kiir
TFonok beosztottakSzama Create beosztottakotNovel Kiir
41
Programozási technikák - Pál László
Öröklődés Object Pascalban Create és Kiír definiálása Inherited: a legközelebbi örökölt metódus hajtódik végre
Objektum példányok létrehozása
42
Programozási technikák - Pál László
Láthatóság, védelem
protected (védett): az osztályt deklaráló egységen kívülről nem enged hozzáférést, kivéve a származtatott osztályok. Egy egységben található osztályok egymás „barátai”
UML diagram és osztály deklaráció hozzáférési szintekkel TAlkalmazott # nev # fizetes + Create + fizetestEmel + fizetesKi + Kiir
TFonok - beosztottakSzama + Create + beosztottakotNovel + Kiir
43