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

Java - II. / 1 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.

Hasonló előadás


Az előadások a következő témára: "Java - II. / 1 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."— Előadás másolata:

1 Java - II. / 1 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

2 Java - II. / 2 4.Mitől OO egy program? 1.A valós világ modellezése 2.Az objektumorientált program főbb jellemzői

3 Java - II. / 3 Az ember a világ megértéséhez modelleket épít  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 Modellezési alapelvek A valós világ modellezése

4 Java - II. / 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üzenet1

5 Java - II. / 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

6 Java - II. / 6 Készül a húsleves nyitva? van(...)? elad(...) húsBolt2 húsBolt1 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 Java - II. / 7 Laci és a hölgyek elkészít rutinja elkészít(húsleves) vásárol(...) főz() mosogat() end elkészít 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 Polimorfizmus

8 Java - II. / 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? elkészít(...) vásárol(...) főz() mosogat() SzerelmesHölgy főz() erzsébet GyakorlottHölgy főz()

9 Java - II. / 9 A boltok osztályai 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 beszerez(...)

10 Java - II. / Objektum, osztály 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 Java - II. / 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 Java - II. / 12 Ember objektum Üzenetek andor (100,50) 30º pozíció(x,y) irányszög Adatok (attribútumok) megy(táv) elmegy(x,y) fordul(szög) andor

13 Java - II. / 13 Ablak objektum 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 aFrame

14 Java - II. / 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 Java - II. / 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 Java - II. / 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 Java - II. / 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 Java - II. / 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 Java - II. / 19 Osztály és példány az UML-ben Osztály 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 Java - II. / 20 Kliens üzen a szervernek üzenet (kérelem) szerverkliens

21 Java - II. / 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 Java - II. / 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 Java - II. / 23 Példányváltozó 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 Java - II. / 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 Java - II. / 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ó megy(60) fordul(45) setMaxSebesség(100) bor144:Autó pozíció=(5,93) iránySzög=0 sebesség=85 bit079:Autó pozíció=(28,8) iránySzög=0 sebesség=50 Autó(28,8,50) megy(10) elmegy(25,10)

26 Java - II. / 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 Java - II. / 27 Információ elrejtése Adatok Interfész Implementáció metódus1 metódusN metódus3 metódus

28 Java - II. / 28 Objektumok, osztályok sztereotípusai  Információhordozó  Határ  Kontroll  Konténer > Frame  UML jelölés: Frame

29 Java - II. / 29 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 Java - II. / 30 Objektumok közötti társítási kapcsolatok  Ismeretségi (használati)  Tartalmazási (egész-rész) •gyenge •erős

31 Java - II. / 31 Ismeretségi kapcsolat 1 judit :Nő andrás :Férfi házastársa Objektumdiagramok 2 zsófi :Ember erzsébet :Ember gyereke kati :Ember gyereke

32 Java - II. / 32 Tartalmazási kapcsolat 4 :Kutya :Fej :Láb :Törzs 2 Kompozíció 1 -ban van csoki :Édesség doboz :Doboz 3 felügyeli printDialog: Dialog pageNum: InputLine cancel: Button ok: Button

33 Java - II. / 33 Osztályok közötti társítási kapcsolatok  Ismeretségi vagy tartalmazási  Multiplicitás: egy–egy, egy–sok, sok–sok  Kötelező vagy opcionális szerepnév szülő 2 * Kapcsolat foka (multiplicitása) Kiskorú Nagykorú gyerek {rendezett} Megszorítás Kapcsolat neve Gyereke

34 Java - II. / 34 Egy-egy kapcsolat Édesség 0..1 Doboz Ban van Opcionális kapcsolat csoki :Édesség doboz1 :Doboz -ban van doboz2 :Doboz cukor :Édesség süti :Édesség

35 Java - II. / 35 Egy-sok kapcsolat Városa Országa Város Ország 1..* budapest:Város eger:Város newYork:Város pécs:Város usa:Ország magyarország :Ország városa országa

36 Java - II. / 36 Sok-sok kapcsolat Tanfolyamok: andi gyuszi anita dávid Hallgatók: gépírás angol számtech. 1..* Hallgató Tanfolyam Jár Képzi

37 Java - II. / 37 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 :Ember név=Anita autó=másik dávid anita Egy-egy kapcsolat megvalósítása Ember név autó:Autó Ember(...) megy(...) vezet() Autó típus rendszám Autó(...) megy(...) defektetKap()

38 Java - II. / 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 :Ember név=Anita autó=másik dávid anita Ember név autó:Autó Ember(...) megy(...) vezet() Autó típus rendszám Autó(...) megy(...) defektetKap()

39 Java - II. / 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 Java - II. / 40 Egy-sok kapcsolat megvalósítása... Autó típus rendszám Autó(...) megy(...) defektetKap() * Ember név autók:Konténer Ember(...) megy(...) 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 Java - II. / 41 7.Öröklődés 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 Java - II. / 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 Java - II. / 43 Ki mire képes? gergő ágoston zsolt bea Ember pozíció IQ megy() tanul() beszél() Hallgató osztályzat tanul() Tanár elérhetőség tananyag tanít() beszél()

44 Java - II. / 44 Utód adatai, küldhető üzenetek Ős abab m1 m2 Utód cdcd m1 m3 a, b o1: Ős a, b, c, d o2: Utód m1Ős.m1 m2Ős.m2 m1Utód.m1 m2Ős.m2 m3Utód.m3 Küldhető üzenetek Mi hajtódik végre?

45 Java - II. / 45 Interfész Implementáló osztályok Interfészek Repülő «interfész» felszáll() leszáll() repül() UtasSzállító «interfész» létszám() beszáll(utas) kiszáll(utas) RepülőGép felszáll() leszáll () repül() létszám() beszáll(utas) kiszáll(utas) Madár felszáll() leszáll () repül() eszik() etet() fészketRak() AutóBusz megy() várakozik() létszám() beszáll(utas) kiszáll(utas)

46 Java - II. / 46 Láthatóság objektum.védettAdat objektum.védettMetódus objektum.privátAdat objektum.privátMetódus objektum.publikusAdat objektum.publikusMetódus objektum :Osztály Osztály +publikusAdat #védettAdat -privátAdat +publikusMetódus #védettMetódus -privátMetódus Objektum védelme

47 Java - II. / 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 Java - II. / 48 8.Egyszerű OO terv - Esettanulmány 1.A fogalmak tisztázása 2.Gyuszi játéka - fejlesztési dokumentáció

49 Java - II. / 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 Java - II. / 50 Munkafolyamatok, dokumentációk (folyt.)  Tervezés •Osztálydiagram •Osztályleírások •Együttműködési diagramok  Implementálás •Forráskód  Tesztelés •Tesztadatok Programterv

51 Java - II. / 51 Programvezérlési módszerek  Kötegelt  Interaktív •Algoritmusvezérelt •Eseményvezérelt

52 Java - II. / 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 Java - II. / 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 Java - II. / 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 Java - II. / 55 Képernyőterv Számítógépes szimuláció Gyuszi

56 Java - II. / 56 Szakterületi objektummodell Esc gyusziJátékaterepasztal Gyuszi autó Egér

57 Java - II. / 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 Java - II. / 58 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) +paint() Osztálydiagram

59 Java - II. / 59 TerepAsztal() add(autó) robogas() :GyusziJateka terepAsztal:TerepAsztal megy() Auto(...) setIrány() Gyuszi :Auto fordul() setLocation() GyusziJateka() mouseClicked() mouseDragged() keyPressed() Együttműködési diagram


Letölteni ppt "Java - II. / 1 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."

Hasonló előadás


Google Hirdetések