Java Schulung. Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte. Prof. Dr. Nikolaus Wulff

Größe: px
Ab Seite anzeigen:

Download "Java Schulung. Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte. Prof. Dr. Nikolaus Wulff"

Transkript

1 Java Schulung Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte Prof. Dr. Nikolaus Wulff

2 Referenzvariablen Referenzvariablen verweisen auf (unbenannte) Objekte im Speicher. Uninitialisierte Variablen enthalten eine Null-Referenz (null). a Objekt Point a,b; a b null Objekte werden zur Laufzeit erzeugt. new Point(0,0); a = new Point(1,2); Objekte sind anonym. a :Point 0 0 a:point 1 2 Sie haben eine unveränderliche Identität. Prof. Dr. Nikolaus Wulff 2

3 Binden von Referenzvariablen Beim Zuweisen eines Objektes auf eine Variable wird eine Referenz zugewiesen: a = new Point(0,0); b = new Point(3,4); Beim Zuweisen von Referenzvariablen aufeinander werden nur die Referenzen kopiert, nicht die Objekte: a = b; Vorsicht! Das Objekt kann jetzt über zwei Pfade geändert werden: a.set(5,6); b.set(20,30); a b a b Prof. Dr. Nikolaus Wulff 3

4 Vergleichen von Objekten Beim Vergleichen zweier Referenzvariablen werden die Referenzen verglichen, nicht die referenzierten Objekte. Es wird also auf Objektidentität, nicht auf Inhaltsgleichheit geprüft. == (shallow equality) a b c d a == b a!= c d == null Prof. Dr. Nikolaus Wulff 4

5 Inhaltsvergleich Der Inhalt von zwei Objekten wird durch die Methode equals verglichen. equals (deep equality) new Integer(1)!= new Integer(1) new Integer(1).equals(new Integer(1)) Bei selbstdefinierten Klassen vergleicht equals (geerbt von Object) per Default auch nur die Objektidentiät, d.h. verwendet shallow equality. Die Methode equals muss selbst neu überladen werden, damit sie die gewünschte Funktionalität bietet. Prof. Dr. Nikolaus Wulff 5

