Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
objektorientierte_programmiersprachen [2012/05/09 11:49] – huwaldt | objektorientierte_programmiersprachen [2019/07/22 16:18] (aktuell) – [zusätzlicher Sprachumfang von C++ (Auszug)] huwi | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Vorbemerkungen ====== | ||
+ | Wie Eingangs schon beschrieben kann und soll dieses Tutorial kein C-Lehrbuch sein. Es ist für das Verstehen dieses Tutorials auf jeden Fall von Vorteil, wenn Kenntnisse in einer höheren Programmiersprache vorhanden sind. Am besten natürlich C. Wer über Kenntnisse einer objektorientierten Sprache wie JAVA, C++ oder C# verfügt, kann sich sofort auf den praktischen Teil stürzen. Für jeden, der über keine oder noch wenig Programmierkenntnisse verfügt, ist zu empfehlen, ein entsprechendes C/C++ Nachschlagewerk (Lehrbuch oder online Tutorial) diesem Tutorial beizustellen und jede Klammer sowie jeden Ausdruck, der in den angebotenen Quelltexten unklar ist, nachzuschlagen. | ||
+ | |||
====== Objektorientierte Programmiersprachen ====== | ====== Objektorientierte Programmiersprachen ====== | ||
- | Ausgangspunkt für das Verstehen einer objektorientierten Programmiersprache ist immer das objektorientierte Basiskonzept (Paradigma). Das Basiskonzept stellt sozusagen das SOLL und die konkrete Sprache das IST dar. Gehen Sie davon aus, dass eigentlich in keiner derzeit verfügbaren objektorientierten Sprache auch alle in der Theorie formulierten Konzepte bereits komplett umgesetzt sind. Man sollte sich auf jeden Fall davor hüten von den Möglichkeiten und den Einschränkungen einer konkreten Sprache auf das Konzept zu schließen. Wesentliche Aspekte objektorientierter Sprachen sollen im Folgenden anhand der Sprache C++ aufgezeigt werden. Für das Verständnis von C++ ist weiterhin wichtig zu wissen, das C++ die Sprache C beinhaltet. C++ ist die objektorientierte Erweiterung der Sprache C. | + | Ausgangspunkt für das Verstehen einer objektorientierten Programmiersprache ist immer das objektorientierte Basiskonzept (Paradigma). Das Basiskonzept stellt sozusagen das SOLL und die konkrete Sprache das IST dar. Gehen Sie davon aus, dass eigentlich in keiner derzeit verfügbaren objektorientierten Sprache auch alle in der Theorie formulierten Konzepte bereits komplett umgesetzt sind. Man sollte sich auf jeden Fall davor hüten, von den Möglichkeiten und den Einschränkungen einer konkreten Sprache auf das Konzept zu schließen. Wesentliche Aspekte objektorientierter Sprachen sollen im Folgenden anhand der Sprache C++ aufgezeigt werden. Für das Verständnis von C++ ist weiterhin wichtig zu wissen, das C++ die Sprache C beinhaltet. C++ ist die objektorientierte Erweiterung der Sprache C. |
===== der Sprachumfang von C (Auszug) ===== | ===== der Sprachumfang von C (Auszug) ===== | ||
- | >>>< | + | >< |
// Schlüsselworte .......................................... | // Schlüsselworte .......................................... | ||
break double int struct | break double int struct | ||
Zeile 22: | Zeile 25: | ||
===== wesentliche C-Steuerflusskonstrukte ===== | ===== wesentliche C-Steuerflusskonstrukte ===== | ||
- | C folgt dem Basiskonzept der Strukturierung was nichts weiter bedeutet, als dass auf die Sprunganweisung (vgl. Assembler, GOTO, JUMP, usw.) verzichtet wird um einen Algorithmus zu erstellen. Es werden nur drei algorithmische Grundstrukturen benötigt um jede Programmlogik zu realisieren. Das sind: | + | C folgt dem Basiskonzept der Strukturierung, was nichts weiter bedeutet, als dass auf die Sprunganweisung (vgl. Assembler, GOTO, JUMP, usw.) verzichtet wird, um einen Algorithmus zu erstellen. Es werden nur drei algorithmische Grundstrukturen benötigt, um jede Programmlogik zu realisieren. Das sind: |
* die Sequenz, Anweisungen werden nacheinander ausgeführt | * die Sequenz, Anweisungen werden nacheinander ausgeführt | ||
* die Iteration (Wiederholung, | * die Iteration (Wiederholung, | ||
* die Alternative, | * die Alternative, | ||
- | In den strukturierten Sprachen gibt es zwar noch weitere Spielarten dieser drei Grundstrukturen aber dem Wesen nach gibt es tatsächlich nur diese drei. Im Folgenden soll dargestellt werden wie diese Algorithmusbausteine | + | In den strukturierten Sprachen gibt es zwar noch weitere Spielarten dieser drei Grundstrukturen, aber dem Wesen nach gibt es tatsächlich nur diese drei. Im Folgenden soll dargestellt werden wie diese Algorithmusbausteine |
- | >>>< | + | >< |
// Blöcke in C und C++ | // Blöcke in C und C++ | ||
{ // BEGIN | { // BEGIN | ||
Zeile 36: | Zeile 39: | ||
</ | </ | ||
- | Das Weglassen von Klammern in bestimmten Fällen sind eben genau das, Sonderfälle und diese sollte man sich als Einsteiger erst mal sparen. Übrigens gibt es die Blockbildung in allen strukturierten Sprachen. Manchmal sind das statt Klammern Schlüsselworte wie //BEGIN// oder //END//. Das gleiche gilt für das Semikolon. Ein Semikolon ist in C das Endekennzeichen einer Anweisung und für den Compiler extrem wichtig. Notieren Sie eine Anweisung immer in einer eigenen Zeile und schließen diese immer mit einem Semikolon ab. Das Einrücken der Anweisungen mit einem //TAB// innerhalb eines Blocks | + | Blöcke können zusätzlich einen Namen und Parameter erhalten. Das sieht dann in etwa so aus: |
+ | >< | ||
+ | name ( parameter ) | ||
+ | { // BEGIN | ||
+ | // Blockinhalt | ||
+ | } // END | ||
+ | </ | ||
+ | |||
+ | Diese Namen können sogenannte reservierte Worte, also Schlüsselworte der Sprache C/C++ sein. Damit wird dem bezeichneten Block eine bestimmte Funktionalität zugewiesen. Darüber hinaus kann der Programmierer Blöcke bauen, die einen eigenen vom Programmierer festgelegten Namen erhalten. Diese Blöcken können dann unter dem festgelegten Namen aufgerufen werden. In C nennt man solche Blöcke Funktionen. Den Klammern kommt in C also eine konstituierende Rolle zu, die es zu verinnerlichen gilt. | ||
+ | |||
+ | Das Weglassen von Klammern in bestimmten Fällen sind eben genau Sonderfälle und diese sollte man sich als Einsteiger erst mal sparen. Übrigens gibt es die Blockbildung in allen strukturierten Sprachen. Manchmal sind das statt Klammern Schlüsselworte wie //BEGIN// oder //END//. Das gleiche gilt für das Semikolon. Ein Semikolon ist in C das Endekennzeichen einer Anweisung und für den Compiler extrem wichtig. Notieren Sie eine Anweisung immer in einer eigenen Zeile und schließen diese immer mit einem Semikolon ab. Das Einrücken der Anweisungen mit einem //TAB// innerhalb eines Blocks | ||
- | >>>< | + | >< |
int A,B,C; | int A,B,C; | ||
Zeile 47: | Zeile 60: | ||
C = A+B; // danach C aus A und B berechnen | C = A+B; // danach C aus A und B berechnen | ||
} | } | ||
+ | </ | ||
+ | >< | ||
// eine Wiederholung ......................................... | // eine Wiederholung ......................................... | ||
while ( A < 100 ) // wiederhole ( solange ) | while ( A < 100 ) // wiederhole ( solange ) | ||
Zeile 53: | Zeile 68: | ||
A = A + 1; // diese Anweisungen | A = A + 1; // diese Anweisungen | ||
} | } | ||
+ | </ | ||
+ | >< | ||
// eine Alternative .......................................... | // eine Alternative .......................................... | ||
if ( A == 0) // wenn ( das wahr ist ) | if ( A == 0) // wenn ( das wahr ist ) | ||
Zeile 63: | Zeile 80: | ||
C = A; // führe diese Anweisungen aus | C = A; // führe diese Anweisungen aus | ||
} | } | ||
+ | </ | ||
+ | >< | ||
// ----------------------------------------------------------- | // ----------------------------------------------------------- | ||
// ausgewählte Spielarten | // ausgewählte Spielarten | ||
Zeile 96: | Zeile 115: | ||
} break; | } break; | ||
} | } | ||
- | |||
</ | </ | ||
- | ===== Zusätzlicher | + | ===== zusätzlicher |
- | >>>< | + | >< |
bool catch | bool catch | ||
class new delete public template | class new delete public template | ||
Zeile 108: | Zeile 126: | ||
- | Wie wir sehen, ist der eigentliche Sprachumfang von C übersichtlich und die Erweiterung um zur Sprache C++ zu kommen vergleichsweise gering. Was dem Lernenden als umfangreich erscheint, sind die hinzukommenden Bibliotheken, | + | Wie wir sehen, ist der eigentliche Sprachumfang von C übersichtlich und die Erweiterung, um zur Sprache C++ zu kommen, vergleichsweise gering. Was dem Lernenden als umfangreich erscheint, sind die hinzukommenden Bibliotheken, |
===== Deklarieren von Klassen in C++ ===== | ===== Deklarieren von Klassen in C++ ===== | ||
- | Es ist ein Anwendungsprogramm mit dem Namen Applikation (englisch: // | + | Es ist ein Anwendungsprogramm mit dem Namen Applikation (englisch: // |
- | >>> | + | > |
- | >>>< | + | >< |
// Klasse Name { Bauplan } Instanz; | // Klasse Name { Bauplan } Instanz; | ||
class Application | class Application | ||
Zeile 126: | Zeile 144: | ||
Die Applikation **ist eine** Mikrocontrolleranwendung. Diese soll alle Möglichkeiten | Die Applikation **ist eine** Mikrocontrolleranwendung. Diese soll alle Möglichkeiten | ||
- | >>>< | + | >< |
// Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | // Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | ||
class Application : public Controller | class Application : public Controller | ||
Zeile 137: | Zeile 155: | ||
Der Controller wird eingeschaltet und arbeitet dann fortlaufend taktgesteuert. Oh ja, wir erinnern uns dunkel. Subjekt und Prädikat. **WER** (der Controller) macht **WAS** (wird eingeschaltet, | Der Controller wird eingeschaltet und arbeitet dann fortlaufend taktgesteuert. Oh ja, wir erinnern uns dunkel. Subjekt und Prädikat. **WER** (der Controller) macht **WAS** (wird eingeschaltet, | ||
- | >>>< | + | >< |
// Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | // Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | ||
class Application : public Controller | class Application : public Controller | ||
Zeile 161: | Zeile 179: | ||
===== Aggregationen und Kapselung in C++ ===== | ===== Aggregationen und Kapselung in C++ ===== | ||
- | Es soll eine LED angeschlossen werden. An diese LED wollen wir niemand | + | Es soll eine LED angeschlossen werden. An diese LED wollen wir niemand |
- | >>>< | + | >< |
// Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | // Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | ||
class Application : public Controller | class Application : public Controller | ||
Zeile 184: | Zeile 202: | ||
Die LED ist eine fertige Klasse aus dem Framework. Wir müssen der LED mitteilen, an welchem Port-Pin sie angeschlossen ist und wir wollen sie einschalten. | Die LED ist eine fertige Klasse aus dem Framework. Wir müssen der LED mitteilen, an welchem Port-Pin sie angeschlossen ist und wir wollen sie einschalten. | ||
- | >>>< | + | >< |
// Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | // Klasse Name : Sichtbarkeit Basisklasse { Bauplanerweiterung } Instanz; | ||
class Application : public Controller | class Application : public Controller | ||
Zeile 208: | Zeile 226: | ||
====== Nächstes Thema ====== | ====== Nächstes Thema ====== | ||
- | ... | + | [[Grafische Programmierung mit der UML]] |