|
 |
 |
Telefon: 375-1564, 375-3591
E-mail: info@computerbooks.hu
Dr. Kondorosi Károly - Dr. László
Zoltán - Dr. Szirmay-Kalos László:
Objektum-orientált szoftverfejlesztés
C és C++ nyelven
- a könyvhöz lemezmelléklet
tartozik
Megjelenés: 1997, utolsó kiadás:
2004
427
oldal,
2616.- Ft
ISBN: 963 618 108 X
|
A könyv előszava
A szoftverfejlesztés folyamata a programozás történetének
mintegy fél évszázada alatt jelentős
átalakulásokon esett át - néhány
kiválasztott guru mágikus ténykedését
a szoftver ipari előállítása váltotta
fel. Az "ipari" termeléshez szigorú technológiai
előírásokra, hatékony termelőeszközökre
és a hajdani guruk helyett mind a technológiát,
mind pedig az eszközöket jól ismerő, fegyelmezett
szakembergárdára van szükség. A szoftverfejlesztés
során a szabványos technológiai előírásokat
az ún. fejlesztési módszertanok fogalmazzák
meg, az eszközöket pedig a CASE rendszerek és
a programozási nyelvek jelentik. A módszertanok
alkalmazása során megértjük a megoldandó
problémát és körvonalazzuk a számítógépes
megvalósítás mikéntjét. Napjainkban
számos módszertan vetélkedik egymással,
amelyek közül az alkalmazási területek jelentős
részénél az ún. objektum-orientált
megközelítés került vezető pozícióba.
Ennek oka talán az, hogy a többi módszerrel
szemben az objektum-orientált elvek nem a számítástechnika
elvont fogalmait kívánják ráerőltetni
az életre, hanem megfordítva az élet természetes
és számítástechnika mentes működését
hangsúlyozzák a feladatok megoldása során.
Az objektum-orientált szemlélettel megragadott feladatok
programjait olyan programozási nyelveken érdemes
implementálni, amelyek maguk is segítik az objektum-orientált
gondolkozást, különben a programfejlesztés
utolsó fázisában, az implementáció
során esetleg elveszítenénk az objektum-orientált
megközelítés számos előnyét.
Számos objektum-orientált programozási nyelv
létezik, melyek közül messze a C++ nyelv a legelterjedtebb.
Ezen könyv az objektum-orientált szoftverfejlesztés
fázisait kívánja bemutatni, a megoldandó
probléma megértésétől kezdve
a megoldás menetének körvonalazásán
át egészen az implementáció részletes
kidolgozásáig. A fejlesztés különböző
fázisait igen színvonalas idegen nyelvű munkák
tárgyalták ezen könyv megjelenése előtt
is. A könyvek egy része az analízis és
tervezés lépéseit ismerteti, míg más
művek a C++ nyelv szintaktikáját és
szemantikáját mutatják be. A mi könyvünk
főleg abban kíván újat adni, hogy
a szoftvertechnológiai lépéseket és
a C++ nyelv ismertetését összekapcsolja, lehetőséget
teremtve arra, hogy a gyakorló programfejlesztő
számára egy egységes kép alakuljon
ki. Ezzel reményeink szerint elkerülhető lesz
az a - oktatói tapasztalataink alapján elég
gyakori - hiba, hogy a fejlesztő külön-külön
remekül kezeli az objektum-orientált analízis
és tervezés lépéseit és jól
ismeri a C++ nyelvet is, de C++ programját mégsem
az elkészült tervekre építi, így
az analízis és tervezés hamar felesleges
és értelmetlennek látszó teherré
válik számára. A könyvben ismertetett
objektum-orientált analízis és tervezés
döntő részben a ma legelterjedtebb OMT (Object
Modelling Technique) módszertanra épül, amelyet
kiegészítettünk és összekapcsoltuk
az implementációval.
Terjedelmi korlátok miatt a könyv nem törekedhet
teljességre az implementációs eszköz,
a C++ nyelv bemutatásánál. Egyrészt
ismertnek tekinti a C++ nyelvnek az összes C nyelvtől
örökölt konstrukcióját, másrészt
pedig nem tárgyal néhány C++ újdonságot
(például a kivételek (exception) kezelése).
Ajánljuk ezt a könyvet mind a diákoknak, mind
pedig a gyakorló rendszertervezőknek, programfejlesztőknek
és programozóknak, ha már jártasságot
szereztek a C programozási nyelvben. Reményeink
szerint ezen könyv segítségével a kezdő
C++ programozók megtanulhatják a nyelvet és
az objektum-orientált fejlesztés módszertanát,
de haszonnal forgathatják a könyvet a C++ nyelvet
már jól ismerők is.
A könyv a Budapesti Műszaki Egyetem Műszaki Informatika
és Villamosmérnöki karain a szerzők
által előadott "Objektum-orientált programozás",
"Szoftver technológia", "Objektum-orientált
szoftverfejlesztés" tárgyak anyagára
és a B. Braun fejlesztőintézetnél
tartott tanfolyam anyagára épül. Hálásak
vagyunk hallgatóinknak és a B. Braun fejlesztőinek,
akik az előadásokon feltett kérdéseikkel,
megjegyzéseikkel sokat segítettek a könyv szerkezetének
és tárgyalásmódjának finomításában.
Végül hálával tartozunk a B. Braun fejlesztőintézet
épületében működő felvonónak,
amely a harmadik mintafeladatot ihlette.
Vissza a lap tetejére
A könyv tartalomjegyzéke
Elôszó
Bevezetés a szoftverfejlesztésbe
Szoftver-technológiák
A fejlesztés elvi alapjai
A szoftverfejlesztés alapproblémái
Uraljuk a bonyolultságot!
A leírás szigorúsága
A fejlesztés folyamata
A szoftver életciklusa
Termékek életciklusa
A szoftver életciklusának jellegzetességei
A vízesésmodell
Az inkrementális fejlesztési modell és a
prototípus
Spirálmodellek
Az újrafelhasználhatóság
Minôségbiztosítás a szoftverfejlesztésben
Az objektum-orientáltság fogalma
Út az objektumig
A kezdetektôl az absztrakt adatstruktúrákig
Strukturált programozás
Moduláris programozás
Absztrakt adatszerkezetek
Funkcionális kontra adatorientált tervezés
funkcionális megoldás
adatszerkezet-orientált megoldás
Irány az objektum!
Az objektum fogalma
Az objektum
Az objektum felelôssége
Az objektum viselkedése
Üzenetek
Események
Metódusok
Állapot
Polimorfizmus
Osztályok és példányok
Az objektumok típusai
Az objektum-változó
Modellezés objektumokkal
A modellek áttekintése
Objektummodell
Dinamikus modell
Funkcionális modell
Az objektummodell
Attribútumok
A relációk és a láncolás
Bináris relációk és jelölésük
Többes relációk és jelölésük
Az asszociáció, mint osztály
Szerepek
Normalizálás
Öröklés
Az öröklés alapfogalmai
Az öröklés veszélyei
Többszörös öröklés
Komponens-reláció
Metaosztály
Dinamikus modellek
Események és állapotok
Az esemény
Kommunikációs modell
Az állapot
Az állapotdiagram
Műveletek (operációk)
Az állapotgép fogalmának kiterjesztése
Beágyazott állapotmodellek
Az állapotátmenet-tábla
A funkcionális modell
Adatfolyam-ábra
Az adatszótár
Folyamat-specifikációk
A modellek kapcsolata
Fejlesztési módszer
Analízis
A feladatdefiníció
Objektum modellezés
Az objektumok és az osztályok azonosítása
Az asszociációk azonosítása
Az attribútumok azonosítása
Az öröklési hierarchia létrehozása
Az objektum modellezés termékei
Dinamikus modellezés
Forgatókönyvek összeállítása
Kommunikációs diagramok felvétele
Állapotmodellek készítése
Eseményfolyam-diagram készítése
Funkcionális modellezés
Objektum orientált tervezés
Architektúrális tervezés
Alrendszerek, modulok kialakítása
Többprocesszoros és multiprogramozott rendszerek igényei
Vezérlési és ütemezési szerkezet
kialakítása
Fizikai adatszerkezetek implementációja
Határállapotok megvalósítása
Külsô interfész tervezése
Objektumtervezés
Objektumok valósidejű rendszerekben
A valósidejű rendszerek jellemzôi
Meghatározás, osztályozás
Egyéb jellemzô tulajdonságok
Közkeletű félreértések és
vitapontok
Időkövetelmények
Az idôkövetelmények megadása
Az idôkövetelmények típusai
A fejlesztés problémái
Valósidejű feladatokra ajánlott módszertanok
Objektum-orientált programozás C++ nyelven
A C++ nyelv kialakulása
A C++ programozási nyelv nem objektum-orientált
újdonságai
A struktúra és rokonai neve típusértékű
Konstansok és makrok
Függvények
Referencia típus
Dinamikus memóriakezelés operátorokkal
Változó-definíció, mint utasítás
A C++ objektum orientált megközelítése
OOP nyelvek, C ð C++ átmenet
OOP programozás C-ben és C++-ban
Az osztályok nyelvi megvalósítása
(C++ð C fordító)
Konstruktor és destruktor
A védelem szelektív enyhítése - a
barát (friend) mechanizmus
Operátorok átdefiniálása (operator
overloading)
Operátor-átdefiniálás tagfüggvénnyel
Operátor-átdefiniálás globális
függvénnyel
Konverziós operátorok átdefiniálása
Szabványos I/O
Dinamikus adatszerkezeteket tartalmazó osztályok
Dinamikusan nyújtózkodó sztring osztály
A másoló konstruktor meghívásának
szabályai
Egy rejtvény
Tanulságok
Elsô mintafeladat: Telefonközponti hívásátirányító
rendszer
Öröklődés
Egyszerű öröklôdés
Az egyszerű öröklôdés implementációja
(nincs virtuális függvény)
Az egyszerű öröklôdés implementációja
(van virtuális függvény)
Többszörös öröklôdés (Multiple
inheritence)
A konstruktor láthatatlan feladatai
A destruktor láthatatlan feladatai
Mutatók típuskonverziója öröklôdés
esetén
Az öröklôdés alkalmazásai
Generikus adatszerkezetek
Generikus szerkezetek megvalósítása elôfordítóval
(preprocesszor)
Generikus szerkezetek megvalósítása sablonnal
(template)
Objektumok tervezése és implementációja
Az objektum, a dinamikus és a funkcionális modellek
kombinálása
Az objektum modell elemzése
A funkcionális modell elemzése
A dinamikus modell elemzése
Osztályok egyedi vizsgálata
Az üzenet-algoritmusok és az implementációs
adatstruktúrák kiválasztása
Áttekinthetőség és módosíthatóság
A komplexitás
Az adatstruktúrák kiválasztása, az
osztálykönyvtárak felhasználása
Robusztusság
Saját debugger és profiler
Asszociációk tervezése
Láthatóság biztosítása
Nem objektum-orientált környezethez, illetve nyelvekhez
történô illesztés
Ütemezési szerkezet kialakítása
Belsô, nem-preemptív ütemezô alkalmazása.
Preemptív ütemezô az operációs
rendszer szintjén
Kommunikáció üzenettel
Signal hívás
Közös memória felhasználása
Implementáció többprocesszoros, elosztott rendszerekben
Saját preemptív ütemezô
Optimalizáció
A deklarációs sorrend megállapítása
Modulok kialakítása
Mintafeladatok
Második mintafeladat: Irodai hierarchia nyilvántartása
Informális specifikáció
Az objektum-modell
A dinamikus modell
Forgatókönyvek és kommunikációs
modellek
Eseményfolyam-diagram
Állapottér modellek
A funkcionális modell
Objektumtervezés
Az osztályok definiálása
Az attribútumok és a belsô szerkezet pontosítása
és kiegészítése
A felelôsség kialakítása - üzenetek
és események
A láthatóság tervezése
Implementáció
Harmadik mintafeladat: Lift szimulátor
Informális specifikáció
Az objektum-modell
A dinamikus modell
Állapottér-modellek
A funkcionális modell
Objektumtervezés
Asszociáció tervezés
Láthatóság
A konkurens viselkedés tervezése
Nem preemptív üzemezô
Preemptív üzemezô
A lemezmelléklet tartalma
Irodalomjegyzék
Tárgymutató
Vissza a lap tetejére
|
 |