Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

6. Társítási kapcsolatok 7. Öröklődés

Hasonló előadás


Az előadások a következő témára: "6. Társítási kapcsolatok 7. Öröklődés"— Előadás másolata:

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()


Letölteni ppt "6. Társítási kapcsolatok 7. Öröklődés"

Hasonló előadás


Google Hirdetések