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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 2. Vererbung und Polymorphie Vererbung (1/2) Vererbung mit extends Konstruktoren bei der Vererbung Überladen von Methoden - statische Polymorphie Casten Dynamische Polymorphie Klasse Object Eine Unterklasse wird folgendermaßen definiert... class Unterklasse extends Oberklasse{... die Unterklasse erbt alle nicht-private Exemplarmethoden und Exemplarvariablen ihrer Oberklasse, nicht aber deren Konstruktoren bei der Erzeugung eines Objekts der Unterklasse wird zuerst der Default-Konstruktor der Oberklasse aufgerufen Vererbung (2/2) mit superkann statt des Default-Konstruktorsein anderer Konstruktor der Oberklasse aufgerufen werden (muss 1. Anweisung sein) ist in der Oberklasse kein Default-Konstruktordefiniert, muss super(...) im Konstruktor der Unterklasse aufgerufen werden alle Klassen haben die Klasse java.lang.objectals Oberklasse Java erlaubt nur Einfachvererbung (Interfaces später) 39 Beispiel (1/2) public class Punkt3D extends Punkt { protected int z; public Punkt3D(int x, int y, int z){ super(x,y); this.z=z; public void moverel(int dx, int dy, int dz){ moverel(dx, dy); //äquivalent super.moverel(dx, dy); z += dz; // x,y in Punkt leider private, Zugriff nur über get //Annotation public String tostring(){ return "["+getx()+","+super.gety()+","+z+"]"; 40

2 Beispiel (2/2) public class Main { Punkt3D p3d= new Punkt3D(3,4,5); p3d.moverel(1,1,1); p3d.moverel(-1,-1); System.out.println(p3d); [3,4,6] Sollen Exemplarvariablen oder - methoden nur in dieser und erbenden Klassen sichtbar sein, wird protected genutzt -Annotationmarkiert überschriebene Methoden -x: int -y: int Punkt +moveto(int,int) +moverel(int,int) +tostring():string #z: int Punkt3D +moverel(int,int,int) +tostring():string Kapselung weitere Möglichkeiten zur Datenkapselung mit privatedeklarierte Variablen und Methoden werden nicht vererbt mit protecteddeklarierte Variablen und Methoden werden vererbt, sind aber außerhalb ihres Paketes (s. später) nicht zugreifbar mit publicdeklarierte Variablen und Methoden werden vererbt und sind überall benutzbar Standardansatz: Exemplarvariablen sind private, außer man will von dieser Klasse erben und sie sollen vererbt werden, dann sind sie protected Überschreiben von Methoden die Implementierung einer Methode einer Basisklasse kann in der abgeleiteten Klasse überschrieben werden hat für ein Objekt eine Methode mehrere Implementierungen in der Klassenhierarchie, so bezieht sich ein Zugriff immer auf die der Klasse des Objekts am wenigsten entfernte (Ober)-Klasse(genau wie in C++) d.h. es wird erst in der Klasse des Objekts selbst, wenn nicht gefunden, dann in der Oberklasse, wenn dann nicht gefunden, dann in deren Oberklasse,... wenn dann nicht gefunden in Object gesucht. 43 Beispiel für Aufrufe überschriebener Methoden public class Ober { public void oben(){ System.out.println("o"); public void auchoben(){ oben(); public class Unter extends Ober { public void oben(){ System.out.println("m"); public static void main(string[] s){ Ober o1= new Ober(); Unter u1= new Unter(); Ober o2= new Unter(); //!!! o1.auchoben(); u1.auchoben(); o2.auchoben(); Ober +oben() +auchoben() Unter +oben() +main(string[]) o m m 44

3 Überladen von Methoden - statische Polymorphie Java bietet die Möglichkeit, Methoden zu überladen, d.h. gleicher Methodenname aber unterschiedliche Parameteranzahl bzw. Parametertypen (Erinnerung: moverel) Rückgabewerte spielen keine Rolle bei der Methodenzuordnung Auswahl bei überladenen Methoden Ist eine Zuordnung der aufrufenden Methode eindeutig, so wird die Methode ausgewählt, welche gleiche Parameteranzahl mit den passenden Parametertypen hat ist die Zuordnung eines Methodenaufrufs nicht eindeutig, wird die Methode ausgewählt, die zu allen in Frage kommenden Methoden die speziellste ist Eine Methode A ist spezieller als eine Methode B, falls die Parametertypen von A aus den Parametertypen von B abgeleitet werden können (wir wissen: Jede Klasse erbt von Object). Beispiel: sum(punkt3d a, Punkt3D b)ist spezieller als sum(punkt a, Punkt b) Extrem merkwürdiges Beispiel (1/3) public class Punkt { protected int x; protected int y; public Punkt(int x, int y){ this.x=x; this.y=y; public void moveto(int x, int y){ this.x=x; this.y=y; public String tostring(){ return "int x="+x+" int y="+y; #x: int #y: int Punkt +Punkt(int,int) +moveto(int,int) +tostring():string #x: double #y: double RealPunkt +Punkt(double,double) +moveto(double,double) +tostring():string +main(string[]) 47 Extrem merkwürdiges Beispiel (2/3) public class RealPunkt extends Punkt { protected double x; protected double y; public RealPunkt(double x, double y){ super(0,0); this.x=x; this.y=y; public void moveto(double x, double y){ this.x=x; this.y=y; gleiche Namen ist schlechtester Stil, hier aber lehrreich public String tostring(){ return super.tostring()+"\ndouble x="+x+" double y="+y; 48

4 Merkwürdiges Beispiel (3/3) RealPunkt rp= new RealPunkt(1.1,2.2); Punkt p= new Punkt(1,2); System.out.println(rp); System.out.println(p); rp.moveto(3.3, 4.4); p.moveto(2,3); rp.moveto(4,5); System.out.println(rp); System.out.println(p); int x=0 int y=0 double x=1.1 double y=2.2 int x=1 int y=2 int x=4 int y=5 double x=3.3 double y=4.4 int x=2 int y=3 Explizite Typumwandlung Cast-Operator wird zur expliziten Typumwandlung genutzt nur auf Objekte derselben Vererbungshierarchie anwendbar Überprüfung von Cast-Operatoren zur Übersetzungsund Laufzeit Laufzeitfehler führt zu einer ClassCastExecption RealPunkt rp = new RealPunkt(1.1,2.2); Punkt p1; Punkt p2= new Punkt(3,4); p1 = rp; // Okay rp = p1; // Compile time error rp = (RealPunkt) p1; // Okay rp = (RealPunkt) p2; // Run time error final final vor Klasse es kann keine Unterklasse von der final-klasseerstellt werden Steigerung der Performance final vor Methode Methode kann nicht von Unterklassen überschrieben werden Steigerung der Performance final vor Variable die Variable ist konstant Grundregel der Vererbung Jede abgeleitete Klasse kann ihre Oberklasse ersetzen, es folgt: überschreibende Methoden dürfen in der abgeleiteten Klasse nur schwächere Vorbedingungen haben überschreibende Methoden dürfen in der abgeleiteten Klasse nur stärkere Nachbedingungen haben 51 52

5 Ändern des Zugriffs beim Überschreiben Als public deklarierte Methoden müssen public bleiben Eine geerbte protected-methode darf entweder als protected oder als public überschrieben werden Für Methoden, die in der Oberklasse als privatedefiniert sind, darf eine beliebige Zugriffsform gewählt werden, da private-methoden nicht vererbt werden (!?!) (Methoden, die als default, d.h. es steht nichts da, definiert sind, können in defaultbleiben oder als protectedoder public überschrieben werden) 53 Dynamische Polymorphie zur Laufzeit wird konkrete Klasse des Objekts bestimmt und passende Methode gewählt dynamische Polymorphie ist eine zentrale Erleichterung der Objektorientierung Punkt[] pa={new Punkt(1,2), new RealPunkt(1.1,2.2), new RealPunkt(1d,2d), new Punkt(3,4); for(punkt p:pa) System.out.println(p+"\n---"); int x=1 int y=2 --- int x=0 int y=0 double x=1.1 double y= int x=0 int y=0 double x=1.0 double y= int x=3 int y= Wurzelklasse Object Methoden der Klasse Objectwerden von allen Objekten geerbt equals(), getclass(), hashcode(), tostring(), notify(), notifyall(), sowie mehrere Versionen von wait(). Methoden in Objectsind Basismethoden, die in abgeleiteten Klassen sinnvollerweise überschrieben werden sollten Grundregel: Schreiben Sie für jede Klasse eine tostring()- Methode Durch gemeinsame Oberklasse kann dynamische Polymorphie besonders gut genutzt werden Object[] o kann Objekte beliebiger Klassen aufnehmen! 55 Objektgleichheit (1/2) mit (obj1==obj2)werden nur die Objektreferenzen verglichen ( Zeigen Referenzen auf das gleiche Objekt? ) Ansatz: Methode equals()derklasse Objectbestimmt, ob zwei Objekte gleich sind Voreinstellung!!! Methode equals()vergleicht Referenzen auf Identität wenn benötigt, selbst ausarbeiten Bei manchen Java-Klassen ist equals()schon ordentlich implementiert, z.b. String(genauer in Doku nachsehen) Wenn equalsneu implementiert wird, sollte (evtl. muss) auch public int hashcode()implementiert werden; Ziel ist, zwei gleiche Objekte müssen den gleichen Wert zurück liefern (wenn man Objekte als Exemplarvariablen hat, kann man auf die hashcode-berechnungdieser Objekte zurückgreifen.) 56

6 Objektgleichheit (2/2) - Implementierungsvarianten public boolean equals(object obj) { if (this == obj) return true; if (obj == null) return false; if (getclass()!= obj.getclass()) return false; Punkt other = (Punkt) obj; return (x == other.x) && (y == other.y); // kürzer, aber langsamer public boolean equals(object obj) { if (obj == null getclass()!= obj.getclass()) return false; Punkt other = (Punkt) obj; return (x == other.x) && (y == other.y); 3. Abstrakte Klassen, Interfaces, Collections Abstrakte Klassen Interfaces Framework Anonyme Klasse Pakete Collections Clone Abstrakte Klasse Eigenschaften abstrakte Klassen sind Schablonen => unvollständig implementiert können nicht instanziiert werden (also kein new möglich) eine Klasse muss mit abstract deklariert sein wenn mindestens eine Methode mit abstractdeklariert wurde, oder wenn eine abstrakte Methode von der Oberklasse geerbt, und nicht überschrieben wird abstrakte Methoden werden mit Modifier abstract deklariert hat keine Implementierung eine abstrakte Methode darf nicht mit static oder final deklariert werden muss von der Unterklasse implementiert werden, um Objekte der Unterklasse bilden zu können Beispiel: Abstrakte Klasse (1/5) Schablone für flexible Darstellung eines Wertes UML: kursiv oder Stereotyp <<abstract>> Balken -zeichen: char +Balken(int,char) +darstellen() +setzeichen(int) <<abstract>> Datum #wert: int +Datum(int) +darstellen() +getwert():int +setwert(int) Ausruf -text: String -position: int +Ausruf(int,text,int) +darstellen() 59 60

7 Beispiel: Abstrakte Klasse (2/5) Beispiel: Abstrakte Klasse (3/5) public abstract class Datum { protected int wert; public class Balken extends Datum { private char zeichen; public Datum(int wert) { this.wert = wert; public int getwert() { return wert; public Balken(int wert, char zeichen) { super(wert); this.zeichen=zeichen; public void setzeichen(char zeichen){ this.zeichen=zeichen; public void setwert(int wert) { this.wert = wert; abstract public void darstellen(); 61 public void darstellen() { for(int i=0;i<wert;i++) System.out.print(zeichen); System.out.println(); 62 Beispiel: Abstrakte Klasse (4/5) public class Ausruf extends Datum { private String text; private int position; public Ausruf(int wert, String text, int position) { super(wert); this.text = text; this.position = position; public void darstellen() { if (position<text.length()){ System.out.print(text.substring(0, position)); for(int i=0;i<wert;i++) System.out.print(text.charAt(position)); System.out.println(text.substring(position+1, text.length())); Beispiel: Abstrakte Klasse (5/5) public class Main { 63 Balken b = new Balken(4,'x'); b.darstellen(); b.setzeichen('\060'); b.darstellen(); Ausruf a = new Ausruf(5, "Hilfe", 1); a.darstellen(); a.setwert(4); Datum[] daten={b,a; for(datum d:daten) d.darstellen(); xxxx 0000 Hiiiiilfe 0000 Hiiiilfe 64

8 Schnittstellen (Interfaces) wie bei abstrakten Klassen stellt eine Schnittstelle eine Schablone zur Verfügung Schnittstelle darf keine Implementierung enthalten nur Konstanten sind als Attribute erlaubt von Schnittstelle kann kein Objekt erzeugt werden eine Schnittstelle bietet aber weitere Möglichkeiten es können mehrere Schnittstellen von einer Klasse implementiert werden Mehrfachvererbung von Deklarationen so möglich (x ist ein a und ein b) Definition: interface Iname1{... Realisierung: class Name implements Iname1, Iname2, Schnittstellen sind ein zentrales Konzept von Java, diese werden frühzeitig zwischen Teams abgesprochen (nur) Interfaces können von Interfaces erben 65 Framework Klassenbibliotheken enthalten Lösungen klassischer Probleme (z. B. Collections[Erinnerung:STL], Netzwerk,...) Variante zur Nutzung sinnvoller Implementierungen: Framework (Rahmenwerk) löst bestimmte Aufgaben eigene Software wird in Framework eingeordnet eigene Software muss Interface implementieren, wird an Framework übergeben (z. B. set) Framework ruft eigene Software über Interfacemethoden auf (Inversion of Control) 66 Beispiel Framework (1/4) Beispiel Framework (2/4) public class Rahmendarstellung { public Ausgabe ausgabe; public Ausgabe getausgabe() { return ausgabe; public void setausgabe(ausgabe ausgabe) { this.ausgabe = ausgabe; public void beispiele(){ int[] werte={2,5,7; for(int w:werte){ System.out.println("**"+w+"**"); ausgabe.setwert(w); ausgabe.darstellen(); System.out.println("*****"); 67 public interface Ausgabe { public int getwert(); public void setwert(int wert); public void darstellen(); Ausruf Ausgabe Rahmendarstellung <<interface>> Ausgabe +darstellen() +getwert():int +setwert(int) Ausruf -text: String -position: int -wert: int +Ausruf(int,text,int) +getwert():int +setwert(int) +darstellen() 68

9 Beispiel Framework (3/4) public class Ausruf implements Ausgabe { private String text; private int position; private int wert; public Ausruf(int wert, String text, int position) { this.wert = wert; this.text = text; this.position = position; public int getwert() { return wert; public void setwert(int wert) { this.wert = wert; public void darstellen() { // wie in voriger Realisierung Beispiel Framework (4/4) public class Main { Rahmendarstellung r = new Rahmendarstellung(); r.setausgabe(new Ausruf(4,"Super",2)); r.beispiele(); **2** Supper ***** **5** Suppppper ***** **7** Suppppppper ***** Verkürzte Interface-Implementierung - Adapter (1/2) public class AusgabeAdapter implements Ausgabe { private int wert; public void darstellen() { public int getwert() { return wert; public void setwert(int wert) { this.wert=wert; Verkürzte Interface-Implementierung - Adapter (2/2) public class Zahlendreher extends AusgabeAdapter { public void darstellen() { int tmp=getwert(); while (tmp>0){ System.out.print(tmp%10); tmp = tmp/10; System.out.println(); Ausgabe a = new Zahlendreher(); a.setwert(12345); a.darstellen();

10 Anonyme Klassen Beispiel: Anonyme Klassen ab und zu werden sehr kleine Klassen benötigt, die nur an einer Stelle genutzt werden statt eine eigene Klasse in eigener Datei anzugeben, wird Klasse direkt an der Stelle ihrer Nutzung angegeben Klasse kann an Variable gehängt werden Klasse1 var = new Klasse2() { //Methodenimplementierungen Klasse kann direkt im Methodenaufruf stehen object.methode(new Klasse2(){...); Anonym da man Klasse nicht wieder nutzen kann mit großer Vorsicht nutzen (tritt bei GUI häufiger auf) 73 public class Main { private Ausgabe a = new Zahlendreher(); public void arnonym(){ Ausgabe b= new Ausgabe(){ public void darstellen() {System.out.println(42); public int getwert() {return 0; public void setwert(int wert) { ; b.darstellen(); Ausgabe c= new AusgabeAdapter(){ public void darstellen() { a.setwert(integer.max_value); a.darstellen(); ; c.darstellen(); new Main().arnonym(); Einschub: Pakete Umsetzung von Paketen in Java und C++ Erinnerung: namespace in C++ große Anzahl von Klassen unübersichtlich; deshalb in Paketen gruppieren Pakete können wieder Pakete und Klassen enthalten Klassen im gleichen Paket haben verschiedene Namen; können in unterschiedlichen Paketen gleich sein Paket entspricht Ordner im Dateibaum Paketname steht am Anfang der Klassendatei package com.kleukersoft.basispaket werden Klassen aus anderen Paketen genutzt werden diese in Importlisten angegeben import com.kleukersoft.textpaket.formatierer 75 package fachklassen.projektdaten; import fachklassen.projektmitarbeiter.mitarbeiter; public class Projektaufgabe { private Mitarbeiter bearbeiter; /*... */ #include "Mitarbeiter.h" //evtl. mit Dateibaum using namespace Fachklassen::Mitarbeiterdaten; namespace Fachklassen{ namespace Projektdaten{ class Projektaufgabe{ private: Mitarbeiter *bearbeiter; //... ; 76

11 Beispiel: Paketnutzung (1/2) package verwaltung.resourcen; import java.text.dateformat; import java.text.parseexception; import java.text.simpledateformat; import java.util.date; import java.util.locale; public class Person { private Date geburt; private String name; private Locale loc; public Person(String geburt, String name) throws ParseException{ DateFormat df = new SimpleDateFormat("dd.MM.yyyy"); this.geburt = df.parse(geburt); this.name = name; 77 Beispiel: Paketnutzung (2/2) public Person(String name){ this.geburt = new Date(); this.name=name; public void setloc(locale loc){ this.loc=loc; public String tostring(){ return name+": "+DateFormat.getDateInstance( DateFormat.LONG, loc).format(geburt); public static void main(string[] s) throws ParseException{ Person[] pers={new Person(" ","Ute"), new Person("Mischa"); Locale[] loc={locale.german, Locale.US, Locale.ITALIAN; for(person p:pers) for(locale l:loc){ p.setloc(l); System.out.println(p); Ute: 2. März 2000 Ute: March 2, 2000 Ute: 2 marzo 2000 Mischa: 6. Februar 2010 Mischa: February 6, 2010 Mischa: 6 febbraio List- Collections Klassen werden typisch generisch genutzt Vector<KlasseA> vec = new Vector<KlasseA>() veckann Objekte des Typs KlasseAund seiner Unterklassen aufnehmen zu int, long,... gibt es echte Klassen Integer, Long mit automatischer Umwandlung Das Interface Collection(Ausschnitt) Method Summary boolean add(object o) Ensures that this collection contains the specified element. boolean addall(collection c) Adds all of the elements in the specified collection to this collection. void clear() Removes all of the elements from this collection. boolean contains(object o) Returns true if this collection contains the specified element. boolean isempty() Returns true if this collection contains no elements. Iterator iterator() Returns an iterator over the elements in this collection. boolean remove(object o) Removes a single instance of the specified element from this collection, if it is present. boolean retainall(collection c) Retains only the elements in this collection that are contained in the specified collection int size() Returns the number of elements in this collection. Objekt[] toarray() Returns an array containing all of the elements in this collection

12 Das Interface List (Ausschnitt) Method Summary void add(int index, Object element) Inserts the specified element at the specified position in this list. boolean addall(int index, Collection c) Inserts all of the elements in the specified collection into this list at the specified position. Object get(int index) Returns the element at the specified position in this list. int indexof(object o) Returns the index in this list of the first occurrence of the specified element, or -1 if this list does not contain this element. int lastindexof(object o) Returns the index in this list of the last occurrence of the specified element, or -1 if this list does not contain this element. Object remove(int index) Removes (and returns) the element at the specified position in this list. Object set(int index, Object element) Replaces the element at the specified position in this list with the specified element. 81 Beispiel: Listennutzung (1/5) package basistypen; public class Punkt { private int x; private int y; public Punkt(int x, int y) { this.x = x; this.y = y; public void verschieben(int dx, int dy) { x += dx; y += dy; public boolean equals(object obj) { return (obj!= null && getclass()==obj.getclass() && x==((punkt)obj).x && y==((punkt)obj).y); public String tostring(){ return "("+x+","+y+")"; Polygon -geschlossen:boolean +Polygon() +hinzu(punkt) +hinzuan(punkt,int) +loeschenerster(punkt) +loeschenalle(punkt) +verschieben(int,int) +hatdoppelt():boolean -x: int -y: int -punkte * Punkt +Punkt(int,int) +verschieben(int,int) +equals(punkt):boolean +tostring():string 82 Beispiel: Listennutzung (2/5) Beispiel: Listennutzung (3/5) package graphik; import java.util.arraylist; import java.util.iterator; import java.util.list; import basistypen.punkt; public class Polygon { private boolean geschlossen=false; private List<Punkt> punkte; public Polygon(){ punkte=new ArrayList<Punkt>(); public void setgeschlossen(boolean b){ geschlossen=b; public void hinzu(punkt p){ punkte.add(p); public void hinzuan(punkt p, int pos){ punkte.add(pos,p); public void loeschenerster(punkt p){ punkte.remove(p); public void loeschenalle(punkt p){ List<Integer> pos = new ArrayList<Integer>(); for(int i=0; i<punkte.size();i++) if(p.equals(punkte.get(i))) pos.add(0, i); for(int i:pos) punkte.remove(i); public void verschieben(int dx, int dy){ for(punkt p:punkte) p.verschieben(dx,dy); 83 84

13 Beispiel: Listennutzung (4/5) public boolean hatdoppelt(){ boolean ergebnis=false; Iterator<Punkt> i=punkte.iterator(); while(!ergebnis && i.hasnext()){ Punkt erster=i.next(); Iterator<Punkt> j=punkte.iterator(); while(!ergebnis && j.hasnext()){ Punkt zweiter=j.next(); if(erster!=zweiter && erster.equals(zweiter)) ergebnis=true; return ergebnis; public String tostring(){ StringBuffer erg = new StringBuffer(geschlossen+" < "); for(punkt p:punkte) erg.append(p+" "); return erg.append(">").tostring(); 85 Beispiel: Listennutzung (5/5) package main; import graphik.polygon; import basistypen.punkt; A::false < (0,0) (3,3) (3,3) > B::false < (3,3) (0,0) (3,3) (3,3) > C::false < (5,4) (2,1) (5,4) (5,4) > D::true E::false < (2,1) (5,4) (5,4) > public class Main { F::false < (2,1) > Punkt[] ps={new Punkt(0,0), new Punkt (3,3), new Punkt(3,3); Polygon poly=new Polygon(); for(punkt p:ps) poly.hinzu(p); System.out.println("A::"+poly); poly.hinzuan(new Punkt(3,3), 0); System.out.println("B::"+poly); poly.verschieben(2, 1); System.out.println("C::"+poly); System.out.println("D::"+poly.hatDoppelt()); poly.loeschenerster(new Punkt(5,4)); System.out.println("E::"+poly); poly.loeschenalle(new Punkt(5,4)); System.out.println("F::"+poly); Benutzeroberflächen und 86 Kopieren von Objekten Flaches Kopieren versus Tiefes Kopieren (kopiere Objekt 1) Objekt 1 Objekt 2 Objekt 1 Objekt 2 Objekt 1 Objekt 1 Objekt 2 Flaches Kopieren Tiefes Kopieren Methode clone()erzeugt eine identische Kopie eines Objektes (Rückgabetyp Object) flaches Kopieren Kopieren mit clone()ist nur dann zulässig, wenn die betreffende Klasse das Interface Cloneable implementiert Interface nicht implementiert => CloneNotSupportedException Clone- Beispiel (1/2) public class Linie implements Cloneable{ private Punkt start; private Punkt ende; public Linie(Punkt start, Punkt ende) { this.start = start; this.ende = ende; public Punkt getstart() { return start; public Punkt getende() { return ende; public String tostring(){ return "["+start.getx()+","+start.gety()+"]->[" +ende.getx()+","+ende.gety()+"]"; 87 88

14 Clone- Beispiel (2/2) protected Object clone(){ return new Linie(new Punkt(start.getX(),start.getY()), new Punkt(ende.getX(),ende.getY())) ; Linie lin= new Linie(new Punkt(1,1),new Punkt(2,3)); System.out.println(lin); Linie lin2 = (Linie) lin.clone(); lin2.getende().moverel(4,4); System.out.println(lin2); System.out.println(lin); System.out.println("lin2==lin: "+(lin2==lin)); [1,1]->[2,3] [1,1]->[6,7] [1,1]->[2,3] lin2==lin: false wenn clone auskommentiert: [1,1]->[2,3] [1,1]->[6,7] [1,1]->[6,7] lin2==lin: false 89

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

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert 2. Vererbung und Polymorphie Vererbung (1/2) Vererbung mit extends Konstruktoren bei der Vererbung Überladen von Methoden - statische Polymorphie Casten Dynamische Polymorphie Klasse Object Eine Unterklasse

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

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

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

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 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

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

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

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

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Grundkonzepte java.util.list

Grundkonzepte java.util.list Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

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

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

Mehr

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

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

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

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

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

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Wiederholung zur Vorlesung Programmieren

Wiederholung zur Vorlesung Programmieren Wiederholung zur Vorlesung Jan 2007 Wintersemester 2007/2008 Computerlinguistik, Campus DU Einstieg Erläutern sie in knappen Worten die notwendigen Schritte um ein einfaches Java-Programm zu schreiben

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

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

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

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

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

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

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

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Faustregeln zu Zusicherungen

Faustregeln zu Zusicherungen Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

Mehr

Praktische Softwaretechnologie Vorlesung 3

Praktische Softwaretechnologie Vorlesung 3 Praktische Softwaretechnologie Vorlesung 3 Martin Giese Johann Radon Institute for Computational and Applied Mathematics Österr. Akademie der Wissenschaften Linz PSWT 2006 24. Oktober 2006 p.1/26 Klassendefinition

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

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

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

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Zusatzmaterial DIE KLASSE OBJECT. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Zusatzmaterial DIE KLASSE OBJECT. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Zusatzmaterial DIE KLASSE OBJECT Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Object wich7ge Eigenscha

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

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus

Vorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:

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

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

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

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Tutorium zur Vorlesung Programmieren

Tutorium zur Vorlesung Programmieren Tutorium zur Vorlesung Programmieren 8. Tutorium Joshua Gleitze 19. Dezember 2016 IPD Koziolek Beispiellösung Beispiellösung für das 3. Übungsblatt, inklusive Tests: joshuagleitze.de/tutorien/programmieren1617/code/beispiellösung3

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

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

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

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

> Vererbung, Die Austauschbarkeit

> Vererbung, Die Austauschbarkeit Objektorientierte Programmierung (OOP) > Vererbung, Die Austauschbarkeit Mark Egloff 2006 1 Lernziel Heute Abend > Sie lernen wie Objekte gezielt kompatibel werden und somit ausgetauscht werden können

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Klassen mit Instanzmethoden

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

Mehr

SWE1 / Übung 9 (11.01.2012)

SWE1 / Übung 9 (11.01.2012) SWE1 / Übung 9 (11.01.2012) Vererbung Zugriffskontrolle Motivation für Vererbung (1) Objekte in der realen Welt kommen oft in ähnlichen Varianten (Attribute, Verhalten) vor Gliederung durch hierarchische

Mehr

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 equals und hashcode SortedSet NavigableSet Assoziative Container 2 / 32 HashSet mit eigener Klasse Wie kann man einen

Mehr

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion

B Java RMI B.2 B.4. 1 Java. 1.2 Methoden. 1.1 Objekte (2) 1.1 Objekte. Objektorientierte Sprache. Klassenbeschreibung. Methode ist eine Art Funktion 1 Java 1.1 e B Java RMI orientierte Sprache e beschrieben in Klassendefinitionen und andere Datentypen: int, float, boolean, etc. referenzen Verweise auf e keine Zeiger, Adressen o.ä. B.1 B.2 1.1 e (2)

Mehr

Enumerations und innere Klassen

Enumerations und innere Klassen Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

OOP. Tagesprogramm. Dynamische Typinformation. Homogene Übersetzung der Generizität. Generizität und Typumwandlungen

OOP. Tagesprogramm. Dynamische Typinformation. Homogene Übersetzung der Generizität. Generizität und Typumwandlungen 1 2016-11-30 Tagesprogramm Dynamische Typinformation Homogene Übersetzung der Generizität Generizität und Typumwandlungen 2 2016-11-30 Dynamische Typinformation Dynamische Typabfragen Abfrage der Klasse

Mehr

8. Generics Grundlagen der Programmierung 1 (Java)

8. Generics Grundlagen der Programmierung 1 (Java) 8. Generics Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 6. Dezember 2005 Einordnung im Kontext der Vorlesung 1.

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

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

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

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

Mehr

3D Programmierpraktikum: Einführung in C++ - Teil 2

3D Programmierpraktikum: Einführung in C++ - Teil 2 3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Objekte. Polymorphismus. Klassen und Objekte. Kapselung

Objekte. Polymorphismus. Klassen und Objekte. Kapselung Polymorphismus Objekte Was versteht man unter Polymorphismus? Griechisch: Vielgestaltigkeit, Verschiedengestaltigkeit Methoden mit gleichem Namen können unterschiedliche Parameter haben Objekte können

Mehr

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

EINI I. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 10/11 EINI I Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 10/11 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - Programmierung - Objektorientierte Programmierung 1 Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische

Mehr

Übungsblatt 7. Was ist die Ausgabe de facto? Entspricht die Ausgabe Ihren Erwartungen?

Übungsblatt 7. Was ist die Ausgabe de facto? Entspricht die Ausgabe Ihren Erwartungen? »Programmieren«, WS 2006/2007 Nino Simunic (nino.simunic@uni-due.de) Übungsblatt 7 Die benötigten Quelltexte finden Sie hier: http://imperia.uni-due.de/imperia/md/content/computerlinguistik/uebungsblatt_7_code.zip

Mehr

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

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte) Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Programmieren in Java

Programmieren in Java Datenstrukturen 2 Gruppierung von Daten Datentypen, die eine Menge an Daten gruppieren und auf dieser Gruppierung eine gewisse Logik bereitstellen werden Datenstrukturen genannt Bisher wurde zur Gruppierung

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr