ebook img

Ohne C zu C++: Eine aktuelle Einführung für Einsteiger ohne C-Vorkenntnisse in die objekt-orientierte Programmierung mit C++ PDF

347 Pages·2001·16.54 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Ohne C zu C++: Eine aktuelle Einführung für Einsteiger ohne C-Vorkenntnisse in die objekt-orientierte Programmierung mit C++

Peter P. Bothner Wolf-Michael Kahler OhneCzuC++ Ole Bilcher der Reihe .Ausbildung und rudium" bi ten praxisorientiene Einfilh rungen filrdfe Aus-und Weiterblldung sowl Bausteine rureln erfolgreiche beruf:- quailflzierend ludlum. Unler anderem sind erschienen: Grunclkura JAVA ~on Dlelmar blS OnII. ......b I. ....... fGr Studenten unci wa-n.cMftler DelphI~ von Ekkehard Kaler von Michael Bel6wenger VIsuaI ...f Gr ~kmlt demc-,.u.... tec:. ........ ~unpn von Ji lrgen Radel von Han Benker Theorte unci Pnuda ~ ...a.tIonaIer o.tenbanken von Alfred 100 uod Gerhard Daue von Rene lelner vtsu.I ... ~ 0bjeId0rIentIer von Ekkehard Kaier Propanunlerunc In JAVA &c.I fGr .......M wtrtw von Otto Rauh von Roben Horvat Grundlcura Wlrbc. ....... und Kamblz Koochaki Infonnatik von Dleonar bts und Wilhelm fillder PnIdIeche SywtMnpropamllllerunc AutbMakura Wlrbc. ....... von Helmut Weber InfonnatIk von Dleonar Abts und Wilbelm Mulder '~mlt C-putenIpbre ~ ~­ von Hans Benker o..c~ von ndreas GadalSch &c.I fGr Technlbr EffeIctIy Propamm. ...... unci ........... InC unci C++ von Han -Jurgen Holland \'on Dielmar Herrmann und Uwe Bernhardt SOL mit Oracle ICDetenatellenNchnunc von Wolf- Hchael Kahler mIt~R/~ Module, KIuMn, VertrIp von Franz KJenger uod Ellen Falk von Kariheinz Hug Kalm Grunclkura OBERON ...........r bc. .., ......,.. voo B. Marin ek. J. 1.. Marais von olger Carl, Rudolf Fiedler, uod E. l.eller WIlliam J6ra z und Manfred Kiesel ItudIenfGhrer Grunclkura AJprtth_ Wlrbchllftatnfonnatlk unci o.ten.trulcturen von Peter Menens. Peler Chamoni. von Andreas Sol mo I Dleler Ehrenberg. Joachim Gri und Ulrich Grude lutz J. n (nrlch und Karl Kurbel (Mrsg.) Ohne Czu C++ ... on Peter P. BOlhner BnfGhrunc In UNIX \"On Werner Brecbt und Wolf- 'IIchoei Kahl r PL/I fGr WorbtIiIlona von Eberhard turm Peter P. Bothner Wolf-Michael Kahler OhneCzuC++ Eine aktuelle EinfUhrung fUr Einsteiger ohne C-Vorkenntnisse in die objekt-orientierte Programmierung mit C++ ~. vleweg Die Deutsche Bibliothek - CIP-Einheitsaufnahme Ein Titeldatensatz flir diese Publikation ist bei Der Deutschen Bibliothek erhaltlich. 1. Auflage September 2001 AIle Rechte vorbehalten © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, BraunschweiglWiesbaden, 2001 Der Verlag Vieweg ist ein Unternehmen der Fachverlagsgruppe BertelsmannSpringer. www.vieweg.de [email protected] Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich ge schutzt. Jede Verwertung auBerhalb der engen Grenzen des Ur heberrechtsgesetzes ist ohne Zustimmung des Verlags unzulassig und strafbar. Das gilt insbesondere flir Vervielfaltigungen, Uber setzungen, Mikroverfilmungen und die Einspeicherung und Ver arbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in dies em Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden durften. Konzeption und Layout des Umschlags: Ulrike Weigel, www.CorporateDesignGroup.de Gedruckt auf saurefreiem Papier ISBN-13 :978-3-528-05780-0 e-ISBN-13:978-3-322-83093-7 DOl: 10.1007/978-3-322-83093-7 ... schon mal vorab: In diesem Buch gibt es kein "Hello world" -Programm! Vorwort Bei der Herstellung von Anwendungssoftware wird heutzutage in zunehmendem Maf3e objekt-orientiert programmiert. Dabei ist C++ die am haufigsten eingesetzte Program miersprache. Da die Elemente der Programmiersprache C in C++ integriert sind, besitzt C++ einen machtigen Sprachumfang. Diese von professionellen Programmierern geschatz te Leistungsfahigkeit macht es dem Programmieranfanger nicht leicht, C++ zu erlernen. Bei einer Einfiihrung in die objekt-orientierte Programmierung mit C++ kommt daher der Art und der Reihenfolge, in der die einzelnen Sprachelemente vorgestellt werden, ein~ besondere Bedeutung zu. Da C++ als objekt-orientierte Weiterentwicklung der Programmiersprache C entstanden ist, werden in vielen C++-Biichern zunii.chst die Sprachelemente von C beschrieben. Erst danach werden die C++-spezifischen Sprachelemente erlautert, die die objekt-orientierte Programmierung im Hinblick auf die grundlegenden Konzepte - wie z.B. das Klassen Konzept, die Vererbung und den Polymorphismus - erst ermoglichen. hn Unterschied zu einem derartigen klassischen Aufbau von C++-Biichern ist dieses Buch nicht in einen C-Teil und einen C++-Teil gegliedert, sondern stellt von Anfang an die Denkweise der objekt-orientierten Programmierung in den Vordergrund. Dabei werden vom Leser weder C-Kenntnisse noch Vorkenntnisse in der Programmierung erwartet. Dieses Buch ist nicht als Nachschlagewerk konzipiert, in dem die Sprachelemente sum marisch aneinandergereiht sind. Vielmehr werden die wichtigsten Begriffe der objekt orientierten Programmierung und die Sprachelemente von C++ schrittweise an einem durchgiingigen einfachen Anwendungsbeispiel vorgestellt. Bei dieser praxisorientierten Ein fiihrung werden die einzelnen Sprachelemente erst dann erlautert, wenn sie zur Program mierung eines Losungsplans benotigt werden. hn Hinblick auf die Planung und Umsetzung von Losungsplanen wird der Leser zusatz lich mit dem Einsatz von Werkzeugen vertraut gemacht, die den Prozess der Software Herstellung unterstiitzen. Hierzu werden unter anderem Grafiken - wie z.B. die UML Notation und die Struktogramm-Darstellung - verwendet, die die Kurzbeschreibung von Losungskomponenten erleichtern. Diese Darstellungstechniken sollen dem Programmier anfanger nicht nur den Einsatz von Werkzeugen nahe bringen, sondern ihm auch bewusst machen, dass es sich bei der Programmierung um eine erlernbare ingenieurma6ige Tatig keit - und nicht um eine besondere Form kiinstlerischen Schaffens - handelt. vi In dieser Einfiihrung wird auch erlautert, wie zwischen dem Anwender und dem erstellten Software-Produkt - durch den Einsatz von Fenstern - kommuniziert werden kann. Da sich der fenster-gestiitzte Dialog nicht mehr auf die Beantwortung von Eingabeanforderun gen beschriinkt, sondern Ereignisse - wie z.B. die Betatigung von Schaltflii.chen innerhalb eines Fensters - bestimmte Anforderungen zur Ausfiihrung bringen konnen, miissen ent sprechende Kommunikationsmechanismen der Programmierung zugiinglich sein. Diese Art von Programmierung zlihlt nicht nur zu den Starken von objekt-orientierten Programmier sprachen, sondern bestimmt auch vornehmlich deren Einsatzfeld. Bei der Programmierung in C++ verwenden wir exemplarisch die Programmierumge bung "Visual C++, Version 6.0" der Firma "Microsoft", die bei der professionellen Pro grammierung eine marktfiihrende Position einnimmt. Dieses Vorgehen solI dem Leser ver mitteln, wie sich der Programmierer heutzutage bei der Losung von Problemstellungen unterstiitzen lassen kann. Der Einsatz dieser Programmierumgebung stellt keine Ein schriinkung im Hinblick auf die grundlegenden ProblemlOsungen dar, deren Entwicklung den Leser dieses Einfiihrungsbuches an die Basistechniken der C++-Programmierung her anfiihren solI . ... und iibrigens: Die Programmzeilen der grundlegenden Programme, die in diesem Buch vorgestellt werden, sind unter der WWW-Adresse .. www.uni-bremen.de/-cppkurs" abruf bar. Den Herren cando inf. M. Skibbe und Dipl.-Biologe M. Ellola danken wir fiir die kritische Durchsicht des Manuskriptes und die zahlreichen Verbesserungsvorschlage. Bremen/ Ritterhude Peter P. Bothner und Wolf-Michael Kahler im August 2001 Inhaltsverzeichnis 1 Probiemstellung und Planung der Losung 1 1.1 Problemstellung und Problemanalyse . 1 1.2 Ansatz fUr einen Losungsplan . . 2 1.3 Formulierung des Losungsplans . 4 1.3.1 Der Begriff des "Objekts" 4 1.3.2 Der Begriff der "Klasse" . 6 1.3.3 Der Begriff der "Instanz" 8 1.3.4 Der Begriff der "Member-Funktion" 11 1.3.5 Der Begriff der "Message" . . . . . . 14 1.3.6 Programmierumgebung und Klassen 16 1.3.7 Zusammenfassung .. 19 2 Entwicklung des Losungsplans 21 2.1 Vereinbarung der Klasse "WerteErfassung" 21 2.1.1 Deklaration der Member-Funktionen 21 2.1.2 Deklaration der Konstruktor-Funktion 22 2.1.3 Deklaration einer Klasse ....... . 23 2.1.4 Header-Dateien und Direktiven . . . . 25 2.2 Vereinbarung von AusfUhrungs-Funktion und Bibliotheks-Funktionen . 27 2.2.1 Die Ausfiihrungs-Funktion "main" .27 2.2.2 Kommentare . . . . . . 29 2.2.3 Programm-Dateien ........ . 29 2.2.4 Bibliotheks-Funktionen ..... . 31 2.3 Entwicklung der Konstruktor-und Member-Funktionen 33 2.3.1 Definition der Konstruktor-Funktion ...... . 33 2.3.2 Die speziellen Instanzen "ein", "eout" und Literalkonstanten 34 2.3.3 Besehreibung der Datenerfassung . . . . . . . . . . . . . . . . 35 viii INHALTSVERZEICHNIS 2.3.4 Initialisierungs-Anweisung . 37 2.3.5 Zuweisung und Ausdrucke . 37 2.3.6 Die while-Anweisung .... 41 2.3.7 Die Pseudo-Variable "this" 42 2.3.8 Die Member-Funktion "durchfuehrenErfassung" 43 2.3.9 Die Member-Funktion "sammelnWerte" 44 2.3.10 Die Member-Funktion "anzeigenWerte" 46 2.3.11 Die for-Anweisung ........... . 49 2.3.12 Einsatz globaler Variablen ....... . 50 2.3.13 Zusammenstellung der Funktions-Definitionen . 51 3 Durchitihrung des Losungplans 53 4 Erweiterung des Losungsplans 63 4.1 Parallele Erfassung ................. . 63 4.1.1 Ansatz zur .Anderung der Losungs-Strategie 63 4.1.2 Funktions-Aufruf mit Argumenten .. . 64 4.1.3 Vereinbarung einer Klassen-Funktion ... . 07 4.1.4 .Anderung des bisherigen Losungsplans . . . 69 4.1.5 Entwicklung eines Losungsplans fUr die parallele Erfassung 71 4.1.6 Konstruktor-Funktion mit Initialisierungsliste .... 71 4.1.7 .Anderungen in "WerteErfassung.h" und "Main.cpp" 76 4.1.8 Die if-Anweisung .............. . 77 4.1.9 Losungsplan fUr die parallele Erfassung ..... . . 80 4.2 Berechnung und Anzeige des Durchschnittswertes . . . . . . 81 4.2.1 Losungsplan zur Berechnung des Durchschnittswertes 81 4.2.2 Funktions-Ergebnis und return-Anweisung . 82 4.2.3 Vereinbarung der Klasse "WerteErfassung" ..... . 83 4.2.4 .Anderung der Programm-Dateien ........... . 84 4.2.5 Definition der Member-Funktion "berechnenDurchschnitt" . 84 4.2.6 Definition der Member-Funktion "anzeigenDurchschnitt" 87 4.3 Wandlung und Verarbeitung der erfassten Werte . . . . . . . . 88 4.3.1 Einsatz eines Sammlers der Basis-Klasse "CUIntArray" 88 4.3.2 Erganzung der Bibliotheks-Funktionen ......... . 91 4.3.3 Verschachtelung von Funktions-Aufrufen ........ . 92 4.3.4 Erganzung der Programm-Datei "WerteErfassung.cpp" 93 INHALTSVERZEICHNIS ix 5 Spezialisierung des Losungsplans 97 5.1 Vererbung ............ . 97 5.2 Klassen-Hierarchie und Polymorphismus 99 5.3 Entwicklung eines L6sungsplans. . . . . · 102 5.3.1 Strukturierung des L6sungsplans · 102 5.3.2 Vereinbarung einer Unterklasse . · 104 5.3.3 Instanziierung aus einer abgeleiteten Klasse .105 5.4 Der L6sungsplan .................. . · 109 5.5 Virtuelle Member-Funktionen ........... . · 111 5.6 L6sung Ullter Einsatz einer virtuellen Member-Funktion . 114 5.7 Ausfiihrung von iiberdeckten Member-Funktionen. . . . . 116 5.8 Uberladen von Member-Funktionen und Signatur von Funktionen . . 118 5.9 Uberdeckung von Member-Variablen . 120 5.10 Abstrakte Klassen . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.11 Sortierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.11.1 Problemstellung und Strukturierung des L6sungsplans . 123 5.11.2 Beschreibung des L6sungsplans . 124 5.11.3 Die L6sung . . . . . . . . . . . . . . . . . 127 6 Hierarchische Gliederung von Losungspliinen 133 6.1 Berechnung der Kennzahl "Median" ..... . 133 6.1.1 Die Problemstellung . . . . . . . . . . . . 133 6.1.2 Festlegung der Klassen-Deklarationen . .134 6.1.3 Definition der Member-Funktion "median" .137 6.1.4 Die Programm-Datei "Main.cpp" bei der Median-Berechnung · 139 6.1.5 Alternative L6sung . . . . . . . . . . . . . . . . . .140 6.2 Berechnung der Kennzahl "Modus" . . . . . . . . . . . . · 148 6.2.1 Problemstellung und Strukturierung der L6sung .148 6.2.2 Definition der Member-Funktion "modus" .... · 150 6.2.3 Mehrfachverzweigung und switch-Anweisung .. · 155 6.2.4 Die Programm-Datei "Main.cpp" bei der Modus-Berechnung · 157 7 Weiterentwicklung des Losungsplans 159 7.1 Zugriff auf Member-Variablen und Vorwarts-Deklaration . · 159 7.2 Berechnung mehrerer Kennzahlen .. · 164 7.3 Freund-Funktion und Freund-Klasse · 168 7.4 Funktions-Schablonen ....... . 176 7.5 Einsatz der Mehrfachvererbung .. . 181 7.6 Hierarchische Gliederung von Klassen 190

Description:
Dr. Peter P. Bothner und Dr. Wolf-Michael Kähler sind wissenschaftliche Mitarbeiter im Arbeitsbereich "Statistik und Projektberatung" am Zentrum für Netze und verteilte Datenverarbeitung der Universität Bremen.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.