Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Ähnliche Dokumente
Programmierung Nachklausurtutorium

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Vorkurs Informatik WiSe 15/16

Vererbung, Polymorphismus

Objektorientierte Programmierung Studiengang Medieninformatik

Algorithmen und Datenstrukturen

Vererbung, Polymorphie

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

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

Propädeutikum Programmierung in der Bioinformatik

Einstieg in die Informatik mit Java

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

4. Vererbung Die Klasse Object. Die Klasse Object

Tafelübung 07 Algorithmen und Datenstrukturen

Einstieg in die Informatik mit Java

12 Abstrakte Klassen, finale Klassen und Interfaces

Software Entwicklung 1

JAVA 05: Objektorientierte Konzepte

Tag 8 Repetitorium Informatik (Java)

Objektorientierte Programmierung und Klassen

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

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

Javakurs für Anfänger

Programmieren in Java

Algorithmen und Datenstrukturen 07

6. Globalübung (zu Übungsblatt 8)

Pakete Software Entwicklung 1

Informatik II Übung 6

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Philipp Güttler Objektorientierung und komplexe Datentypen

Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene

1 Klassen und Objekte

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Programmieren in Java

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Einstieg in die Informatik mit Java

Interfaces und Vererbung

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene

Wiederholung. Klassenhierarchie:

Modularisierung in Java: Pakete Software Entwicklung 1

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Klassen und Konstruktoren in Java

Javakurs für Anfänger

14 Abstrakte Klassen, finale Klassen, Interfaces

Einstieg in die Informatik mit Java

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Javakurs für Anfänger

14 Abstrakte Klassen, finale Klassen, Interfaces

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Implementieren von Klassen

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmieren in Java

1 Abstrakte Klassen, finale Klassen und Interfaces

Programmieren in Java

Programmieren in Java

Einführung in C# Teil 3. Matthias Nübling

Java für Bauingenieure

Polymorphie. 15. Java Objektorientierung II

Die abstrakte Klasse Expression:

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Polymorphie. 15. Java Objektorientierung II

Java Zusammenfassung. Basisdatentypen ganzzahlig: Byte, Short, Integer, Long Fließkomma: Float, Double Zeichen: Character Wahrheitswerte: Boolean

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

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

Einstieg in die Informatik mit Java

II.4.1 Unterklassen und Vererbung - 1 -

Repetitorium Informatik (Java)

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

EINFÜHRUNG IN DIE PROGRAMMIERUNG

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

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

Objektorientierung III

Einstieg in die Informatik mit Java

Objektorientierung (OO)

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Kapitel 2: OO Grundlagen

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

Einführung in die Programmiersprache Java II

Java Grundlagen 2 - OOP

Einführung in die Programmiersprache Java II

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

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Objektorientierte Programmierung

Arten von Klassen-Beziehungen

3 Objektorientierte Konzepte in Java

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Fragen zur OOP in Java

Einstieg in die Informatik mit Java

Java Idioms. Basic und Advanced Java Coding Style. Prof. Dr. Nikolaus Wulff

Teil 2: Weitere Aspekte der Objektorientierung

Objektorientierte Programmierung

Transkript:

Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung

Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren Menschen denken objektorientiert Wiederverwendbarkeit von Softwaremodulen

Objekte haben eine Identität haben einen Zustand zeigen ein Verhalten

Klassen Beschreibung wie ein Objekt aussehen soll Name der "Top-Level-Klasse" muss gleich dem Dateinamen sein Besitzt: Attribute Operationen Beispiel: Klassenname Attribute Operationen Punkt X- und y-koordinate Position festlegen

Konstruktor Ähnlich einer Methode, Unterschiede sind: Name des Konstruktors muss der Klassenname sein Kein Rückgabewert Mehrere Konstruktoren für eine Klasse möglich

