1 Klassen und Objekte

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

1 Polymorphie (Vielgestaltigkeit)

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

Java Einführung Methoden in Klassen

Einführung in die. objektorientierte Programmierung

Javakurs 2013 Objektorientierung

Javakurs für Anfänger

Vererbung & Schnittstellen in C#

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Kapitel 6. Vererbung

Objektorientierte Programmierung

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

Algorithmen und Datenstrukturen

3 Objektorientierte Konzepte in Java

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

Große Übung Praktische Informatik 1

Grundlagen von Python

5.4 Klassen und Objekte

Software Engineering Klassendiagramme Einführung

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

Vorkurs C++ Programmierung

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

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

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

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

3 Objektorientierte Konzepte in Java

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

Java Kurs für Anfänger Einheit 5 Methoden

Probeklausur: Programmierung WS04/05

Java für Computerlinguisten

Objekt-Orientierte Programmierung

Einführung in die Programmierung für Wirtschaftsinformatik

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

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

Klassenbeziehungen & Vererbung

Propädeutikum zur Programmierung

PIWIN 1 Übung Blatt 5

Programmieren in Java

Algorithmen und Datenstrukturen 07

Java: Vererbung. Teil 3: super()

Java Schulung (Java 2 Java Development Kit 5 / 6)

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

5.6 Vererbung. Vererbung

Innere Klassen in Java

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

5.5.8 Öffentliche und private Eigenschaften

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

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

5. Tutorium zu Programmieren

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

Teil 1: Grundeigenschaften von Rechnern und Software

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Objektorientierte Programmierung. Kapitel 12: Interfaces

Abschnitt 9: Schnittstellen: Interfaces

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Repetitorium Informatik (Java)

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Einführung in die Java- Programmierung

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

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

Universität Karlsruhe (TH)

Typumwandlungen bei Referenztypen

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Dr. Monika Meiler. Inhalt

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung

Studentische Lösung zum Übungsblatt Nr. 7

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 8. Arrays. Arrays

Proseminar: C# und.net. 6. Vortag Generische Klassen. Sebastian Wolf

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Software Engineering Klassendiagramme weiterführende Konzepte

Objektorientierung: Klassen und Objekte

Variablen manipulieren per JDI

Programmieren in Java

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Programmierkurs Java

Software Engineering II

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Objektorientierte Programmierung

C# im Vergleich zu Java

C++-Zusammenfassung. H. Schaudt. August 18, 2005

Prinzipien Objektorientierter Programmierung

Klassendiagramm. (class diagram)

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo.

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

Einführung in Javadoc

Klassendefinitionen verstehen

Modellierung und Programmierung 1

2.2 Prozesse in Java

IT- Handbuch für Fachinformatiker, 7. Auflage: Text- Lösungen Sascha Kersken

Einführung in die Programmierung mit Java. Hörsaalübung

Transkript:

1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente Klasse - Datentyp + Operationen (ein Plan für Objekte) Objekt - konkrete Datenstruktur (eine Instanz einer Klasse) 1

Beispiel: Rationale Zahlen Eine rationale Zahl q Q hat die Form q = x y, wobei x, y Z. x und y heißen Zähler und Nenner von q. Ein Objekt vom Typ Rational sollte deshalb als Komponenten int-variablen und enthalten: Objekt: Die Daten-Komponenten eines Objekts heißen Objekt-Attribute oder (kurz) Attribute. 2

Rational name ; deklariert eine Variable für Objekte der Klasse Rational. Das Kommando new Rational(...) legt das Objekt an, ruft einen Konstruktor für dieses Objekt auf und liefert das neue Objekt zurück: a a = new Rational (3,4); a 3 4 Der Konstruktor ist eine Prozedur, die die Attribute des neuen Objekts initialisieren kann. 3

Der Wert einer Rational-Variable ist ein Verweis auf einen Speicherbereich. Rational b = a; kopiert den Verweis aus a in die Variable b: a 3 4 Rational b = a; a b 3 4 4

a. liefert den Wert des Attributs des Objekts a: a 3 4 int b = a.; a 3 4 b 3 5

a.add(b) ruft die Operation add für a mit dem zusätzlichen aktuellen Parameter b auf: a 3 4 Rational c = a.add(b); a 3 4 b 1 2 b 1 2 c 2 8 6

a 3 4 a = a.add(b); a 3 4 b 1 2 b 1 2 2 8 Die Operationen auf Objekten einer Klasse heißen auch Methoden, genauer: Objekt-Methoden. 7

Zusammenfassung: Eine Klassen-Deklaration besteht folglich aus Deklarationen von: Attributen für die verschiedenen Wert-Komponenten der Objekte; Konstruktoren zur Initialisierung der Objekte; Methoden, d.h. Operationen auf Objekten. Diese Elemente heißen auch Members der Klasse. 8

