SzoftTechKonzi2009jan12 2

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


Szofttech konzi 2009.jan.12 17:00tól 18:00ig

Ide teheted fel a kérdéseket, amiket meg szeretnél kérdezni a konzultáción.Ezeket fogjuk nagy részt megoldani.

Aki feltesz itt kérdést az legyen olyan szíves és konzi után írja be ide a választ is rá!

Így no a tudásbázis és ha úgy alakul, biztosan nem felejted el a kovetkezo vizsgáig.


Mielott kérdezel nézd meg ,h ez az az idopont ahol meg fogsz jelenni!
Mielott kérdezel nézd meg ,h nem kérdezte e már meg valaki!
Mindenképp írd oda a kérdésed mellé a teljes neved!

2009 január 6.-i vizsga beugró első feladat megoldása, és magyarázat, hogy mit miért? (Deák Endre)

https://wiki.sch.bme.hu/pub/Infoalap/SzoftTechKonzi2009jan12_2/szofttech090106.PDF

A feladat:

A - csak az elso tagmondat igaz  (+ -) 
B - csak a második tagmondat igaz  (- +) 
C - mindkét tagmondat igaz, de a következtetés hamis  (+ + -) 
D - mindkét tagmondat igaz és a következtetés is helyes  (+ + +) 
E - egyik tagmondat sem igaz  (- -) 

<img src = "2009_jan_6_uml.jpeg" width = "40%" height = "40%" />

(Az ábra megértését segíti az omg.org-ról letölthető UML2-ről szóló részletes pdf).

  • [E] Q bárhol helyettesítheto S-sel, mert S a Q leszármazottja.


*Indoklás*: A Liskov -féle helyettesítési elv szerint egy típus minden fontos tulajdonságát meg kell tartania az altípusaiban is, de S nem is Q altípusa. Tehát se az első, se a második állítás nem igaz.

  • [A] R qux(q:Q) metódusa nem kaphat paraméterül Z objektumot, mert a metódus absztrakt.


*Indoklás*: R qux(q:Q) jelentése, hogy a qux függvény Q típusú paramétert vár. Viszont a metódus nem absztrakt, annak a jelölése a dőlt betű.

  • [E] B foo(r:R) metódusa nem hívhat meg a paraméterül kapott objektumon foo() metódust, mert R-nek nincs ilyen metódusa


*Indoklás*: az R osztály az S osztály specializációja, S pedig megvalósítja az X interfészt, amelynek van publikus foo() metódusa. Ezért R-nek is kvázi lesz foo() metódusa, (a második állítás hamissága), valamint B foo() metódusa meg is hívhatja, mert R-t vár paraméterül.

  • [E] S bar(q:Q) metódusa nem módosíthatja az S inf attribútumát, mert az attribútum konstans.


*Indoklás*: osztály saját függvénye az osztály változóit módosíthatja (első állítás), S inf attribútuma pedig nem konstans, hanem private (a -kötőjel miatt).

  • [E] S bar(q:Q) metódusa nem hívhatja meg a paraméterül kapott objektum bar() metódusát, mert a Q osztálynak nincs ilyen szignatúrájú metódusa.


*Indoklás*: itt csel van, ugyanis Q a saját bar(x:X) metódusa mellé örökli Z-től a bar() metódust (második állítás). És mivel S bar metódusa Q-t vár paraméterül, hozzáfér Q-nak a Z-től öröklött publikus bar() metódusához.

  • [B] Z set(x:X) metódusa nem kaphat paraméterül B objektumot, mert B megvalósítja az X interfészt.


*Indkolás*: a második állítás azért igaz, mert B az S osztály egy specializációja, és S megvalósítja az X interfészt, tehát B is megvalósítja. Az első pedig a quxos kérdéshez hasonló: Z set(x:X) jelentése: X-et vár paraméterül.

  • [B] B módosíthatja egy Q objektum im attribútumát, mert S függ Q-tól.


*Indoklás*: a második állítás a nyíl miatt igaz (ez jelenti a függőséget), viszont Q im attribútuma private, így azt B nem módosíthatja (így az első állítás nem igaz).

  • [B] R és B bárhol felcserélhetık, mert közös az osük.


*Indoklás*: R és B közös őse S (lásd nyilak), tehát a második állítás igaz. Az első hamisságára pedig egy Cassus-példa: legyen S az emlősök, legyen R a kutya, B a macska, nem lehet kutya helyére macskát tenni (R és B tökmás osztályok).

  • Kis kiegészítés:


Ezeket a feladatokat úgy érdemes megoldani, hogy minden tagadó állításnál le kell takarni a nem szócskát, majd ellenőrizni az így született állítások igazságát, ez könnyebb, mint azon agyalni, hogy akkor most miért is nem lehet valamit csinálni, vagy miért nem örökli, stb. Az így kapott igazságtartalmat vissza kell negálni, és kész a jó megoldás.

JSD-s Balambéros virágvevos mozibavivos

<img src= "jsd_alma2.jpeg" width = "70%" height= "70%"> 2009.01.10.

Mirol szól a Liskov-elv?

Ha valami alosztálya valaminek, akkor helyettesítheto vele.Például:

Van egy emlos ososztályunk , ebbol származtatunk egy macska alosztályt.
Az emlos osztály bárhol helyettesítheto a macska alosztállyal, mert a macska alosztály az emlos ososztály gyermeke és orokolte minden tulajdonságát(kivéve a private).
A macska alosztály a sepeciálisabb.

Ez olyan mint: Íróeszkozzel írsz.(Ez az ososztály)
Van egy tollad és egy ceruzád.(Ezek az alosztályok(gyermekosztályok,leszármazott osztályok)

Mindegyikkel tudsz írni,mert mindegyik íróeszkoz.Ahol neked írnod kell, ott bevetheted mindegyiket.
Ha te valamilyen rajzot szeretnél készíteni inkább ceruzát használsz, nem pedig akármilyen íróeszkozt.

Hogyan találkozhatunk vele kulonbozo diagramokon?
Liskov_elv.jpeg

Mirol szól a Demeter-torvény?

Minden egységnek csak a barátaival szabadna kommunikálnia.
Ne beszélj idegenekkel!!!

Aggregáció és kompozíció

Aggregáció - nem semmisulnek meg egyutt

aggregacio.jpeg


Kompozíció - egyutt semmisulnek meg

kompozicio.jpeg

Mikor van szinkron és mikor asszinkron hívás?

Szinkron: Elmész a bufébe kérsz teát, szendvicset és megvárod amíg odaadják a kezedbe.(ettol szinkron... vársz a válaszra,ami a kérésre érkezik)
Asszinkron: Sétálsz az utcán és bedobod a levelet a postaládába és tovább mész.Nem várod meg,h mikor jon már érte a postás és nézed ahogyan elviszi.(Ettol asszinkron, h nem vársz válaszra)