Klausur Software-Entwicklung September 00
|
|
- Linus Beckenbauer
- vor 6 Jahren
- Abrufe
Transkript
1 Aufgabe 1: Wahrheitstafeln ausgeben (ca. 8 Punkte) Matrikelnr : Ergänzen Sie in folgendem Programm, eine rekursive Funktion, die eine Boole'sche Wahrheitstafel für N Variablen ausgibt. Die Zahl N soll frei wählbar sein und soll Ihrer Funktion als Parameter übergeben werden. Beispiel: Vorgabe: N: 3 Ausgabe: false false false false false true false true false false true true true false false true false true true true false true true true Gefordert ist eine rekursive Lösung für beliebige N zu finden. (Die Formatierung der Ausgabe ist nicht wichtig.) public class A1 public static void main( String[] args ) // hier startet das Programm int N = 3 ; // Anzahl der Variablen soll Ihrer Funktion als Parameter übergeben werden wahrheitstafel(n,""); // Hier sollen Sie Ihre Funktion aufrufen // Ende der main-funktion // Hier sollen Sie Ihre Funktion codieren: public static void wahrheitstafel(int N, String s) if (N==0) System.out.println(s); // Rekursionsabbruchzweig else wahrheitstafel(n-1,s+"false\t"); // Problemreduktion auf N-1 wahrheitstafel(n-1,s+"true\t"); // Problemreduktion auf N-1 // Ende der Klasse A1 Alternativ konnte man, anstatt des Strings, auch ein boolean- oder int-array benutzen. Zugelassen war auch, dass man die Zahlen von (Marth.pow(2,N))-1 bis 0 in der Binär- Darstellung ausgegeben hat, die Methode musste allerdings REKURSIV funktionieren(war natürlich keine sehr schöne Lösung).
2 Aufgabe 2: Präfix-Listen (ca. 6 Punkte ) Gegeben sind eine Klasse Liste und eine Klasse Element und zwei Listen liste1 und liste2, in die Zahlen eingefügt werden. Ergänzen Sie in der Klasse Liste eine Funktion präfix, die als Funktionsergebnis zurückliefert, ob Liste liste1 dieselbe Zahlenfolge enthält wie eine Liste liste2 oder wie ein Anfangsstück von liste2. (Beispiel: Wenn liste2 die Zahlenfolge 1,2,3,4 enthält, dann sind die Listen mit den Zahlen 1 oder 1,2 oder 1,2,3 oder 1,2,3,4 Präfix von liste2, aber die Listen mit den Zahlenfolgen 2,3 oder 2,1 oder 1,2,3,4,5 oder 1,3,2,4 sind nicht Präfix von liste2.) Ergänzen Sie den Aufruf Ihrer Funktion präfix in der main-funktion. (Es ist egal, ob Sie Ihre Funktion präfix als Instanzmethode oder als Klassenmethode implementieren.) public class Liste Element start ; void insert ( int i ) start = new Element ( i, start ) ; // Als Klassenmethode boolean static präfix ( Liste list1, Liste list2 ) Element curr1 = list1.start; Element curr2 = list2.start; while ( curr1!= null && curr2!= null ) if (curr1.wert!= curr2.wert ) return false; curr1 = curr1.next; curr2 = curr2.next; // Die Liste1 ist genau dann ein Präfix von Liste2 wenn // die Liste1 komplett durchlaufen wurde. return curr1 == null; // true wenn (curr1 == null), // sonst false. // Als Instanzmethode boolean präfix2 ( Liste list2 ) Element curr1 = this.start; Element curr2 = list2.start; while ( curr1!= null && curr2!= null ) if (curr1.wert!= curr2.wert ) return false; curr1 = curr1.next; curr2 = curr2.next; // Die Liste1 ist genau dann ein Präfix von Liste2 wenn // die Liste1 komplett durchlaufen wurde. return curr1 == null; // true wenn (curr1 == null), // sonst false.
3 class Element int wert ; Element next ; Element( int i, Element danach ) wert = i ; next = danach ; public class A2 public static void main( String[] args ) Liste l1 = new Liste ( ) ;... ; l1. insert( 3 ) ; Liste l2 = new Liste ( ) ;... // ***** Ihr Funktionsaufruf: System.out.println("Liste1 ist Präfix von Liste2:" + präfix(l1,l2)); System.out.println("Liste1 ist Präfix von Liste2:" + l1.präfix2(l2));
4 Aufgabe 3: Objektorientierter Entwurf (ca Punkte) Schreiben Sie die Lösung zu 3.1 bis 3.3. in Java hin, jedoch ohne den Rumpf der Methoden (d.h. die Implementierung der Methoden brauchen Sie nicht hinzuschreiben alle anderen für die Java-Klassen benötigten Dinge sollen Sie hinschreiben). Für eine Anwendung benötigen Sie die Klassen Pkw, BenzinPkw und DieselPkw, (Wir gehen davon aus, daß alle Pkw entweder BenzinPkw oder DieselPkw sind.) die Attribute (=Variablen) literverbrauchpro100km, dieselpreis, benzinpreis und sonstigekostenpro100km, sowie die Methoden kraftstoffkostenpro100km( ) und gesamtkostenpro100km( ). Die gesamtkostenpro100km( ) sollen gerade die Summe aus kraftstoffkostenpro100km( ) und sonstigekostenpro100km sein Schreiben Sie eine Klassenhierachie (Vererbungshierarchie) in Java auf Definieren Sie die 4 Attribute so, daß Redundanz vollständig vermieden wird, d.h. daß Attributwerte genau für die Objekte definiert sind, für die sie auch gebraucht werden jedoch ohne unnötig redundante Daten zu speichern Ordnen Sie Methoden kraftstoffkostenpro100km(), gesamtkostenpro100km() und evtl. benötigte Hilfsmethoden so an, daß das Single-Source-Prinzip optimal eingehalten wird (d.h. jede Methode soll möglichst nur 1x codiert werden) und das Geheimnisprinzip optimal eingehalten wird (d.h. alle Attribute und Methoden sollen so privat wie möglich definiert werden). abstract class Pkw private int literverbrauchpro100km; private int sonstigekostenpro100km; abstract protected int kraftstoffpreis(); int kraftstoffkostenpro100km() return literverbrauchpro100km * kraftstoffpreis(); int gesamtkostenpro100km() return kraftstoffkostenpro100km() + sonstigekostenpro100km; class BenzinPkw extents Pkw static private int benzinpreis; protected int kraftstoffpreis() return benzinpreis;
5 class DieselPkw extents Pkw static private int dieselpreis; protected int kraftstoffpreis() return dieselpreis;
6 Aufgabe 4: (ca. 2+4 Punkte ) 4.1. Ergänzen Sie eine Klasse ZeigeWert, die das Visitor-Interface implementiert. ZeigeWert soll so implementiert werden, daß durch die Funktion bearbeiteknoten der Wert eines Knotens auf dem Bildschirm ausgegeben wird Ergänzen Sie die main-funktion so, daß mit Hilfe der Funktion inorder und Ihrer Klasse ZeigeWert alle Knoten des Baumes baum in Inorder-Reihenfolge ausgegeben werden. Sie sollen dabei die Funktion inorder benutzen, d.h. NICHT NOCH EINE rekursive Funktion zur Ausgabe des Baumes programmieren. Die Klasse Knoten sollen Sie unverändert lassen. class Knoten int value ; Knoten l,r ; Knoten(int v)value=v; Knoten(Knoten left, int v, Knoten right) l=left; value=v; r=right; void inorder(visitor a) if (l!=null) l.inorder(a) ; a.bearbeiteknoten( this ) ; if (r!=null) r.inorder(a) ; public class a2 public static void main( String[] args ) Knoten baum = new Knoten( new Knoten( 6 ), 4, new Knoten( new Knoten(3), 7, null ) ) ; // ***** hier sollen Sie die main-funktion ergänzen: baum.inorder(new ZeigeWert()); interface Visitor public void bearbeiteknoten(knoten einkonten); // ***** bitte hier Klasse ZeigeWert ergänzen: class ZeigeWert implements Visitor public void bearbeiteknoten(knoten einknoten ) System.out.println( einknoten.value );
7 Aufgabe 5: (ca. 8 Punkte ) Ergänzen Sie das folgende Programm um eine Funktion matrixquadrat, die eine beliebige quadratische Matrix als Parameter übergeben bekommt und diese Matrix quadriert, d.h. die Matrix mit sich selbst multipliziert, und nur das Ergebnis auf dem Bildschirm ausgibt (zur Ausgabe soll die Funktion matrixausgabe benutzt werden). Der Rechenweg zur Matrixmultiplikation ist an folgendem Beispiel nochmals erklärt: Matrix1: Matrix2: Produkt-Matrix: 5 6 x 1 2 = Der Wert der Produkt-Matrix an der Position [Z,Sp] ist gerade das Skalarprodukt des Vektors in Zeile Z der Matrix1 mit dem Vektor in Spalte Sp der Matrix2. Beispiel: 2*5 + 4*6 = 34. Der Aufruf matrixquadrat( matrix1 ) soll folgende Ausgabe erzeugen: , denn 5*5+6*7 = 67, 5*6+6*8 = 78, 7*5+8*7 = 91, 7*6+8*8 = 106. public class A5 static void matrixausgabe( int[][] matrix ) int größe = matrix.length ; int zeile, spalte ; for ( zeile = 0 ; zeile < größe ; zeile ++ ) for ( spalte = 0 ; spalte < größe ; spalte ++ ) System.out.print( " " + matrix[ zeile ][ spalte ] ) ; System.out.println( ) ; public static void main( String[] args ) int[][] matrix1 = 5,6,7,8 ; matrixquadrat( matrix1 ) ; //************************** hier soll Ihre Funktion folgen: Die Quadrierung von Matrizen erfordert auf jeden Fall drei ineinandergeschachtelte Schleifen: Die beiden äußeren Schleifen durchlaufen die Zeilen und Spalten der Ergebnismatrix, um die Position des Elements zu erhalten, dessen Wert gerade ausgerechnet wird. Die innere Schleife errechnet das Skalarprodukt zweier Vektoren, wie in der Aufgabenstellung angegeben. Da Arrays in Java Objekte sind, ist es notwendig, das Array für die Ergebnismatrix mit new zu erzeugen. Genauso, wie Objektvariablen nach der Erzeugung mit ihrem Default-Wert (bei Zahlentypen also 0) initialisiert sind, sind die Elemente von Arrays nach der Erzeugung mit ihrem Default-Wert initialisiert. Es ist also nicht nötig (aber auch nicht falsch), jedes Element vorab explizit auf 0 zu setzen.
8 public static void matrixquadrat( int[][] matrix ) int länge = matrix.length; int[][] ergebnis = new int[ länge ][ länge ]; for ( int zeile = 0; zeile < länge; zeile++ ) for ( int spalte = 0; spalte < länge; spalte++ ) for ( int spindex = 0; spindex < länge; spindex++ ) ergebnis[ zeile ][ spalte ] += matrix[zeile][spindex] * matrix[spindex][spalte]; matrixausgabe(ergebnis);
9 Aufgabe 6: (ca. 3+3 Punkte ) Gegeben ist folgendes Programm mit einer Funktion nullstelle, die eine Nullstelle einer als Parameter übergebenen Funktion in einem vorgegebenen Intervall [ug,og] durch Intervall-Halbierung sucht. Schreiben Sie eine Funktion schnittstelle, die die Schnittstelle von zwei vorgegeben Funktionen in einem vorgegebenen Intervall berechnet (also die x-koordinate, an der sich die Funktionen schneiden). Ihre Funktion schnittstelle soll die Schnittstelle von zwei Funktionen (z.b. Sinus und Cosinus in einem gegebenen Intervall) berechnen, indem sie die Nullstelle der Differenz-Funktion berechnet Schreiben Sie eine Klasse Differenz für die Implementierung der Differenzfunktion zweier als Parameter übergebener Funktionen Benutzen Sie die Klasse Differenz und die vorhandene Funktion nullstelle, um Ihre Funktion schnittstelle zu implementieren. (Sie sollen voraussetzen, daß nullstelle und schnittstelle nur für solche Funktionen und solche Intervalle [ug,og] aufgerufen wird, für die es genau eine Nullstelle bzw. genau einen Schnittpunkt gibt.) interface Funktion double at(double x) ; // Funktionswert an der Stelle x class Sinus implements Funktion public double at(double x) return Math.sin(x) ; class Cosinus implements Funktion public double at(double x) return Math.cos(x) ; public class A6 public static void main( String[] args ) Funktion f = new Sinus() ; System.out.println( nullstelle( f, -1.0, 2.0, 0.01 ) ) ; Funktion f2 = new Cosinus() ; System.out.println( schnittstelle( f, f2, 0, 2.0, 0.01 ) ); static double nullstelle( Funktion f, double ug, double og, double eps ) double m=(ug+og)/2 ; if (og-ug < eps) return m ; if ( f.at(ug) * f.at(m) <= 0 ) return nullstelle( f, ug, m, eps ) ; else return nullstelle( f, m, og, eps ) ; // ****** hier ergänzen Sie bitte Ihre Funktion schnittstelle static double schittstelle (Funktion f, Funktion g double ug, double og, double eps ) return nullstelle (new Differenz( f, g ), ug, og, eps );
10 // ******** hier ergänzen Sie bitte Ihre Klasse Differenz: class Differenz implements Funktion Funktion f, g; Differenz ( Funktion f1, Funktion f2 ) f = f1; g = f2; public double at(double x) return f.at(x) g.at(x);
11 Aufgabe 7: Parallele Prozesse (ca. 6 Punkte) Mit parallelen Prozessen soll in einem Java-Programm folgende Situation simuliert werden. In einem Computer-Netzwerk steht nur ein Drucker zur Verfügung, der die Druckaufträge von mehreren Benutzern bearbeiten muss. Natürlich kann der Drucker zu einem Zeitpunkt immer nur einen Text ausgeben. Andere Druckaufträge werden solange zurückgestellt. Falls gar keine Druckaufträge mehr vorliegen, wartet der Drucker untätig auf Arbeit. Es ist bereits ein Programmrahmen vorgegeben, der den Drucker und die einzelnen Druckaufträge durch jeweils einen Thread modelliert. Ergänzen Sie in der Klasse Drucker die fehlenden drei Methoden warteaufauftrag, löscheauftrag und gibauftragandrucker. Implementieren Sie die Methoden vollständig und so, dass sie zum Programmrahmen passen! // Hauptprogramm Drucker laser = new Drucker(); DruckAuftrag brief = new DruckAuftrag("Liebe...", laser); DruckAuftrag bericht = new DruckAuftrag("Ergebnisse...", laser); laser.start(); brief.start(); bericht.start(); // Programmrahmen class DruckAuftrag extends Thread private String text; private Drucker ziel; // Text, der gedruckt werden soll // Drucker, auf dem gedruckt werden soll DruckAuftrag (String s, Drucker d) text = s; ziel =d; public void run () // wird von jedem Druckauftrag-Prozess ausgeführt ziel.gibauftragandrucker(text); // Text beim Drucker abliefern class Drucker extends Thread private String aktuellertext; // Text, des gerade bearbeiteten Druckauftrags // oder null, falls es momentan nichts zu drucken gibt Drucker () aktuellertext = null; // Drucker hat momentan nichts zu tun public void run () // wird vom Drucker-Prozess ausgeführt while(true) // immer wieder einen Druckauftrag bearbeiten warteaufauftrag(); drucketext(aktuellertext); // hier wird auf Papier gedruckt löscheauftrag(); void drucketext (String text)... // soll nicht implementiert werden // hier fehlen noch warteaufauftrag, löscheauftrag und gibauftragandrucker // Platz für die Lösungs gibt¹s auf der nächsten Seite...
12 Aufgabe 7: Parallele Prozesse (Fortsetzung) // hier fehlen noch warteaufauftrag, löscheauftrag und gibauftragandrucker synchronized void warteaufauftrag () // Drucker wartet, falls es gerade nichts zu drucken gibt while (aktuellertext == null) try wait(); catch (InterruptedException ie) synchronized void löscheauftrag () aktuellertext = null; // Auftrag löschen, nichts mehr zu tun notifyall(); // wartende Druckaufträge benachrichtigen synchronized void gibauftragandrucker (String t) // warten bis aktueller Auftrag fertig gedruckt wurde while (aktuellertext!= null) try wait(); catch (InterruptedException ie) aktuellertext = t; // Text als aktuellen Auftrag eintragen notifyall(); // Drucker benachrichtigen, dass es Arbeit gibt // Ende der Klasse Drucker
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
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
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,
MehrThread-Synchronisation in in Java. Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen
Thread-Synchronisation in in Java Threads Wechselseitiger Ausschluss Bedingte Synchronisation Beispiel: Warteschlangen Die Klasse Thread Die Die Klasse Thread gehört zur zur Standardbibliothek von von
MehrParallele Prozesse. Prozeß wartet
Parallele Prozesse B-66 Prozeß: Ausführung eines Programmes in seinem Adressraum (zugeordneter Speicher) Parallele Prozesse: gleichzeitig auf mehreren Prozessoren laufende Prozesse p1 p2 verzahnte Prozesse:
MehrBäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.
Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
Mehr2.2 Prozesse in Java
2.2 Prozesse in Java! Java sieht kein Schlüsselwort für Prozesse vor, sondern bestimmte Klassen und Schnittstellen. Mit anderen Worten: der Prozessbegriff wird mit Mitteln der Objektorientierung eingeführt.
MehrAllgemeine Informatik II SS :30-13:30 Uhr
TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer
MehrMusterlö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
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
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
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
Mehr5. Threads, Serverprozesse und Benachrichtigungen
5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische
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
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
Mehrpublic class SternchenRechteckGefuellt {
Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und
Mehr620.900 Propädeutikum zur Programmierung
620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE
MehrHochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6
Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6 Datum, Uhrzeit: 24. 01. 2011, 10.30 Uhr Semester: IN1 Note:... Prüfer: Prof. Meixner Dauer: 60 Min. Hilfsmittel: keine Punkte:... Diese Prüfung
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen
MehrKapitel 1: Anforderungen an moderne Software und ihre Umsetzung in Java
Kapitel 1: Anforderungen an moderne Software und ihre Umsetzung in Java 1 Anwendungs-Anforderungen an Software-Architekturen Bisher unterstützte Geschäftsprozesse sollen zuverlässig / fehlerfrei effizient
MehrInformatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {
Universität Augsburg, Institut für Informatik Sommersemester 2006 Prof. Dr. Werner Kießling 08. Juni. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Cloneable Tree.java Informatik II
MehrProgrammieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
MehrObjektorientierte Programmierung OOP Programmieren mit Java
Übungen: 6 Schleifen Objektorientierte Programmierung OOP Programmieren mit Java 1. do-schleife 2. while-schleife 3. a) c) Verschiedene for-schleifen 6 Schleifen Übungen 4. for-schleife: halber Tannenbaum
MehrProgrammentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004
Programmentwicklung I für Hörer anderer Fachrichtungen -Wintersemester 2003/04- Abschlussklausur 20.02.2004 Name : Vorname : Matrikelnummer : Hauptfach : Nebenfach/Fachrichtung Hinweise : 1. Überprüfen
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
Mehr1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
MehrJava-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
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"
Mehr1. Grundlegende Konzepte in Java (6 Punkte)
1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt
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
MehrBinärbäume. Prof. Dr. E. Ehses, 2014 1
Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung
MehrGeordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
Mehr5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
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
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 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
MehrZur Erinnerung: Threads. Threadverwaltung. Threads: Prioritäten. Beispiel Flugbuchungsprogramm. Nichtdeterminismus
Zur Erinnerung: Threads Programmierung (fortgeschrittene Konzepte) Threads, Monitore, Semaphore und speisende en Wolf-Ulrich Raffel (uli@wuraffel.de) Möglichkeiten, Threads zu definieren Bildung einer
MehrDr. Monika Meiler. Inhalt
Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
MehrObjektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
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
Mehr5 Grundlagen der Java-Syntax
5 Grundlagen der Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berücksichtigt werden müssen. 5.1 Grundsätzliches zur Syntax von Java Programmen Zunächst sollten
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,
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging
Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
MehrFortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor
Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor Name Matrikelnummer Aufgabe Punkte Aufgabe Punkte Zwischensumme 1 6 2 8 3 12 4 18 5 20 64 6 9 7 17 8 18 9 12 Summe 120
MehrVersuchsziele. Grundlagen. Überblick: FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem. 3.
Hochschule Harz 3. Labor Threads FB Automatisierung und Informatik Betriebssysteme Thema: Bounded-Buffer-Problem Versuchsziele Vertiefung im Verständnis der Thread- und Semaphor-Programmierung. Grundlagen
MehrEinstieg in die Informatik mit Java
Vorlesung vom 07.01.2008 Übersicht 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren Warm-Up zum Jahresbeginn 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme
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-
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
MehrBetreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung
SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte
MehrJAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
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
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
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 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
MehrPIWIN 1 Übung Blatt 5
Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:
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
MehrBäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
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
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)
MehrAutor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH
Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich
MehrInformatik II Musterlösung
Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,
Mehr1. Der Einstieg in Java. Was heißt Programmieren?
1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung
MehrInf 12 Aufgaben 14.02.2008
Inf 12 Aufgaben 14.02.2008 Übung 1 (6 Punkte) Ermitteln Sie eine mathematische Formel, die die Abhängigkeit der Suchzeit von der Anzahl der Zahlen N angibt und berechnen Sie mit Ihrer Formel die durchschnittliche
MehrJava-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
MehrSchritt 1 - Ein Spielfeld
Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier
MehrPräzedenz von Operatoren
Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit
MehrAuD-Tafelübung T-B5b
6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit
MehrJava 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
MehrBearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.
Fakultät IV Elektrotechnik/Informatik Klausur Einführung in die Informatik I für Elektrotechniker Name:... Matr.-Nr.... Bearbeitungszeit: 120 Minuten Bewertung (bitte offenlassen : ) Aufgabe Punkte Erreichte
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
MehrPraktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel
Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String
MehrWiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung
Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben
MehrLösungsvorschläge. zu den Aufgaben im Kapitel 4
Lösungsvorschläge zu den Aufgaben im Kapitel 4 Aufgabe 4.1: Der KNP-Algorithmus kann verbessert werden, wenn in der Funktion nexttabelle die Zuweisung next[tabindex] = ruecksprung; auf die etwas differenziertere
MehrEINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
Mehr6 Speicherorganisation
Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
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
MehrInformatik B von Adrian Neumann
Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000
MehrHochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme
Ziele sind das Arbeiten mit Funktionen, sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 4: Diese Aufgabe basiert auf der Aufgabe 3.
MehrVariablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
MehrTutoraufgabe 1 (Programmanalyse):
Prof. aa Dr. M. Müller Programmierung WS15/16 C. Aschermann, J. Hensel, J. Protze, P. Reble Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je 3 Studierenden aus der gleichen Kleingruppenübung
MehrTeil 1: Grundeigenschaften von Rechnern und Software [10P]
Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software [10P] Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch
MehrMB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am
MB-ALG, SS1 Seite 1 Hauptklausur, geschrieben am.07.01 Vorname Nachname Matrikel-Nr Diese Klausur ist mein letzter Prüfungsversuch (bitte ankreuzen): Ja Nein Ihre Lösung für Aufgabe 1 können Sie direkt
Mehr1 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
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
Mehr2A Basistechniken: Weitere Aufgaben
2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen
MehrDistributed Computing Group
JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
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 Programmierung Blockkurs Java
Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()
MehrHandbuch für die Erweiterbarkeit
Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6
Mehr