public class Rational { // Attribute: private int, ; // Konstruktoren: public Rational (int x, int y) { = x; = y; } public Rational (int x) { = x; = 1; }... 9

// Objekt-Methoden: public Rational add (Rational r) { int x = * r. +r. * ; int y = * r.; return new Rational (x,y); } public boolean equals (Rational r) { return ( * r. == r. * ); } public String tostring() { if ( == 1) return "" + ; if ( > 0) return +"/"+ ; return (-) +"/"+ (-); } } // end of class Rational 10

Bemerkungen: Jede Klasse sollte in einer separaten Datei des entsprechenden Namens stehen. Die Schlüsselworte private bzw. public klassifizieren, für wen die entsprechenden Members sichtbar, d.h. zugänglich sind. private heißt: nur für Members der gleichen Klasse sichtbar. public heißt: innerhalb des gesamten Programms sichtbar. Nicht klassifizierte Members sind nur innerhalb des aktuellen Package sichtbar. 11

Konstruktoren haben den gleichen Namen wie die Klasse. Es kann mehrere geben, sofern sie sich im Typ ihrer Argumente unterscheiden. Konstruktoren haben keine Rückgabewerte und darum auch keinen Rückgabetyp. Methoden haben dagegen stets einen Rückgabe-Typ, evt. void. public void inc (int b) { } = + b * ; 12

Die Objekt-Methode inc() modifiziert das Objekt, für das sie aufgerufen wurde. a 3 4 a.inc(b); a 7 4 b 1 13

Die Objekt-Methode equals() ist nötig, da der Operator == bei Objekten die Identität der Objekte testet, d.h. die Gleichheit der Referenz!!! Die Objekt-Methode tostring() liefert eine String-Darstellung des Objekts. Sie wird implizit aufgerufen, wenn das Objekt als Argument für die Konkantenation + auftaucht. Innerhalb einer Objekt-Methode/eines Konstruktors kann auf die Attribute des Objekts direkt zugegriffen werden. private-klassifizierung bezieht sich auf die Klasse nicht das Objekt: die Attribute aller Rational-Objekte sind für add sichtbar!! 14

Eine graphische Visualisierung der Klasse Rational, die nur die wesentliche Funktionalität berücksichtigt, könnte so aussehen: Rational : int : int + + + add (y : Rational) : Rational equals (y : Rational) : boolean tostring () : String 15

Diskussion und Ausblick: Solche Diagramme werden von der UML, d.h. der Unified Modelling Language bereitgestellt, um Software-Systeme zu entwerfen ( Software Engineering) Für eine einzelne Klasse lohnt sich ein solches Diagramm nicht wirklich Besteht ein System aber aus sehr vielen Klassen, kann man damit die Beziehungen zwischen verschiedenen Klassen verdeutlichen Achtung: UML wurde nicht speziell für Java entwickelt. Darum werden Typen abweichend notiert. Auch lassen sich manche Ideen nicht eindeutig oder nur schlecht modellieren :-( 16

Diskussion und Ausblick: Solche Diagramme werden von der UML, d.h. der Unified Modelling Language bereitgestellt, um Software-Systeme zu entwerfen ( Software Engineering) Für eine einzelne Klasse lohnt sich ein solches Diagramm nicht wirklich Besteht ein System aber aus sehr vielen Klassen, kann man damit die Beziehungen zwischen verschiedenen Klassen verdeutlichen Achtung: UML wurde nicht speziell für Java entwickelt. Darum werden Typen abweichend notiert. Auch lassen sich manche Ideen nicht eindeutig oder nur schlecht modellieren 17

1.1 Klassen-Attribute Objekt-Attribute werden für jedes Objekt neu angelegt, Klassen-Attribute einmal für die gesamte Klasse Klassen-Attribute erhalten die Qualifizierung static. public class Count { private static int count = 0; private int info; // Konstruktor public Count() { info = count; count++; }... } // end of class Count 18

Modellierung: Count static count info : int : int + Count () Die Zusatzinformation, dass das Attribut count statisch ist, wird in in spitzen Klammern im Diagramm vermerkt. Solche Annotationen heißen Stereotype. 19

count 0 Count a = new Count(); 20

count 1 Count b = new Count(); a info 0 21

count 2 Count c = new Count(); a info 0 b info 1 22

count 3 a info 0 b info 1 c info 2 23

Das Klassen-Attribut count zählt hier die Anzahl der bereits erzeugten Objekte. Das Objekt-Attribut info enthält für jedes Objekt eine eindeutige Nummer. Außerhalb der Klasse Class kann man auf eine öffentliche Klassen-Variable name mithilfe von Class.name zugegreifen. Objekt-Methoden werden stets mit einem Objekt aufgerufen... dieses Objekt fungiert wie ein weiteres Argument :-) Funktionen und Prozeduren der Klasse ohne dieses implizite Argument heißen Klassen-Methoden und werden durch das Schlüsselwort static kenntlich gemacht. 24

Das Klassen-Attribut count zählt hier die Anzahl der bereits erzeugten Objekte. Das Objekt-Attribut info enthält für jedes Objekt eine eindeutige Nummer. Außerhalb der Klasse Class kann man auf eine öffentliche Klassen-Variable name mithilfe von Class.name zugegreifen. Objekt-Methoden werden stets mit einem Objekt aufgerufen... dieses Objekt fungiert wie ein weiteres Argument Funktionen und Prozeduren der Klasse ohne dieses implizite Argument heißen Klassen-Methoden und werden durch das Schlüsselwort static kenntlich gemacht. 25

In Rational könnten wir definieren: public static Rational[] inttorationalarray(int[] a) { Rational[] b = new Rational[a.length]; for(int i=0; i < a.length; ++i) b[i] = new Rational (a[i]); return b; } Die Funktion erzeugt für ein Feld von int s ein entsprechendes Feld von Rational-Objekten. Außerhalb der Klasse Class kann die öffentliche Klassen-Methode meth() mithilfe von Class.meth(...) aufgerufen werden. 26

In Rational könnten wir definieren: public static Rational[] inttorationalarray(int[] a) { Rational[] b = new Rational[a.length]; for(int i=0; i < a.length; ++i) b[i] = new Rational (a[i]); return b; } Die Funktion erzeugt für ein Feld von int s ein entsprechendes Feld von Rational-Objekten. Außerhalb der Klasse Class kann die öffentliche Klassen-Methode meth() mithilfe von Class.meth(...) aufgerufen werden. 27

Online-Tutorial Java static http://www.gailer-net.de/tutorials/java/notes/chap25/ch25_13.html 28