Objektumorientált
This presentation is the property of its rightful owner.
Sponsored Links
1 / 25

Gyurkó György PowerPoint PPT Presentation


  • 64 Views
  • Uploaded on
  • Presentation posted in: General

Objektumorientált elemzés és tervezés. Bevezető példa Miért? – Mit? – Hogyan?. Gyurkó György. Miért?. Miért (mikor) tervezzünk objektum-orientáltan? Miért éppen ilyen objektumokból (osztályokból) építünk fel egy alkalmazást, miért nem másokból?. Funkcionális megoldás.

Download Presentation

Gyurkó György

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Gyurk gy rgy

Objektumorientáltelemzés és tervezés

Bevezető példaMiért? – Mit? – Hogyan?

Gyurkó György


Gyurk gy rgy

Miért?

  • Miért (mikor) tervezzünk objektum-orientáltan?

  • Miért éppen ilyen objektumokból (osztályokból) építünk fel egy alkalmazást, miért nem másokból?


Gyurk gy rgy

Funkcionális megoldás

Azonos funkció többféle adatstruktúrát is kezel.

Adott műveletért semelyik adatstruktúra sem felelős.

strB

strA

fu1

fu2

strC

Nincs objektív rendező elv arra, hogy mely műveletek kerüljenek azonos funkcióba.

strD

fu3


Gyurk gy rgy

Mi a gond?

Az egyes struktúrákat még sok helyen jó lenne felhasználni, de az őket kezelő műveletek nélkül nem képeznek „önjáró” integritást.

Ezek a műveletek viszont hordozhatatlanná teszik a struktúrákat, mert akkor is feltételezik más struktúrák jelenlétét, amikor egy adott struktúrára csak magában volna szükség.

strB

strA

Itt csak a totalitás képez integritást, a részek nem.

fu1

fu2

strC

Felesleges kötéseket képeztünk egymástól független komponensek között. (Pl. az alkalmazás minden részét jogszabályfüggővé tettük.)

strD

fu3


Gyurk gy rgy

Objektumorientált megoldás

strABC

Minden funkciónak gazdája valamilyen adatstruktúra (egy osztály).

Adott funkció csak a gazdastruktúrával rendelkező (adott osztályú) objektumot kezelhet közvetlenül.

fuA1

strA

fuA2

fuA3

strB

fuB1

fuABC1

fuC1

strC

fuABC2

fuC2


Gyurk gy rgy

Mi határoz meg egy struktúrát (osztályt)?

Az, hogy jellemzően önállóan, más struktúráktól függetlenül (is) előfordulhat.

strABC

fuA1

Az strA, strB, strC egymástól függetlenül is előfordulhatnak.

Amikor speciálisan éppen „találkoznak”, azt egy őket tartalmazó összetettebb struktúra az strABC képviseli.

strA

fuA2

fuA3

strB

fuB1

fuABC1

fuC1

strC

fuABC2

fuC2


Gyurk gy rgy

Mi tartozhat egy funkcióba?

Csak olyan feladat, ami a gazdastruktúra önálló előfordulása esetén felmerülhet.

strABC

fuA1

A fuA1 csak a magában álló strA struktúrán végezhet műveleteket, csak az strA önálló előfordulásával kapcsolatos problémákat oldhat meg.

strA

fuA2

fuA3

Az strA, strB, strC struktúrák strABC-beli együttműködésével kapcsolatos feladatok megoldása az strABC hatásköre. Erre szolgáló műveleteket a fuABC1 és a fuABC2 tartalmazza.

strB

fuB1

fuABC1

fuC1

strC

fuABC2

fuC2


Gyurk gy rgy

Probléma nem megfelelő szinten való kezelése

  • A szükségesnél alacsonyabb szinten kezelt probléma: amikor a kompozícióra tartozó feladatot valamelyik komponenssel (komponensekkel) oldatunk meg. Következmény: romlik az újrafelhasználhatóság.

  • A szükségesnél magasabb szinten kezelt probléma: amikor valamely komponens(ek)re tartozó feladatot a kompozícióval oldatunk meg. Következmény: romlanak a fejlesztési minőségek, úgy mint az elemezhetőség, a szilárdság (= változtathatóság + stabilitás), tesztelhetőség.


