einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung



Ähnliche Dokumente
EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Objektorientierte Programmierung

Javakurs 2013 Objektorientierung

Java: Vererbung. Teil 3: super()

3 Objektorientierte Konzepte in Java

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Grundlagen von Python

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die Java- Programmierung

Programmieren in Java

Vorkurs C++ Programmierung

Java Kurs für Anfänger Einheit 5 Methoden

Kapitel 6. Vererbung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Kapitel 6. Vererbung

Java Einführung Methoden in Klassen

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Kapitel 6. Vererbung

Algorithmen und Datenstrukturen

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Software Engineering Interaktionsdiagramme

Programmierkurs Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Objektbasierte Entwicklung

Einführung in die Programmierung

Einführung in die Java- Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

SEP 114. Design by Contract

Programmierkurs Java

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung OOP

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

5.5.8 Öffentliche und private Eigenschaften

Klassendefinitionen verstehen

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Prinzipien Objektorientierter Programmierung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Vgl. Oestereich Kap 2.7 Seiten

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Innere Klassen in Java

BEISPIELKLAUSUR Softwareentwicklung:

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Javakurs für Anfänger

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Objektorientierte Programmierung

SWE5 Übungen zu Software-Engineering

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Zählen von Objekten einer bestimmten Klasse

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

PIWIN 1 Übung Blatt 5

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Computeranwendung und Programmierung (CuP)

Software Engineering Klassendiagramme Einführung

5.6 Vererbung. Vererbung

Vererbung & Schnittstellen in C#

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Programmieren Tutorium

Java Virtual Machine (JVM) Bytecode

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

5. Abstrakte Klassen

Objektorientierte Programmierung

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Software Engineering Klassendiagramme Assoziationen

Folge 18 - Vererbung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Client-Server-Beziehungen

Klassenbeziehungen & Vererbung

Studentische Lösung zum Übungsblatt Nr. 7

1 Vom Problem zum Programm

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Javakurs zu Informatik I. Henning Heitkötter

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Professionelle Seminare im Bereich MS-Office

5. Tutorium zu Programmieren

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Anleitung SEPA-Lastschriften mit VR-NetWorld Software 5

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

