Lösung - Hochschule Esslingen

Werbung
Fachhochschule Esslingen
Hochschule für Technik
Sommersemester 2003
Zahl der Blätter: 7
Blatt Nummer: 1
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prüfungsfach: Informatik 1/ 2
1 WF 2010
Semester: 2
Hilfsmittel:
Name:
Skript(e), Bücher
Zeit:
Vorname:
120 Minuten
Matr.Nr.:
Teil 1: Grundeigenschaften von Rechnern und Software
Aufgabe 1.1 [3P]
Nennen Sie mindestens 3 Arten von Programmen zur Softwareentwicklung
Editor, Compiler, Linker, Debugger, Interpreter, ...
Aufgabe 1.2 [6P]
Nennen Sie die Rollen bei einem Software-Entwicklungsprojekt
Projektleiter, Systemdesigner, Qualitätsverantwortlicher, Techn. Redakteur, Config. Manager,
Programmierer
Aufgabe 1.3 [6P+2ZP]
Nennen Sie 3 “Arten” von Programmiersprachen, jeweils mit einem Beispiel. Was
versteht man unter einer hybriden Programmiersprache?
Prozedurale/Imperative- (Pascal,C), Objektorientierte (Smalltalk), Funktionale (ML), Logische
(Prolog). Eine hybride Sprache enthält die Eigenschaften mehrerer Arten, z.B. prozedural und
objektorientiert (C++)
Aufgabe 1.4 [2P]
Was versteht man unter strukturierter Programmierung bzw. welche 3 elementaren
Anweisungen werden dabei zur Steuerung des Kontrollflusses verwendet?
Nachvollziehbarer Kontrollfluß durch Verwendung strukturierter Anweisungen und Verzicht auf
Sprünge um die Lesbarkeit/Wartbarkeit von Programmen zu verbessern. Elementare Anweisungen:
Sequenz, Verzweigung, Schleife
Aufgabe 1.5 [3P]
Erläutern Sie den Unterschied zwischen Kopf- und Fußgesteuerten Schleifen. Wann
würden Sie welchen Schleifentyp einsetzen?
Kopfgesteuerte Schleife = abweisende Schleife, wird u.U. gar nicht betreten. Somit Einsatz wenn
Schleifenbedingung am Anfang falsch sein kann (z.B. Referenz==null). Fußgesteuerte Schleife wird
mindestens einmal durchlaufen.
Aufgabe 1.6 [5P]
Erläutern Sie die Gründe für die Wichtigkeit der Lesbarkeit von Programmen und
nennen Sie Maßnahmen zu deren Verbesserung.
Lesbarkeit ist wichtig weil (1) Programme im Team entwickelt werden (2) Mehr Software gewartet
als neu erstellt wird (3) Lesbarkeit das Verständnis verbessert und Fehler vermeiden hilft.
Maßnahmen sind z.B. Einrückung/Formattierung, sinnvolle Namen, Kommentare, kleine Module
Fachhochschule Esslingen
Hochschule für Technik
Sommersemester 2003
Zahl der Blätter: 7
Blatt Nummer: 2
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prüfungsfach: Informatik 1/ 2
1 WF 2010
Semester: 2
Hilfsmittel:
Name:
Skript(e), Bücher
Zeit:
Vorname:
120 Minuten
Matr.Nr.:
Teil 2: Grundlagen der objektorientierten Softwareentwicklung
Aufgabe 2.1 [3P]
Beschreiben Sie den Vorteil der Objektorientierung im Umgang mit Kunden.
Bei der objektorientierung wird das Problem des Kunden “in dessen Sprache” mit Objekten aus der
realen Welt modelliert. Dadurch wird das Verständnis verbessert, die Hürde zwischen realer Welt
und technischer Lösung reduziert und Mißverständnisse / Fehlentwicklungen vermieden.
Aufgabe 2.2 [2P]
Erläutern Sie den Unterschied in der Struktur “klassischer” Programme mit
Funktionen im Vergleich zu objektorientierten Programmen.
Klassische Programme bestehen aus einer (baumförmigen) Funktionshierarchie, objektorientierte
Programme bestehen aus einem Netz von Objekten, die über “Botschaften” kommunizieren.
Aufgabe 2.3 [5P]
Welche Bedeutung hat der Begriff der Kapselung bzw. des Information-Hiding für
die Entwicklung und Wartung von Software (v.a. in Teams)?
Durch Kapselung und Information-Hiding können Objekte / Module Implementierungsdetails
verstecken. Somit können diese jederzeit ohne Konsequenzen für andere Objekte (bzw. deren
Entwickler) geändert werden. Die Kooperation zwischen Objekten erfolgt über Schnittstellen.
Aufgabe 2.4 [5P]
Nennen Sie zu jeder der folgenden Beschreibungen den passenden Begriff
Die Oberklasse aller Klassen
Object
Die Kombination aus Rückgabetyp, Name und Typ der formalen Parameter einer Methode
Signatur der Methode
Verfahren, bei dem ein Ergebnis mit Hilfe einer Schleife berechnet wird
Iteration
Erprobtes Muster zur Lösung von häufig wiederkehrenden Problemen
(Design) Pattern
Beziehung, bei der ein Objekt von einem oder mehreren anderen verwendet wird
Aggregation
Aufgabe 2.5 [5P]
Erläutern Sie folgende Begriffe
abstrakte Klasse:
Eine Klasse, bei der mindestens eine Methode abstrakt, d.h. nicht implementiert ist.(nur Schnittst.)
Vererbung (Spezialisierung, ist-ein Beziehung):
Übernahme aller Einschaften aus einer Oberklasse zur Spezialisierung einer Abstraktion
Fachhochschule Esslingen
Hochschule für Technik
Sommersemester 2003
Zahl der Blätter: 7
Blatt Nummer: 3
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prüfungsfach: Informatik 1/ 2
1 WF 2010
Semester: 2
Hilfsmittel:
Skript(e), Bücher
Name:
Zeit:
Vorname:
120 Minuten
Matr.Nr.:
Teil 3: Elementare Java Syntax
Aufgabe 3.1 [5P]
Wie nennt man die Schlüsselwörter, die in Java zur Implementierung der Kapselung
verwendet werden. Zählen Sie diese in der Reihenfolge von max. Kapselung bis gar
keine Kapselung auf.
Die Zugriffsmodifizierer : “private”, “” (package), “protected”, “public”
Aufgabe 3.2 [5P]
Nennen Sie die Konventionen zur Schreibweise der Namen von Klassen, Variablen
und Konstanten in Java. Welche Schlüsselworte sind zur Definition von Konstanten
notwendig?
Klassen normale Großschreibung, Variablen Kleinschreibung, Konstanten komplett in
Großbuchstaben als final static
Aufgabe 3.3 [5P]
Warum ist Java nicht “richtig objektorientiert”, was sind Wrapper-Klassen und wozu
werden diese benötigt?
In Java gibt es noch primitive Datentypen, deren Werte keine Objekte sind. Für diese Datentypen
stehen Wrapper-Klassen zur Verfügung, die die jeweiligen Werte in ein Objekt verpacken (z.B. zum
Speichern in objektbasierten Containern wie ArrayList). Daneben dienen Wrapper-Klassen auch
zur Konvertierung von und zu Zeichenketten, z.B. Integer.parseInt(String) und Integer.toString(int).
Aufgabe 3.4 [5P]
Erläutern Sie anhand eines Beispiels die Syntax einer for-Schleife in Java und
wandeln Sie diese anschließend in eine äquivalente while-Schleife um.
for (int i=0; i<5; i++) {
// mach was
}
int i = 0, Deklaration der Schleifenvariablen und Anfangsbedingung
i<5, Abbruchbedingung
i++, Zustandsänderung für Schleifenfortschritt und späteren Abbruch
int i = 0;
while (i<5) {
// mach was
i++;
}
Fachhochschule Esslingen
Hochschule für Technik
Sommersemester 2003
Zahl der Blätter: 7
Blatt Nummer: 4
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prüfungsfach: Informatik 1/ 2
1 WF 2010
Semester: 2
Hilfsmittel:
Name:
Skript(e), Bücher
Zeit:
Vorname:
120 Minuten
Matr.Nr.:
Aufgabe 3.5 [5P]
Ergänzen Sie in die get- und set-Methoden in folgendem Code-Fragment und
implementieren Sie anschließend die Methode printAllValues() mit Hilfe des IteratorPatterns um alle Elemente auf der Konsole auszugeben.
public class PersonenListe {
ArrayList persons;
public int getPerson(int index) {
return (Person)persons.get(index);
}
public void setPerson(int index, Person p) {
persons.add(index, p);
}
public void printAllValues() {
Iterator iter = persons.iterator();
while (iter.hasNext()) {
System.out.println( iter.next());
}
}
}
Fachhochschule Esslingen
Hochschule für Technik
Sommersemester 2003
Zahl der Blätter: 7
Blatt Nummer: 5
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prüfungsfach: Informatik 1/ 2
1 WF 2010
Semester: 2
Hilfsmittel:
Skript(e), Bücher
Name:
Zeit:
Vorname:
120 Minuten
Matr.Nr.:
Teil 4: Verständnis von Java Programmen
Aufgabe 4.1 [10P]
Skizzieren Sie das Fenster, das von folgendem Code implementiert wird. Was
passiert nachdem man auf den OK-Button klickt?
package klausur.ss2003;
import java.awt.event.*;
import javax.swing.*;
public class LayoutAnalyse extends JFrame {
JTextField nameField;
JButton okButton;
JButton cancelButton;
public LayoutAnalyse() {
super("Login");
setDefaultCloseOperation( EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout( new BoxLayout( contentPane, BoxLayout.Y_AXIS));
JPanel inputPane = new JPanel();
inputPane.setLayout( new BoxLayout( inputPane, BoxLayout.X_AXIS));
inputPane.add( new JLabel("Name"));
nameField = new JTextField(20);
inputPane.add( nameField);
contentPane.add( inputPane);
JPanel buttonPane = new JPanel();
buttonPane.setLayout( new BoxLayout( buttonPane, BoxLayout.X_AXIS));
okButton = new JButton("OK");
okButton.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
System.out.println("Hello, " + nameField.getText());
System.exit(0);
}
});
cancelButton = new JButton("Cancel");
cancelButton.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
System.exit(1);
}
});
buttonPane.add( okButton);
buttonPane.add( cancelButton);
contentPane.add( buttonPane);
getContentPane().add(contentPane);
pack();
}
public static void main(String[] args) {
new LayoutAnalyse().show();
}
}
2-zeiliges Fenster mit Eingabe oben und Buttons unten; bei OK folgt Begrüssung mit Namen
Fachhochschule Esslingen
Hochschule für Technik
Sommersemester 2003
Zahl der Blätter: 7
Blatt Nummer: 6
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prüfungsfach: Informatik 1/ 2
1 WF 2010
Semester: 2
Hilfsmittel:
Skript(e), Bücher
Name:
Zeit:
Vorname:
120 Minuten
Matr.Nr.:
Aufgabe 4.2 [10P]
Finden und korrigieren Sie die Fehler in folgendem Programm
package klausur.ss2003;
public class Errors {
int errorCount;
public void Errors(boolean errorCount) { // wrong type
errorCount = errorCount; // missing this
}
public String toString() {
return toString() + ": errorCount=" + errorCount; // missing super
}
public static void main(String args) { // missing[]
System.out.println( new Errors(5)) // missing ;
}
}
Fachhochschule Esslingen
Hochschule für Technik
Sommersemester 2003
Zahl der Blätter: 7
Blatt Nummer: 7
Studiengang:
Fachnummer:
Wirtschaftsinformatik
Prüfungsfach: Informatik 1/ 2
1 WF 2010
Semester: 2
Hilfsmittel:
Skript(e), Bücher
Name:
Zeit:
Vorname:
120 Minuten
Matr.Nr.:
Aufgabe 4.3 [10P]
Implementieren Sie die fehlenden Stellen in folgendem Programm
package klausur.ss2003;
import java.awt.*;
import java.awt.event. *;
import javax.swing. *;
public class TrafficLight extends JPanel {
public final static int RED = 1;
public final static int YELLOW = 2;
public final static int GREEN = 3;
int status = RED;
JPanel redPanel;
JPanel yellowPanel;
JPanel greenPanel;
JButton toggleButton;
public TrafficLight() {
setLayout( new BoxLayout( this, BoxLayout.Y_AXIS));
redPanel = new JPanel();
add( redPanel);
yellowPanel = new JPanel();
add( yellowPanel);
greenPanel = new JPanel();
add( greenPanel);
toggleButton = new JButton("toggle");
toggleButton.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent e) {
toggleStatus();
}
});
add( toggleButton);
toggleStatus();
}
void toggleStatus() {
switch (status) {
case RED:
redPanel.setBackground( Color.red);
yellowPanel.setBackground( Color.black);
greenPanel.setBackground( Color.black);
status = YELLOW;
break;
case YELLOW:
redPanel.setBackground( Color.black);
yellowPanel.setBackground( Color.yellow);
greenPanel.setBackground( Color.black);
status = GREEN;
break;
case GREEN:
redPanel.setBackground( Color.black);
yellowPanel.setBackground( Color.black);
greenPanel.setBackground( Color.green);
status = RED;
break;
}
}
}
Herunterladen