Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei
|
|
- Gitta Bretz
- vor 6 Jahren
- Abrufe
Transkript
1 Lösungsvorschläge zur Klausur zum Kurs 1618 Sommersemester 2001 am Aufgabe 1 a) Benutzungsbeziehung: class Kennzeichen class Fahrzeug boolean gueltigeskennzeichen (Kennzeichen kz) Objekte der Klasse Fahrzeug benutzen Objekte der Klasse Kennzeichen. b) Hat-ein-Beziehung: class Raeder class Fahrzeug Raeder raeder; Ein Objekt der Klasse Fahrzeug " hat ein Objekt der Klasse Raeder. c) T:eil-von-Beziehung: class Raeder class Fahrzeug Raeder raeder; 1
2 Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ein Objekt nicht direkter Teil zweier unterschiedlicher Objekte sein. In Java kann die Hat-ein-Beziehung syntaktisch nicht von der Teil-von-Beziehung unterschieden werden (deshalb auch das gleiche Beispiel wie unter 2)). Man muss in Java selbst dafür sorgen, dass nur das betrachtete B-Objekt eine Referenz auf " sein A-Objekt hat. In anderen Programmiersprachen wie z.b. C++ kann man eine solche exklusive Beziehung mit Hilfe der Sprache explizit ausdrücken. ffl Erreichbarkeitsbeziehung: class A class B A a; class C B b; Von Objekten der Klasse C aus kann man Objekte der Klasse A erreichen ffl Ist-ein-Beziehung: class Fahrzeug class Auto extends Fahrzeug Jedes Auto-Objekt ist ein Fahrzeug-Objekt. b) Beim Übergang von der prozeduralen zur objektorientierten Programmierung hat die Ist-ein-Beziehung eine besondere Bedeutung erlangt. Im Zusammenhang mit der objektorientierten Programmierung wurde explizites Subtyping (im Gegensatz zu bereits vorhandenem impliziten Subtyping wie z.b. automatische Konvertierung von int nach long in C) als ein Möglichkeit eingeführt, Klassifikationen von Objekten programmtechnisch umzusetzen. Gemeinsame Eigenschaften von Objekten können in einer gemeinsamen Superklasse und die spezielleren Eigenschaften in Subklassen festgelegt werden. Objekte der Subklassen können an allen Stellen verwendet werden, wo Objekte der Superklasse(n) auftreten. Die Objekte der Subklassen " sind auch Objekte der Superklasse(n). 2
3 Damit wird eine einheitliche Verarbeitung von Objekten verschiedener Ausprägung mit bestimmten gemeinsamen Eigenschaften möglich. c) In dem Beispiel treten folgende Arten von Beziehungen auf: Benutzungsbeziehung Hat-ein-Beziehung Ist-ein-Beziehung 1. Benutzungsbeziehung: Zwischen den Klassen Fahrzeug und Kennzeichen sowie den Klassen Fahrzeug und Fahrer besteht jeweils eine Benutzungsbeziehung. Begründung: Eine Klasse A benutzt eine Klasse B, wenn 1) Eine Methode eines A-Objekts eine Methode eines B-Objekts aufruft. 2) Eine Methode eines A-Objekts ein B-Objekt erzeugt. 3) Eine Methode eines A-Objekts ein B-Objekt als Parameter übergeben bekommt. 4) Eine Methode eines A-Objekts ein B-Objekt als Ergebnis zurückgibt. Beziehung zwischen den Klassen Fahrzeug und Kennzeichen : Die Klasse Fahrzeug benutzt die Klasse Kennzeichen, da 3) gilt. Sowohl die Methode gueltigeskennzeichen, als auch die Methode fahrerdesfahrzeugs der Klasse Fahrzeug haben einen Parameter vom Typ Kennzeichen. Beziehung zwischen den Klassen Fahrzeug und Fahrer: Die Klasse Fahrzeug benutzt die Klasse Fahrer, da 2) und 4) gelten. Die Methode fahrerdesfahrzeugs der Klasse Fahrzeug hat einen Rückgabewert vom Typ Fahrer. Außerdem wird innerhalb dieser Methode ein Fahrer-Objekt erzeugt. 2. Hat-ein-Beziehung: Zwischen der Klasse Fahrzeug und der Klasse Raeder besteht eine Hat-ein-Beziehung. Begründung: Eine Klasse A steht in einer Hat-ein-Beziehung zu einer Klasse B, wenn ein Objekt der Klasse A ein Attribut hat, das ein Objekt vom Typ B (z.b. C++) oder eine Referenz auf ein Objekt vom Typ B aufnehmen kann. Da innerhalb der Klasse Fahrzeug ein Attribut vom Typ Raeder deklariert ist, hat jedes Fahrzeug-Objekt ein Attribut, das eine Referenz auf ein Raeder-Objekt enthalten kann. 3. Ist-ein-Beziehung: Zwischen der Klasse Auto und der Klasse Fahrzeug besteht eine Ist-ein-Beziehung. Begründung: Eine Klasse A steht in einer Ist-ein-Beziehung zu einer Klasse B, wenn A Subtyp von B ist. D.h. jedes Objekt vom Typ A ist an allen Programmstellen zulässig, an denen ein Objekt vom Typ B zulässig ist; jedes A-Objekt ist auch ein B-Objekt. Da die Klasse Auto von der Klasse Fahrzeug abgeleitet ist, steht die Klasse Auto in einer Ist-ein-Beziehung zur Klasse Fahrzeug. Aufgabe 2 a) Ein Objekt vom Typ B besitzt zwei Attribute. Das int-attribut i aus das Klasse B und das int-attribut i aus der Klasse A. Weitere Erläuterung: Sei x eine Referenz auf ein 3
4 B-Objekt vom statischen Typ B. Da Attribute statisch gebunden werden greift man mit x.i auf die Instanz des Attributes i der Klasse B zu. Will man auf die Instanz des Attributes i aus der Klasse A zugreifen, so muss x auf den Typ A gecastet werden: ((A)x).i b) Die lokale Variable ar speichert eine Referenz auf ein Array vom statischen Typ A[], d.h. das Array speichert Referenzen auf Objekte vom statischen Typ A. Somit hat der Ausdruck ar[1] den statischen Typ A. Bei der Initialisierung des Arrays wird an der 1-ten Stelle ein Objekt vom Typ B gespeichert. Dies ist möglich, da B Subtyp von A ist. Der dynamische Typ des Ausdrucks ar[1] ist also B. c) Der Ausdruck ar[1].i liefert den Wert 1, da der statische Typ von ar[1] A ist und Attributzugriffe statisch gebunden werden. d) Es wird 100 ausgegeben. Die Implementierung der Methode m aus der Klasse A wird ausgeführt und liefert den Wert der Attributinstanz i aus Klasse A*100; e) Es wird ausgegeben. Die Variable ist von statischen Typ A und referenziert ein B-Objekt. Der Methodenaufruf wird also dynamisch an das m aus B und die Benutzung des Attributes i in diesem m statisch an das i aus B gebunden. Ergebnis 10*1000. f) Es wird 1ausgegeben, da a vom statischen Typ A ist. Also wird das i aus A ausgegeben. g) Es wird ausgegeben. Die test2-methode aus B wird ausgeführt. Dann wird die Methode n aus A ausgeführt, da Bnvon A erbt. Der implizite Parameter bei der Ausführung von n ist jedoch dasb-objekt. Statisch ist das this in der Methode n in A vom Typ A, dynamisch enthält es jedoch ein B-Objekt, ist also dynamisch vom Typ B. Der Attributzugriff auf das Attribut i wird statisch gebunden und der Methodenaufruf der Methode m dynamisch, also an die Methode m in B. Das i in der Methode m in B dann wiederum statisch. So ergibt sich 1+10*1000. h) Auf einem Test-Objekt wird die Methode test1 aufgerufen. In test1 wird ein Array, dass Objekte des statischen Typs A speichert, erzeugt und zwei Objekte, eines vom Typ A und eines vom Typ B darin gespeichert. Dann wird der gegebene Ausdruck ausgewertet: ar[0].i liefert den Wert 1,da Attribute statisch gebunden werden. ar[0] hat dynamisch den Typ A, somit wird die Methode m aus A ausgeführt, die 1 Λ 100 = 100 als Ergebnis von ar[i].m() liefert. ar[1] hat zwar dynamisch den Typ B statisch jedoch den Typ A, somit wird die Attributinstanz der Klasse A benutzt, Ergebnis von ar[1].i ist 1. ar[i] hat dynamisch den Typ B, also wird m aus B ausgeführt. dies führt zu 10 Λ 1000 = als Ergebnis für ar[1].m(). An Stelle 5 wird also ausgegeben. i) Statisch hat die Variable this an der gekennzeichneten Stelle immer den Typ A. Dynamisch kann sie jedoch Objekte beliebiger Subtypen von A referenzieren. Diese könnten z.b. die Methode erben oder mit super aufrufen. 4
5 Aufgabe 3 Wir möchten vorweg schicken, dass es sich bei dieser Aufgabenstellung um ein sehr praxisnahes Beispiel handelt. Eine Sicherheitslücke nach diesem Strickmuster war im Paket java.security des JDK enthalten. a) Angreifer können sich mittels der Methode holekennungen eine Referenz auf das String- Feld holen, das die Kennungen enthält. Somit können sie einzelne Elemente dieses Felds austauschen. b) Der Angriff aus Teilaufgabe a) kann wie folgt implementiert werden: Der Angreifer erzeugt ein neues Befugnis-Objekt und übergibt es an das Umgebung-Objekt. Nachdem dieses die Kennungen eingetragen hat, holt sich der Angreifer das String-Feld und besetzt es mit neuen Werten. Dadurch, dass Umgebung und Angreifer das gleiche String-Feld referenzieren, wurden der Umgebung somit neue Kennungen untergeschoben. package Angreifer; import System.*; public class Attacke public static void angreifen(umgebung u) Befugnis bef = new Befugnis(); u.einfuegenbefugnis(bef); String[] daten = bef.holekennungen(); daten[0] = "Meine Kennung"; c) Um den obigen Angriff zu vereiteln, muss man verhindern, dass der Angreifer eine Referenz auf das String-Feld der Umgebung bekommt. Dies erreicht man, indem man eine Kopie des Felds zurückliefert, so dass Nutzer zwar die Kennungen auslesen, aber nicht manipulieren können. Das Kopieren des Feldes geschieht entweder mit einer Schleife oder durch die von Object geerbte Methode clone: public class Befugnis protected String[] kennungen; public Befugnis() kennungen = new String[5]; public String[] holekennungen() return (String[])kennungen.clone(); Hinweis: Es ist nicht möglich, den Zugriffsmodus der Methoden holebefugnis oder holekennungen zu verändern, da sonst Punkt 3 der Aufgabenstellung nicht mehr möglich wäre. 5
6 d) Eine andere Möglichkeit für Angreifer ergibt sich daraus, dass das Attribut kennungen der Klasse Befugnis protected deklariert ist. Dadurchkönnen Subklassen von Befugnis darauf zugreifen. Man kann also einen Angreifer als Subklasse von Befugnis deklarieren und so direkt auf die Kennungen zugreifen. e) Bei der Implementierung des zweiten Angriffs ist darauf zu achten, dass ein Attacke- Objekt an die Umgebung übergeben wird und nicht eine Instanz von Befugnis. Andernfalls wäre das Attribut kennungen in Attacke nicht zugreifbar. package Angreifer; import System.*; public class Attacke extends Befugnis public static void angreifen(umgebung u) Attacke at = new Attacke(); u.einfuegenbefugnis(at); at.kennungen[0] = "Meine Kennung"; f) Der zweite Angriff kann vereitelt werden, indem das Attribut kennungen nicht protected, sondern mit default access deklariert wird. Dadurch können Umgebung-Objekte immer noch auf das String-Feld zugreifen (Punkt 2 der Aufgabenstellung), aber Angreifer (d.h. Klassen in anderen Paketen) nicht: public class Befugnis String[] kennungen; public Befugnis() kennungen = new String[5]; public String[] holekennungen() return (String[])kennungen.clone(); Eine andere, wenn auch weniger flexible Möglichkeit ist, die Klasse Befugnis final zu deklarieren, sodass keine Subklassen eingeführt werden können: public final class Befugnis protected String[] kennungen; public Befugnis() kennungen = new String[5]; public String[] holekennungen() return (String[])kennungen.clone(); Aufgabe 4 a) Die folgende Implementierung leistet das Gewünschte. Die registrierten ActionListener- Objekte werden in einem Vector-Objekt gespeichert. Wird die processactionevent- Methode aufgerufen, so werden alle registrierten ActionListener-Objekte mit einer 6
7 Enumeration aufgezählt und die actionperformed-methode wird aufgerufen. Da die nextelement-methode nur Objekte vom statischen Typ Object zurückliefert muss zuvor auf ActionListener gecastet werden. import java.util.*;import java.awt.event.*; public class EventDispatcherImpl implements EventDispatcher private Vector listener = new Vector(); public void addactionlistener(actionlistener al) listener.add(al); public void processactionevent(actionevent ae) Enumeration e = listener.elements(); while(e.hasmoreelements()) ((ActionListener)e.nextElement()).actionPerformed(ae); b) Um die actionperformed-methoden parallel auszuführen, erzeugen wir zu diesem Zweck jeweils ein neues Thread-Objekt. Dazu bilden wir einen anonymen Subtyp von Runnable und überschreiben die run-methode entsprechend. Dieses Runnable-Objekt wird einem Thread-Konstruktor übergeben und der Thread wird gestartet. Da ae und e in der anonymen inneren Klasse verwendet werden, müssen diese beiden lokalen Variablen als final gekennzeichnet werden. Es sind also nur Ändereungen an der processactionevent- Methode notwendig. public void processactionevent(final ActionEvent ae) final Enumeration e = listener.elements(); while(e.hasmoreelements()) new Thread(new Runnable() public void run() ((ActionListener)e.nextElement()).actionPerformed(ae); ).start(); c) Die eine Situation wird in der Teilaufgabe d) behandelt. Zwei Threads rufen gleichzeitig die processactionevent-methode auf. Eine zweite Situation kann dann entstehen, wenn sich ein ActionListener-Objekt zweimal registriert. Dann wird zweimal ein Arbeitsthread erzeugt und die actionperformed-methode dieses Objektes kann parallel ausgeführt werden. d) Um diese Teilaufgabe zu lösen muss einfach nur die processactionevent-methode als synchronized gekennzeichnet werden. Somit kann immer nur immer eine einziger Thread diese Methode auf einem EventDispatcher-Objekt ausführen. 7
8 e) In dieser Aufgabe soll verhindert werden, dass die actionperformed-methode von zwei verschiedenen Threads gleichzeitig aufgerufen wird. Da die Aufrufe anderer Methoden nicht beeinflusst werden sollen, ist es nicht möglich, auf den ActionListener-Objekten selbst zu synchronisieren. Stattdessen wird für jedes registrierte ActionListener-Objekt ein eigenes Objekt erzeugt, auf dem sich die Arbeitsthreads eines EventDispatcher- Objektes synchronisieren. Diese werden ebenfalls in einem Vector gespeichert. Die Zuordnung zwischen beiden geschieht über die Positionen, an denen die Objekte in den Vektoren gespeichert sind. Die folgende Implementierung leistet das Gewünschte: import java.util.*; import java.awt.event.*; public class EventDispatcherImpl implements EventDispatcher private Vector listener = new Vector(); private Vector monitors = new Vector(); public void addactionlistener(actionlistener al) listener.add(al); monitors.add(new Object()); public void processactionevent(final ActionEvent ae) for(int j=0;j<listener.size();j++) final int i=j; new Thread(new Runnable() public void run() synchronized(monitors.elementat(i)) ((ActionListener)listener.elementAt(i)).actionPerformed(ae); ).start(); f) Theoretisch unendlich viele. Praktisch so viele bis kein Speicher und keine Rechenzeit mehr vorhanden sind. Bei Ausführung der main-methode wird ein T-Objekt erzeugt, dass Subtyp von Thread ist. Dazu wird der Konstruktor ausgeführt. Die Ausführung der start-methode startet den neuen Thread und kehrt sofort zurück. Der erste Thread wird nun unterbrochen und der zweite ausgeführt und führt die run-methode aus. Diese erzeugt wieder ein T-Objekt und führt damit den Konstruktor aus. Der jetzt laufende Thread wird nach Ausführen der start-methode wieder unterbrochen usw. Somit könnten alle Threads innerhalb des T-Konstruktors nach Ausführung der start-methode unterbrochen werden und ein Thread liefe weiter. Dies könnte so lange weitergehen, bis der Speicher erschöpft ist. Der Garbage-Collector würde die Thread-Objekte nicht entfernen, da noch Code für sie ausgeführt wird. 8
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
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
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
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrFragen zur OOP in Java
- 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
MehrEinstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
MehrEinstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList
MehrObjektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
MehrInnere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes
Mehr4. Vererbung Die Klasse Object. Die Klasse Object
4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1
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/
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrProgrammieren in Java
Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
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
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
Mehr4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:
4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende
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
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
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
MehrVererbung, Polymorphie
Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:
Mehr14 Abstrakte Klassen, finale Klassen, Interfaces
Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt. Für eine abstrakte Klasse
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
Mehr14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen
Auswertung von Ausdrücken Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält, heißt ebenfalls abstrakt.
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
MehrVorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus
Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:
MehrEinführung in die Programmierung
Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrDr. Monika Meiler. Inhalt
Inhalt 15 Parallele Programmierung... 15-2 15.1 Die Klasse java.lang.thread... 15-2 15.2 Beispiel 0-1-Printer als Thread... 15-3 15.3 Das Interface java.lang.runnable... 15-4 15.4 Beispiel 0-1-Printer
MehrKapitel 4: Klassen und Unterklassen
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 4: Klassen und Unterklassen Folie 54 : Unterklassen Die Bildung von Unterklassen und das Konzept der Vererbung sind
Mehr1 Abstrakte Klassen, finale Klassen und Interfaces
1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrPolymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch
MehrDeklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse
Innere Klassen in Java Java 1.0: nur top-level Klassen Seit Java Version 1.1: Innere Klassen Deklaration einer Klasse innerhalb einer anderen Klasse Illustration Eigenschaften Vorteile Anwendungsmöglichkeiten
MehrBeispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
MehrEinführung in die Programmiersprache Java II
Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden
MehrProgrammierkurs Java. Vererbung. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.
Programmierkurs Java Vererbung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Ähnlichkeiten zwischen Klassen? Beispiel: Klassen Auto
MehrSilke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch
MehrMethoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik
Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrSommersemester Implementierung I: Struktur
Sommersemester 2003 Implementierung I: Struktur 2 Aufgabe 3 Implementierung I: Struktur Umfang: 1 Woche Punkte: 50 P. In den ersten beiden Aufgaben wurden die Struktur und das Verhalten des Systems modelliert.
MehrLesen Sie zuerst die Hinweise auf der Rückseite!
Fachbereich Informatik Lehrgebiet Programmiersysteme Prof. Dr. Friedrich Steimann FernUniversität in Hagen D-58084 Hagen (Name, Vorname) (Straße, Nr.) (PLZ) (Wohnort) (Land, falls außerhalb Deutschlands)
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrExkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrProbeklausur Informatik 2 Sommersemester 2013
Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel
MehrProgrammieren I. Kapitel 8. Vererbung
Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte
MehrJava Einführung Vererbung und Polymorphie. Kapitel 13
Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort
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
MehrBeispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
MehrJava für Bauingenieure
1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen
Mehr2. Vererbung und Kapselung
2. Vererbung und Kapselung Die Objekte der Klasse BALL werden im Gegensatz zu den Objekten von KREIS noch nicht graphisch dargestellt. Um die BALL-Objekte auch graphisch darzustellen zu können, muss BALL
MehrSilke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode
Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode
MehrKapitel 5: Interfaces
Liste P: Programmieren mit Java WS 2001/2002 Prof. Dr. V. Turau FH Wiesbaden Kapitel 5: Interfaces Folie 82 : Einleitung Betrachtet man die Programmierleistung für ein Produkt über einen längeren Zeitraum,
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrInstitut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September
MehrVererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrUmsetzung einer Klassenkarte in einer Programmiersprache
Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,
MehrHeute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.
Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis
MehrArten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
MehrStatische Methoden, Vererbung, Benutzereingabe
Statische Methoden, Vererbung, Benutzereingabe Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
MehrAlgorithmen und Datenstrukturen 07
5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7
MehrEinführung in die Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Dienstag Inhaltsübersicht Variablen: Membervariablen und lokale Variablen Referenzvariablen: Arrays und Objekte anlegen Definition von Funktionen: Methoden Konstruktoren
MehrKapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt
MehrVererbung. Oberklassen und Unterklassen
Vererbung Oberklassen und Unterklassen Vererbung ist ein zentrale Bestandteil der Objektorientierung. Man beschreibt damit die Möglichkeit, Eigenschaften und Methoden vorhandener Klassen auf andere (neue)
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,
MehrUniversität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II
Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober 2001 Stefan Holland Informatik II Hinweise: Klausur II Verwenden Sie für Ihre Lösungen ausschließlich
MehrKlausur Software-Entwicklung März 01
Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,
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
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
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
Mehrpue13 January 28, 2017
pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern
MehrEinführung in die Programmierung für NF. Vererbung
Einführung in die Programmierung für NF Vererbung Ziele Vererbungsprinzip der objektorien=erten Programmierung verstehen und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden
MehrBeispiel für überladene Methode
Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter
MehrProgrammierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und
Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und 17.6.2008 Organisatorisches Um auf die Mailingliste aufgenommen zu werden schicke einfach eine
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
Mehr2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article
2.13 Vererbung Klassen modellieren Objekte der realen Welt. Diese sind oft hierarchisch gegliedert. Beispiel: Ein Verlag bietet Bücher und CDs an. Beide Medien sind Artikel des Verlages. Book author: String
MehrObjektorientierte Programmierung und Klassen
Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP
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
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
Mehr