Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
6. Társítási kapcsolatok 7. Öröklődés
II. OO paradigma 4. Mitől OO egy program? 5. Objektum, osztály 6. Társítási kapcsolatok 7. Öröklődés 8. Egyszerű OO terv – Esettanulmány Köszöntő Szeretettel köszöntöm Önt, kedves hallgató ott a képernyő túloldalán. Angster Erzsébet vagyok, a Programozás tantárgy vezető tanára. Azzal az elhatározással ültem ide erre az oldalra, hogy segítsek Önnek, sőt megpróbáljak kedvet csinálni tanulmányaihoz, apró programjai elkészítéséhez. Önnek tisztában kell lennie azzal, hogy ez a tárgy nem a magolós tárgyak közé tartozik, a tananyag elsajátításához hónapokra van szükség. E tárgy tanulása során kialakul majd egyfajta gondolkodás, melyhez feltétlenül gyakorlási és érési időre van szükség. Hogy mennyi időre, az természetesen az egyéntől is függ. Van, aki most lát életében először programot, van, aki már komolyabb rutinra tett szert. Van, aki lassabban, de alaposabban tanul, mások gyorsabban, de felületesebben. Én a kettő közül feltétlenül az előbbit választanám. (Itt jön be az első kép) A tananyag mintegy 20 fejezetből áll, úgy, ahogy a tankönyvben is. Minden fejezet elején látni fogja, hogy pontosan hol tart az anyagban. Ajánlatos az egyes fejezetek végén egy kicsit elidőzni, a tankönyv kérdéseire válaszolni, valamint néhány feladatot megoldani.
2
4. Mitől OO egy program? II. OO paradigma 1. A valós világ modellezése
2. Az objektumorientált program főbb jellemzői
3
A valós világ modellezése
Az ember a világ megértéséhez modelleket épít Modellezési alapelvek Absztrakció Megkülönböztetés Osztályozás Általánosítás, specializálás Kapcsolatok felépítése, részekre bontás Absztrakció Objektumok leegyszerűsítése Megkülönböztetés Objektumok és azok tulajdonságainak megkülönböztetése Osztályozás Objektumok kategóriákba, osztályokba sorolása Például: „Dorka és Csonti kutyák” Általánosítás, specializálás Bővebb, illetve szűkebb kategóriák felállítása Például: „Csonti egy állat”, „A kutya az egy háziállat, de olyan amelynek négy lába van” Kapcsolatok felépítése, részekre bontás Ismeretségi vagy tartalmazási kapcsolat Például: „A kutya őrzi a házat”
4
OO program Egy objektumorientált program egymással kommunikáló objektumok összessége, melyben minden objektumnak megvan a feladatköre fut vezérlő objektum objektum1 üzenet3 üzenet1 objektum2 objektum3 üzenet2
5
Az OO program főbb jellemzői
Nem elég az OO nyelv, OO szellem kell! Objektum Üzenet (kérelem) Felelősség Bezárás, információ elrejtése Polimorfizmus (többalakúság) Osztályozás Öröklődés Futás alatti (késői) kötés Nem elég az OO nyelv, OO szellem kell! Objektum információt tárol, kérésre feladatokat hajt végre adatok és a rajtuk dolgozó algoritmusok összessége Üzenet (kérelem) objektum megszólításának módja beprogramozott rutin (metódus) a küldő objektumnak ismernie vagy tartalmaznia kell a fogadó objektumot Felelősség Egy OO programban minden objektumnak megvan a jól meghatározott felelősségi köre (feladatköre) Minden objektum felelős feladatainak korrekt elvégzéséért Bezárás, információ elrejtése A feladat elvégzésének “hogyan”-ja az objektum belügye Az objektum belseje sérthetetlen, vele csak az interfészen keresztül lehet kommunikálni Polimorfizmus (többalakúság) Ugyanarra a kérelemre különböző objektumok különbözőképpen reagálhatnak Osztályozás Az objektumok példányokat viselkedésük alapján osztályokba soroljuk Öröklődés Egy osztály örökölhet tulajdonságokat és viselkedésformákat egy másik osztálytól Az utódban csak az őstől való eltéréseket kell megadni Futás alatti (késői) kötés
6
Készül a húsleves nyitva? van(...)? elad(...) húsBolt1 zsófi vanKedv?
zöldségBolt1 zöldségBolt2 zöldségBolt3 laci elkészít (húsleves) vanKedv? elkészít(húsleves) zsófi kati erzsébet
7
Laci és a hölgyek elkészít rutinja
elkészít(húsleves) if zsófi.vanKedv() zsófi.elkészít(húsleves) else if kati.vanKedv() kati.elkészít(húsleves) else erzsébet.elkészít(húsleves) end if end elkészít elkészít(húsleves) vásárol(...) főz() mosogat() end elkészít Polimorfizmus
8
A „húsleveskészítők” osztályai
kati Férfi elkészít(...) laci Öröklési kapcsolat zsófi Példánya (függőségi kapcsolat) Hölgy vanKedv? vásárol(...) főz() mosogat() SzerelmesHölgy erzsébet GyakorlottHölgy
9
A boltok osztályai Bolt áruk (név, mennyiség, ár) nyitva? van(...)?
húsBolt2 húsBolt1 Bolt áruk (név, mennyiség, ár) nyitva? van(...)? elad(...) zöldségBolt1 zöldségBolt2 zöldségBolt3 HúsBolt beszerez(...) ZöldségBolt
10
5. Objektum, osztály II. OO paradigma 1. Az objektum
2. Az objektum állapota 3. Az objektum azonossága 4. Osztály, példány 5. Kliens üzen a szervernek 6. Objektum létrehozása, inicializálása 7. Példányváltozó, példánymetódus 8. Osztályváltozó, osztálymetódus 9. Bezárás, az információ elrejtése 10. A kód újrafelhasználása 11. Objektumok, osztályok sztereotípusai
11
Objektum Információt tárol, kérésre feladatokat hajt végre
Objektum = adatok + algoritmusok (metódusok) Üzeneten keresztül lehet megszólítani Felelős feladatainak korrekt elvégzéséért
12
Ember objektum Üzenetek andor megy(táv) elmegy(x,y) fordul(szög)
(100,50) 30º pozíció(x,y) irányszög Adatok (attribútumok) megy(táv) elmegy(x,y) fordul(szög)
13
Ablak objektum Adatok Üzenetek aFrame (20,16) (100,80) "Ablak" true
setVisible(true) setLocation(40,8) setSize(20,16) setTitle("Ablak") Üzenetek location(x,y) size(width,height) title visible Adatok
14
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
15
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!
16
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
17
Ember osztály és példányai
pozíció(x,y) iránySzög megy(táv) elmegy(x,y) fordul(szög) Ember kati andor zsófi
18
Ablak osztály és példányai
location(x,y) size(x,y) title visible setVisible(visible) setLocation(x,y) setSize(width,height) setTitle(title) Frame
19
Osztály és példány az UML-ben
Példány (Objektum) location=(10,6) size=(20,12) title="Ablak" visible=true aFrame:Frame Adatok/ Attribútumok/ Információk/ Változók/ Mezők Metódusok/ Operációk/ Rutinok Osztály neve location(x,y) size(width,height) title: String visible: boolean Frame setVisible(visible) setLocation(x,y) setSize(width,height) setTitle(title) Példány neve és osztálya Példány adatai
20
Kliens üzen a szervernek
üzenet (kérelem) szerver kliens Üzenetküldés, kérelem (request) Egy objektumot üzeneteken keresztül kérünk meg különböző feladatok elvégzésére Üzenet (message) kívülről elérhető metódus hívása kliens küldi, szerver fogadja Kliens (client) objektum aki a feladatot elvégezteti ügyfél, kérő, üzenetet küldő objektum Szerver (server) objektum aki a feladatot elvégzi kiszolgáló, választ adó, üzenetet fogadó objektum
21
Objektum létrehozása, inicializálása
Objektum életciklusa: „megszületik”, „él”, „meghal” Az objektumot létre kell hozni és inicializálni kell! Objektum inicializálása konstruktor (constructor) végzi adatok kezdőértékadása objektum működéséhez szükséges tevékenységek végrehajtása
22
Objektum inicializálása
kati = new Ember(100,50) kati:Ember pozíció=(100,50) iránySzög=0 Ember pozíció(x:number,y:number) iránySzög:number Ember(x:number,y:number) megy(táv:number) elmegy(x:number,y:number) fordul(szög:number)
23
Példányváltozó Példánymetódus Osztályváltozó Osztálymetódus
Példányonként helyet foglaló változó Példánymetódus Példányokon dolgozó metódus Osztályváltozó Osztályonként helyet foglaló változó Osztálymetódus Osztályokon dolgozó metódus
24
Példányváltozók (értékek) Osztálydefiníció
változó1=aÉrték1 változó2=aÉrték2 változóM=aÉrtékM a (példány) változó1: típus1 változó2: típus2 változóM: típusM metódusI metódus2 metódusN metódus1 a és b osztálya a.metódusI (üzenet) Példánymetódusok változó1=bÉrték1 változó2=bÉrték2 változóM=bÉrtékM b (példány) .
25
Autó(5,93,85) megy(60) fordul(45) setMaxSebesség(50) pozíció(x:number, y:number) iránySzög: number sebesség: number maxSebesség: number=100 Autó(x,y,sebesség) megy(táv) elmegy(x,y) fordul(szög) setMaxSebesség(sebesség) Autó setMaxSebesség(100) bor144:Autó pozíció=(5,93) iránySzög=0 sebesség=85 bit079:Autó pozíció=(28,8) sebesség=50 Autó(28,8,50) megy(10) elmegy(25,10)
26
Bezárás (encapsulation)
adatok és metódusok összezárása egybezárás, egységbezárás Információ elrejtése (information hiding) az objektum „belügyeit” csak az interfészen keresztül lehet megközelíteni Kód újrafelhasználása (code reuse) megírt kód felhasználása példány létrehozásával vagy osztály továbbfejlesztésével
27
Információ elrejtése Implementáció Interfész metódus1 Adatok metódus2
metódusN metódus3 metódus2 .
28
Objektumok, osztályok sztereotípusai
Információhordozó Határ Kontroll Konténer <<határ>> Frame UML jelölés:
29
6. Társítási kapcsolatok
II. OO paradigma 6. Társítási kapcsolatok 1. Objektumok közötti társítási kapcsolatok 2. Osztályok közötti társítási kapcsolatok 3. A társítási kapcsolat megvalósítása
30
Objektumok közötti társítási kapcsolatok
Ismeretségi (használati) Tartalmazási (egész-rész) gyenge erős
31
Ismeretségi kapcsolat
1 judit :Nő andrás :Férfi házastársa 2 zsófi :Ember erzsébet gyereke kati Objektumdiagramok
32
Tartalmazási kapcsolat
1 -ban van csoki :Édesség doboz :Doboz 4 :Kutya :Fej :Láb :Törzs 2 3 felügyeli printDialog: Dialog pageNum: InputLine cancel: Button ok: Button Kompozíció
33
Osztályok közötti társítási kapcsolatok
szerepnév szülő 2 * Kapcsolat foka (multiplicitása) Kiskorú Nagykorú gyerek {rendezett} Megszorítás Kapcsolat neve Gyereke Ismeretségi vagy tartalmazási Multiplicitás: egy–egy, egy–sok, sok–sok Kötelező vagy opcionális
34
Egy-egy kapcsolat Édesség Doboz Ban van Opcionális kapcsolat csoki
0..1 Doboz Ban van Opcionális kapcsolat csoki :Édesség doboz1 :Doboz -ban van doboz2 cukor süti
35
Egy-sok kapcsolat városa országa Városa budapest:Város Országa
eger:Város newYork:Város pécs:Város usa:Ország magyarország :Ország városa országa Városa Országa Ország Város 1..*
36
Sok-sok kapcsolat Tanfolyamok: andi gyuszi anita dávid Hallgatók:
gépírás angol számtech. 1..* 2..10 Hallgató Tanfolyam Jár Képzi
37
Egy-egy kapcsolat megvalósítása
kliens szerver másik:Autó típus: Mazda rendszám:GXT912 egyik:Autó típus: Peugeot rendszám:BIT745 autó :Ember név=Dávid autó=egyik név=Anita autó=másik dávid anita Ember név autó:Autó Ember(...) megy(...) vezet() Autó típus rendszám Autó(...) defektetKap()
38
Egy-egy kapcsolat megvalósítása
kliens szerver másik:Autó típus: Mazda rendszám:GXT912 egyik:Autó típus: Peugeot rendszám:BIT745 autó :Ember név=Dávid autó=másik név=Anita dávid anita Ember név autó:Autó Ember(...) megy(...) vezet() Autó típus rendszám Autó(...) defektetKap()
39
Egy-sok kapcsolat megvalósítása
másik:Autó típus: Mazda rendszám:GIT912 egyik:Autó típus: Peugeot rendszám:BIT745 :Ember név=Dávid autók:Konténer add(autó) autó = next(egyik) ... Autó(...) autó.megy(...) autó.defektetKap() …
40
Egy-sok kapcsolat megvalósítása
. . . Autó típus rendszám Autó(...) megy(...) defektetKap() * Ember név autók:Konténer Ember(...) vezet() Konténer size(): number add(obj: Object) first(): Object next(obj: Object): Object rNext(obj: Object): Object prev(obj: Object): Object rPrev(obj: Object): Object remove(obj: Object) clear()
41
7. Öröklődés II. OO paradigma 1. Az öröklődés fogalma, szabályai
2. Az utód objektum adatai és a küldhető üzenetek 3. Egyszeres, többszörös öröklés 4. Az interfész fogalma 5. Láthatóság (hozzáférési mód, védelem)
42
Öröklődés Dialog location(x,y) size(width,height) setLocation()
setSize() FileDialog file:String getFile():String setFile(file:String) Button 2 Ős osztály Utód osztály
43
Ki mire képes? gergő ágoston zsolt bea Ember pozíció IQ megy() tanul()
beszél() Hallgató osztályzat Tanár elérhetőség tananyag tanít()
44
Utód adatai, küldhető üzenetek
m1 Ős.m1 m2 Ős.m2 m1 Utód.m1 m3 Utód.m3 Küldhető üzenetek Mi hajtódik végre? Ős a b m1 m2 Utód c d m3 a, b o1: Ős a, b, c, d o2: Utód
45
Interfész Repülő «interfész» felszáll() leszáll() repül() UtasSzállító
létszám() beszáll(utas) kiszáll(utas) Interfészek Madár felszáll() leszáll () repül() eszik() etet() fészketRak() RepülőGép felszáll() leszáll () repül() létszám() beszáll(utas) kiszáll(utas) AutóBusz megy() várakozik() létszám() beszáll(utas) kiszáll(utas) Implementáló osztályok
46
Láthatóság Objektum védelme Osztály objektum.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ódus
47
Osztály védelme Osztály +publikusAdat #védettAdat -privátAdat
+publikusMetódus #védettMetódus -privátMetódus UtódOsztály egyMetódus Hivatkozások a metódusban: publikusAdat védettAdat privátAdat publikusMetódus védettMetódus privátMetódus
48
8. Egyszerű OO terv - Esettanulmány
II. OO paradigma 8. Egyszerű OO terv - Esettanulmány 1. A fogalmak tisztázása 2. Gyuszi játéka - fejlesztési dokumentáció
49
Munkafolyamatok, dokumentációk
Követelményfeltárás Követelményspecifikáció (feladatspecifikáció) Analízis Szakterületi objektummodell Képernyőterv (prototípus) Használati esetek Környezet megadása
50
Munkafolyamatok, dokumentációk (folyt.)
Tervezés Osztálydiagram Osztályleírások Együttműködési diagramok Programterv Implementálás Forráskód Tesztelés Tesztadatok
51
Programvezérlési módszerek
Kötegelt Interaktív Algoritmusvezérelt Eseményvezérelt
52
Algoritmusvezérelt program
Egy objektum main Szegény Gyuszi, lehet, hogy hiába nyomkodja... Az aktor csak akkor adhat életjelet, ha erre az algoritmus megkéri. A program
53
Eseményvezérelt program
Ha az aktor eseményt generál, a megfelelő metódus lekezeli azt. main A program Belépési pont
54
Feladatspecifikáció - Gyuszi játéka
Gyuszinak van egy 7*5 m-es terepasztala, melyen kisautók robognak különböző irányokban. Minden autójára jellemző annak színe és sebessége. Ha egy autó a terepasztal falá- hoz ér, ott rugalmasan ütközik, és a megváltozott irányban folytatja útját. Gyuszi úgy játszik, hogy kedve szerint egy-egy autót meg- fordít vagy arrébb tol. Előbb vagy utóbb Gyuszi be szeretné fejezni a játékot – ha ráüt egyet az asztalra, az autók enge- delmesen megállnak. A feladatot egy egyprocesszoros számítógépes környezet- ben kell szimulálni! Tegyük fel, hogy az autók nem ütköznek soha, vagyis “átmennek egymáson”.
55
Számítógépes szimuláció
Képernyőterv Számítógépes szimuláció Gyuszi
56
Szakterületi objektummodell
Esc gyusziJátéka terepasztal Gyuszi autó Egér
57
Használati esetek Megfordítja az autót (kettőt kattint az autón az egérrel) Arrébb tolja az autót (az egérrel vonszolja az autót) Véget vet a programnak (leüti az Esc billentyűt)
58
Osztálydiagram Component -x,y: number -width,height: number
GyusziJátéka +GyusziJateka() +main() Auto -szin: Color -sebesség: number -irány: number +Auto(szin:Color,x,y,...) +paint() +megy() +fordul(fok:number) +setIrany(fok:number) +mouseClicked(e:Event) +mouseDragged(e:Event) TerepAsztal +TerepAsztal() +robogas() +keyPressed(e:Event) Frame +add(comp: Component) +getComponent (index: number): Component +getComponentCount(): number * Component -x,y: number -width,height: number #Component() +setLocation(x,y:number) +setSize(width,height:number) +setBackGround(color:Color)
59
terepAsztal:TerepAsztal
Együttműködési diagram fordul() setLocation() mouseClicked() mouseDragged() :Auto Auto(...) setIrány() Gyuszi megy() keyPressed() :GyusziJateka terepAsztal:TerepAsztal TerepAsztal() add(autó) robogas() GyusziJateka()
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.