Gyurk gy rgy

Feladat: Összegfokozatos (nyomtatott) rendeléslista - A program bemenete


Gyurk gy rgy

A program kimenete


Gyurk gy rgy

Példa: Összegfokozatos (nyomtatott) rendeléslista funkcionális megoldása

PROGRAM oszegFokozatosRendelesLista;

STRUKTÚRA rendeles: // A rendelések adatai;

STRUKTÚRA nyomtatonLista: // A nyomtatást leíró adatok;

Eljárásdefiníciók ...

...

kezdetiTeendok;

CIKLUS AMÍG (NEM inputVege)

ujVevoTeendok;

CIKLUS AMÍG ((NEM inputVege) ÉS azonosVevo)

egyRendelesFeldolgozas;

CIKLUS VÉGE;

vevoSzakaszVegeTeendok;

CIKLUS VÉGE;

befejezés;

PROGRAM VÉGE;


Gyurk gy rgy

Az előbbi megoldás struktúra-funkció kapcsolatai

inputVege

rendeles

azonosVevo

kezdeti Teendok

ujVevo Teendok

egyRendeles Feldolgozas

vevoSzakasz VegeTeendok

befejezes

nyomtatottLista


Gyurk gy rgy

Példa: Összegfokozatos rendeléslista adatorientált megoldása

PROGRAM oszegFokozatosRendelesLista;

STRUKTÚRA rendeles: // A rendelések adatai;

STRUKTÚRA nyomtatonLista: // A nyomtatást leíró adatok;

...

inputKezdetiTeendo;

nyomtatKezdetiTeendo(lapFejCimbe, fejLecbe, sorHossz);

olvas;

CIKLUS AMÍG (NEM inputVege)

vevoKezdete;

nyomtatonUjSzakasz(vevoFej);

CIKLUS AMÍG ((NEM inputVege) ÉS azonosVevo)

egySortKiIr(nyomtatandoTetel);

osszegez;

olvas;

CIKLUS VÉGE;

egySortKiIr(vevoOsszSor);

CIKLUS VÉGE;

nyomtatZaroTeendo;

inputZaroTeendo;

PROGRAM VÉGE;


Gyurk gy rgy

Az előbbi megoldás struktúra-funkció kapcsolatai

inputKezdetiTeendo

nyomtatKezdetiTeendo

olvas

vevoKezdete

nyomtatUjSzakasz

vevoFej

nyomtaton Lista

inputVege

rendeles

azonosVevo

egySortKiir

nyomtatandoTetel

osszegez

nyomtatZaroTeendo

vevoOsszSor

inputZaroTeendo


Gyurk gy rgy

Példa: Összegfokozatos rendeléslista objektumorientált megoldása I/1.Osztályok - öröklődés

OSZTÁLY RendelesNyomtatottListahoz {

// Szerkezete: vevoKod, vevoNev, cikkSzam, ertek, ...

FELÉPÍTŐMŰVELET kezdetiTeendo {...};

MŰVELET lapFejCimbe: szoveg {...};

MŰVELET fejLecbe : szoveg {...};

MŰVELET sorHossz : szám {...};

MŰVELET olvas {...};

MŰVELET inputVege: logikai {...};

MŰVELET nyomtatandoTetel: szoveg {...};

MŰVELET inputZaroTeendo {...};

}

OSZTÁLY RendelesOsszegFokozatosListahoz SZÜLŐJE

RendelesNyomtatottListahoz {

// Szerkezete: elozoVevoKod, vevoOssz, ...

FELÉPÍTŐMŰVELET kezdetiTeendo {...};

MŰVELET vevoKezdete {...};

MŰVELET vevoFej : szoveg {...};

MŰVELET azonosVevo : logikai {...};

MŰVELET osszegez {...};

MŰVELET vevoOsszSor : szoveg {...};

}


Gyurk gy rgy

Példa: Összegfokozatos rendeléslista objektumorientált megoldása I/2.Osztályok - öröklődés

OSZTÁLY NyomtatottLista {

// Szerkezete: laponMaxSor, lapSzamlalo, sorHossz,

sorSzamlalo, lapFejCim, fejLec, ...

FELÉPÍTŐ MŰVELET kezdetiTeendo(laFeCi: szöveg,

feLe: szöveg, soHo: szám){...};

MŰVELET egySortKiIr(szoveg: szöveg){...};

MŰVELET nyomtatZaroTeendo {...};

}

