2.2 Übersetzung objektorientierter Sprachkonstrukte
|
|
- Friedrich Dominik Walter
- vor 8 Jahren
- Abrufe
Transkript
1 2.2 Übersetzung objektorientierter Sprachkonstrukte Vorgehen: Sprachmittel objektorientierter Programmiersprachen Übersetzung anhand eines Beispiels Übersetzung von Klassen bei Einfachvererbung Problematik der Mehrfachvererbung, weitere Aspekte Sprachmittel objektorientierter Programmiersprachen Wir betrachten klassenbasierte Sprachen und verwenden als Beispielsprache Java. Wesentliche objektorientierte Sprachkonzepte sind: Klassen und Objekterzeugung Kapselung Subtyping und Vererbung dynamisches Binden von Methoden 85
2 Beispiel: (objektorientierte Sprachkonzepte) class Person { String name; int gebdatum; /* in der Form JJJJMMTT */ Person( String n, int gd ) { name = n; gebdatum = gd; public void drucken() { System.out.println("Name:"+ this.name); System.out.println("Geb:"+ this.gebdatum); boolean hat_geburtstag ( int datum ) { return (this.gebdatum%10000) == (datum%10000); class Student extends Person { int matrikelnr; int semester; Student(String n,int gd,int mnr,int sem) { super( n, gd ); matrikelnr = mnr; semester = sem; public void drucken() { super.drucken(); System.out.println( "Mnr:"+ matrikelnr); System.out.println( "Sem:" + semester); 86
3 class Test { public static void main( String[] argv ) { int i; Person[] pf = new Person[3]; pf[0] = new Person( "Meyer", ); pf[1] = new Student("M\"uller", ,758475,5); pf[2] = new Student("Planck", , ,47); for( i = 0; i<3; i = i+1 ) { pf[i].drucken(); Das Beispiel zeigt Klassen, Objekterzeugung, Vererbung (mit Subtyping und Spezialisierung) sowie dynamisches Binden von Methoden Umsetzung mit prozeduralen Sprachen Anhand des obigen Beispiels erläutern wir die grundlegenden Übersetzungsschemata: Klassen, Klassentypen Objekterzeugung Verbundtypen, Zeigertypen Allokation dyn. Variablen/Objekte Methoden, Konstruktoren Prozeduren dyn. Bindung Verwendung von Prozedurzeigern mit Selektion von Verbundkomponenten Als Zielsprache verwenden wir hier C. 87
4 Übersetzung der Typen und Methoden: Basisdatentypen von Java Basisdatentypen von z.b. int nach int boolean nach int ( typedef int boolean; ) Referenztypen von Java Zeigertypen von C z.b. String nach String* Person nach Person* wobei und in C geeignete Verbundtypen sind. Wir betrachten die Implementierung von : typedef struct sperson Person; struct sperson { String* name; int gebdatum; /* in der Form JJJJMMTT */ void (*drucken)( Person* ); boolean (*hat_geburtstag)( Person*, int ); ; Methoden werden als Prozeduren realisiert: void Person_drucken( Person* this ) { printf("name:%s\n", this->name ); printf("geb:%d\n",this->gebdatum); boolean Person_hat_geburtstag (Person* this,int datum){ return (this->gebdatum%10000)==(datum%10000); 88
5 Konstruktoren werden als Prozeduren realisiert: Person* PersonK( String* n, int gd ) { Person* this = (Person*) malloc( sizeof(person) ); this->name = n; this->gebdatum = gd; this->drucken = Person_drucken; this->hat_geburtstag = Person_hat_geburtstag; return this; Übersetzung von Vererbung/Spezialisierung: Bzgl. der Verbundkomponenten wird Vererbung im Wesentlichen durch Duplikation realisiert: typedef struct sstudent Student; struct sstudent { String* name; int gebdatum; /* in der Form JJJJMMTT */ void (*drucken)( Student* ); boolean (*hat_geburtstag)( Student*, int ); int matrikelnr; int semester; ; Zu beachten ist die notwendige Typanpassung beim impliziten Argument in der Unterklasse. 89
6 Bzgl. der Methoden lässt sich Vererbung ohne Codeduplikation umsetzen; die Methoden der Oberklasse lassen sich nach geeigneter Typkonvertierung unverändert verwenden: Student* StudentK (String* n,int gd,int mnr,int sem ) { Student* this = (Student*) malloc(sizeof(student)); this->name = n; this->gebdatum = gd; this->matrikelnr = mnr; this->semester = sem; this->drucken = Student_drucken; this->hat_geburtstag = (boolean(*)(student*,int)) Person_hat_geburtstag; return this; Spezialisierung wird durch zusätzliche Attribute (s.o.) und neue Prozeduren realisiert, die ggf. die überschriebenen Methoden aufrufen: void Student_drucken( Student* this ) { Person_drucken( (Person*)this ); printf("mnr:%d\n", this->matrikelnr ); printf("sem:%d\n", this->semester ); 90
7 Übersetzung von Objekterzeugung und Methodenaufruf: Objekterzeugung entspricht einem Konstruktoraufruf ; Methodenaufruf wird durch Selektion und Aufruf der zum Objekt gehörenden Methode realisiert. void main( String* argv[] ) { int i; Person* pf[3]; pf[0] = PersonK( "Meyer", ); pf[1] = (Person*) StudentK("M\"uller", ,758475,5); pf[2] = (Person*) StudentK("Planck", , ,47); for( i = 0; i<3; i = i+1 ) { pf[i]->drucken( pf[i] ); Zu beachten ist die doppelte Angabe des Zielobjekts beim Methodenaufruf. Dynamische Bindung wird also durch Verwendung von Prozedurzeigern erreicht. 91
8 Bemerkungen: Verbundkomponenten werden nicht vererbt und müssen bei jeder Unterklasse neu aufgeführt werden. keine Benutzung des Oberklassenkonstruktors explizite Typkonvertierung nötig Die direkten Zeiger auf die Methoden des Objekts verbrauchen unnötig viel Speicher (s.u.). Dynamische Methodenbindung benötigt nur eine Dereferenzierung, ist also fast so effizient wie ein normaler Prozeduraufruf Übersetzung von Klassen Klassen deklarieren: - Attribute (in Java fields genannt), - Konstruktoren, - Methoden. Im Folgenden gehen wir zunächst von einer Sprache aus, die wie Java nur Einfachvererbung unterstützt; d.h. jede Klasse (außer Object) besitzt genau eine Oberklasse. 92
9 Objektlayout: Objekte werden als Speicherbereiche auf der Halde verwaltet: Dabei enthält ein Objekt einer Klasse K für jedes ererbte und jedes in K deklarierte Attribut eine Variable (Objektzustand). Zusätzlich enthält es eine Variable, mittels der Informationen über Methoden bzw. die Klasse referenziert werden können. Als Identität des Objekts wird häufig die Anfangsadresse des Speicherbereichs verwendet (bzw. eine geeignete andere Adresse). Beispiel: (Objektlayout) class A { int a1; private int a2; Klassen- & Methoden- Information zu Klasse A Objektreferenz class: a1: a2: Wie bei Verbunden werden Attributinstanzen/Instanzvariablen über eine Relativadresse (offset) bzgl. der Objektreferenz adressiert. 93
10 class A { int a1; private int a2;... class B extends A { int b;... class C extends B { int c; Klassen- & Methoden- Information zu Klasse C Objektreferenz class: a1: a2: b: c: Die Größe der einzelnen Instanzvariablen hängt selbstverständlich von deren Typ ab. So benötigt man in Java für int- und float-variablen beispielsweise 4 Byte, für long- und double-variablen 8-Byte. 94
11 Bemerkungen: Im obigen Beispiel haben wir Attributinstanzen der Klasse Object vernachlässigt Private Attributinstanzen von Oberklassen müssen auch in Instanzen von Unterklassen vorhanden sein: class A { int a1; private int a2; int m() { return a2; class B extends A { int b; int n() { return m(); Zur Klassen- und Methodeninformation siehe unten. Die Reihenfolge der Attributinstanzen ist wichtig, um Subtyping zu ermöglichen: Jedes Unterklassen-Objekt muss überall dort eingesetzt werden können, wo ein Oberklassen- Objekt erwartet wird. Deshalb müssen die Attributinstanzen der Oberklasse in Ober- und Unterklasse-Objekten die gleiche Relativadresse besitzen. 95
12 Beispiel: (Zugriff auf Unterklassen-Objekte) A avar = new B();... avar.a2... d.h. Relativadresse von a2 muss unabhängig vom dynamischen Typ von avar sein, wobei der dynamische Typ eines referenzwertigen Ausdrucks E in einem Zustand S der Typ des Objekts ist, das man bei Auswertung von E in S erhält. Alternatives Objektlayout: Teilweise wird auch mit einem Objektdeskriptor gearbeitet, hier am Beispiel eines C-Objekts: Objektreferenz class: Deskriptor a1: a2: b: c: Klassen- & Methoden- Information zu Klasse C 96
13 Bemerkungen: Nachteile: - größerer Speicherbedarf pro Objekt - zusätzlicher Dereferenzierungsschritt beim Zugriff auf Instanzvariablen Vorteile: - Alle Objektdeskriptoren haben gleichen Speicherbedarf. - Speicherblock für Instanzvariablen leichter verschiebbar (vereinfacht z.b. Garbage Collection). Klasseninformation: Der Umfang und Inhalt der Klasseninformation ist sehr sprachabhängig. Drei typische Beispiele: Klasseninformation wird zur Laufzeit nicht bereitgestellt. Die Klasseninformation enthält alle Angaben, die für dynamische Typkonvertierung notwendig sind: A avar = new B(); B bvar = (B) avar; Die Klasseninformation wird durch ein Objekt repräsentiert, dass Introspektion (Abfragen der Klasseninformation zur Laufzeit) oder Reflexion (Programmänderungen zur Laufzeit) ermöglicht. 97
14 Beispiel: (Introspektion in Java) Java unterstützt Introspektion mittels Objekten der Klasse Class. Für jeden Typ eines Java-Programms gibt es ein Objekt der Klasse Class. Die Klasse Class besitzt unter anderem: die statische Methode forname die Instanzmethode getmethod import java.lang.reflect.*; public class Inspektor { public static void main(string[] ss) { try{ Class klasse = Class.forName( ss[0] ); Method[] methoden = klasse.getmethods(); for( int i = 0; i < methoden.length; i++ ){ Method m = methoden[i]; Class rettype = m.getreturntype(); String methname = m.getname(); Class[] partypes = m.getparametertypes(); System.out.print(retType.getName() + " " + methname+"(" ); for( int j = 0; j < partypes.length; j++ ){ if( j > 0 ) System.out.print(", "); System.out.print( partypes[j].getname() ); System.out.println( ");" ); catch( ClassNotFoundException e ) { System.out.println("Klasse "+ ss[0]+" fehlt"); 98
15 Methodenrealisierung: Die Methodeninformation ermöglicht den Zugriff auf die zu einem Objekt gehörenden Methoden: Sie liefert die Datenstruktur zur Realisierung des dynamischen Bindens. Da bei klassenbasierten Sprachen alle Objekte einer Klasse die gleichen Methoden haben, kann man die Methodeninformation aller Objekte einer Klasse gemeinsam speichern. Dadurch spart man gegenüber der Realisierung von erheblich an Speicher. Wir betrachten hier die klassische Realisierung mit einer Methodentabelle (virtual method/functions table): class A { int a1; int a2; int m() {... int n( int i ) {... Objektreferenz mtab: a1: a2: Alle A-Objekte teilen sich mtab A::m A::n (Aus Gründen der Übersichtlichkeit haben wir auf die Angabe von Klasseninformation verzichtet.) 99
16 Es existiert also für jede Klasse genau eine Methodentabelle. Der Zeiger auf die Methodentabelle wird vom Konstruktor gesetzt. Die Methodentabelle enthält Zeiger auf die Methodenimplementierungen. Die Technik ermöglicht Subtyping, da die Relativadressen von Oberklasse-Methoden so gewählt werden können, dass sie in Ober- und Unterklasse gleich sind. Die Technik ermöglicht Überschreiben durch Ausstausch des entsprechenden Eintrags (s. Beispiel) Beispiel: (Überschreiben von Methoden) class A { int a1; int a2; int m() {... int n( int i ){... mtab: a1: a2: A::m A::n class B extends A { int b; int m() {... void p() {... mtab: a1: a2: B::m A::n B::p b: 100
17 Adressierung einer Methode jeweils indirekt über Methodentabelle und Relativadresse: A avar = new A();... avar.m()... // M[avar.mtab]+RA(m) A::m... avar.n(7)... // M[avar.mtab]+RA(n) A::n A avar = new B();... avar.m()... // M[avar.mtab]+RA(m) B::m... avar.n(7)... // M[avar.mtab]+RA(n) A::n Wie bei den Instanzvariablen gewährleistet die richtige Reihenfolge der Einträge in der Methodentabelle, dass auf ein Unterklassen-Objekt wie auf ein Oberklassen-Objekt zugegriffen werden kann. Dabei werden automatisch überschreibende Methoden ausgewählt, sofern vorhanden. 101
18 Konstruktorrealisierung: Konstruktoren werden als Prozeduren realisiert. Üblicherweise verlangt die Quellsprachsemantik folgendes Vorgehen bei einem Objekt der Klasse K: Allokation des Speichers fürs neue K-Objekt Rekursiv Aufruf der Konstruktoren der Oberklassen Ausführen des aufgerufenen Konstruktors von K Hinzu kommt ggf. Klassenladen und Initialisierung von Variablen Probleme der Mehrfachvererbung Die in erläuterte Übersetzungstechnik lässt sich nur für Sprachen bzw. Klassen mit Einfachvererbung verwenden. Hier skizzieren wir: was Mehrfachvererbung bedeutet und welche zusätzlichen Probleme sie verursacht. Mehrfachvererbung gibt es z.b. in C++ und Eiffel. Bei Mehrfachvererbung kann eine Klasse von mehreren Oberklassen erben. Zur Darstellung der sprachlichen Aspekte betrachten wir zunächst ein Beispiel. 102
19 Beispiel: (Mehrfachvererbung) In folgendem Klassendiagramm erbt E mehrfach: B k1 k2 A k3 k4 C k5 D k2 k3 Problematik: E k6 Soll E die Attribute von A doppelt erben, d.h. von jeder Komponente zwei Kopien besitzen? (nur relevant im Zusammenhang mit Attributen) Wie sollen Namenskonflikte aufgelöst werden? ( E erbt zwei Komponenten mit Namen k2) Mit welchen Techniken können E-Objekte so realisiert werden, dass sie auch als A-, B-, C- und D-Objekte auftreten können? 103
20 Unter der Annahme, dass E von A doppelt erbt, besitzt ein E-Objekt die folgenden Komponenten: B::k1 B::k2 A::k3 A::k4 C::k5 A::k3 A::k4 D::k2 D::k3 E::k6 A B C D E Mit obigem Komponentenlayout kann ein E-Objekt direkt als B- und C-Objekt verwendet werden, nicht aber als A- oder D-Objekt. Lösungsansätze: 1. Implizite Typkonvertierung mit Veränderung der Referenz in den Speicherbereich. (Nachteil: ggf. Problem bei Objektidentität) 2. Adressierung mit klassenspezifischen, global verwendbaren Relativadressen (s. Appel). (Nachteil: nicht modular, gesamtes Programm muss bekannt sein). 104
21 2.2.5 Weitere Aspekte bei OO-Sprachen statische Methoden geschachtelte Klassen virtuelle Klassen Kapselungsaspekte dynamisches Laden Reflexion Beispiel: (Lokale Klassen) class Outer { Outer w( int j ) { int i = 2; class Local extends Outer { Outer w( int jj ) { System.out.println("i == " + i ); System.out.println("j == " + j ); return this; System.out.println("j == " + j ); return new Local(); 105
22 public class LocalClassTest { static public void main(string[] args){ Outer ov = new Outer(); ov.w( 5 ).w( 7 ); ov.w( 7 ).w( 9 ); Gibt es Fehler? Was ist die Ausgabe und warum? Lesen Sie zu Abschnitt 2.2: Wilhelm, Maurer: Abschnitt 5.2 und Anfang von 5.3 (S ) Appel: Sections , S
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:
MehrPrinzipien 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........................
Mehr3 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
MehrJava: 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
MehrObjektorientierte 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/
MehrKapitel 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
Mehr3.2 Translation of Object-Oriented Language Constructs
Content of Lecture Compilers and Language Processing Tools Summer Term 2011 Prof. Dr. Arnd Poetzsch-Heffter Software Technology Group TU Kaiserslautern c Prof. Dr. Arnd Poetzsch-Heffter 1 1. Introduction
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrKapitel 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
MehrTypumwandlungen 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
MehrKapitel 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
MehrInnere 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
MehrProgrammieren 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
MehrWintersemester 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
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
MehrEinfü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
MehrProf. 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
MehrJava 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
MehrEinfü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
MehrVererbung & 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
MehrObjektorientierte 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
MehrVorkurs 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:
MehrAlgorithmen 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
MehrOO Softwareentwicklung
OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung
MehrEinfü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
Mehr7. 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
MehrKapitel 12: Übersetzung objektorienter Konzepte
Kapitel 12: Übersetzung objektorienter Konzepte Themen Klassendarstellung und Methodenaufruf Typüberprüfung Klassenhierarchieanalyse Escape Analyse 12.1 Klassendarstellung bei Einfachvererbung class Punkt
MehrProblemstellung. 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
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrC# 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
MehrJava 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
Mehr1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung
K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrJava 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
MehrObjektorientierte 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)
MehrProgrammieren Tutorium
Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,
MehrEinfü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
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrKapitel 4. Mehrfachvererbung. Beispiel 1: typische Diamant Struktur. Person. Hiwi
Kapitel 4 Mehrfachvererbung eispiel 1: Person Student ngestellter typische iamant Struktur Hiwi 29 4. Mehrfachvererbung eispiel 2: Fenster mit Rand und Menü; Verteilung von Rand und Menü auf 2 Unterklassen
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
Mehr3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
MehrDas 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
MehrVererbung. 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,
MehrVIII: 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:
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrPrü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,
Mehr13. Tutorium zu Programmieren
13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting
MehrProgrammieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
MehrPakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).
Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein
MehrJava 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
MehrJava 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,
MehrProgrammierkurs 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
Mehr3 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
MehrII. 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
MehrSichtbarkeit & 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
MehrFolge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
MehrSession Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de
s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful
Mehr5. 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
MehrSoftware Engineering Interaktionsdiagramme
Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)
MehrJavakurs 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Ü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,
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
Mehr5.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
MehrFachgebiet 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
MehrDrei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrJava Einführung Packages
Java Einführung Packages Inhalt dieser Einheit Packages (= Klassenbibliotheken) Packages erstellen Packages importieren Packages verwenden Standard Packages 2 Code-Reuse Einbinden von bereits (selbst-/fremd)
MehrGroß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,
MehrJava 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
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrFactory 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
MehrEine 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,
MehrProgrammiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrGetName(), 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
Mehr5. 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:
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger
Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 16. Juli 2005 Dr. Alfons Huhn, Timotheus Preisinger Informatik II Hinweise: Die Bearbeitungszeit beträgt 90 Minuten.
MehrVgl. Oestereich Kap 2.7 Seiten 134-147
Vgl. Oestereich Kap 2.7 Seiten 134-147 1 Sequenzdiagramme beschreiben die Kommunikation/Interaktion zwischen den Objekten (bzw. verschiedenen Rollen) eines Szenarios. Es wird beschrieben, welche Objekte
MehrJavakurs 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,
MehrSoftware 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
MehrBeispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf
16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen
MehrZä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 --
Mehr4 Vererbung, Polymorphie
4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work
MehrArrays von Objekten. 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Übung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrProgrammierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
MehrInstallation der SAS Foundation Software auf Windows
Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrEinfü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
MehrAssoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
MehrÜ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:
MehrEinfache 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"
Mehr5. 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,
MehrObjektorientierung: 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
MehrInternet Explorer Version 6
Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster
MehrOperationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2
Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2 von Christoph Knabe http://public.beuth-hochschule.de/~knabe/ Ch. Knabe: Operationalisierbare Qualitätskriterien
Mehr