Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2004/2005

Ähnliche Dokumente
Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2005/2006

JAVA KURS COLLECTION

Allgemeine Informatik II

Selbststudium OOP7 & ALG2 Auftrag

Kapitel 12: Java Collection Teil II

Einstieg in die Informatik mit Java

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Java Einführung Collections

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

6. Interfaces Grundlagen der Programmierung 1 (Java)

Programmiermethodik 3. Klausur Lösung

Klausur: Programmierkurs 1, Java, HTML

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

Assoziation und Aggregation

Programmierkurs Java

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Klausur Grundlagen der Programmierung

Klausur: Java (Liste P)

Prüfung Informatik D-MATH/D-PHYS :00 11:00

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Einführung in die Programmierung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die Programmierung und Programmiersprachen (OOP)

Java Generics & Collections

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

java.util. Sebastian Draack Department Informations- und Elektrotechnik Department Informations- und Elektrotechnik JAVA Collection-API

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Algorithmen und Datenstrukturen

Wo sind wir? Rudolf Berrendorf FH Bonn-Rhein-Sieg Programmiersprache Java 338

Musterlösung Stand: 5. Februar 2009

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Softwaretechnik WS 16/17. Übungsblatt 01

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Klausur Einführung in die Informatik I für Elektrotechniker 16. Juli 2003

MPGI 3 Muster-Klausur A

Nützliche Utility-Klassen des JDK

ADT: Java Collections und ArrayList

Java I Vorlesung 6 Referenz-Datentypen

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Java Tools JDK. IDEs. Downloads. Eclipse. IntelliJ. NetBeans. Java SE 8 Java SE 8 Documentation

Programmierkurs Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Klausur zur Einführung in die objektorientierte Programmierung mit Java

3 Objektorientierte Konzepte in Java

4.4.9 Das Java Collection Framework

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen

Algorithmen und Datenstrukturen II

Programmiertechnik II

Hashing. Algorithmen und Datenstrukturen II 1

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2015/16

Programmieren II. Hierarchie von Collections. Vorlesung 3. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010

Gebundene Typparameter

Programmieren 2 02 Maps, Sets, Defensive Programmierung

Teil V. Generics und Kollektionen in Java

Info B VL 14: Java Collections/Reflections

Vorbereitende Aufgaben

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Klausur zu Grundlagen der Programmierung in C

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Webanwendungen mit Java und JavaServerPages

Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl

Programmiermethodik 1. Klausur

Interface. So werden Interfaces gemacht

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Assoziation und Aggregation

Programmierstil. Objektsammlungen. Konzepte. Zwischenspiel: Einige beliebte Fehler... Variablennamen Kommentare Layout Einrückung

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Wuerfel - augenzahl: int + Wuerfel() + wuerfeln() + gibaugenzahl(): int

Einstieg in die Informatik mit Java

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Algorithmen und Datenstrukturen in Java Jiri Spale, Algorithmen und Datenstrukturen in Java 1

Allgemeine Hinweise:

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Objektorientierte Programmierung

3 Objektorientierte Konzepte in Java

Vorlesung Programmieren

Java Einführung Abstrakte Klassen und Interfaces

Vorlesung Programmieren

Diese neuen Gestaltungsmöglichkeiten können nun auf den Web-Anzeigenmarkt angewandt werden: Wissensbaustein»Anzeigenmarkt: CSS-Einsatz«(S.

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

Algorithmen und Datenstrukturen

Prüfung Informatik D-MATH/D-PHYS :00 11:00

Unified-E Standard WebHttp Adapter

Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6

Vom objektorientierten Entwurf zur Implementierung in Java. 2. Dezember 2014

Scheinklausur zur Vorlesung Praktische Informatik I. 12. November Punkteübersicht

Klausur Programmieren 2 SS 2016

Objektorientierte Programmierung

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Software Entwicklung 1

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {

Aufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:

Theorie zu Übung 8 Implementierung in Java

Statische und Nichtstatische Methoden Properties/ Eigenschaften

DOKUMENTATION. CaptchaAd mit Java. Entpacken und Hochladen. Die Schritte zur Integration des CaptchaAd-Modul im Einzelnen. Informationen von CaptchaAd

Grundkonzepte java.util.list

Transkript:

Universität Mannheim Fakultät für Mathematik und Informatik Dr. Heinz Kredel Teilprüfung Software- und Internettechnologie Programmierkurs 1 Wintersemester 2004/2005 Name:................................. Vorname:............................. Matrikel-Nr.:.......................... Studienfach:........................... Hinweise: 1. Überprüfen Sie die Klausur auf Vollständigkeit (13 einseitig bedruckte Seiten). 2. Tragen Sie die Lösungen direkt in die Klausur ein. Benutzen Sie ggf. auch die Rückseiten der Aufgabenblätter. 3. Unterschreiben Sie die Klausur auf dem letzten Blatt. 4. Lösungen auf farbigem Konzeptpapier werden nicht bewertet. 5. Zugelassene Hilfsmittel: nicht programmierbarer Taschenrechner 6. Die Bearbeitungszeit beträgt 66 Minuten. Aufgabe max. Punktzahl erreichte Punktzahl 1 14 2 16 3 10 4 18 5 8 Summe 66 1

Aufgabe 1: Verständnisfragen [14 Punkte] a) [2 Punkte] Erläutern Sie kurz zwei Unterschiede zwischen HTML 4.01 und XHTML 1.0. b) [2 Punkte] Erläutern Sie kurz den Zusammenhang zwischen HTML-Elementen und HTML-Tags. c) [3 Punkte] Wandeln Sie in folgendem Java-Codefragment die for-schleife in eine äquivalente while-schleife um, die keine break-anweisung verwendet. Iterator it; /*... */ for (;;){ if (!it.hasnext()) break; System.out.println(it.next()); } 2

d) [3 Punkte] Korrigieren Sie die Fehler in folgender Java-Methode, die alle Einträge des übergebenen Felds a ausgeben soll: public void printarray(int[] a){ for (int i=1 ; i <= a.length() ; i++){ System.out.println(a[i]); } } e) [4 Punkte] Geben Sie eine Java-Implementation für die durch das folgende UML- Diagramm beschriebene Klasse Ganzzahl an, die eine ganze Zahl repräsentieren soll. 3

Aufgabe 2: XHTML und CSS [16 Punkte] a) [6 Punkte] Schreiben Sie eine gültige XHTML 1.0 Strict Formularseite, mit der man sich für den Mobile Business Workshop an der Uni Mannheim am 22.03.2005 hätte anmelden können. Das Formular soll den Namen, den Vornamen und die Firma des Teilnehmers jeweils in einem Texteingabefeld abfragen, das Platz für 30 Zeichen in der Anzeige hat, über eine Checkbox abfragen, ob der Teilnehmer ein vegetarisches Mittagessen wünscht, einen mit Abschicken beschrifteten Submit-Button enthalten und die Formulardaten mit GET an das CGI-Programm http://www.informatik.uni-mannheim.de/cgi-bin/m-business.cgi übermitteln. Fügen Sie Ihren Code in die folgende Datei ein: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Strict 1.0//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>anmeldung Mobile Business Workshop</title> </head> </html> 4

b) [6 Punkte] Schreiben Sie eine XHTML 1.0 Strict Seite, die einen Ausschnitt aus dem Vortragsprogramm des Workshops mit Hilfe einer zweispaltigen Tabelle darstellt, wobei in der linken Spalte mit der Überschrift Uhrzeit die Uhrzeiten und in der rechten Spalte mit der Überschrift Vortrag die Vortragstitel sowie der Referent stehen und die Vortragstitel Hyperlinks sind, die auf die jeweiligen Vortragsfolien verweisen. Nehmen Sie die folgenden Programmpunkte in Ihre Tabelle auf: 09.00 Uhr: Prof. Dr. Wolfgang Effelsberg, Uni Mannheim: Begrüßung und Einführung, Folien unter http://www.uni-mannheim.de/pi4/folien.html 9.15 Uhr: Dr. Udo Urbanek, SAP AG: What works - What doesn t Work in Mobile Enterprise Business, Folien unter http://www.sap.com/pub/slides.html 10.00 Uhr: Kaffeepause Fügen Sie Ihren Code in die folgende Datei ein: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Strict 1.0//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>m-business Workshop Programm</title> </html> 5

