• Keine Ergebnisse gefunden

Teil 1: Grundeigenschaften von Rechnern und Software

N/A
N/A
Protected

Academic year: 2022

Aktie "Teil 1: Grundeigenschaften von Rechnern und Software"

Copied!
7
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Teil 1: Grundeigenschaften von Rechnern und Software

Aufgabe 1.1 [2P]

Welcher fundamentale Unterschied besteht zwischen dem Zweck eines Computer von dem Zweck anderer Maschinen (etwa einer Kaffeemaschine)?

Ein Computer ist eine universelle Maschine, frühere Maschinen hatten stets einen eindeutigen Zweck

Aufgabe 1.2 [3P]

Was ist ein Programm, d.h. woraus besteht es, was bewirkt es?

Ein Programm ist ein “Kochrezept” zur Lösung eines Problems, ausgedrückt durch eine Folge von Anweisungen die der Computer der Reihe nach abarbeitet.

Aufgabe 1.3 [5P]

Ein Werbespot behauptet, ein Produkt sei mit Computern entwickelt und geprüft.

Diskutieren Sie diese Aussage bzgl. der Qualität des Produkts.

Nicht alles, was mit Computern gemacht wird, ist automatisch richtig. Das Programm wird von Menschen erstellt und ist damit für systematische Fehler anfällig, ebenso wie die Interpretation seiner Ausgaben. Ist es jedoch richtig, dann gilt dies immer (ein Rechner ermüdet nicht und macht keine Leichtsinnsfehler).

Aufgabe 1.4 [5P]

Software hat besondere Eigenschaften bzw. Vorteile die jedoch auch oft ihre Erstellung erschweren können. Welche?

Software ist sehr flexibel und (scheinbar) jederzeit leicht änderbar – auch in letzter Minute.

Andererseits ist Software als rein geistiges Produkt nicht greifbar und unterliegt nicht den üblichen physikalischen Gesetzen. So gilt zum Beispiel das Lokalitätsprinzip nicht, d.h. eine Änderung an einer Stelle kann Folgen an ganz anderer Stelle haben.

Aufgabe 1.5 [4P+1ZP]

Nennen Sie die Phasen/Tätigkeiten eines Software-Entwicklungsprozesses Analyse, Design, Implementierung, Test, Wartung

Aufgabe 1.6 [6P]

Charakterisieren Sie das Programmieren “im Großen” und “im Kleinen” anhand folgender Parameter:

Programmieren im Großen Programmieren im Kleinen

Anzahl der Entwickler Viele Wenige/Einer

Anzahl der Anwender Viele Wenige/Programmierer

Größe/Komplexität des Projekts Hoch Niedrig

(2)

Teil 2: Grundlagen der objektorientierten Softwareentwicklung

Aufgabe 2.1 [5P]

Erläutern Sie die Bedeutung der Begriffe “Klasse” und “Objekt”

Eine Klasse ist die Abstraktion eines Konzepts, z.B. Person, und kann als Bauplan für eine Familie von Objekten interpretiert werden, d.h. sie und definiert deren Eigenschaften.

Ein Objekt ist eine Instanz eines Konzepts bzw. einer Klasse, z.B. eine konkrete Person, d.h. es enthält die im Bauplan angegebenen Eigenschaften.

Aufgabe 2.2 [5P]

Sowohl Klassen als auch Objekte können Eigenschaften haben. Diese Beschreiben deren Zustand und ihr Verhalten. Nennen Sie diese Eigenschaften.

Klasseneigenschaften: Zustand=Klassenvariablen, Verhalten=Klassenmethoden.

Objekteigenschaften: Zustand=Instanzvariablen, Verhalten=Instanzmethoden.

Aufgabe 2.3 [5P]

Erläutern Sie den Unterschied zwischen Klassen- und Objekteigenschaften Klasseneigenschaften sind nur 1x vorhanden und jederzeit über die Klasse erreichbar.

Objekteigenschaften sind für jedes Objekt vorhanden und nur über eine Objektreferenz erreichbar.

Aufgabe 2.4 [5P]

Nennen Sie zu jeder der folgenden Beschreibungen den passenden Begriff Eine spezielle Methode, mit der neue Objekte initialisiert werden

Konstruktor

Ein Wert, der an eine Methode übergeben wird (aktueller) Parameter/Argument

Verfahren, bei dem sich eine Methode selbst wieder aufruft Rekursion

Notation zur graphischen Modellierung der Eigenschaften und Beziehungen von Objekten Modellierungssprache, UML, Unified Modelling Language

Beziehung, bei der ein Objekt in einem anderen enthalten ist und mit diesem “stirbt”

Komposition Aufgabe 2.5 [5P]

Erläutern Sie folgende Begriffe Überladen einer Methode:

Implementierung mehrerer Methoden mit gleichem Namen und unterschiedl. Signatur.

Überschreiben einer Methode:

Ersetzen einer geerbten Methode durch eine eigene Implementierung mit gleicher Signatur

(3)

Teil 3: Elementare Java Syntax

Aufgabe 3.1 [5P]

Erläutern Sie die Bedeutung folgender Java Schlüsselwörter

public [ ] protected [ ] final [ ] static [ ] abstract [ ] Aufgabe 3.2 [5P]

Erläutern Sie Unterschiede/Gemeinsamkeiten zwischen Interfaces, abstrakten Klassen und Klassen. Geben Sie die Schlüsselwörter für deren Verwendung an.

