Objektorientierte Programmierung Studiengang Medieninformatik

Ähnliche Dokumente
1 Polymorphie (Vielgestaltigkeit)

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Einstieg in die Informatik mit Java

3 Objektorientierte Konzepte in Java

Arten von Klassen-Beziehungen

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

Repetitorium Informatik (Java)

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Arten von Klassen-Beziehungen

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Programmieren in Java

1 Abstrakte Klassen, finale Klassen und Interfaces

Theorie zu Übung 8 Implementierung in Java

Kapitel 6. Vererbung

3 Objektorientierte Konzepte in Java

Einstieg in die Informatik mit Java

Programmieren 2 Java Überblick

Kapitel 6. Vererbung

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Kapitel 6. Vererbung

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Objekt-Orientierte Programmierung

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Objektorientierung (OO)

III. Objektorientierte Programmierung. Aufruf einer Methode. Definition einer Methode. Bezug zur aufrufenden Instanz. Instanzen einer Klasse

Java Einführung Abstrakte Klassen und Interfaces

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Probeklausur: Programmierung WS04/05

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Java Einführung Klassendefinitionen

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Einstieg in die Informatik mit Java

Einführung in die Informatik

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Einstieg in die Informatik mit Java

Prinzipien Objektorientierter Programmierung

Objekt-Orientierte Programmierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Präsentation Interfaces

Java Einführung Methoden in Klassen

Statische Methoden, Vererbung, Benutzereingabe

Java: Vererbung. Teil 3: super()

Java für Computerlinguisten

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

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

Javakurs für Anfänger

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

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

Info B VL 8: Abstrakte Klassen & Interfaces

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

Einführung in die Programmierung

Abschnitt 6: Klassen, Objekte und Methoden in Java

Javakurs 2013 Objektorientierung

Algorithmen und Datenstrukturen

Klausur Grundlagen der Programmierung

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Musterlösung Stand: 5. Februar 2009

5.6 Vererbung. Vererbung

Java Vererbung. Inhalt

Javakurs für Anfänger

Probeklausur: Programmierung WS04/05

6. Globalübung (zu Übungsblatt 8)

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Vererbung. Martin Wirsing. Ziele. Vererbung

Übersicht. Vorstellung des OO-Paradigmas

Objektorientierte Programmierung

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Klassen in Java. Klassen

Programmieren in Java

Dr. Monika Meiler. Inhalt

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Einstieg in die Informatik mit Java

Welche Informatik-Kenntnisse bringen Sie mit?

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

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

5.5.8 Öffentliche und private Eigenschaften

Algorithmen und Programmierung II

Programmieren II. Abstrakte Klassen, Interfaces Heusch 13.8, 13.9 Ratz Institut für Angewandte Informatik

Klassenbeziehungen & Vererbung

Programmieren I. Kapitel 8. Vererbung

Faustregeln zu Zusicherungen

Geschachtelte Klassen

JAVA für Nichtinformatiker - Probeklausur -

Grafische Benutzeroberflächen

Javakurs für Anfänger

Teil 2: OOP und JAVA (Vorlesung 11)

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Programmieren in Java

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

Java I Vorlesung Vererbung und Sichtbarkeit

Algorithmen und Datenstrukturen 07

Enumerations und innere Klassen

Objektorientierte Programmierung

Transkript:

Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017

Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute und Methoden Klassen ableiten, Vererbung von Attributen und Methoden Methoden überschreiben und überladen, Polymorphie Abstrakte Klasse, abstrakte Methoden, Interfaces Grafische Benutzungsoberfläche (GUI) GUI-Elemente: Frames, Panels, Labels, Buttons, Textfelder Reaktion auf Ereignisse mit Listenern

Klassenattribute Die Werte von Attributen sind von Objekt zu Objekt unterschiedlich beispielsweise hat das Fenster frame1 die Breite 200 und das Fenster frame2 die Breite 500. Manchmal gibt es aber auch Attribute, die für alle Objekte einer Klasse gleich sein sollen. Beispielsweise soll für alle erzeugten Objekte unserer Klasse MyFrame eine maximale Breite von 1000 zulässig sein. Dies lässt sich durch ein Klassenattribut oder statisches Attribut bewerkstelligen; hierfür wird der Modifizierer static verwendet. public class MyFrame extends JFrame } public static int maxwidth=1000; // Klassenattribut... @Override public void setsize(int w, int h) } super.setsize(math.min(w, maxwidth), h);

Klassenattribute Wenn es uns beliebt, können wir den Wert für die maximale Breite eines Fensters auch ändern: MyFrame.maxwidth=800; Von nun an haben alle neu erzeugten Fenster eine maximale Breite von 800. Der Zugriff auf Klassenattribute geschieht in ähnlicher Weise wie der Zugriff auf Objektattribute mit der Punkt-Notation. Statt des Objektnamens wird jedoch der Klassenname angegeben (hier MyFrame).

Klassenkonstanten Vielleicht ist es nicht sinnvoll, dass die maximale Breite eines Fensters geändert werden kann. Dann deklarieren wir die maximale Breite als Klassenkonstante mithilfe des Modifizierers final: public class MyFrame extends JFrame public static final int MAXWIDTH=1000; // Klassenkonstante... Anderes Beispiel: public class Bruch public static final Bruch ZERO=new Bruch(0, 1);... Es ist üblich, Konstanten in Großbuchstaben zu schreiben. Uns sind bereits Klassenkonstanten begegnet, etwa Color.GREEN oder JFrame.EXIT_ON_CLOSE.