OSZTÁLY SzakaszoltLista SZÜLŐJE NyomtatottLista {

// Szerkezete: szakaszFej,...

FELÉPÍTŐ MŰVELET kezdetiTeendo(laFeCi: szöveg,

feLe: szöveg, soHo: szám){...};

MŰVELET nyomtatonUjSzakasz(szoveg: szöveg){...};

MŰVELET egySortKiIr(szoveg: szöveg){...};

}


Gyurk gy rgy

Példa: Összegfokozatos rendeléslista objektumorientált megoldása I/3.A futtatható osztály

OSZTÁLY OsszegFokozatosRendelesLista {

OSZTÁLYMŰVELET program {

OBJEKTUM rendeles: RendelesOsszegFokozatosListahoz ;

OBJEKTUM nyomtatonLista: SzakaszoltLista ;

rendeles = RendelesOsszegFokozatosListahoz.kezdetiTeendo;

nyomtatonLista = SzakaszoltLista.kezdetiTeendo(

rendeles.lapFejCimbe,rendeles.fejLecbe,rendeles.sorHossz);

rendeles.olvas;

CIKLUS AMÍG (NEMrendeles.inputVege)

rendeles.vevoKezdete;

nyomtatonLista.nyomtatonUjSzakasz(rendeles.vevoFej);

CIKLUS AMÍG((NEMrendeles.inputVege) ÉS rendeles.azonosVevo)

nyomtatonLista.egySortKiIr(rendeles.nyomtatandoTetel);

rendeles.osszegez;

rendeles.olvas;

CIKLUS VÉGE;

nyomtatonLista.egySortKiIr(rendeles.vevoOsszSor);

CIKLUS VÉGE;

nyomtatonLista.nyomtatZaroTeendo;

rendeles.inputZaroTeendo;

}

}

Már csak az aláhúzott részek helyett kell valami mást kitalálni, hogy a megoldás ne csak a rendelésekre legyen jó.


Gyurk gy rgy

Az I. megoldás osztálydiagramja

RendelesNyomtatottListahoz

NyomtatottLista

Rendelésrekord mezői, file neve

A nyomtatást/nyomtatót leíró adatok

Egyszerű lista előállításához szükséges műveletek

Egyszerű, a lapváltást kezelő műveletek. (Ez felelős a nyomtató környezetért.)

RendelesOsszegFokozatosListahoz

SzakaszoltLista

Összegfokozat képzéséhez szükséges plusz mezők

Az aktuális szakaszt jellemző plusz mezők (tartalmukat a klienstől kapják.)

Összegfokozat képzéséhez szükséges plusz műveletek

Összegfokozat képzéséhez szükséges plusz műveletek

Az általánosan megoldott részek

OsszegFokozatosRendelesLista

A listázó program.


Gyurk gy rgy

Egy általánosabb megoldás osztálydiagramja

BemenetNyomtatottListahoz (Interfész osztály)

RendelesTipus

NyomtatottLista

Csak a rendelésrekord mezőszerkezete

Egyszerű lista előállításához szükséges absztrakt műveletek

Az általánosan megoldott részek

BemenetOsszegFokozatosListahoz (Interfész osztály)

SzakaszoltLista

Összegfokozat képzéséhez szükséges absztrakt műveletek

1

1

OsszegFokozatosLista

RendelesOsszegFokozatosListahoz

Összegfokozat képzéséhez szükséges plusz mezők

Az általános megoldás program

Az interfész osztályoktól örökölt műveletek implementációja (is).

OsszegFokozatosRendelesLista

Az összeszerelő és futtató program


Gyurk gy rgy

Az általános megoldás működése

OsszegFokozatosRendelesLista

(Összeszerelő és futtató alkalmazás)

rendeles: RendelesOsszegFokozatosListahoz

feldolgozo: OsszegFokozatosLista

(Ez oldja meg általánosan a feladatot)

BemenetOsszegFokozatosListához

RendelesTipus


Gyurk gy rgy

Példa: Összegfokozatos lista általános megoldásaInterfész osztályok (szerepek)