Konstruktor class Point { int x; int y; point () { point (int x, int y) { this.x = x; //Zugriff auf die Objektvariable this.y = y; //durch this

Objekt erzeugen Ausdrückliche Erzeugung mit dem new- Operator new-operator liefert dann eine Referenz auf das Objekt zurück Konstruktor wird ausgeführt Point p; p = new Point(); p = new Point(2, 4);

Objektvariablen und -methoden In einer Klasse deklarierte Variablen Zugriff darauf mit "."

Objektvariablen und -methoden class Point { int x; //Objekvariable int y; //Objektvariable Point () { void setposition (int x, int y) { this.x = x; this.y = y; Point p = new Point(); p.x = 2; p.y = 4; p.setposition(4, 2);

Referenzen null ist die Referenzvariable, die auf kein Objekt zeigt Auf ein Objekt kann mehrfach referenziert werden Bei Objekten werden nicht die Werte kopiert, sondern die Referenzen

Referenzen Point p = null; //p referenziert auf kein Objekt Point q = new Point(1, 2); p = q; //Kopie der Referenz und nicht des Objekts System.out.println(p.x); //1 q.x = 2; System.out.println(p.x); //2 p.y = 3; System.out.println(q.y); //3

Objekte vergleichen Zum Vergleich von Objekten wird die equals Methode verwendet Bei eigenen Klassen muss die Methode equals überschrieben werden um die Vergleichsfunktionalität einzubauen "==" vergleicht die Referenz des Objekts String s1 = "abc" System.out.println("Vergleich von def mit s1: " + s1.equals("def")); //false System.out.println("Vergleich von abc mit s1: " + s1.equals("abc")); //true

equals class Point { public int x; public int y; @Override public boolean equals (Object obj) { Point p; if (obj instanceof Point){ p = (Point) obj; else { return false; if (p.x == x && p.y == y) return true; return false;

tostring tostring Methode wird verwendet um ein Objekt als String zu repräsentieren Bei eigenen Klassen muss die tostring Methode überschrieben werden, wenn man die Funktionalität braucht Point p = new Point(2, 3); System.out.println(p); //Point@3fbefab0 System.out.println(p.toString()); //Point@3fbefab0

tostring class Point { @Override public String tostring() { String s = "X: " + x + " Y: " + y; return s; Point p = new Point(2, 3); System.out.println(p); //Point@3fbefab0 System.out.println(p.toString()); //X: 2 Y: 3

Pakete Zum Bündeln von Klassen Bildet eigenen Namensraum Können Unterpakete enthalten Im Dateisystem werden Pakete in gleichnamigen Ordnern abgelegt package java; package java.lang; package java.awt; package meinpaket;

import Zugriff auf Klassen aus anderen Paketen Importieren einzelner Klassen oder ganzer Pakete möglich Das Paket java.lang wird automatisch in jeder Klasse importiert import java.text.normalizer; import java.text.*:

Sichtbarkeit Kein Schlüsselwort Komponente ist nur innerhalb des Pakets bekannt private Komponente ist nur innerhalb der Klasse bekannt protected Komponente ist nur innerhalb des Pakts und in allen abgeleiteten Klassen bekannt public Komponente ist überall bekannt

Getter und Setter Auf Variablen sollte in der Regel nicht direkt von anderen Klassen zugegriffen werden Deshalb sollten die meisten Variablen als private deklariert werden Zugriff von außen auf diese Variablen erfolgt über Methoden, sogenannte Getter und Setter

Getter und Setter public class Point { private int x; private int y; public int getx() { return x; public void setx(int i) { x = i; Point p = new Point(2, 3); System.out.println(p.getX()); //2 p.setpoint(5); System.out.println(p.getX()); //5

static Statische Methoden und Variablen gehören zu einer Klasse und sind nicht an ein Objekt gebunden Aufruf durch voranstellen des Klassennamens Verwendung von static an den ersten beiden Tagen, weil wir ohne Objekte gearbeitet haben

Klassenvariablen werden nur einmal angelegt können von allen Methoden der Klasse benutzt werden Veränderungen in einer Instanz betreffen alle Instanzen können als Instanzzähler verwendet werden

Instanzzähler class Point { public static int counter; public Point() { counter++; Point p1 = new Point(); System.out.println(Point.counter); //1 Point p2 = new Point(); Point p3 = new Point(); System.out.println(Point.counter); //3 System.out.println(p1.counter); //3 System.out.println(p2.counter); //3 System.out.println(p3.counter); //3

Klassenmethoden Zugriff auf Instanzvariablen nicht möglich Besitzen keinen this-zeiger Prominentes Beispiel sind die Methoden der Klasse System

Statische Konstruktoren Für komplexere Initialisierungen von Klassenvariablen Wird nur einmal beim ersten laden der Klasse ausgeführt und nicht beim instanziieren class Point { static int x; static int y; static{ x = 2 y = x * 3;

Vererbung Erfolgt mittels Subklasse extends Superklasse Alle sichtbaren Eigenschaften werden von der Superklasse auf die Subklasse übertragen Mehrfachvererbung ist nicht gültig public class Subklasse extends Superklasse{

super Mit super kann auf die Oberklasse zugreifen Überschriebene Methoden der Oberklasse können mit einem Aufruf auf super ausgeführt werden

super Public class Subclass extends Superclass{ public Subclass(){ super(); supermethod(15); @Override public void supermethod(int x){ if(x > 10){ super.supermethod(x);

Abstrakte Klassen Modifizierer abstract wird der Klasse vorangestellt Nicht instanziierbar Allgemein gehaltene Oberklassen Unterscheidung in reine und partielle abstrakte Klassen Rein: Die Klasse enthält ausschließlich abstrakte Methoden Partiell: Die Klasse ist abstrakt, enthält aber konkrete Implementierungen

Abstrakte Methoden Modifizierer abstract wird der Methode vorangestellt Methoden geben lediglich die Signatur der Unterklasse vor Können nur in abstrakten Klassen vorkommen

Abstrakte Klassen und Methoden abstract class Test { abstract boolean isodd(int number); abstract class Test { abstract boolean isodd(int number); boolean iseven(int number){ if (number%2 == 0) { return true; else { return false;

Interfaces Schnittstellen Abart der abstrakten Klassen Enthält Datenelemente und abstrakte Methoden Eingesetzt für Mehrfachvererbung, weil Klassen beliebig viele Interfaces implementieren können

Interfaces public interface MyInterface extends Interface1 { public static int x = 4; public abstract void method(); public class MyClass extends SuperClass implements MyInterface, AnotherInterface { @Override public void method() {

Fragen?

Vielen Dank für ihre Aufmerksamkeit!