Az eredeti mű a ComputerBooks Kiadó gondozásában jelent meg. Az elektronikus kiadás az NKTH által lebonyolított Felsőoktatási Tankönyv- és Szakkönyv-támogatási Pályázat keretében készült, a DocBook XML formátumot Bíró Szabolcs készítette.
Copyright © 2007 Kondorosi Károly
Copyright © 2007 Szirmay-Kalos László
Copyright © 2007 László Zoltán

Könyvünk 1997-es megjelenése óta sok kritikát, de még több pozitív visszajelzést kaptunk. Számos oktatási intézményben látjuk a kötelező, vagy ajánlott irodalmak listáján, és – örömünkre – nem csak az informatika szakokon. Ez azt bizonyítja, hogy az objektumorientált megközelítés egyre inkább hat az informatika alkalmazási területein, és egyre inkább képes betölteni azt a szerepét, hogy alapja lehessen az alkalmazási területek szakértői és az informatikusok által egyaránt érthető formális rendszermodelleknek. Megtisztelő, hogy könyvünk a DIGIT2005 digitális szakkönyvpályázaton támogatást nyert, és így internetes kiadásban is elérhetővé válik.
Ugyanakkor nem kis fejtörést okozott számunkra, hogy hogyan reagáljunk az eltelt tíz esztendő szakmai fejlődésére, hiszen a szoftverfejlesztés az informatika egyik legdinamikusabban fejlődő területének és egyben üzletágának bizonyult ebben az időszakban. Ennek megfelelően új irányzatok, módszerek, eszközök, fogalmak jelentek, jelennek meg, amelyek közül nem egyszerű kiválasztani a lényegeseket, a maradandókat. A komponens-technológia, az aspektus-orientált és az intencionális programozás, a versengő és egymással kölcsönhatásban fejlődő Java és .NET technológiák, az agilis szoftverfejlesztés, a C# nyelv, az analízis-, architekturális és tervezési minták, az új, integrált fejlesztő környezetek (mint például a Visual Studio, vagy az Eclipse) – mind-mind új, lényeges elemekkel színesítették a palettát, és ismeretük elengedhetetlen egy képzett informatikus számára. A szakma egyik legnagyobb hatású konzorciuma, az Object Management Group (OMG), számos szabványt, ajánlást dolgozott ki, amelyek eredményeként a módszertanok, jelölésrendszerek egységesedtek, a fogalmak tisztábbá váltak. Az egységes modellező nyelv (Unified Modelling Language, UML), a modellvezérelt architektúra (Model Driven Architecture, MDA), az objektum metamodell (Meta-Object Facility, MOF), az objektumok együttműködésének elosztott rendszerekben is alkalmazható szabványa (Common Object Request Broker Architecture, CORBA), az interfészleíró nyelv (Interface Definition Language, IDL), széles körben elterjedt szabványokká váltak. A konzorciumnak a szakma legnagyobb piaci szereplői is tagjai, így a szabványok gyakorlati alkalmazása és a forgalmazott termékekben való megjelenése is biztosított. Az OMG dokumentumainak jelentős része nyílt, elérhető a www.omg.org portálon.
Az internetes kiadás előkészítésekor irreális célkitűzés lett volna minden lényeges újdonság tárgyalása, akár csak felületesen is. Valamilyen mértékű átdolgozást azonban feltétlen szükségesnek láttunk, hiszen – egy tankönyvtől elvárhatóan – a jelölésrendszernek alkalmazkodnia kell a szabványokhoz, a példaprogramoknak pedig lefuttathatóknak kell maradniuk a mai rendszereken is.
Az internetes kiadást tehát az eredeti könyvhöz képest a következők jellemzik:
-
Megtartottuk az eredeti célkitűzést, azaz bemutatjuk az objektumorientált szoftverfejlesztés alapjait: az analízist, tervezést és a C++ nyelvű implementációt.
-
A bevezető, áttekintő fejezetekben csak ott változtattunk, ahol az új eredmények alapján a szöveg feltétlen korrekcióra szorult.
-
Az OMT (Object Modelling Technique) módszertan és jelölésrendszer helyett az UML-t alkalmazzuk. Ennek megfelelően az adatfolyamokat (dataflow) nem tárgyaljuk, a használati eseteket (use-case) pedig bevezetjük.
-
A C++ nyelv bemutatásakor és a mintafeladatok implementációiban ma elterjedten használt nyelvi környezetet veszünk alapul, így az olvasó a közölt programokat könnyebben fordíthatja és futtathatja az általa elérhető számítógépeken.
Ismételten köszönjük mindazoknak, akik észrevételeikkel, tanácsaikkal segítették munkánkat. Külön köszönjük Dr. Goldschmidt Balázs munkáját, aki ábráinkat az OMT jelölésrendszerről UML-re alakította. Ugyancsak megkülönböztetett köszönet illeti Bíró Szabolcsot, aki az internetes megjelenésre alkalmas formátumra alakította szövegeinket és ábráinkat.
Reményeink szerint a felfrissítés a könyv hasznára válik, és mind az oktatók és hallgatók, mind a gyakorlati szakemberek hasznos olvasmánya marad az elkövetkező években is.
Budapest, 2007. február
A szerzők
Tartalom
- Előszó
- 1. Bevezetés a szoftverfejlesztésbe
- 2. Az objektumorientáltság fogalma
- 3. Modellezés objektumokkal
- 4. Fejlesztési módszer
- 5. Objektumok valósidejű rendszerekben
- 6. Objektumorientált programozás C++ nyelven
-
- 6.1. A C++ nyelv kialakulása
- 6.2. A C++ programozási nyelv nem objektumorientált újdonságai
- 6.3. A C++ objektumorientált megközelítése
- 6.4. Operátorok átdefiniálása (operator overloading)
- 6.5. Dinamikus adatszerkezeteket tartalmazó osztályok
- 6.6. Első mintafeladat: Telefonközponti hívásátirányító rendszer
- 6.7. Öröklődés
-
- 6.7.1. Egyszerű öröklődés
- 6.7.2. Az egyszerű öröklődés implementációja (nincs virtuális függvény)
- 6.7.3. Az egyszerű öröklődés implementációja (van virtuális függvény)
- 6.7.4. Többszörös öröklődés (Multiple inheritence)
- 6.7.5. A konstruktor láthatatlan feladatai
- 6.7.6. A destruktor láthatatlan feladatai
- 6.7.7. Mutatók típuskonverziója öröklődés esetén
- 6.7.8. Az öröklődés alkalmazásai
- 6.8. Generikus adatszerkezetek
- 7. Objektumok tervezése és implementációja
-
- 7.1. Az objektum, a dinamikus és a funkcionális modellek kombinálás
- 7.2. Az üzenet-algoritmusok és az implementációs adatstruktúrák kiválasztása
- 7.3. Asszociációk tervezése
- 7.4. Láthatóság biztosítása
- 7.5. Nem objektumorientált környezethez, illetve nyelvekhez történő illesztés
- 7.6. Ütemezési szerkezet kialakítása
- 7.7. Optimalizáció
- 7.8. A deklarációs sorrend megállapítása
- 7.9. Modulok kialakítása
- 8. Mintafeladatok
- Irodalomjegyzék