INTERFÉSZ OSZTÁLY BemenetNyomtatottListahoz {

MŰVELET lapFejCimbe: szoveg ;

MŰVELET fejLecbe : szoveg ;

MŰVELET sorHossz : szám ;

MŰVELET olvas ;

MŰVELET inputVege: logikai ;

MŰVELET nyomtatandoTetel: szoveg ;

MŰVELET inputZaroTeendo ;

}

INTERFÉSZ OSZTÁLY BemenetOsszegFokozatosListahoz SZÜLŐJE

BemenetNyomtatottListahoz {

MŰVELET szakaszKezdete ;

MŰVELET szakaszFej : szoveg ;

MŰVELET azonosSzakasz : logikai ;

MŰVELET osszegez ;

MŰVELET szakaszOsszSor : szoveg ;

}


Gyurk gy rgy

Példa: Összegfokozatos lista általános megoldása (folytatás)Interfész osztályok (szerepek)

INTERFÉSZ OSZTÁLY BemenetNyomtatottListahoz {

MŰVELET lapFejCimbe: szoveg ;

MŰVELET fejLecbe : szoveg ;

MŰVELET sorHossz : szám ;

MŰVELET olvas ;

MŰVELET inputVege: logikai ;

MŰVELET nyomtatandoTetel: szoveg ;

MŰVELET inputZaroTeendo ;

}

INTERFÉSZ OSZTÁLY BemenetOsszegFokozatosListahoz SZÜLŐJE

BemenetNyomtatottListahoz {

MŰVELET szakaszKezdete ;

MŰVELET szakaszFej : szoveg ;

MŰVELET azonosSzakasz : logikai ;

MŰVELET osszegez ;

MŰVELET szakaszOsszSor : szoveg ;

}


Gyurk gy rgy

Példa: Összegfokozatos rendeléslista objektumorientált megoldása II.Az általános megoldás felhasználása

OSZTÁLY RendelesTipus {

// Szerkezete: vevoKod, vevoNev, cikkSzam, ertek, ...

}

OSZTÁLY RendelesOsszegFokozatosListahoz SZÜLŐJE RendelesTipus

SZEREPE BemenetOsszegFokozatosListahoz {

// Szerkezete: elozoVevoKod, vevoOssz, ...

FELÉPÍTŐ MŰVELET kezdetiTeendo {...};

MŰVELET lapFejCimbe: szoveg {...};

MŰVELET fejLecbe : szoveg {...};

MŰVELET sorHossz : szám {...};

MŰVELET olvas {...};

MŰVELET inputVege: logikai {...};

MŰVELET nyomtatandoTetel: szoveg {...};

MŰVELET inputZaroTeendo {...};

MŰVELET szakaszKezdete {...};

MŰVELET szakaszFej : szoveg {...};

MŰVELET azonosSzakasz : logikai {...};

MŰVELET osszegez {...};

MŰVELET szakaszOsszSor : szoveg {...};

}


Gyurk gy rgy

Példa: Összegfokozatos rendeléslista objektumorientált megoldása II.(folytatás)Az összeszerelő és futtató osztály

OSZTÁLY OsszegFokozatosRendelesLista{

OSZTÁLYMŰVELET program {

OBJEKTUM rendeles: RendelesOsszegFokozatosListahoz ;

OBJEKTUM feldolgozo: OsszegFokozatosLista;

rendeles = RendelesOsszegFokozatosListahoz.kezdetiTeendo;

feldolgozo = OsszegFokozatosLista.listatKeszit(rendeles);

}

}


Gyurk gy rgy

Egy jogszabálykövető rendszer

JogSzabalyKovetoRendszer

(Összeszerelő és futtató alkalmazás)

jogTudo: JogSzabalyFuggoResz

vegrehajto: JogSzabalyFuggetlenResz

(Ez oldja meg általánosan a feladatot)

Ezt a részt módosítani kell, valahányszor vál-

toznak a vonatkozó jog-szabályok.

Az interfész specifiká-ciója nem módosul, csak az implementációja.

Illesztő (interfész osztály)

Ezt a részt nem kellmódosítani, semtesztelni, ha csak ajogszabályi környe-zet változott.


  • Login