C++ - Arrays Abstrakter Datentyp

FB Informatik Prof. Dr. R.Nitsch C++ - Arrays – Abstrakter Datentyp Reiner Nitsch  8417  [email protected] Abstrakter Datentyp - Begriff FB ...
Author: David Hoch
0 downloads 3 Views 697KB Size
FB Informatik Prof. Dr. R.Nitsch

C++ - Arrays – Abstrakter Datentyp

Reiner Nitsch  8417  [email protected]

Abstrakter Datentyp - Begriff

FB Informatik Prof. Dr. R.Nitsch

• Daten stehen im Mittelpunkt; • Sie haben eigene Funktionen zur Verfügung, die Methoden bzw. Operationen genannt werden. Zu jeder Operation gehören 2 Bedingungen – Vorbedingung (precondition): gibt an, welche Eigenschaften das ADT-Objekt vor der Operation haben muss, damit diese ihre Leistung korrekt erbringen kann. – Nachbedingung (postcondition): beschreibt den Zustand des ADT-Objekts nach Beendigung der Operation.

• Nur diese Methoden haben Zugriff auf die Daten (Datenkapselung, Zugriffsschutz). • Daten und zugehörige Funktionen werden an einer Stelle im Programm zusammen gefasst. Daraus resultiert eine bessere Pflegbarkeit, Wiederverwendbarkeit und einfachere Fehlereingrenzung • Die Implementierung der Methoden und die interne Datenstruktur wird vor dem Benutzer verborgen (Geheimnisprinzip). • ADTs können durch eine Invariante gekennzeichnet sein. Die darf durch nichts und niemanden geändert werden. – Beispiel: Die Elemente eines ADT "sortiertes Array" sind vor und nach jeder Operation dieses ADT sortiert. • ADTs können in objektorientierten Programmen durch Klassen realisiert werden. 19.05.2009

C++ Array - ADT

2

Abstrakter Datentyp (ADT)

FB Informatik Prof. Dr. R.Nitsch

• ADT-Beispiele bisher: Klassen Counter, Time, Motorboot, Handy, string, … • Neues Beispiel: ADT Notenspiegel zur Erfassung und Auswertung der Noten einer Prüfung Fach: Programmieren Note Anzahl 1 4 2 5 … 5 3 Durchschnittsnote: 2.3 Durchfallquote: 17%

Attribute - unbekannt, d.h. abstrakt. Geheimnisprinzip: Zugriff von aussen nur lesend über Akzessor-Methoden) Abstrakte Methoden - weil sie unabhängig von der konkreten Attributstruktur sind Akzessormethoden nicht abstrakt weil abhängig von konkreter Attributstruktur.

19.05.2009

C++ Array - ADT

ExamResult Attribute (?) Konstruktor Destruktor show():void mean():float record(mark:int):void failRatio():float getMarkCount(mark:int):int setMarkCount(mark:int, count:int):void 3

Abstrakter Datentyp - Akzessormethoden

FB Informatik Prof. Dr. R.Nitsch

• sollen Schutzfunktionen bieten für die sonst ungeschützte Datenstruktur • bieten gezielten Zugriff auf eine Klasse – lesend (get...) • private: oder public : getAttribut1() const get() const – schreibend (set...) • private: void set(,) //Deklaration class ExamResult { private: int count1, count2, count3, count4, count5; public: ExamResult(); ~ ExamResult(); void show(); const; float mean(); const; void record(int); int getMarkCount(int mark); private: void setMarkCount(int mark ,int count); }; 19.05.2009

C++ Array - ADT

Aufgabe: Suchen Sie die read-only Methoden und deklarieren Sie diese als solche!

4

Abstrakter Datentyp - Notenspiegel // Anwendung void main() { ExamResult math; math.record(2); math.record(5); math.record(3); math.record(2); … math.show(); cout

Suggest Documents