6 Eine Klasse class Cell { private int value = 0; void setvalue(int newvalue){ this.value = newvalue; int getvalue( ) { return this.value;... Attribut Methoden Klassendefinition Prof. Dr. Nikolaus Wulff 6

7 Bestandteile einer Klasse Einleitung einer Klasse durch Schlüsselwort class: class EineKlasse { /* Klassenrumpf */ Erzeugung eines Objektes mit new: EineKlasse a = new EineKlasse(); Attribute: class Datengrab { int i; float f; boolean b; Jede Instanz (jedes Objekt) der Klasse Datengrab bekommt eine eigene Kopie der Attribute. Prof. Dr. Nikolaus Wulff 7

8 Methoden Methoden: Verhalten eines Objekts Inspizieren und ändern den Zustand eines Objekts. Berechnen von Rückgabewerten. Anstoßen von weiteren Methoden über das Senden von Nachrichten an andere Objekte. In anderen Sprachen: Funktionen oder Prozeduren. Nur innerhalb von Klassen (keine Methode ohne Klasse!). Aufruf einer Methode = Senden einer Nachricht: int x = a.f(); rufe Methode f von Objekt a bzw. sende Nachricht f an Objekt a Prof. Dr. Nikolaus Wulff 8

9 Organisatorisches Hands on Tutorien jeweils Mittwochs Uhr im Lab4Inf D117 mit Rene Brüggemann. Praktikumverschiebung Informatiker Donnerstags von auf Uhr Pool 3. Prof. Dr. Nikolaus Wulff 9

10 Parameterliste Die Parameterliste spezifiziert die Typen der Objekte, die als Argumente an die Methode übergeben werden können. Jedes Objekt (Parameter) erhält einen lokalen Namen, über den innerhalb der Methode auf das Objekt zugegriffen werden kann. Typ Name void reset(cell c) { c.setvalue(0); Beachte: Es werden nicht die Objekte (Kopien), sondern Referenzen auf die Objekte übergeben! Cell acel1 = new Cell(); acel1.setvalue(4); reset(acel1); acel1.getvalue(); ==> 0 Prof. Dr. Nikolaus Wulff 10

11 Rückgabewerte Methoden können Werte bzw. Objektreferenzen zurückliefern: Rückgabetyp Integer berechne(int a, int b) { int sum = a + b; return new Integer(sum); Rückgabe Mit return wird die Methode sofort verlassen - auch wenn noch Befehle dahinter folgen! Methoden ohne Rückgabe haben den Rückgabetyp void: void print(int a, int b) { System.out.println("a + b = " + (a + b)); Prof. Dr. Nikolaus Wulff 11

12 Methodenrumpf Variablendeklarationen und -zuweisungen. void berechne(int a, int b) { int i; Deklaration i = a * b; Zuweisung Beachte: Lokale Variablen müssen initialisiert werden! void berechne() { int i; i++; Compile-Fehler! Prof. Dr. Nikolaus Wulff 12

13 Statische Attribute und Methoden Attribute und Methoden, die nicht für einzelne Objekte, sondern für die ganze Klasse definiert sind. D.h., jedes Attribut kommt nur einmal pro Klasse vor! class Person { static int erzeugtepersonen = 0; static void printstatistik() { System.out.println("Erzeugt: " + erzeugtepersonen); Statische Attribute und Methoden können genutzt werden, ohne Objekte zu erzeugen. Der Zugriff erfolgt über den Klassennamen: Person.printStatistik(); Person.erzeugtePersonen++; Vergleiche: System.out.println(...); main Prof. Dr. Nikolaus Wulff 13

14 Statische Attribute class Person { static int erzeugtepersonen = 0; String name; Person erzeugtepersonen = 0 Klasse mit statischen Attribut das Objekt kennt seine Klasse peter class name = Peter mary class name = Mary Objekte mit Attributen Prof. Dr. Nikolaus Wulff 14

15 Konstanten Konstanten = finale Werte von Basisdatentypen Konstanten zur Übersetzungszeit werden vom Compiler ausgewertet: final int ANZAHL_MONATE = 12; Konstanten zur Laufzeit sind nach der Initialisierung unveränderlich: final int ZUFALL = (int)(math.random() * 20); final static: nur ein Wert pro Klasse, der seinen Wert nach dem ersten Laden der Klasse nicht mehr ändert. finale Referenzen: können nicht mehr an andere Objekte gebunden werden final Integer NULL = new Integer(0); Prof. Dr. Nikolaus Wulff 15

16 this und super Auf das aktuelle Objekt, auf dem die Methode ausgeführt wird (an das die Nachricht gesendet wurde), kann über das Schlüsselwort this zugegriffen werden. Auf das direkte Elternobjekt kann innerhalb einer Methode mit super zugegriffen werden. Prof. Dr. Nikolaus Wulff 16

17 Überladen von Methoden Eine Nachricht mit mehreren Signaturen und Methodenimplementationen. class SuperWasher { void wash(shirt s) {... void wash(car c) {... void wash(dog d) { SuperWasher sw = new SuperWasher(); Dog adog = new Dog(); sw.wash(adog); Die Methode wird (statisch) beim Senden der Nachricht anhand der Parameter ausgewählt. Prof. Dr. Nikolaus Wulff 17

18 Kein Überladen bei Rückgabewerten Folgende überladene Methoden unterscheiden sich nur im Rückgabewert: void washall() {... int washall() {... Das geht nicht, denn der Compiler kann für diesen Aufruf nicht bestimmen, welche Methode zu verwenden ist: washall(); Prof. Dr. Nikolaus Wulff 18

19 Default-Konstruktor Konstruktoren dienen zur Erzeugung und Initialisierung von Objekten einer Klasse. Wenn kein Konstruktor angegeben wird, ist implizit ein Default-Konstruktor (ohne Parameter) definiert. class Bird { String name; Bird nc = new Bird(); class Bird { String name; Bird() { super(); Aufruf der Konstruktors der Superklasse Prof. Dr. Nikolaus Wulff 19

20 Konstruktordefinition Konstruktoren können überladen werden und Parameter erhalten, z.b. zur Initialisierung von Attributen: class Worker extends Person { String name; Worker() { Aufruf des Super-Konstruktors ist optional super(); (erfolgt sonst automatisch vom Compiler) name = "Noname"; System.out.println("Erzeuge Noname"); ; Worker(String name) { super(); this.name = name; System.out.println("Erzeuge " + name); Worker noname = new Worker(); Worker peter = new Worker("Peter"); Prof. Dr. Nikolaus Wulff 20

21 Konstruktorverkettung Konstruktoren können sich gegenseitig aufrufen: class Person {... Person(String name, int alter) { this(name);... Konstruktor dieser Klasse mit Parameter String aufrufen Konstruktoren können Konstruktoren der Superklasse aufrufen: class Mitglied extends Person {... Mitglied(String name, int tarifgruppe) { super(name);... Konstruktor der Superklasse mit Parameter String aufrufen Prof. Dr. Nikolaus Wulff 21

22 Konstruktoraufrufe Beim Erzeugen eines Objektes einer Subklasse wird automatisch der Default- Konstruktor der Superklasse aufgerufen. class Person { Person() { System.out.println(" Person"); class Angestellter extends Person { Angestellter() { System.out.println(" Angestellter"); Angestellter peter = new Angestellter(); Ausgabe: Person Angestellter Prof. Dr. Nikolaus Wulff 22

23 Konstruktor mit Argumenten Ein Konstruktor der Superklasse mit Argumenten muss als erstes im Konstruktor explizit (über super) aufgerufen werden. class Person { Person(String name) { System.out.println(" Person " + name); class Angestellter extends Person { Angestellter(String name) { super(name); System.out.println(" Angestellter " + name); Prof. Dr. Nikolaus Wulff 23

24 Initialisierungsreihenfolge class Test { Person p1 = new Person(); Person p2; // null 3: per Objekt: Attribute initialisieren static int zaehler; // 0 Test() { p2 = new Person(); 1: per Klasse: Attribute initialisieren 4: per Objekt: Konstruktor ausführen static { zaehler = 9; 2: per Klasse: Init-Code ausführen Prof. Dr. Nikolaus Wulff 24

25 Arrays Arrays sind Objekte. Bei der Deklaration wird keine Größe angegeben, da nur die Referenz abgelegt wird: int a[]; int[] a; Einfache Arrays können direkt erzeugt und initialisiert werden: int [] a = { 1, 2, 3, 4, 5 ; Beim Zugriff auf ein Array wird der Index auf Überschreitung der Array-Größe geprüft: int x = a[3]; int x = a[567]; ArrayIndexOutOfBounds Die Länge des Arrays kann abgefragt werden: a.length Prof. Dr. Nikolaus Wulff 25

26 Arrays von Objekten Arrays von Objekten werden so erzeugt und initialisiert: Person[] a = new Person[20]; for(int i = 0; i < a.length; i++) { a[i] = new Person("Person Nummer " + i); Wie bei einfachen Arrays kann direkt initialisiert werden: Integer[] a = { new Integer(1), new Integer(2), new Integer(3), ; Prof. Dr. Nikolaus Wulff 26

27 Mehrdimensionale Arrays Mehrdimensionale Arrays werden so deklariert: int[] a[]; int[][] a; Die Initialisierung kann auch hier direkt erfolgen: int[][] a = { { 1, 2, 3, { 5, 6 ; Prof. Dr. Nikolaus Wulff 27

28 Zeichenketten Zeichenketten sind unveränderliche Objekte der Klasse String. String-Literale werden durch eingefasst. String-Literale werden automatisch in String-Objekte umgewandelt. Zeichenketten können auch durch Aufruf eines Konstruktors der Klasse String erzeugt werden. String c = "abc"; Außerdem erzeugen viele Methoden Zeichenketten: String c = new String("abc"); Integer i = new Integer(789); String c = i.tostring(); Prof. Dr. Nikolaus Wulff 28

29 Verkettung von Zeichenketten Zeichenketten können durch den Operator + verkettet werden: String c = "Hello " + "World"; Die Verkettung erzeugt ein neues String-Objekt. Werte von Basisdatentypen oder Objekte von Klassen können auch mit Strings verkettet werden. String n = "Die Antwort lautet " + 42; Sie werden dann implizit in Strings umgewandelt, bei Objekten durch den Aufruf der Methode tostring (definiert in der Klasse Object). Prof. Dr. Nikolaus Wulff 29

30 Sichtbarkeitsbereiche Blockstrukturierte Sichtbarkeitsbereiche: Lokale Variablen sind nach dem Schließen des Blocks nicht mehr sichtbar. { // <-- Anfang Scope 1 int x; x = 12; // Nur x ist sichtbar, q gibt es noch nicht { // <-- Anfang Scope 2 int q = 96; x = q + x; // x kann nicht neu definiert werden! // x und q sind verfügbar. // <-- Ende Scope 2 // Nur x ist noch sichtbar // Auf q kann nicht mehr zugegriffen werden. // <-- Ende Scope 1 Prof. Dr. Nikolaus Wulff 30

31 Sichtbarkeitsbereiche Gleichnahminge lokale Variablen und Member Variablen der Klasse müssen per this referenziert werden. class Foo { private int x = 2; // Scope 0 der Membervariablen public void bar() { // <-- Anfang Scope 1 int x; x = 12; // Nur x ist sichtbar, q gibt es noch nicht { // <-- Anfang Scope 2 int q = 96; x = q + x; // x kann nicht neu definiert werden! // x und q sind verfügbar. // <-- Ende Scope 2 // Nur x ist noch sichtbar // Auf q kann nicht mehr zugegriffen werden. this.x = x; // jetzt wird Membervariable x gesetzt // <-- Ende Scope 1 der Methode bar... Prof. Dr. Nikolaus Wulff 31

32 Bedingter Ausdruck Verzweigung, die zu einem Wert evaluiert. int a, b;... b = (a >= 0)? a : -a; Bedingung then else Wird häufig in Projekten verboten, da "schwer zu lesen". Aquivalent ist eine if - else Verzweigung: if (a >= 0) { b = a; else { b = -a; Prof. Dr. Nikolaus Wulff 32

33 Freispeicherverwaltung Java-Objekte werden dynamisch mit new angelegt. Sie werden nie explizit gelöscht oder freigegeben. Die Java-Maschine schaut regelmäßig (oder nach Aufforderung) nach, welche Objekte nicht mehr erreichbar sind (garbage collection) und gibt diese frei. Vor der Freigabe wird bei jedem Objekt die Methode finalize aufgerufen. Prof. Dr. Nikolaus Wulff 33

34 Freispeicherverwaltung (2) Die virtuelle Maschine prüft, ob ein Objekt noch von Außen, d.h. ausgehend von der main Methode noch erreichbar ist. Ausgangspunkt main Speicher der Java Maschine X X Müll X X Prof. Dr. Nikolaus Wulff 34

35 Wiederverwendung Vier Alternativen der Wiederverwendung: Schreibe die Klasse komplett selber (keine echte Wiederverwendung). Kaufe die fertige Klasse und nutze sie so (volle Wiederverwendung). Benutze eine vorhandene Klasse und binde sie in einer Komposition in Deine Klasse ein. Benutze eine vorhandene Klasse, indem Deine Klasse von ihr erbt und bestimmte Attribute/Methoden ergänzt oder überschreibt. Dies gilt sowohl für einzelne Klassen als auch für Rahmenwerke (Frameworks) und Bibliotheken. Prof. Dr. Nikolaus Wulff 35

36 Komposition vs. Vererbung Auto Reifen[] Shape draw() erase() Fenster[] Tuer[] Motor Circle draw() erase() Square draw() erase() Line draw() erase() Komposition: hat ein besteht aus Vererbung: ist ein verschiedene Objekte/Klasse haben gemeinsame Eigenschaften Prof. Dr. Nikolaus Wulff 36

37 Komposition MeineKlasse Vorhandene Klasse Vorhandene Klasse Vorhandene Klasse Vorhandene Klasse... class Auto { Motor motor = new Motor(100); Reifen[] reifen = new Reifen[4];... Ein komponiertes (aggregiertes) Objekt hat Objekte vorhandenener Klassen als Attribute. hat ein oder besteht aus Flexibilität: Die Objekte können zur Laufzeit ausgewechselt werden. Die Komponenten werden meist im Konstruktor übergeben oder erzeugt. Prof. Dr. Nikolaus Wulff 37

38 Vererbung: Motivation class Person{ String name; String vorname; int alter; String getname(){... String getid(){... class Angestellter { String name; String vorname; int alter; int uid; String getname(){... String getid(){... class Mitglied { String name; String vorname; int alter; int tarifgruppe;... String getname(){... String getid(){... int gettarif(){... Subklasse Mitglied tarifgruppe gettarif() Person name... getname() getid() Angestellter uid getid() Superklasse Prof. Dr. Nikolaus Wulff 38

39 Vererbung: Semantik Ist ein Person name vorname alter Die Attribute und Methoden aus der Superklasse sind automatisch auch in der Subklasse vorhanden. getname() getid() Mitglied tarifgruppe gettarif() Angestellter uid getid() Ererbte Methoden können in der Subklasse redefiniert werden, z.b. um eine andere Id zu implementieren (Uxxxxxx). Prof. Dr. Nikolaus Wulff 39

40 Vererbung: Syntax class Person { String name; String vorname; int alter; String getname(){... String getid(){... class Mitglied extends Person { int tarifgruppe; neue Attribute hinzufügen String gettarif(){... neue Methoden hinzufügen class Angestellter extends Person { int uid; String getid(){... redefiniert Person.getId() derselbe Methodenname dieselbe Parameterliste derselbe Rückgabetyp Prof. Dr. Nikolaus Wulff 40

41 Komposition vs. Vererbung Ist ein Auto ein Motor? Motor Auto Auto Reifen[] Fenster[] Tuer[] Falsch! Richtig Reifen[] Fenster[] Tuer[] Motor Ein Motor wird gestartet, ein Auto wird gestartet: Ist deshalb ein Auto so etwas wie ein Motor? Generell: Komposition ist flexibler als Vererbung (Laufzeit vs. Übersetzungszeit). Prof. Dr. Nikolaus Wulff 41

42 Verwendung von final Finale Methoden können in Subklassen nicht überschrieben (redefiniert) werden. final void print() {... private Methoden sind implizit final. finale Parameter: Dem Parameter darf innerhalb des Methodenrumpfes kein neuer Wert zugewiesen werden. void print(final int anzahl) {... Von einer finalen Klassen kann keine Subklasse gebildet werden. final class Angestellter {... Prof. Dr. Nikolaus Wulff 42

43 Polymorphismus Substitutierbarkeit: Wann immer ein Objekt der Superklasse erwartet wird (als Parameter, Empfänger einer Nachricht,...), kann ein Objekt einer Subklasse benutzt werden. Beispiel: Wenn eine Person angezeigt werden soll, kann auch ein Mitglied (Angestellter,...) angezeigt werden. a Circle draw() erase() : Shape a Square a Line Prof. Dr. Nikolaus Wulff 43

44 Upcast void moveshape(shape s) {...; s.draw(); Cast nach oben in der Vererbungshierarchie Shape draw() erase() Circle draw() erase() Square draw() erase() Line draw() erase() Referenz auf das Circle-Objekt Shape s = (Shape)new Circle(); // explizit moveshape(new Circle()); // implizit Prof. Dr. Nikolaus Wulff 44

45 Statisches vs. Dynamisches Binden f()... f()... f() Funktion f Aufrufe statisch an die Funktion gebunden zur Übersetzungszeit shape.draw()... shape.draw()... shape.draw() Dynamischer Binde- Mechanismus zur Laufzeit Circle draw() Square draw() Line draw() Prof. Dr. Nikolaus Wulff 45

46 Abstrakte Klassen Abstrakte Klassen können abstrakte Methoden enthalten, d.h. Methoden ohne Methodenrumpf. Andere Methoden und Daten können definiert sein. abstract class ColouredShape { private Colour c; public abstract void draw(); public Colour getcolour() { return c; public abstract void erase(); Abstrakte Methoden Abstrakten Klassen können nicht instanziert werden. Subklassen müssen die abstrakten Methoden implementieren - oder sie sind selber abstrakt. Prof. Dr. Nikolaus Wulff 46

47 Template Pattern In einer abstrakten Klasse können die abstrakten Methoden von anderen Methoden benutzt werden. abstract class PrintTemplate { protected abstract void printheader(); protected abstract void printfooter(); protected abstract void printcontent(); public void print(){ printheader(); printcontent(); printfooter(); Prof. Dr. Nikolaus Wulff 47

48 Innere Klassen Verschachtelte Klasse einer anderen Klasse. class Person { class Adresse { class Person { public String doit(final int i) { class Adresse {... i Der Klassenname ist versteckt. Objekte der inneren Klasse können auf Attribute, Methoden der umgebenden Klasse zugreifen. Wenn eine innere Klasse innerhalb einer Methode definiert wird, kann sie auf die Parameter und lokalen Variablen der Methode zugreifen, wenn diese final sind. Prof. Dr. Nikolaus Wulff 48

49 Anonyme innere Klassen Innere Klassen könne auch anonym sein. Dies wird häufig angewandt bei Schnittstellen. new WindowAdapter(){ public void windowclosing(windowevent e) {... class MyWindowListener extends WindowAdapter { public void windowclosing(windowevent e) {... new MyWindowListener(); Prof. Dr. Nikolaus Wulff 49

50 Schnittstellen Schnittstellen enthalten keine Implementationen, sondern nur Methodensignaturen und Konstanten (statische, finale Attribute). Methodensignatur : = Rückgabetyp + Methodenname + Parameterliste Diese Aussage gilt bis JDK1.7, siehe HPK... interface Shape { Point zero = new Point(0,0); void erase(); void draw(); automatisch static & final automatisch public Eine Schnittstelle kann von einer oder mehreren Schnittstellen erben. interface ColouredShape extends Shape, Colour {... Prof. Dr. Nikolaus Wulff 50

51 Schnittstellen und Implementierung Eine Schnittstelle legt ein Protokoll (verstandene Nachrichten) fest. Eine Klasse kann eine oder mehrere Schnittstellen implementieren. Schnittstellen class Circle implements Shape, Persistent { pivate int radius; public void erase() {... public String draw() { aus Shape... public int getradius(){... Prof. Dr. Nikolaus Wulff 51

52 Übung Erstellen und testen (wie?) Sie den Code für das folgende Klassenmodell: painter + Painter + Paintable (from painter) Painter paintables : Paintable[] drawall() addpaintable() 0..* <<Interface>> Paintable (from painter) draw() Achtung: zwei verschieden Pakete für Painter und alle Shapes! (from sha pes) type : String Shape Shape(type : String) <<abstract>> draw() : void shapes + Shape + Circle + Square + Line Circle (from sha pes) Square (from shapes) Line (from shapes) Prof. Dr. Nikolaus Wulff 52

53 Tip Schreiben Sie eine Main Klasse, die den Painter mit Shapes initialisiert und dann die drawall Methode aufruft. Die draw Methode der Shapes gibt einfach per System.out.println den Typ aus. Die Zeichenobjekte werden in einem Array verwaltet, dieses muss dynamisch wachsen! Verwenden Sie ein temporäres Hilfsarray. (Später lernen Sie Collection Klassen kennen, die uns genau diese Arbeit abnehmen...) Prof. Dr. Nikolaus Wulff 53

54 Übung Erstellen Sie eine Dokumentation der Klassen: %SRC%>javadoc -d../doc * Navigieren Sie in der Klassendokumentation und passen Sie die Kommentare in Ihren Methoden und Klassen an. Erkunden Sie die verschiedenen Möglichkeiten, die javadoc bietet (javadoc -? bietet Hilfe) Javadoc läßt sich auch als Tool in Eclipse integrieren: Run External Tools External Tools... Programm New Location: %JAVA_HOME%\bin\javadoc.exe Working Dir: ${project_loc\src Arguments: -d ${project_loc\doc * Prof. Dr. Nikolaus Wulff 54

55 Package Übersicht Prof. Dr. Nikolaus Wulff 55

Java Schulung. Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte. Prof. Dr. Nikolaus Wulff

Java Schulung. Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte. Prof. Dr. Nikolaus Wulff Java Schulung Objektorientierte Programmierung in Java Teil III: Java Klassen und Objekte Prof. Dr. Nikolaus Wulff Referenzvariablen Referenzvariablen verweisen auf (unbenannte) Objekte im Speicher. Uninitialisierte

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

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

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung 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

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

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

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

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

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

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

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am 22.9.2001 Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 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

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Tafelübung 07 Algorithmen und Datenstrukturen

Tafelübung 07 Algorithmen und Datenstrukturen Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

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

Einführung in C# Teil 3. Matthias Nübling Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Allgemeines - Prinzipien

Allgemeines - Prinzipien OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

12 Abstrakte Klassen, finale Klassen und Interfaces 12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

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

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3 Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte

5 Vererbung. Subklassen, Superklassen, Pakete Zugriffsrechte 5 Vererbung Subklassen, Superklassen, Pakete Zugriffsrechte Wiederverwendung von Code Konventionelle Methode: Wähle einen Quelltext, der ein ähnliches Problem bearbeitet und passe diesen Text auf das neue

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

Programmieren I. Kapitel 8. Vererbung

Programmieren I. Kapitel 8. Vererbung Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte

Mehr

Interfaces und Vererbung

Interfaces und Vererbung Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren

Mehr

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

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

6. Globalübung (zu Übungsblatt 8)

6. Globalübung (zu Übungsblatt 8) 6. Globalübung (zu Übungsblatt 8) Inhalt: Klassenhierarchien Verdecken von Attributen Überschreiben von Methoden Codeanalyse Analyse von JAVA-Programmen Semestralklausur Klausurtermin: Mittwoch 11.01.2006

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

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

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

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

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Kapitel 4: Klassen und Unterklassen

Kapitel 4: Klassen und Unterklassen Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

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

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Arten von Klassen-Beziehungen

Arten von Klassen-Beziehungen Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant

Mehr

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Vererbung 2 Packages Packages dienen zur Strukturierung von Klassen Computer.java package BEZEICHNER ; package vorlesung7; public class KLASSEN-BEZEICHNER { public

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

Mehr

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Info B VL 8: Abstrakte Klassen & Interfaces

Info B VL 8: Abstrakte Klassen & Interfaces Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte

Mehr

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 19. 25. Februar 2003 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

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

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Abschnitt 6: Klassen, Objekte und Methoden in Java

Abschnitt 6: Klassen, Objekte und Methoden in Java Abschnitt 6: Klassen, Objekte und Methoden in Java 6. Klassen, Objekte und Methoden in Java 6.1 Klassen 6.2 Objekte 6.3 Methoden 6.4 Zusammenfassung 6 Klassen, Objekte und Methoden in Java Informatik 2

Mehr

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

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen. 3.8 Objekttypen und Arrays Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen. Praktische Informatik I Wolfgang Effelsberg 3. Die Programmiersprache Java 3.8-1 Primitive Datentypen

Mehr

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003 Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler 1. Jänner 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von

Mehr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Martin Unold INFORMATIK. Geoinformatik und Vermessung Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 28. Februar 2003

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 28. Februar 2003 Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler 8. Februar 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: Bakkalaureat

Mehr

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

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr