Metaprogrammierung. Metaprogrammierung. 1 von 38

Größe: px
Ab Seite anzeigen:

Download "Metaprogrammierung. Metaprogrammierung. 1 von 38"

Transkript

1 1 von 38

2 Überblick 2 von 38

3 , was ist das? Allgemein Es wird eine übergeordnete Ebene (Meta-) oberhalb der "normalen" Programmierung (mit Typen, Kontrollstrukturen, Objekten, Methoden, etc.) realisiert. Definition ist die Disziplin, Programme zu schreiben, die andere Programme oder sich selbst repräsentieren oder manipulieren. weitere Merkmale Vielfach Erzeugung oder Ergänzung der Zielprogramme durch Metaprogramme (Begriff: generative Programmierung). Dabei oft Schablonen als Vorlage für die Generierung. Teils eigene Sprache (Metasprache) für Metaprogramme. Spezialfall Reflection: Metaprogramme in derselben Sprache wie die Zielprogramme. Die Abstraktionsmechanismen der Sprache werden auch für die Metainformationen genutzt (Klassen, Objekte, Methoden...) Erhalten der grundsätzlichen Struktur eines Programmes. 3 von 38

4 und Java "Eingebaute" Unterstützung durch Sprachkonstrukte JVM u. Classloader APIs Die verfügbaren Standardmechanismen Introspection: Bereitstellen von Informationen über eine Programmstruktur. Reflection: Dynamische Programmstrukturänderungen: Klassen, Datenzugriffe und Methodenaufrufe. Annotationen: Bereitstellen von deklarativen Zusatzinformationen im Code. Generics: Parametrisierung von Typen. 4 von 38

5 Introspection und Reflection 5 von 38

6 Die Rolle der Metaobjekte Die Zusammenhänge (Meta-)Informationen über elementare Datentypen, Arrays und Klassen sind auch zur Laufzeit verfügbar: Introspection. Sie werden von der JVM in Form von Instanzen zu Klassen aus dem Reflection-API bereitgestellt: Metaobjekte. Sie können auch für dynamische Zugriffe genutzt werden: Reflection (s. u.) Wesentliche Bestandteile 1. java.lang.class 2. Die Klassen des Pakets java.lang.reflect, insbesondere die Klassen Constructor, Field, Method, Array Man beachte: Der Einfluss von Generics auf das Reflection-API wird hier noch ausgeklammert (s. u.). 6 von 38

7 Die wichtigsten Klassen und Objekte 7 von 38

8 Die zentrale Klasse java.lang.class (1) Instanzen Zu jeder Klasse gibt es eine Instanz der Klasse java.lang.class, die alle Klasseninformationen enthält, bzw. referenziert (dito für Interfaces, einfache Datentypen, Arrays, void). D. h. jeder Java-Typ wird in der JVM durch ein Objekt repräsentiert. Dieses Objekt wird vom ClassLoader instanziiert. Man erhält es ausgehend von einer Instanz der repräsentierten Klasse mit der Methode getclass() (geerbt von der Klasse Object). Alternativ ist das Class-Objekt als Wert der Konstante <Typname>.class verfügbar. Methoden Die folgenden Methoden liefern Basis-Informationen über die Klasse und ihre Einbindung in die Klassenhierarchie: public String getname(), public boolean isinterface(), public boolean isarray(), public boolean isprimitive(), public int getmodifieres(), public Class getsuperclass(), public Class[] getinterfaces(), public Class getdeclaringclass() // falls die Klasse ein Member einer anderen Klasse ist 8 von 38