3 Objektorientierte Konzepte in Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Transkript:

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto(); einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung // gib Kontostand aus int aktuellerstand = einkonto.holekontostand(); //holen Bildschirm.gibAus(aktuellerStand); //anzeigen

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 29 Hilfsklasse Bildschirm Benutzereingaben und Bildschirmausgaben ganz abstrakt aus Anwendersicht: "Welche Methoden gibt es?" komfortable Ausgabe auf den Bildschirm Bildschirm.gibAus(text) komfortable Eingabe eines Textes von Tastatur eingabetext = Bildschirm.gibEin() Warten auf Tastendruck Bildschirm.warteAufTastendruck()

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 30 Objektorientierte Programmierung Zwischenstand Programm = Mehrere Objekte, die Nachrichten austauschen Klassen: Schablonen für Objekte Attribute Methoden Objekte Erzeugen Zerstören Nachrichtenaustausch Aufruf von Methoden eines Objektes (Punkt-Notation) z.b. einkonto.holekontostand()

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 31 Objektorientierte Programmierung Was ist anders als an bisheriger, imperativer Programmierung? Objekte: Attribute & Methoden zusammen vorher in Structs/Records mit Zeigern auf Funktionen auch möglich, aber unüblich Klassen vorher als Module, in denen Funktionen für bestimmte Datenstrukturen gesammelt wurden, auch in imperativer Programmierung möglich Wesentlich ist eine andere (objektorientierte) Sicht auf eine Aufgabenstellung, die durch Sprachkonstrukte unterstützt wird.

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 32 Beispiel: Girokontenverwaltung Imperative Programmierung: verwalte k Girokonten in Feld mit Struct {Personendaten, Kontostand definiere Funktionen zum Einfügen, Ändern, Löschen von Girokonten Ändern beinhalte die Ausgabe des Kontostandes & Ein/Auszahlungen Funktionen haben typischerweise Kontonummer als Identifier Objektorientierte Programmierung: Klasse Girokonto mit Funktionen Erzeugen, Get/Set, Freigeben Klasse Girokontenverwaltung mit Datenstruktur zur Verwaltung einer Menge von k Elementen mit Einfügen, Ändern, Löschen

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 33 Beispiel: Girokontenverwaltung Was fällt auf? 1.Lokalisierung, Kapselung von Daten und Methoden auf einen kleinen Bereich, den sie auch betreffen. 2.Stärkere Abstraktion: Kontenverwaltung verwaltet Elemente unabhängig von deren internen Besonderheiten (Sparbuch,Girokonto,...). 3.Bei Methodenaufrufen werden nur Referenzen auf Objekte übergeben, stärkt die Vorstellung von Dingen, die als solches existieren und ein Eigenleben führen.

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 34 Etwas genauer: Aufruf von Objekten Konstruktoren: Aktivitäten bei Objekterzeugung Referenzen als Verweise auf Objekte Übergabe von Parametern an Methoden Klassenattribute / Klassenmethoden Namensraum Überladen von Methoden Überdecken von Attributen Vertiefung OO-Programm = Mehrere Objekte + Nachrichtenaustausch

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 35 Konstruktor Methode, die automatisch bei Erzeugung eines Objektes aufgerufen wird Wird in der Regel benutzt, um Attribute zu initialisieren Dadurch charakterisiert, dass der Methodenname mit dem Klassennamen übereinstimmt Konstruktoren besitzen keinen Rückgabewert auch nicht void Überladen von Konstruktoren ist möglich

Konstruktor: Beispiel class Girokonto {... public Girokonto() { kontostand = 0;... gleicher Bezeichner kein Rückgabetyp Initialisierung von Attributen PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 36

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 37 Konstruktor Argumente der Konstruktormethode werden bei Objekterzeugung durch new Klassenname(Argument1, Argument2,...) an den Konstruktor übergeben. Anweisungen im Konstruktor werden auf neu allokiertem Speicher ausgeführt. Ohne Angabe eines Konstruktors ist nur der leere Konstruktor ohne Argumente definiert. Ist ein (nicht leerer) Konstruktor definiert, muss der leere Konstruktor explizit definiert werden, um noch benutzt werden zu dürfen.

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 38 Referenzen auf Objekte Bei primitiven Datentypen enthält eine Variable direkt den Inhalt (z. B. einen Int-Zahlenwert) Bei Objekten von Klassen symbolisiert die Variable nur eine Referenz (einen Verweis) auf das Objekt Es können auch mehrere Referenzen auf ein Objekt zeigen Eine Referenz kann auch leer sein, null ist das Schlüsselwort für die leere Referenz Beispiel: Girokonto k = null;

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 39 Referenzen auf Objekte Mit dem == Operator kann man zwei Referenzen auf Gleichheit testen Beispiel Girokonto k1 = new Girokonto();... Girokonto k2 = k1;... if (k1 == k2) System.out.println( k1,k2 verweisen auf das selbe Objekt");

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 40 Referenzen auf Objekte Mit dem == Operator kann man abfragen, ob eine Referenz leer ist Beispiel Girokonto k=null;... if (k == null) System.out.println("k ist leere Referenz");

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 41 Freigabe/Zerstörung von Objekten In vielen Sprachen durch explizite Statements im Programm free- delete-methoden Funktioniert, ist aber häufige Fehlerquelle, z. B.: x, y verweisen auf 1 Objekt, free(x) gibt Speicher frei, y wird zu späterem Zeitpunkt verwendet ist aber bereits durch free(x) zerstört Problem: Speicheradresse existiert, Speicherinhalt kann beliebig sein

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 42 Alternative in Java: Garbage Collection Ist die letzte Referenz auf ein Objekt verschwunden, da die Referenzen den Gültigkeitsbereich verlassen haben, oder da null-referenzen zugewiesen wurden, wird das Objekt der Garbage Collection zugeführt Es sind keine free- oder delete-methoden nötig Funktioniert auch bei zyklischen Referenzen der Objekte System.gc() Empfehlung, die Garbage Collection zu starten in der Regel ist dies aber nicht nötig.

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 43 Klassenattribute und -methoden Attribute und Methoden gehören zu Objekten (also Instanzen) einer Klasse Attribute, die für jedes Objekt neue Instanzen bilden, heißen daher Instanzvariablen (Standardfall) Aber Es gibt Klassenattribute und -methoden, die nicht zu Instanzen (also Objekten) gehören, sondern zu den Klassen selbst

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 44 Klassenvariablen Attribute, die für jedes Objekt neue Instanzen bilden, heißen Instanzvariablen (Standardfall) Werden Attribute mit static gekennzeichnet, handelt es sich um Klassenvariablen, die fürdie gesamteklassenureineinstanzbesitzen Klassenvariablen existieren auch ohne die Existenz eines Objektes Auf sie kann durch Klassenname.Attributname zugegriffen werden.

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 45 Klassenmethoden Methoden, die ausschließlich auf Klassenvariablen zurückgreifen dürfen mit static gekennzeichnet werden, sie heißen Klassenmethoden. Klassenmethoden dürfen auch nur Klassenmethoden benutzen. Klassenmethoden können auch ohne Existenz eines Objektes mit Klassenname.Methodenname(...) aufgerufen werden. Die main()-methode ist eine Klassenmethode, da zu Beginn noch keine Objekte erzeugt wurden.

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 46 Beispiel class Demo { int a; static int b; public static void main (String[] args) { a = 1; // nicht erlaubt b = 1; // erlaubt test(); // nicht erlaubt new Demo().test(); // erlaubt test2(); // erlaubt new Demo().test2();// erlaubt void test() { a = 2; // erlaubt b = 2; // erlaubt // Fortsetzung in main... Demo d = new Demo(); d.a = 1; // erlaubt d.b = 1; // erlaubt Demo.a = 1; // nicht erlaubt Demo.b = 1; // erlaubt Demo.test(); // nicht erlaubt Demo.test2(); // erlaubt... static void test2() { b = 3;

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 47 Überladen von Methoden Wunsch für Methoden/Attribute Gleiche Namen für gleiche Zwecke z.b. Girokonto erzeugen ohne/mit einem initialen Kontostand Benutzt werden sollen Methoden mit gleichen Namen Problem: Wie diese Methoden auseinanderhalten? Idee: Unterscheide anhand Parameter-Typen: Methoden gleichen Namens müssen sich also im Typ von mindestens einem Parameter oder in der Anzahl der Parameter unterscheiden zahle (int betrag) zahle (int betrag, String verwendungszweck)

Überladen von Methoden Unterschiedliche Methoden müssen sich im Methodennamen oder in der Übergabeparameterliste (oder in beidem) unterscheiden Hat eine Klasse mehrere Methoden mit identischem Namen, nennt man diese Methode überladen In unterschiedlichen Klassen dürfen auch Methoden mit identischem Namen und identischen Übergabeparameterlisten deklariert werden verschiedene Namensräume PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 48

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 49 Überdecken von Attributen Verwenden von Variablen mit bereits benutzten Namen Zugreifen auf überdeckte Attribute über this: public class Girokonto { private int kontostand; // in Pfennigen /*...*/ public void setzekontostand(int kontostand) { this.kontostand = kontostand; /*...*/

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 50 Überdecken von Attributen Variablendeklarationen in Klassenmethoden überdecken die Attribute der Klasse Die Attribute sind nur überdeckt, nicht überschrieben Auf Attribute der Klasse kann dann über das Schlüsselwort this zugegriffen werden this ist eine Referenz auf das zur Methode gehörende Objekt

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 51 Beispiel Überladen von Konstruktoren, Methoden Erweitern einer Klasse Girokonto um Attribute und Methoden Ziel: Übersicht behalten durch sinnvolles, sparsames Vergeben von Methodennamen (Namen mehrfach in einer Klasse vergeben). Anforderung: Implementieren einer zweiten Konstruktor-Methode für die Klasse Girokonto Sie soll es ermöglichen, dass schon bei der Erzeugung eines Girokonto- Exemplars ein Wert für den initialen Kontostand übergeben werden kann Welchen Namen muss diese Methode tragen? Der übergebene Parameter soll kontostand heißen Es gibt in der Klasse "Girokonto" bereits ein Attribut mit diesem Namen.

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 52 Beispiel Überladen einer Konstruktormethode Lösungsmuster: Konstruktor-Methode Name identisch mit Klassenname Überdecken des Namens kontostand (als Attributname und Variablenname) public class Girokonto { /*...*/ public Girokonto(int kontostand) { this.kontostand = kontostand; /*...*/

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 53 Zusammenspiel zwischen Objekten In OO-System kooperieren Objekte, um gemeinsam eine Aufgabe zu lösen Jede Klasse kann etwas besonders gut (Spezialist) z.b. Klasse "Girokonto" für Umgang mit Girokonten Beim Erstellen eines OO-Systems müssen Spezialisten ausgemacht werden z.b. Erweiterung um Währungsrechnen Am Beispiel des Girokontos: Weg von Anforderungstext zu einer neuen Klasse Ändern einer bestehenden Klasse

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 54 Aufgabe Entwerfen einer neuen Klasse Waehrungsrechner für das Umrechnen von EuroCent in Pfennige (100 EuroCent 200 Pfennige) Muss diese Klasse Attribute besitzen? Welche? Erforderlich Methode "int wandeleinpfennig (int eurocent)" und "int wandeleineurocent (int pfennige). Anpassen der Klasse "Girokonto" Girokonto-Objekt erhält bei Erzeugung "individuellen" Währungsrechner Kontostand sei intern stets in EuroCent gespeichert, Wert in jeder anderen Währung wird über Konvertierung berechnet Speicherungsart sei geheim ( Information-Hiding ).

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 55 Aufgabe public class Waehrungsrechner { private int eurofaktor; Instanzvariable public Waehrungsrechner(){ Konstruktor eurofaktor = 2; public int wandeleineurocent (int pfennige){ int eurocent = pfennige / eurofaktor; return (eurocent); public int wandeleinpfennig (int eurocent){ int pfennige = eurocent * eurofaktor; return (pfennige); Methode 1 Methode 2

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 56 Aufgabe public class Girokonto { private int kontostand = 0; private Waehrungsrechner wr; public Girokonto(Waehrungsrechner wr) { this.wr = wr; public Girokonto(Waehrungsrechner wr, int kontostand){ this.wr = wr; // 1. Umrechnen des Betrags in EuroCent int eurocent = wr.wandeleineurocent(kontostand); // 2. Kontostand aktualisieren this.kontostand = eurocent;

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 57 Aufgabe public void zahle (int pfennige){ // 1. Umrechnen des zahlbetrags in EuroCent int eurocent = wr.wandeleineurocent(pfennige); // 2. Konto aktualisieren kontostand = kontostand + eurocent; public int holekontostand(){ // 1. Umrechnen des akt. Kontostandes in Pfennige int pfennige = wr.wandeleinpfennig(kontostand); // 2. Kontostand in Pfennigen zurückgeben return (pfennige);

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 58 Zwischenstand Objektorientierte Programmierung Programm = Mehrere Objekte, die Nachrichten austauschen Klassen: Schablonen für Objekte (Attribute & Methoden) Objekt Lebenszyklus in Java: Konstruktur, Methodenaufrufe / Nachrichtenübermittlung, Garbage Collection Lebenszyklus in C++: Konstruktur sofern vorhanden, Methodenaufrufe, Destruktor, delete Starke Lokalisierung der Betrachtung auf einzelne Dinge, deren Zustand (Attribute) und Zustandsänderungen (Methoden), erinnert an endliche Automaten Kommunikation zwischen Objekten durch Nachrichtenaustausch im Sinne von Methodenaufrufen

PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 59 Zwischenstand Einzelheiten zu: Konstruktoren, Referenzen, Garbage Collection, Übergabe von Parametern an Methoden, Klassenattribute / Klassenmethoden Namensraum Überladen von Methoden Überdecken von Attributen Vertiefung OO-Programm = Mehrere Objekte + Nachrichtenaustausch Aufgaben verteilen ( Spezialisten ) Klasse Waehrungsrechner