Klassenmethoden Normalerweise werden Methoden auf Objekte angewendet. Beispielsweise ist ein Aufruf der Methode setvisible nur dann sinnvoll, wenn er sich auf ein bestimmtes Objekt bezieht, das sichtbar gemacht werden soll: myframe.setvisible(true); Es gibt jedoch auch Methoden, die sich nicht auf ein bestimmtes Objekt beziehen. Eine solche Methode heißt Klassenmethode, eine andere Bezeichnung ist statische Methode. Sie wird durch den Modifizierer static gekennzeichnet. Ein Beispiel hierfür kennen wir schon: public static void main(string[] args) Die main-methode ist ein Sonderfall, weil sie normalerweise aufgerufen wird, indem wir das Programm starten. Wir können aber auch aus einem Programm heraus eine main-methode einer anderen Klasse aufrufen. Der Aufruf geschieht ähnlich wie beim Zugriff auf Klassenattribute durch Angabe des Klassennamens, hier Main1: Main1.main(null);

Hilfsfunktionen in Klassen Hilfsfunktionen, die wir in Klassen benötigen, kennzeichnen wir mit private static, beispielsweise in unserer Klasse Bruch: private static int ggt(int a, int b) Denn Hilfsfunktionen sind nur in der betreffenden Klasse relevant, daher private, und sie beziehen sich nicht auf ein bestimmtes Objekt, daher static. Klassenattribute, Klassenkonstanten und Klassenmethoden werden in Eclipse in Kursivschrift dargestellt.

Factory-Methode Eine Klassenmethode, die ein Objekt der Klasse erzeugt, heißt Factory-Methode. Beispiel (anstelle von Klassenkonstante ZERO): public static Bruch zero() return new Bruch(0, 1); } Aufruf z.b. folgendermaßen: Bruch a=new Bruch(1, 2); boolean g=a.isgreater(bruch.zero());

Wir haben nun die wesentlichen Eigenschaften und Möglichkeiten der objektorientierten Programmierung kennengelernt. Es fehlen noch drei wichtige Details: 1. Initialisierung von Attributen public class Circle } // Attribute public int left, top, diameter; public Color fill;... Attribute werden bereits bei der Deklaration mit einem Wert initialisiert. Bei Attributen vom Typ int ist dies der Wert 0, bei double der Wert 0.0, bei boolean der Wert false. Attribute, die auf ein Objekt verweisen, werden mit dem speziellen Wert null initialisiert (hier: fill)

Initialisierung von Attributen public class Circle } // Attribute public int left, top, diameter=10; public Color fill=color.black;... Attribute lassen sich bereits bei der Deklaration mit gewünschten Default-Werten initialisieren. Jedes Objekt, das neu erzeugt wird, besitzt dann diese Attribut-Werte es sei denn, im Konstruktor werden andere Werte für die Attribute festgelegt. Natürlich lassen sich in entsprechenden Methoden die Attribut-Werte auch nach Erzeugung des Objekts noch verändern, etwa in der Methode setfill der Klasse Circle: public void setfill(color c) } this.fill=c;

2. Das null-objekt Bruch a, b, c; a=new Bruch(1, 2); b=new Bruch(3, 4); Welchen Wert hat c? Solange Objekt-Variablen kein Objekt zugewiesen wird, z.b. mit new, verweisen sie auf kein Objekt. Dieses nicht vorhandene Objekt ist das null- Objekt. Oder korrekter ausgedrückt: Die Variable c enthält einen null-verweis. Beim Versuch, eine Methode von c aufzurufen, etwa c.add(a), wird der Laufzeitfehler NullPointerException ausgelöst. Wir können prüfen, ob eine Objekt-Variable den Wert null enthält: if (c!=null)...

3. Umhüllungs-Klassen (Wrapper-Klassen) Java ist keine rein objektorientierte Sprache, denn es gibt die elementaren Datentypen int, double und boolean. Entsprechende Werte dieser elementaren Datentypen sind keine Objekte. Der Vorteil besteht darin, dass sich die Werte einfacher speichern lassen: Anstatt einen Verweis auf ein Objekt zu speichern, wird der Wert direkt gespeichert. Der Nachteil besteht darin, dass sich Werte dieser elementaren Datentypen nicht wie Objekte behandeln lassen: Sie sind nicht von der Oberklasse Object abgeleitet, und sie haben keine Attribute und Methoden. Abhilfe bieten die Umhüllungs-Klassen, die für jeden elementaren Datentyp vorhanden sind: Integer für int Double für double Boolean für boolean Das Schöne ist: Die Werte werden automatisch ineinander umgewandelt: Integer i=3; int j=i;

Attribute und Methoden von Umhüllungs-Klassen Wichtige Attribute und Methoden der Umhüllungs-Klasse Integer: Integer.MAX_VALUE; // Klassenkonstante: 2147483647 Integer.MIN_VALUE; // Klassenkonstante: -2147483648 // Klassenmethode: int n=integer.parseint(txt1.gettext()); // String -> Integer // Integer implementiert das Interface Comparable Integer i=3, j=4; int v=i.compareto(j); // Methode compareto aus Interface Comparable Attribute der Umhüllungs-Klassen Double: Double.POSITIVE_INFINITY; Double.NEGATIVE_INFINITY; // unendlich // - unendlich

Zusammenfassung Klassenattribute (static), Klassenkonstanten (static final) Klassenmethoden (static) Attribute initialisieren: public int x=10, y=20; Das null-objekt: public Color fill=null; Umhüllungsklassen (Wrapper-Klassen): Integer, Double, Boolean Attribute und Methoden der Umhüllungsklassen

Beim nächsten Mal: Refactoring: Ein fertiges, funktionierendes Programm verbessern Programme testen mit Unit-Tests