9 Die zentrale Klasse java.lang.class (2) Beispiel: Source-Code-Erzeugung per Reflection public class SourceReconstruct { private static void writeclassheader(class c) { String name = c.getname(); int i = name.lastindexof("."); if (i > -1) { // extract package name System.out.println("package "+ name.substring(0,i) + ";"); name = name.substring(i+1, name.length()); System.out.print(Modifier.toString(c.getModifiers()) + " "); System.out.print("class " + name + " "); Class superclass = c.getsuperclass(); if (superclass!= null) System.out.print("extends " + superclass.getname() + " "); Class[] interfaces = c.getinterfaces(); if (interfaces.length!= 0) { System.out.print("implements "); for (int j=0; ; j++) { System.out.print(interfaces[j].getName()); if (j == (interfaces.length -1)) break; else System.out.print(", "); public static void main(string[] args) { writeclassheader((new Double(2.1)).getClass()); writeclassheader(java.lang.class.class); writeclassheader(reflection.sourcereconstruct.class); // was liefern die folgenden "missbraeuchlichen" Verwendungen writeclassheader(int.class); writeclassheader(void.class); writeclassheader(int[].class); 9 von 38

10 Die zentrale Klasse java.lang.class (3) weitere Methoden Mit der Methode getclassloader() kann der Klassenlader ermittelt werden, der die Klasse geladen hat. Falls der Standard-Klassenlader verwendet wurde, wird null zurückgegeben. Die in der Klasse enthaltenen Members (Konstruktoren, Methoden, Felder, innere Klassen) bzw. die Modifizierer der Klasse können über getxxx()-methoden abgeholt werden. Es können auch gezielt die Objekte für einzelne Members aufgrund von Namen bzw. Signatur abgeholt werden, z. B. public Method getdeclaredmethod(string name,class[] parametertypes) throws NoSuchMethodException, SecurityException Zusätzliche Methoden in der Klasse Class dienen zum dynamischen Klassenladen und Instanziieren (s. u.). 10 von 38

11 Die restlichen Metaklassen Die Klasse java.lang.reflect.method Jeder Methode einer Klasse entspricht eine (von der JVM generierte) Instanz dieser Klasse mit Auskunftsmethoden über die deklarierende Klasse und die Bestandteile der Signatur Eine Methode zum Aufruf der repräsentierten Methode (s. u.). Die Klasse java.lang.reflect.field Jedem Feld einer Klasse entspricht eine (von der JVM generierte) Instanz dieser Klasse. Sie enthält Methoden zum Lesen und Setzen eines Memberwertes für ein übergebenes Objekt, welches das entsprechende Feld besitzt. Die Klasse java.lang.reflect.constructor Jedem Konstruktor einer Klasse entspricht eine (von der JVM generierte) Instanz dieser Klasse mit Auskunftsmethoden über die deklarierende Klasse und die Bestandteile der Signatur, einer Methode zum Instanziieren eines neuen Objekts mit diesem Konstruktor (s. u.). Die Klasse java.lang.reflect.modifier Modifizierer für Klassen und Members werden als int-konstanten verwaltet. Die Klasse Modifier enthält statische Konstanten und statische Methoden zum Interpretieren dieser int-werte. Die Klasse java.lang.reflect.array Diese Klasse enthält statische Methoden zum dynamischen Kreieren von belieben Arrays, sowie zum Setzen und Auslesen von Feldwerten. 11 von 38

12 Dynamisches Klassenladen Das Prinzip Klassen können auf Basis des Klassennamens geladen werden und anschließend instanziiert werden. Dabei braucht zur Compile-Zeit des instanziierenden Codes der Klassenname noch gar nicht bekannt sein. Die relevanten Methoden in der Klasse Class Die Methode public static Class forname(string classname) lokalisiert, lädt und bindet die Klasseninstanz zu dem übergebenen Klassennamen. (wirft gegebenenfalls ClassNotFoundException) Die Methode public Object newinstance()erzeugt eine neue Instanz zu einer gegebenen Klasse, die einen Default-Konstruktor besitzt. (wirft gegebenenfalls InstantiationException oder IllegalAccessException) 12 von 38

13 Beispiel: Dynamisches Klassenladen Beispiel public class DynamicStackLoad { public static void main(string[] args) { String classname = null; Class stackclass = null; Stack stackinstance = null; System.out.println("Which stack implementation do You want to use today?"); try { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); classname = reader.readline(); catch(ioexception ex) {... try { System.out.println("--> load " + classname); stackclass = Class.forName(className) System.out.println("--> instantiate " + stackclass); stackinstance = (Stack) stackclass.newinstance(); catch(classnotfoundexception ex) {... catch(instantiationexception ex) {... catch(illegalaccessexception ex) {... StackUsage.stackTest(stackInstance); 13 von 38

14 Dynamischer Methodenaufruf Beispiel import java.lang.reflect.*; class Tuer { public void doit(int i) { System.out.println("Ich (" + this + ") tu' was mit der Zahl: "+i); public class InvokeTest { public static void main(string[] args) { try { Class cl = Class.forName("reflection.Tuer"); Object obj = cl.newinstance(); // doit() with single int parameter Method method = cl.getdeclaredmethod("doit", new Class[]{int.class); method.invoke(obj, new Object[] { new Integer(3)); // call same method for another object method.invoke(new Tuer(), new Object[] { new Integer(6)); catch(classnotfoundexception ex) {... catch(instantiationexception ex) {... catch(nosuchmethodexception ex) {... catch(invocationtargetexception ex) {... catch(illegalaccessexception ex) {... Man beachte: 1. Sowohl Klasse als auch aufzurufende Methode (und deren Parameter) können zur Laufzeit festgelegt werden. 2. Analog zum dyn. Methodenaufruf kann ein Konstruktoraufruf (für anderen als Default-Konstruktor) erfolgen. 14 von 38

15 Wozu überhaupt Introspection und Reflection? Das Reflection-API ist immens wichtig im Kontext von diversen Frameworks, Serialisierung, Beans, RMI usw. 15 von 38

16 Annotationen 16 von 38

17 Annotationen: Die Quintessenz Zweck Zusätzliche Metainformationen, die nicht zur eigentlichen Logik des Programms gehören. Deklarativer Charakter: Name und ggf. Attribute Realisierung Können vor unterschiedlichen Programmelementen plaziert werden: Klasse, Methode, Attribut,... Eigene Auswertung zur Compilierzeit oder vorher zur Laufzeit Ein paar Anwendungsfelder Compilersteuerung Unit-Testing: Festlegen von Testmethoden u. ä. vor allem Frameworks im Enterprise-Bereich, z. B. Mapping von Objekten auf Datenbankinhalte 17 von 38

18 Vordefinierte Annotationen Die Typen Deprecated Override SuppressWarnings Auswertung durch den Compiler Beispiel public class AnnotatedClass extends BaseClass public void oldmethod() public void doit() { ; von 38

19 Selbstdefinierte Annotationen (1) Die Verwendung public class AnnotatedClass public void mymethod1() ("usage of this method is dangerous") public void mymethod2() ({"Alf", "Sally") public void mymethod3() (what="execute", count=3) public void mymethod4() = "Joe", last = "Hacker")) public void mymethod5() { von 38

20 Selbstdefinierte Annotationen (2) Die zugehörige Definitionen // simple annotation MyMarker { // annotation with one attribute MyComment { String value(); // marker with array of attributes Authors { String[] value(); 20 von 38

21 Selbstdefinierte Annotationen (3) // annotation with named attributes ToDo { String what(); int count() default 1; ; // reusable annotation Name { String first(); String last(); // complex annotation Reviewer { Name value(); 21 von 38

22 Meta-Annotationen (1) Einsatzzweck Annotation von Annotationsdefinitionen Die Typen Documented Aufnahme der markierten Annotation in das JavaDoc des annotierten Elementes Inhereted Markierte Annotation soll vererbt werden. Target Legt das (die) Elemente fest, an der die Annotation angebracht werden kann (Default: alle): TYPE FIELD METHOD, u. w. Retention Legt fest, wie lange Annotationen erhalten bleiben sollen (Default: CLASS): SOURCE CLASS RUNTIME 22 von 38

23 Meta-Annotationen ElementType.TYPE, ElementType.METHOD ToDo { String what(); int count(); 23 von 38

24 Verarbeitung von Annotationen Reflection-API zum Auslesen bei RetentionPolicy RUNTIME Beispiel: public class AnnotationsAnalyzer { public static void main(string[] args) { Class clazz = Class.forName("annotations.AnnotatedClass"); Annotation[] classannotations = clazz.getannotations();... Method[] methods = clazz.getmethods(); for (int i = 0; i < methods.length; i++) { Annotation[] methodannotations = methods[i].getannotations(); System.out.println(" method: " + methods[i].getname()); for (int j = 0; j < methodannotations.length; j++) { System.out.println(" annotation:" + methodannotations[j]); ToDo todo = methods[i].getannotation(todo.class); if (todo!= null) { System.out.println(" what: " + todo.what()); System.out.println(" count: " + todo.count()); 24 von 38

25 Generics 25 von 38

26 Generics: Die Quintessenz Absicht Typparametrisierung von Interfaces, Klassen und eigenständigen Methoden Codevervielfachung vermeiden: pro Familie von parametrisierten Elementen nur ein Source- und Byte-Code Dabei Typsicherheit (zur Compilierzeit) sicherstellen. Realisierung Betroffene Interfaces, Klassen und eigenständige Methoden erhalten bei der Definition einen (oder mehrere) formale Typparameter (Syntax, z. B.: <T>) Bei der Verwendung wird für den formalen Parameter ein aktueller Parameter eingesetzt (Syntax, z. B.: <String>). Auf Byte-Code-Ebene wird die Parametrisierung durch Verwendung der Klasse Object aufgelöst: Type-Erasure! Anwendung Container-Klassen (Collection-API, s. u.) generische Algorithmen (z. B. sortieren von...) u. v. m. 26 von 38

27 Beispiel: Generische Klasse (1) Die Definition public class SingleObjectHolder<E> { private E element; public void put(e element) { this.element = element; public E get() { return element; Die Verwendung SingleObjectHolder<String> stringholder = new SingleObjectHolder<String>(); stringholder.put("hallo"); String s = stringholder.get();... SingleObjectHolder<Integer> intholder = new SingleObjectHolder<Integer>(); intholder.put(5); int i = intholder.get();... SingleObjectHolder<char[]> chararrayholder = new SingleObjectHolder<char[]>(); chararrayholder.put(new char[]{'a','b','c'); char [] ca = chararrayholder.get(); 27 von 38

28 Beispiel: Generische Klasse (2) Die Realisierung im Byte-Code (nach Decompilierung) public class SingleObjectHolder { private Object element; // type erasure! public void put(object element) { this.element = element; public Object get() { return element; SingleObjectHolder stringholder = new SingleObjectHolder(); stringholder.put("hallo"); String s = (String)stringHolder.get(); // type retrieval SingleObjectHolder intholder = new SingleObjectHolder(); intholder.put(integer.valueof(5)); int i = ((Integer)intHolder.get()).intValue(); 28 von 38

29 The Diamond Im Beispiel SingleObjectHolder<String> stringholder = new SingleObjectHolder<>();... SingleObjectHolder<Integer> intholder = new SingleObjectHolder<>();... SingleObjectHolder<char[]> chararrayholder = new SingleObjectHolder<>(); Der Mechanismus Der aktuelle Typ beim Konstruktoraufruf kann vom Compiler aus dem Kontext ermittelt werden (type inference). Das spart Schreibarbeit. seit Java von 38

30 Beispiel: Eigenständige generische Methoden Die Definition public class SwapDemo { public static void print(final Object[] a) { // hier keine Generics noetig! for (int i=0; i< a.length; i++) System.out.print(a[i] + " "); public static <T> void swap(t[] a, int i, int j) { // hier auch nicht unbedingt T t = a[i]; a[i] = a[j]; a[j] = t; public static <T> T getlast(t[] a) { return a[a.length - 1]; // aber hier! Die Verwendung Float[] fa = {2.0f, 4.7f, 3.9f, 0.9f; print(fa); swap(fa, 1, 3); // implizite Ermittlung des aktuellen Typparameters SwapDemo. <Float> swap(fa, 0, 2); // explizite Vorgabe des aktuellen Typparameters String[] sa = {"hello", "boys", "and", "girls"; print(sa); swap(sa,1,3); String s = getlast(sa); 30 von 38

31 Wurzeln von Generics und Grenzen Historie Vorbild: vor allem Templates in C++ (vgl. auch C#) Generics wurden erst mit Java 5 eingeführt. Daher ein partiell "aufgesetztes" Konstrukt. Daraus ergeben sich bestimmte Konsequenzen. Einschränkungen Aktuelle Typparameter können nur von einem Objekttyp, nicht Primitiv-Typ sein (siehe aber Autoboxing). Ein formaler Typ-Parameter einer Klasse darf nicht bei der Def. von statischen Variablen verwendet werden. Von einem formalen Typ-Parameter kann keine Instanz erzeugt werden (per new). Es kann kein Array-Objekt (per new) erzeugt werden, dessen Komponententyp ein formaler Parameter ist. Es kann kein Array oder eine Array-Referenz mit Komponenten vom Typ einer formal oder aktuell parametrisierten Klasse erzeugt werden (außer Parameter ist vom Typ unbounded Wildcard?, s. u.) Erlaubt: SingleObjectHolder<?>[] a = new SingleObjectHolder<?>[3]; Ein formaler Typ-Parameter darf nicht als Operand im instanceof-operator vorkommen. 31 von 38

32 Einschränkungen: Beispiele // Folgendes geht nicht!!!!! // public static <T> T makeinstance() { // return new T(); // // Ausweg!?! public static <T> T makeinstance(class<t> clazz) { try { return clazz.newinstance();... // Aufruf: makeinstance(myclass.class) // Folgendes geht nicht!!!!! // public static <T> T[] resize(t[] a) { // T[] cl = new T[a.length + 1]; // return cl; // // Ausweg!?! public static <T> T[] resize(t[] a, Class<T> elementtype) { T[] cl = (T[]) Array.newInstance(elementType, a.length + 1); return cl; 32 von 38

33 Generics und Vererbung Muster für erlaubte Ableitungen class B<T> extends A class B extends A<String> class B<T> extends A<T> class B<T> extends A<String> analog: Interfaces Vorsicht Eine Ableitungssituation (und damit verbundener Polymorphismus) bei aktuellen Typparametern überträgt sich nicht auf die dadurch parametrisierten Klassen. Beispiel: SingleObjectHolder<Number> ist keine Basisklasse von SingleObjectHolder<Integer>, also kein Upcast möglich. 33 von 38

34 Wildcards (1) Unbounded Wildcards Verwendungsmöglichkeiten Als Typparameter einer Referenzvariable, um Referenzen auf beliebig aktuell parametrisierte generische Klassen zu halten. Beim Anlegen von Arrays mit parametrisierten Komponenten (s. o.) Beispiel: SingleObjectHolder<Integer> integerholder = new SingleObjectHolder<Integer>(); SingleObjectHolder rawtypeholder = integerholder; // warning SingleObjectHolder // is a raw type integerholder = rawtypeholder; // warning:... needs // unchecked conversion... SingleObjectHolder<?> unboundedwildcardholder = integerholder; // no warning integerholder = unboundedwildcardholder; // error!!!! 34 von 38

35 Wildcards (2) Upperbound Wildcards Beispiel: class SingleObjectHolder<T extends Number> Wirkung: Als aktueller Typparameter ist nur eine Klasse unterhalb einer festen Klasse möglich. Der formale Parameter kann implizit auf diese Basisklasse gecastet werden. Beim Type-Erasure wird für den formalen Typparameter die Basisklasse eingesetzt (nicht Object). komplexeres Beispiel class A<T extends B & I1 & I2 & I3> wobei B eine Klasse und I1,..., I3 Interfaces sind. 35 von 38

36 Wildcards (3) Lowerbound Wildcards Muster für das Einschränken eines Methodenparameters static void doit(b<? super Integer> b) sinnvolle Verwendungen siehe Collection-API 36 von 38

37 Generics und Reflection (1) Die Einflüsse auf die Metaklasse Class Die Klasse Class ist parametrisiert: Class<T>. Das Class-Literal.class liefert den exakten Typ zurück. Object.getClass() und Class.forName() liefert nur einen per Wildcard aktuell parametrisierten Typ zurück. Beispiele Class<String> stringclass = String.class; Class<?> clazz1 = "abc".getclass(); Class<?> clazz2 = Class.forName("java.lang.String"); 37 von 38

38 Generics und Reflection (2) Was überlebt beim Type-Erasure? Ein Beispiel: public class GenericIntrospection { public static void main(string[] args) { Class<?>[] typevariables = = SingleObjectHolder.class; System.out.println(clazz); TypeVariable<?>[] typevariables = clazz.gettypeparameters(); for (int j = 0; j < typevariables.length; j++) System.out.println(typeVariables[j]); try { Method method = clazz.getdeclaredmethod("get", new Class[] {); System.out.println(method.getGenericReturnType()); method = clazz.getdeclaredmethod("put", new Class[] { Object.class ); System.out.println(method.getGenericParameterTypes()[0]); catch (NoSuchMethodException SecurityException e) { e.printstacktrace(); 38 von 38

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.

Mehr

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

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

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

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

SS 2008. Programmieren 2. Prof. Dr. Gerhard Meixner

SS 2008. Programmieren 2. Prof. Dr. Gerhard Meixner SS 2008 Programmieren 2 Prof. Dr. Gerhard Meixner FH-Augsburg SS 2008 1.0 GESCHACHTELTE KLASSEN 9 1.1 ÜBERBLICK 9 1.1.1 Einordnung 9 1.1.1.1 Historie: 9 1.1.1.2 Vorteile: 9 1.1.2 Klassifizierung 9 1.1.2.1

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

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

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

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

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

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

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

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 Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

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

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Info B VL 14: Java Collections/Reflections

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

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

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

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

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

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

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

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

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

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse Übung 05: Arrays Abgabetermin: xx.xx.xxxx Name: Name, Vorname Matrikelnummer: 0XXXXXX Gruppe: G1 (Prähofer) G2 (Wolfinger) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

BEISPIELKLAUSUR Softwareentwicklung:

BEISPIELKLAUSUR Softwareentwicklung: Prof. Dr. Andreas Fink Institut für Informatik Fakultät für Wirtschafts- und Sozialwissenschaften Helmut-Schmidt-Universität / Universität der Bundeswehr Hamburg BEISPIELKLAUSUR Softwareentwicklung: Objektorientierte

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

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

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

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

WPF Steuerelemente Listbox, ComboBox, ListView,

WPF Steuerelemente Listbox, ComboBox, ListView, WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Reflection. Arthur Zaczek. Nov 2014

Reflection. Arthur Zaczek. Nov 2014 Arthur Zaczek Nov 2014 1 Einleitung 1.1 Definition Reflection ist das Auslesen von Metainformationen über Klassen, deren Methoden & Eigenschaften zur Laufzeit. 1.2 Anwendungsfälle Analyse von Programmen

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

Der lokale und verteilte Fall

Der lokale und verteilte Fall Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

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

Java-Programmierung. Remote Method Invocation - RMI

Java-Programmierung. Remote Method Invocation - RMI Java-Programmierung Remote Method Invocation - RMI Entwicklungsmethoden Sockets Entwurf verteilter Anwendungen ist relativ aufwändig, da zunächst ein Kommunikationsprotokoll entwickelt werden muss aufwändig

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

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

WebService in Java SE und EE

WebService in Java SE und EE Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

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

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

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

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Meta Programming and Reflection in Java

Meta Programming and Reflection in Java Meta Programming and Reflection in Java Overview instanceof operator Java Annotations Java Reflection instanceof operator vergleicht ein Objekt mit einem bestimmten Typ testet ob ein Objekt ist eine Instanz

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

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

Proseminar: C# und.net. 6. Vortag Generische Klassen. Sebastian Wolf Proseminar: C# und.net 6. Vortag Generische Klassen Sebastian Wolf 1 Gliederung: 1. Einleitung 2. C# 2.0 3. Beschränkte Generizität 4. Generische Methoden 5. Überladene generische Klassen 6. Was passiert

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

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

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

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem

Mehr

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

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

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

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

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten Matrikelnummer: Punkte: Testklausur 1 zur Vorlesung Modellierung und Programmierung I Dr. Monika Meiler Zeit: 60 Minuten Bemerkungen: Jedes Blatt ist mit der Matrikelnummer zu versehen. Jede Aufgabe ist

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

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

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Selbststudium OOP4 Auftrag

Selbststudium OOP4 Auftrag Selbststudium OOP4 Auftrag Kapitel 3.6 1. Wie deklarieren Sie eine Referenzvariable? Mit new z.b. Student studenta = new Stundent( Meier ); 2. Zeichnen Sie das Objektdiagramm zum BlueJ Picture Projekt

Mehr

A(T1) A(T2) A(T1) A(T2)

A(T1) A(T2) A(T1) A(T2) Kovarianz und Kontravarianz in Java Abstract In diesem Artikel werden die Java-Regeln für Kovarianz und Kontravarianz zusammengefasst. Hierzu wird Typkompatibilität definiert und die Fälle untersucht,

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Reflection. Programmieren 2 - H.Neuendorf (131)

Reflection. Programmieren 2 - H.Neuendorf (131) Reflection Bedeutung von Reflection + Anwendungsfelder java.lang.class - Objekt Bedeutung + Erzeugung Weitere reflexive Objekte : Method, Constructor, Field Anwendungsbeispiele Programmieren 2 - H.Neuendorf

Mehr

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2 Inhalt 1. Printing API 1. Übersicht 2. Vorgehen 3. Beispiel 2. Klasse PrintUtils 3. Mehrere Seiten drucken Folie 1 Lernziele Sie wissen, wie Sie Swing-Komponenten ausdrucken können Sie kennen den Aufbau

Mehr

Architektur des agimatec-validation Frameworks

Architektur des agimatec-validation Frameworks Development : Implementierung Validierungskonzept (Dokumentation) This page last changed on Apr 03, 2008 by roman.stumm. Architektur des agimatec-validation Frameworks Generierung der Metainformationen

Mehr