Ein Interface definiert ein Protokoll für Objekte und kann nur abstrakte Instanzmethoden und Konstanten enthalten. Eine Klasse kann sämtliche Eigenschaften von Objekten beschreiben (bei einer abstrakten Klasse sind einige von Ihnen abstrakt). Rein abstrakte Klassen sind äquivalent zu Interfaces. Eine Klasse kann nur von einer Klasse erben aber mehrere Interfaces implementieren.

extends Erweiterung/Vererbung von Klassen und Interfaces implements Angabe von unterstützten Schnittstellen

Aufgabe 3.3 [5P]

In Java gibt es 2 Arten von Datentypen. Nennen Sie diese, geben Sie je ein Beispiel an und erläutern Sie anschließend deren Unterschied anhand ihres Verhaltens bei Zuweisungen und Methodenaufrufen.

Für primitive Datentypen, z.B. int, wird bei Zuweisungen sowie bei Methodenaufrufen der Wert kopiert (call-by-value), d.h. Änderungen an der Kopie haben keine Auswirkung auf das Original

Für objekttypen, z.B. String, wird bei Zuweisungen sowie bei Methodenaufrufen nur eine Referenz kopiert (call-by-reference), Änderungen an dieser Referenz verändern auch das Originalobjekt.

Aufgabe 3.4 [5P]

Erläutern Sie kurz den Unterschied zwischen if-else und einer switch-Anweisung Mit if-then können beliebige entweder-oder Bedingungen realisiert werden, eine switch-Anweisung ist ein Spezialfall einer if-else-if-else-... Kette und erlaubt eine Auswahl über einem skalaren

Datentyp

(4)

Aufgabe 3.5 [5P]

Ergänzen Sie folgendes Code-Fragment um get- und set-Methoden für die Elemente des Arrays. Implementieren Sie anschließend die Methode printAllValues() durch eine Schleife, die alle Elemente von values auf der Konsole ausgibt

public class Fido extends Dido { int[] values;

public int getValue(int index) { return values[index];

}

public void setValue(int index, int newValue) { values[index] = newValue;

}

public void printAllValues() {

for (int i=0; i<values.length; i++) { System.out.println(values[i]);

} } }

(5)

Teil 4: Verständnis von Java Programmen

Aufgabe 4.1 [10P]

Analysieren und beschreiben Sie die Funktion des folgenden Programms

package klausur.ss2003;

public class Analyse { int samples[];

public Analyse(int count) { samples = new int[count];

for (int i=0; i<count; ++i) {

samples[i] = (int) (Math.random()*10 + 1);

} }

public void run() { double total = 0;

for (int i=0; i<samples.length; ++i) { total += samples[i];

}

System.out.println( total/samples.length);

}

public static void main(String[] args) { new Analyse(10).run();

} }

Es erzeugt eine Folge von 10 Zufallszahlen zwischen 1 und 10 und berechnet deren Durchschnitt.

(6)

Aufgabe 4.2 [10P]

Finden und korrigieren Sie die Fehler in folgendem Programm

package klausur.ss2003;

// missing import statements import javax.swing.JFrame;

import javax.swing.JLabel;

public class Errors extends JFrame { // missing declaration

public void Errors() { // invalid return type super("Errors");

setDefaultCloseOperation( EXIT_ON_CLOSE);

getContentPane().add(

new JLabel("Congratulations! " + errorCount + " errors.");

);

pack();

}

public void main(String[] params) { // missing static new Errors(5.0).show(); // wrong argument

} }

(7)

Aufgabe 4.3 [10P]

Implementieren Sie die fehlenden Stellen in folgendem Programm

package klausur.ss2003;

import java.awt.event.*;

import javax.swing.*;

public class FillTheGaps extends JFrame { public FillTheGaps() {

super( "FillTheGaps");

setDefaultCloseOperation( EXIT_ON_CLOSE);

JPanel contentPane = new JPanel();

contentPane.setLayout( new BoxLayout( contentPane, BoxLayout.X_AXIS));

JButton myButton = new JButton("Start");

myButton.setToolTipText( "Where did you want to go yesterday?");

myButton.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e) { closeAction();

} });

contentPane.add( myButton);

contentPane.add( new JLabel( "Press start to shutdown"));

getContentPane().add( contentPane);

pack();

}

public void closeAction() { System.exit(1);

}

public static void main(String[] args) { FillTheGaps ftg = new FillTheGaps();

ftg.show();

} }

Referenzen

ÄHNLICHE DOKUMENTE

Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch.. Beim Programmieren lernen… Richtig

Nennen Sie jeweils die Elemente der Klasse Duck welche für die Klasse Mouse im gleichen Paket sowie die Klasse Panzerknacker im Paket entenhausen.gauner

Nennen Sie jeweils die Elemente der Klasse Duck welche für die Klasse Mouse im gleichen Paket sowie die Klasse Panzerknacker im Paket entenhausen.gauner

Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch!. Beim Programmieren lernen… Richtig

Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch?. Beim Programmieren lernen… Richtig

Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch?. Beim Programmieren lernen… Richtig

Aufgabe 1.1 - Programmieren Lernen [5P] 0,5P pro richtigem Feld Klassifizieren Sie die folgenden Aussagen als richtig oder falsch.. Richtig Falsch Wer die Syntax beherrscht,

Eine Variable, die es pro Klasse (d.h. egal wieviele Objekte erzeugt werden) nur einmal gibt ist eine Klassenvariable; NICHT: Konstante (die kann es auch für Instanzen geben).