objektorientierte programmierung. in c: datentypvariable klasse objekt ist einevariable in c++ darf...
TRANSCRIPT
![Page 1: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/1.jpg)
ObjektorientierteProgrammierung
![Page 2: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/2.jpg)
In C:
Datentyp Variable<--->
Klasse <---> Objektist eineVariable
In C++ darf man einenDatentyp selbst basteln
Dieser heisst dann:
![Page 3: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/3.jpg)
Kurz:Eine Klasse ist ein
höherer, selbstgebastelter Datentyp.
![Page 4: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/4.jpg)
Genauer:
![Page 5: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/5.jpg)
Eine Klasse ist ein Bauplan (vergleichbar: Backform) .
In diesem Bauplan steht genau beschrieben, wie ein konkretes Objekt, das nach diesem Bauplan gebastelt
wird, auszusehen hat.
![Page 6: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/6.jpg)
Mit dieser Backform können dann ganz konkret z.B.
Marmorkuchen gebacken werden.
In der Fachsprache sagt man: Ein Objekt ist eine Instanz
einer Klasse.
![Page 7: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/7.jpg)
Beispiel:
![Page 8: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/8.jpg)
BackformMarmor-kuchen
Geburts-tagskuchen von Rolf
Klasse <---> Objekt
![Page 9: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/9.jpg)
Eine Klasse enthält Daten und Funktionen.
Die Daten heissen Attribute, die Funktionen heissen
Methoden.Der Sammelbegriff für
Daten und Funktionen ist Member (Mitglieder).
![Page 10: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/10.jpg)
Sinn:Mit Hilfe der Methoden soll
man auf die Attribute zugreifen (lesen bzw. ändern
der Attribute)
![Page 11: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/11.jpg)
Beispiel in C++(genaue Diskussion):
![Page 12: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/12.jpg)
class Punkt{ private: int x; int y; public: void set_xy(int px, int py){ x = px; y = py; } int get_x(){ return(x); } int get_y(){ return(y); } }; // class Punkt
Name der Klasse
privater Bereich: Auf die Member des privaten Bereichs kann außerhalb der Klasse nicht direkt, sondern
nur indirekt über Methoden des public Bereichs dieser Klasse zugegriffen werden.
öffentlicher Bereich: Auf die Member dieses Bereichs
kann man jederzeit zugreifen.
Bitte abschreiben !
![Page 13: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/13.jpg)
class Punkt{ private: int x; int y; public: void set_xy(int px, int py){ x = px; y = py; } int get_x(){ return(x); } int get_y(){ return(y); } }; // class Punkt
px bzw. py sind selbstsprechende
Namen für Parameter x bzw.
Parameter y
![Page 14: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/14.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
Tipp:Klassennamen immer mit einem
Großbuchstaben beginnen.(Zwar erlaubt der Compiler auch
einen Kleinbuchstaben, doch halten sich fast alle
Programmierer an diese Regel.
![Page 15: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/15.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
![Page 16: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/16.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
![Page 17: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/17.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
Fehlermeldung:x ist private(ein privater Bereich)
![Page 18: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/18.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
![Page 19: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/19.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
7 9 ? ?
![Page 20: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/20.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
7 9 ? ?
![Page 21: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/21.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
7 9 ? ?
7 9 7 ?
![Page 22: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/22.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
7 9 ? ?
7 9 7 ?
![Page 23: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/23.jpg)
#include "stdafx.h"#include <stdio.h>
class Punkt{//siehe oben};
int main(){ int kx, ky; Punkt p; p.set_xy(3,5); p.x = 12; p.set_xy(7,9); kx = p.get_x(); ky = p.get_y();}
p.x p.y kx ky
3 5 ? ?
7 9 ? ?
7 9 7 ?
7 9 7 9
![Page 24: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/24.jpg)
Nochmals zu den Zugriffsrechten im
folgenden kleinen Demo-Programm
![Page 25: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/25.jpg)
class Punkt{ private: int x; int y; public: void set_x(int px){ x = px; } void set_y(int py){ y = py; } void set_xy(int px, int py){ set_y(py); set_x(px); }}; int main(){ Punkt p; p.x = 12; p.set_xy(2,3);}
privater Bereich: Zugriff von außerhalb der Klasse: neinZugriff innerhalb der Klasse: ja
public (öffentlicher) Bereich : Zugriff von außerhalb der Klasse: jaZugriff innerhalb der Klasse: ja
// außerhalb, x private: nein
// innerhalb, set_xy public: ja
// innerhalb, x private: ja
// außerhalb, set_xy public: ja
// innerhalb, y private: ja
![Page 26: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/26.jpg)
Aufgabe:Ergänzen Sie die Klasse Punkt mit weiteren Membern. (siehe Übungsaufgabenblatt)
![Page 27: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/27.jpg)
Eine Klasse kann durch die sogenannte UML (Unified Modeling Language) beschrieben werden.
![Page 28: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/28.jpg)
UML ist eine formale Sprache zur objektorientierten Spezifikation, Visualisierung, Konstruktion und Dokumentation von Softwaresystemen und Geschäftsmodellen.
![Page 29: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/29.jpg)
Mit UML kann man z.B.die Klasse Punkt wie folgt darstellen:
![Page 30: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/30.jpg)
Punkt - x: int
- y: int
+ set_x(int px): void
+ set_y(int py): void
+ set_xy(int px, int py): void
- bedeutet: Attribut bzw. Methode ist privat + bedeutet: Attribut bzw. Methode ist public
AttributeMethoden
![Page 31: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/31.jpg)
Warum soll man folgende Aussage befolgen ?
“Mit Hilfe der Methoden soll man auf die Attribute
zugreifen (lesen bzw. ändern der Attribute)“
![Page 32: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/32.jpg)
Warum macht man diesen Umweg über die Methoden ?
Warum greift man nicht direkt auf die Attribute zu ?
![Page 33: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/33.jpg)
Schauen wir uns dazu ein paar Beispiele aus der
“täglichen“ Praxis an...
![Page 34: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/34.jpg)
Schauen wir uns dazu ein paar Beispiele aus der
“täglichen“ Praxis an...
![Page 35: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/35.jpg)
Warum benutzen wir an der Kasse im Supermarkt als “Werkzeug“ den Kassierer, um auf die Kasse zuzugreifen ?Warum machen wir das nicht direkt (ohne den Kassierer) ?
![Page 36: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/36.jpg)
Weil man dann den Kassenstand auf einen unerwünschten Wert verändern und einen ungewollten Ortswechsel der Kasse veranlassen kann!
![Page 37: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/37.jpg)
Warum benutzen wir am Bankschalter als “Werkzeug“ die EC-Karte, um auf die Kasse der Bank zuzugreifen ?Warum machen wir das nicht direkt (ohne Banker oder ohne EC-Karte) ?
![Page 38: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/38.jpg)
Weil man dann den Kassenstand auf einen unerwünschten Wert verändern kann !
![Page 39: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/39.jpg)
Warum wird in einigen Autos als “Werkzeug“ das ABS-System benutzt ?
Warum bremst man nicht direkt mechanisch (ohne Elektronik) ?
![Page 40: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/40.jpg)
Weil man dann die Bremskraft auf einen unerwünschten Wert verändern kann (Bremsen blockieren)!
![Page 41: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/41.jpg)
Warum wird in einigen Häusern als “Werkzeug“ ein Thermostat verwendet, um die Temperatur zu regeln ?Warum macht man dies nicht direkt (einfüllen von Heizöl in den Ölofen) ?
![Page 42: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/42.jpg)
Weil man dann z.B. in kürzester Zeit zu viel Heizöl in den Ofen leeren kann und es dann zu nicht gewünschten Verbrennungseffekten (Ofen explodiert !) kommen kann.
![Page 43: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/43.jpg)
Weitere Beispiele:
![Page 44: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/44.jpg)
Im Airbus, dem vollelektronischen Flugzeug, greift der Pilot nur über die Elektronik auf das Höhenruder, usw. zu
![Page 45: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/45.jpg)
Die Opferbüchse in der Kirche besitzt eine Vorrichtung, die den Geldfluß nur in eine Richtung zuläßt.
![Page 46: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/46.jpg)
Der Zugriff über die Boxhandschuhe auf den Körper des Gegners schützt diesen zumindest in einem gewissen Maße.
![Page 47: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/47.jpg)
Die Verheiratung von Ehepartnern geschieht durch eine untere Verwaltungsbehörde. Dadurch sollen unerwünschte Vermählungen der handelnden Subjekte (enge Verwandtschaft, Artenschrankenüberschreitung) verhindert werden.
![Page 48: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/48.jpg)
Diese Werkzeuge (Kassierer, EC-Karte, ABS-System, usw.) werden so gebastelt, daß sie es nicht erlauben, bestimmte Systemparameter (Geldmenge in Kasse, usw.) auf unerwünschte Werte abzuändern.
![Page 49: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/49.jpg)
In C++ sind diese Werkzeuge Methoden, die es dem Klassen-Programmierer(= Programmierer, der Klassen verwendet) nicht erlauben, die Attribute auf unerwünschte Werte abzuändern.
![Page 50: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/50.jpg)
Wenn eine Methode dies garantiert, nennt man dies auch Zusicherung (englisch: constraint)
![Page 51: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/51.jpg)
Beispiel in C++:
![Page 52: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/52.jpg)
class Konto{ private: double stand;
public: void setKonto(double geld){ stand = geld; }
void abheben(double geld){ if(stand-geld > -5000) stand = stand - geld; }}; // class Konto
Name der Klasse
privater Bereich: Auf die Member des privaten
Bereichs kann außerhalb der Klasse nicht direkt, sondern nur indirekt über Methoden des public Bereichs dieser
Klasse zugegriffen werden.
öffentlicher Bereich: Auf die Member dieses Bereichs
kann man jederzeit zugreifen.
![Page 53: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/53.jpg)
class Konto{ private: double stand; public: void setKonto(double geld){ stand = geld; } void abheben(double geld){ if(stand-geld > -5000) stand = stand - geld; }}; // class Konto
int main(){ Konto k; k.setKonto(1000); k.abheben(7000);}
k.stand : 1000
![Page 54: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/54.jpg)
class Konto{ private: double stand; public: void setKonto(double geld){ stand = geld; } void abheben(double geld){ if(stand-geld > -5000) stand = stand - geld; }}; // class Konto
int main(){ Konto k; k.setKonto(1000); k.abheben(7000);}
k.stand : 1000
Zusicherung:Kontostand > -5000
![Page 55: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/55.jpg)
In UML
![Page 56: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/56.jpg)
Konto - stand: double
+ setKonto(double geld):void
+ abheben(double geld): void
- bedeutet: Attribut bzw. Methode ist privat + bedeutet: Attribut bzw. Methode ist public
{stand > -5000}
Zusicherung
![Page 57: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/57.jpg)
Programmierstil
![Page 58: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/58.jpg)
Eine Methode kann man (rein syntaktisch, ohne dass sich irgendetwas inhaltlich
ändert) auch ausserhalb einer Klasse implementieren.
![Page 59: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/59.jpg)
Dies ist der bessere Programmierstil. Deshalb
werden wir diesen zukünftig immer verwenden !
![Page 60: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/60.jpg)
Dazu muss man den aber den vollständig qualifizierten
Namen der Methode angeben.
![Page 61: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/61.jpg)
Dies geschieht dadurch, dass man dem Methodenname den Klassennamen gefolgt von zwei Doppelpunkten
voranstellt.
![Page 62: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/62.jpg)
Beispiel:
![Page 63: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/63.jpg)
class Punkt{ private: int x; int y;
public: void set_xy(int px, int py){ x = px; y = py; } // ...}; // class Punkt
Dies ist der bisher bekannte Fall.
Eine Methode kann aber auch ausserhalb der Klasse
implementiert werden.
![Page 64: Objektorientierte Programmierung. In C: DatentypVariable Klasse Objekt ist eineVariable In C++ darf man einen Datentyp selbst basteln Dieser heisst dann:](https://reader033.vdocuments.pub/reader033/viewer/2022051211/55204d6149795902118b4f76/html5/thumbnails/64.jpg)
class Punkt{ private: int x; int y;
public: void set_xy(int px, int py);}; // class Punkt
void Punkt::set_xy(int px, int py){ x = px; y = py; }
... und außerhalb der Klasse definiert (implementiert) werden unter Angabe des
voll qualifizierten Namens.Dies ist ein der bessere Programmierstil !
Dazu muß die Methode in der Klasse deklariert
werden (ohne Methodenkörper).