c) [2 Punkte] Geben Sie CSS2 style-rules an, um in der Programmseite des Workshops alle Hyperlinks in Fettschrift und die Tabellenüberschriften und -einträge zentriert in den Tabellenzellen darzustellen. d) [2 Punkte] Beschreiben Sie kurz eine Möglichkeit, diese style-rules in die Seite zu integrieren. 6

Aufgabe 3: Java-Programmierung [10 Punkte] Schreiben Sie eine vollständige Java-Application MinMaxAvg, der über die Kommandozeile ganze Zahlen aus dem Intervall [ 100, 100] übergeben werden. Das Programm soll die kleinste und die größte der übergebenen Zahlen sowie den Durchschnitt der übergebenen Zahlen bestimmen und am Bildschirm ausgeben. Beispiel: > java MinMaxAvg 10 15-3 4 17 min = -3 max = 17 avg = 8.6 Sie können davon ausgehen, dass die übergebenen Zahlen korrekt formatiert sind. 7

Aufgabe 4: Objektorientierung in Java [18 Punkte] Die folgende Klasse verwaltet einen Angestellten. public class Angestellter { private static int aktpersnr ; /* zuletzt vergebene Personalnummer */ private String name ; private final int personalnummer; private int resturlaub ; /* Anzahl der verbleibenden Urlaubstage */ protected int grundgehalt ; private Vorgesetzter vorgesetzter ; /* direkter Vorgesetzter */ /* erzeugt einen neuen Angestellten */ public Angestellter( String name, Vorgesetzter dirvor, int grundgehalt, int urlaub ){ /*... */ } /* gibt genau dann true zurueck, wenn der Urlaub von anzahltage Tagen * erfolgreich beantragt wurde. */ public boolean beantrageurlaub ( int anzahltage ){ /*... */ } public int getjahresgehalt () { return grundgehalt ; } public int getresturlaub () { return resturlaub ; } } public Vorgesetzter getvorgesetzter () { return vorgesetzter ; } Das Interface Vorgesetzter ist wie folgt definiert: public interface Vorgesetzter{ /* gibt genau dann true zurueck, wenn dieser Vorgesetzte dem * Angestellten m anzahltage Urlaub genehmigt. */ public boolean genehmigeurlaub ( Angestellter m, int anzahltage ); } /* Vorgesetzter */ a) [4 Punkte] Implementieren Sie den Konstruktor der Klasse Angestellter in folgender Weise: Falls eine null-referenz als direkter Vorgesetzter übergeben wird, wirft der Konstruktor eine NullPointerException. Die Angestellten erhalten eine fortlaufende Personalnummer. 8

b) [2 Punkte] Geben Sie ein Java-Codefragment an, in dem ein Angestellter-Objekt für Klaus Schulz mit einem Grundgehalt von 32000 und 18 Tagen Resturlaub erzeugt wird. Herr Schulz arbeitet in der Abteilung von Frau Schmidt, die durch das Vorgesetzter-Objekt schmidt repräsentiert wird. c) [2 Punkte] Implementieren Sie die Methode beantrageurlaub, indem Sie genau dann true zurückgeben, wenn der direkte Vorgesetzte den Urlaub genehmigt. 9

d) [10 Punkte] Schreiben Sie eine Angestellter-Subklasse LeitenderAngestellter, die das Vorgesetzter-Interface implementiert und folgende Eigenschaften besitzt: Das Jahresgehalt eines leitenden Angestellten setzt sich zusammen aus dem Angestellten-Grundgehalt und einer zusätzlichen Stellenzulage, die bei der Objekterzeugung festgelegt wird. Ein leitender Angestellter genehmigt seinen Mitarbeitern nach erfolgreicher Prüfung des Resturlaubsanspruchs alle Urlaubsanträge für bis zu 21 Tage. Anträge von Angestellten, die einen anderen direkten Vorgesetzten als ihn selbst haben, lehnt er unbesehen ab. 10

Aufgabe 5: Java Collections Framework [8 Punkte] Während eine Map einem Schlüssel höchstens einen Wert zuordnet, können in einer MultiMap einem Schlüssel beliebig viele Elemente zugeordnet werden. Analog zum Interface java.util.map sei das folgende Java-Interface einer MultiMap gegeben: public interface MultiMap { /* * gibt genau dann true zurueck, wenn diese MultiMap ein mapping fuer * den uebergebenen key enthaelt. */ public boolean containskey ( Object key ); /* * gibt die Werte zurueck, die dem uebergebenen key in dieser MultiMap * zugeordnet sind. Gibt null zurueck, falls fuer den key in dieser * MultiMap keine Werte gespeichert sind. */ public java. util. Set get ( Object key ); } /* * fuegt den Werten, die dem uebergebenen key in dieser MultiMap * zugeordnet sind, den uebergebenen value hinzu */ public void put ( Object key, Object value ); Implementieren Sie eine Klasse HashMultiMap, die mit Hilfe von java.util.hashsets und einer java.util.hashmap das MultiMap Interface implementiert. Falls benötigt, finden Sie auf den nächsten Seiten Auszüge aus den Dokumentationen der Klassen java.util.hashmap und java.util.hashset. 11

java.util.hashmap Constructor Summary HashMap() HashMap(int initialcapacity) HashMap(int initialcapacity, float loadfactor) HashMap(Map m) Constructs an empty HashMap with the default initial capacity (16) and the default load factor (0.75). Constructs an empty HashMap with the specified initial capacity and the default load factor (0.75). Constructs an empty HashMap with the specified initial capacity and load factor. Constructs a new HashMap with the same mappings as the specified Map. java.util.hashmap Method Summary void clear() Object clone() boolean containskey(object key) boolean containsvalue(object value) Set entryset() Object get(object key) boolean isempty() Set keyset() Object put(object key, Object value) void putall(map m) Object remove(object key) int size() Collection values() Removes all mappings from this map. Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned. Returns true if this map contains a mapping for the specified key. Returns true if this map maps one or more keys to the specified value. Returns a collection view of the mappings contained in this map. Returns the value to which the specified key is mapped in this identity hash map, or null if the map contains no mapping for this key. Returns true if this map contains no key-value mappings. Returns a set view of the keys contained in this map. Associates the specified value with the specified key in this map. Copies all of the mappings from the specified map to this map These mappings will replace any mappings that this map had for any of the keys currently in the specified map. Removes the mapping for this key from this map if present. Returns the number of key-value mappings in this map. Returns a collection view of the values contained in this map. java.util.hashset Constructor Summary HashSet() HashSet(Collection c) HashSet(int initialcapacity) HashSet(int initialcapacity, float loadfactor) Constructs a new, empty set; the backing HashMap instance has default initial capacity (16) and load factor (0.75). Constructs a new set containing the elements in the specified collection. Constructs a new, empty set; the backing HashMap instance has the specified initial capacity and default load factor, which is 0.75. Constructs a new, empty set; the backing HashMap instance has the specified initial capacity and the specified load factor. 12

java.util.hashset Method Summary boolean add(object o) void clear() Object clone() boolean contains(object o) boolean isempty() Iterator iterator() boolean remove(object o) int size() Adds the specified element to this set if it is not already present. Removes all of the elements from this set. Returns a shallow copy of this HashSet instance: the elements themselves are not cloned. Returns true if this set contains the specified element. Returns true if this set contains no elements. Returns an iterator over the elements in this set. Removes the specified element from this set if it is present. Returns the number of elements in this set (its cardinality). 13