• Keine Ergebnisse gefunden

Teil 1: Grundlegende Eigenschaften der Sprache Java [25P]

N/A
N/A
Protected

Academic year: 2022

Aktie "Teil 1: Grundlegende Eigenschaften der Sprache Java [25P]"

Copied!
21
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Teil 1: Grundlegende Eigenschaften der Sprache Java [25P]

Aufgabe 1.1 Datentypen [5P]

Beantworten Sie die folgenden Fragen und geben Sie ggf. ein geeignetes Codebeispiel an Welche Rolle spielt der Datentyp bei der Zuweisung eines Werts an eine Variable?

Der Datentyp legt fest, welche Art von Werten an eine Variable zugewiesen werden können.

Codebeispiel: ALTERNATIVE INTERPRETATION

long y = 23; // zulässig Primitive werden kopiert int x = true; // unzulässig Referenzen werden geteilt

Welcher primitive Datentyp in Java hat am wenigsten gültige Werte?

Der Datentyp boolean, er umfasst nur die Werte "true" und "false". NICHT: byte, char Erläutern Sie die Begriffe "statischer Typ" und "dynamischer Typ" einer Variablen?

Der statische Typ ist der deklarierte Typ der Variablen (im Beispiel: Person), der dynamische Typ ist der Typ des enthaltenen Werts (im Beispiel: Student).

Codebeispiel:

Person p = new Student();

Was versteht man unter einem typecast (d.h. wie funktioniert der cast-Operator)?

Ein Typecast ist ein Hinweis an den Compiler, einen primitiven Wert in den angegebenen Datentyp zu konvertieren bzw. einen Referenzwert als den angegebenen Datentyp zu betrachten.

Codebeispiel:

int i = (int)(Math.random()*10);

Auto a = (Auto)fuhrpark.get(0);

Unter welchen Umständen kann ein typecast fehlschlagen?

Bei primitiven Datentypen schlägt ein Typecast zur Übersetzungszeit fehl, wenn der statische Typ und der im cast angegebene Typ nicht kompatibel sind. Bei Referenztypen kann der cast zur Laufzeit fehlschlagen, wenn der tatsächliche Datentyp nicht dem im cast angegebenen Datentyp entspricht.

Codebeispiel:

float f = (float)"1.5";

Object o = new Fahrzeug();

Mitarbeiter m = (Mitarbeiter)o;

(2)

Aufgabe 1.2 Kontrollstrukturen [10P]

Vereinfachen Sie folgende Beispiele durch Umstellung oder Ersatz der Kontrollstruktur 01:

02: public boolean checkValue( int value) { 03: if ( (0<value) && (value<10)) {

04: return true;

05: } else {

06: return false;

07: } 08:

01:

02: public boolean checkValue( int value) { 03: return ((0<value) && (value<10));

04: } 05:

01:

02: public void decodeResult( int result) { 03: switch ( result) {

04: case 0:

05: System.out.println( "OK");

06: break;

07: case 1:

08: System.out.println( "ERROR");

09: break;

10: case 2:

11: System.out.println( "ERROR");

12: break;

13: default:

14: System.out.println( "UNKNOWN");

15: } 16: } 17:

01:

02: public void decodeResult( int result) { 03: switch ( result) {

04: case 0:

05: System.out.println( "OK");

06: break;

07: case 1:

08: case 2:

09: System.out.println( "ERROR");

10: break;

11: default:

12: System.out.println( "UNKNOWN");

13: } 14: } 15:

01:

(3)

02: public void printCount( int max) { 03: int i = 0;

04: while ( i<max) {

05: System.out.println( i);

06: i++;

07: } 08: } 09:

10:

01:

02: public void printCount( int max) { 03: for ( int i=0; i<max; ++i) { 04: System.out.println( i);

05: } 06: } 07:

08:

09: public void printAll( String[] strings) { 10: for ( int i=0; i<strings.length; ++i) { 11: System.out.println( strings[i]);

12: } 13: } 14:

01:

02: public void printAll( String[] strings) { 03: for ( String string : strings) {

04: System.out.println( string);

05: } 06: } 07:

(4)

01:

02: public String integerToBinary( int value) { 03: String result = "b";

04: result = (value & 0x01) + result;

05: value >>= 1;

06: result = (value & 0x01) + result;

07: value >>= 1;

08: result = (value & 0x01) + result;

09: value >>= 1;

10: result = (value & 0x01) + result;

11: value >>= 1;

12: return result;

13: } 14:

15:

16: public String integerToBinary( int value) { 17: String result = "b";

18: for ( int i=0; i<4; ++i) {

19: result = (value & 0x01) + result;

20: value >>= 1;

21: }

22: return result;

23: } 24:

Alternative: Nutzung von Integer.toBinaryString( value);

(5)

Aufgabe 1.3 Konstanten und Enums [5P]

Beantworten bzw. bearbeiten Sie die folgenden Fragen

Welche zwei Vorteile bieten Konstanten gegenüber der direkten Verwendung ihrer Werte?

Sie geben Werten einen Namen bzw. eine Bedeutung (Hauptvorteil) und erlauben deren Definition sowie spätere Anpassung an zentraler Stelle. FALSCH: Nicht änderbar - Literale sind auch fest.

Welcher Modifier und welche Schreibweise wird in Java für Konstanten verwendet?

Konstanten werden mit dem Modifier final gekennzeichnet und in Großbuchstaben geschrieben.

Welche zusätzlichen Vorteile bieten Enums gegenüber gewöhnlichen Konstanten?

Ein Enum definiert eine feste Wertemenge und ermöglicht die Definition von Variablen, die nur genau diese Werte annehmen können.

Geben Sie die Definition eines Enums namens TimeOfDay für verschiedene Tageszeiten an ^^^^^^^^^^

01:

02: public enum TimeOfDay {

03: MORNING, NOON, EVENING, MIDNIGHT; // NICHT: MO, DI, MI, …, FRI !!!

04: } 05:

Geben Sie ein Beispiel für eine switch-Anweisung an, die in Abhängigkeit von der Tageszeit eine passende Begrüßung am Bildschirm ausgibt

01:

02: public void printGreeting{ TimeOfDay tod} { 03: switch ( tod) {

04: case MORNING:

05: System.out.println( "Good morning!");

06: break;

07: case NOON:

08: System.out.println( "Good day!");

09: break;

10: case EVENING:

11: System.out.println( "Good evening!");

12: break;

13: case MIDNIGHT:

14: System.out.println( "Good night!");

15: break;

}

(6)

Aufgabe 1.4 Collections und Generics [5P]

Beantworten Sie die folgenden Fragen zum Thema Generics

Beispielprogramm 01:

02: import java.util.*;

03:

04: public class Generics { 05:

06: public static void main( String[] args) {

07: List<String> liste = new ArrayList<String>();

08: for ( String arg : args) { 09: liste.add( arg);

10: }

11: System.out.println( liste.size() + " Parameter angegeben");

12: String first = liste.get( 0);

13: Object last = liste.get( liste.size()-1);

14: System.out.println( first + "..." + last);

15: } 16: } 17:

Welche Datentypen können in der Collection liste gespeichert werden?

Nur Objekte der Klasse String und deren (nicht-existenter) Subklassen Welchen Datentyp liefert der Aufruf liste.get( 0) zurück?

Den generischen Typ der Collection, also String

Was passiert, wenn das Programm ohne Kommandozeilenparameter aufgerufen wird?

Es kommt zu einem Fehler in Zeile 12 (Zugriff auf ein nicht vorhandenes Element) Ist die Zuweisung in Zeile 03 korrekt oder nicht? Warum?

01: Object o = new Student( "Richard", "Tick");

02: List<String> liste = new ArrayList<String>();

03: List<Object> etsil = liste;

04: etsil.add( new Student( "Reiner", "Fall"));

05: String s = liste.get( 0);

Die Zuweisung in Zeile 01 ist korrekt da jeder Student is-a Object. Bei Listen gilt dies jedoch nicht mehr, d.h. die Zuweisung in Zeile 03 ist falsch da sich ansonsten wie in Zeile 04 dargestellt ein Student in die Liste einschleichen könnte, die eigentlich nur Strings enthalten darf.

1P für Einschätzung und 1P für Bewertung

(7)

Teil 2: Elementare Bibliothekskomponenten [10P]

Aufgabe 2.1 [2P]

Die Klasse Math bietet u.a. eine Methode zur Generierung von Zufallszahlen. Welche ist dies und welchen Datentyp und Wertebereich haben die generierten Zahlen?

Die Methode heißt Math.random(). Sie liefert Zufallszahlen vom Typ double im Wertebereich [0..1[

Aufgabe 2.2 [2P]

In Java existieren sog. Wrapper Klassen für die Vermittlung von primitiven Datentypen zwischen deren Werten und der Welt der Objekt und der Welt der Zeichenketten. Nennen Sie die Wrapperklasse für den Datentyp int und die zugehörige Methode zur Umwandlung von Zeichenketten in primitive Werte inkl. deren Signatur.

Die Wrapperklassen zum Datentyp int ist Integer und besitzt die Methode int parseInt( String).

Aufgabe 2.3 [2P]

Welche Methode(n) enthält das Interface Comparable und welche Bedeutung hat es im Zusammenhang mit den Collectionklassen TreeSet und TreeMap?

Das Interface Comparable enthält die Methode int compareTo( Object o) dient zum Vergleichen von Objekten und wird in den Collectionklassen.TreeSet und TreeMap verwendet, um die enthaltenen Objekte bzw Schlüssel zu sortieren.

Aufgabe 2.4 [2P]

Welche Vor- und Nachteile bieten Arrays gegenüber Collections?

Vorteile: Geringerer Speicherbedarf, höhere Geschwindigkeit Nachteile: Feste Größe, Beschränkung auf einen Typ

Aufgabe 2.5 [2P]

Wie lautet die beiden Wurzeln derjenigen Familie von I/O Klassen, die zum Einlesen und Ausgeben von zeichenorientierten Daten verwendet wird.

Es handelt sich um die Klassen Reader und Writer

(8)

Teil 3: Entwicklung einfacher Java-Programme [5P]

Aufgabe 3.1 Einfacher Auswertungsalgorithmus [5P]

Implementieren Sie die Methode, welche die Anzahl der richtigen Antworten ermittelt.

public class Quiz extends JFrame { public static class Frage {

String behauptung;

boolean loesung;

public Frage( String behauptung, boolean loesung) { this.behauptung = behauptung;

this.loesung = loesung;

}

}

Frage[] fragen = new Frage[] {

new Frage( "Die Sonne geht im Westen unter", true), new Frage( "Diese Klausur ist schwierig", false), new Frage( "Java ist auch eine Insel", true), };

boolean[] antworten = new boolean[fragen.length];

/*

* Code zum GUI aufbauen, Benutzer klicken lassen usw. ausgelassen */

public int punktzahlErmitteln() { // HIER FEHLT DIE IMPLEMENTIERUNG // Hilfsvariable definieren und mit Startwert 0 initialisieren int count = 0;

// Alle Lösungen mit den jeweiligen Antworten vergleichen for ( int i=0; i<fragen.length; ++i) {

if ( fragen[i].loesung==antworten[i]) count++;

}

// Ergebnis zurückliefern return count;

}

public static void main( String[] args) { new Quiz().setVisible( true);

} }

(9)

Teil 4: GUI Layout und Verständnis einfacher Komponenten [15P]

Aufgabe 4.1 [3P]

Ordnen Sie die folgenden Klassen/Interfaces den richtigen Paketen zu

(1) JTextField (a) javax.swing

(2) Color (b) java.awt.event

(3) ActionListener (c) java.awt

Lösung: 1a, 2c, 3b

Aufgabe 4.2 Verhalten von Layout Managern [7P]

Analysieren Sie das folgende Programm und skizzieren & beschreiben Sie das Layout des auf den Folgeseiten dargestellten Fensters nach der angedeuteten Vergrößerung. Wie verändern sich Lage und Größe der unterschiedlichen Fensterbestandteile?

01:

02: import java.net.*;

03: import java.awt.*;

04: import java.awt.event.*;

05: import javax.swing.*;

06:

07: public class Hangman extends JFrame { 08:

09: JPanel textPanel = new JPanel();

10: JPanel iconPanel = new JPanel();

11: JLabel iconLabel = new JLabel();

12: JPanel keysPanel = new JPanel();

13:

14: String word;

15: int attempts;

16:

17: public Hangman( String word) { 18: super( "Hangman");

19: setDefaultCloseOperation( EXIT_ON_CLOSE);

20: setLayout( new BorderLayout());

21:

22: this.word = word;

23: this.attempts = 0;

24: textPanel.setLayout( new FlowLayout());

25: for ( int i=0; i<word.length(); ++i) { 26: textPanel.add( new JLabel( "_"));

27: }

28: add( textPanel, BorderLayout.NORTH);

(10)

29:

30: URL url = ClassLoader.getSystemResource( "hangman.jpg");

31: Icon icon = new ImageIcon( url);

32: iconLabel.setIcon( icon);

33: iconPanel.setLayout( new GridBagLayout());

34: GridBagConstraints gbc = new GridBagConstraints();

35: gbc.insets = new Insets( 5,5,5,5);

36: gbc.fill = GridBagConstraints.NONE;

37: gbc.anchor = GridBagConstraints.CENTER;

38: iconPanel.add( iconLabel, gbc);

39: add( iconPanel, BorderLayout.CENTER);

40:

41: ActionListener al = new ActionListener() { 42: public void actionPerformed( ActionEvent e) {

43: keyPressed( ((JButton)e.getSource()).getText().charAt(0));

44: } 45: };

46: keysPanel.setLayout( new GridLayout( 2,13,5,5));

47: for ( char c='a'; c<='z'; ++c) {

48: JButton button = new JButton( Character.toString( c));

49: button.addActionListener( al);

50: keysPanel.add( button); }

51: add( keysPanel, BorderLayout.SOUTH);

52:

53: pack();

54: } 55:

56: public void keyPressed( char c) { 57: // look if c is part of word 58: }

59:

60: public static void main( String[] args) { 61: new Hangman( "klausur").setVisible( true);

62: } 63: } 64:

TIPPS:

o Identifizieren und kennzeichnen Sie zuerst Layout-relevante Stellen im Quellcode

o Zeichnen Sie dann die Sublayouts ins Bild ein und berücksichtigen Sie deren spez. Verhalten

(11)

Fenster in Normalgröße:

Fenster nach Vergrößerung:

2P Labels bleiben gleich+zentriert, 3P Bild gleich+mittig; 2P Buttons gleich hoch+breiter

(12)

Aufgabe 4.3 Event Handling [5P]

Analysieren Sie den folgenden Quellcode und beantworten Sie die zugehörigen Fragen.

01: 02: import java.awt.*;

03: import java.awt.event.*;

04: import javax.swing.*;

05: 06: public class BattlefieldPanel extends JPanel {

07: 08: public static class BattlefieldButton extends JButton { 09: 10: int row, col;

11: 12: public BattlefieldButton( int row, int col) { 13: this.row = row;

14: this.col = col;

15: } 16:

17: }

18: 19: boolean[][] battlefield = new boolean[10][10];

20:

21: public BattlefieldPanel() {

22: ActionListener al = new ActionListener() { 23: public void actionPerformed( ActionEvent e) { 24: fieldClicked( (BattlefieldButton)e.getSource());

25: } 26: };

27: setLayout( new GridLayout( 10,10,3,3));

28: for ( int row=0; row<10; ++row) { 29: for ( int col=0; col<10; ++col) {

30: BattlefieldButton button = new BattlefieldButton( row, col);

31: button.addActionListener( al);

32: add( button);

33: } 34: } 35: } 36:

37: public void fieldClicked( BattlefieldButton b) {

38: battlefield[b.row][b.col] = !battlefield[b.row][b.col];

39: b.setBackground( battlefield[b.row][b.col] ? Color.BLACK : Color.WHITE);

40: } 41:

42: public static void main( String[] args) {

43: JFrame frame = new JFrame( "Battlefield Testframe");

44: frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);

45: frame.add( new BattlefieldPanel());

46: frame.setSize( 400, 400);

47: frame.setLocationRelativeTo( null);

48: frame.setVisible( true);

49: } 50:

51: } 52:

(13)

Wieviele class-Dateien werden beim Kompilieren dieses Programms erzeugt? (1P) Es werden 3 class-Dateien erzeugt:

BattlefieldPanel.class

BattlefieldPanel$BattlefieldButton.class BattlefieldPanel$1.class (für den Listener).

Wieviele Instanzen von BattlefieldButtons und ActionListenern gibt es? (1P) Es gibt 10x10 = 100 BattlefieldButtons und einen gemeinsamen ActionListener für alle

Welche Art von InnerClass ist der ActionListener? (1P) Der ActionListener ist als anonyme Klasse implementiert

Was passiert beim Klick auf einen der Buttons (Methodenaufruf(e), Effekt)? (1P) Es wird die Methode fieldClicked() aufgerufen. Die Buttons werden abwechselnd schwarz/weiss.

Welchen Vorteil bietet die Realisierung eigenen Button-Klasse? (1P) Die Buttons können die eigenen Koordinaten und ihren Status direkt speichern

(14)

Teil 5: Verständnis komplexer GUI Komponenten [15P]

Aufgabe 5.1 Mitarbeiterverwaltung [15P]

Analysieren Sie das nachfolgende Programm und beantworten Sie die zugehörigen Fragen.

Datei: Person.java 01:

02: public class Person { 03:

04: // ...wie immer...

05:

06: } 07:

Datei: Mitarbeiter.java 01:

02: // Datei: Mitarbeiter.java

03: public class Mitarbeiter extends Person { 04:

05: static int neuePersonalNr = 1;

06:

07: int personalNr;

08: double gehalt;

09:

10: public Mitarbeiter(String vorname,String nachname, double gehalt) { 11: super( vorname, nachname);

12: this.personalNr = neuePersonalNr++;

13: this.gehalt = gehalt;

14: } 15:

16: public int getPersonalNr() { 17: return personalNr;

18: } 19:

20: public double getGehalt() { 21: return gehalt;

22: } 23:

24: public void setGehalt( double gehalt) { 25: this.gehalt = gehalt;

26: } 27:

28: } 29:

(15)

Datei: MitarbeiterTableModel.java 01:

02:

03: import java.util.*;

04: import java.text.*;

05: import javax.swing.table.*;

06:

07: public class MitarbeiterTableModel extends AbstractTableModel { 08:

09: static String[] columnNames = { "PersonalNr", "Vorname", "Nachname", "Gehalt"};

10: static NumberFormat nf = NumberFormat.getCurrencyInstance( Locale.GERMANY);

11:

12: List<Mitarbeiter> mitarbeiterListe = new ArrayList<Mitarbeiter>();

13:

14: public int getRowCount() {

15: return mitarbeiterListe.size();

16: } 17:

18: public int getColumnCount() { 19: return columnNames.length;

20: } 21:

22: public String getColumnName( int col) { 23: return columnNames[col];

24: } 25:

26: public Object getValueAt( int row, int col) {

27: Mitarbeiter mitarbeiter = mitarbeiterListe.get( row);

28: switch (col) { 29: case 0:

30: return mitarbeiter.getPersonalNr();

31: case 1:

32: return mitarbeiter.getVorname();

33: case 2:

34: return mitarbeiter.getNachname();

35: case 3:

36: return nf.format( mitarbeiter.getGehalt());

37: default:

38: return null;

39: } 40: } 41:

42: public void setValueAt( Object value, int row, int col) { 43: Mitarbeiter mitarbeiter = mitarbeiterListe.get( row);

44: switch (col) { 45: case 0:

46: throw new IllegalArgumentException( "Spalte nicht editierbar");

47: case 1:

48: mitarbeiter.setVorname( (String)value);

49: break;

(16)

50: case 2:

51: mitarbeiter.setNachname( (String)value);

52: break;

53: case 3:

54: try {

55: mitarbeiter.setGehalt( nf.parse( (String)value).doubleValue());

56: } catch ( ParseException ex) { 57: ex.printStackTrace();

58: } 59: break;

60: } 61: } 62:

63: public boolean isCellEditable( int row, int col) {

64: return (0<col && col<3) || (3==col && User.current.hatGehaltsZugriff());

65: } 66:

67: }

Datei: MitarbeiterFrame.java 01:

02: import java.awt.*;

03: import javax.swing.*;

04: import javax.swing.table.*;

05:

06: public class MitarbeiterFrame extends JFrame { 07:

08: MitarbeiterTableModel mitarbeiterModel = new MitarbeiterTableModel();

09: JTable mitarbeiterTable = new JTable( mitarbeiterModel);

10:

11: public MitarbeiterFrame() { 12: super( "Mitarbeiter");

13: setDefaultCloseOperation( EXIT_ON_CLOSE);

14:

15: Box box = Box.createVerticalBox();

16: JScrollPane tablePane = new JScrollPane( mitarbeiterTable);

17: box.add( tablePane);

18: JPanel buttonPanel = new JPanel();

19: buttonPanel.setLayout( new FlowLayout());

20: JButton saveButton = new JButton( "Speichern");

21: // ... ActionListener hinzufügen ...

22: buttonPanel.add( saveButton);

23: JButton cancelButton = new JButton( "Abbrechen");

24: // ... ActionListener hinzufügen ...

25: buttonPanel.add( cancelButton);

26: box.add( buttonPanel);

27: add( box);

28: load();

29: pack();

30: } 31:

(17)

32: public void load() { 33: // ... Daten laden ...

34: } 35:

36: public void save() {

37: // ... Daten speichern ...

38: } 39:

40: public static void main( String[] args) { 41: new MitarbeiterFrame().setVisible( true);

42: User.current = new User( "boss", true);

43: } 44:

45: } 46:

Datei: User.java 01:

02: public class User { 03:

04: public static User current = null;

05:

06: String name;

07: boolean gehaltsZugriff;

08:

09: public User( String name, boolean gehaltsZugriff) { 10: this.name = name;

11: this.gehaltsZugriff = gehaltsZugriff;

12: } 13:

14: public String getName() { 15: return name;

16: } 17:

18: public boolean hatGehaltsZugriff() { 19: return gehaltsZugriff;

20: } 21:

22: } 23:

(18)

Screenshot des Hauptfensters

Warum sieht man im Hauptfenster trotz JScrollPane keine Scrollbars? [3P]

Die Scrollbars werden erst angezeigt, wenn mehr (zuviele) Einträge in der Tabelle sind (1P).

Welchen Zweck hat die Klasse User und wo wird sie verwendet? [3P]

Die Klasse User dient zur Verwaltung der Rechte des Anwenders, z.B. im Tablemodel.

Nur bestimmte User haben gehaltsZugriff. In der main()-Methode ist ein solcher User (2P) Unter welchen Bedingungen sind die Spalten in der Tabelle editierbar? [3P]

Immer editierbar sind Vorname und Nachname (1P) Nur für bestimmte Benutzer editierbar ist Gehalt (1P) Nie editierbar ist PersonalNr. (1P)

Implementieren Sie die fehlenden Methoden im MitarbeiterTableModel? [6P]

(19)

Teil 6: Verständnis von Datenbanken [15P]

Aufgabe 6.1 Datenmodellierung [10P]

Beschreiben Sie grafisch oder textuell ein Datenbankschema (Tabellen, Spalten, Datentypen, Querverweise) für den folgenden Sachverhalt und implementieren Sie die zugehörige Fachklasse (nur Klassenrumpf mit Attributen und Konstruktor).

In einem bekannten Gesellschaftsspiel gibt es eine Reihe von Feldern. Diese haben einen Namen, und einen Wert. Außerdem gehören Sie zu einer Gruppe von Feldern die jeweils durch eine Farbe (RGB) gekennzeichnet ist. Für bestimmte Aktionen muss man alle Felder einer Gruppe besitzen.

Tabelle Feld:

id INT AUTO_INCREMENT PRIMARY KEY name VARCHAR

wert INT

gruppe_id INT REFERENCES Gruppe

public class Feld { int id;

String name;

int wert;

Gruppe gruppe;

public Feld( int id, String name, int wert, Gruppe gruppe) { this.id = id;

this.name = name;

this.wert = wert;

this.gruppe = gruppe;

} }

Tabelle Gruppe

id INT AUTO_INCREMENT PRIMARY KEY farbe_r INT

farbe_g INT farbe_b INT

public class Gruppe { int id;

Color farbe;

public Gruppe( int id, int r, int g, int b) { this.id = id;

this.farbe = new Color( r,g,b);

} }

Schema 6P, Coding 4P

(20)

Aufgabe 6.2 Datenbankabfragen [5P]

Geben Sie geeignete SQL-Anweisungen für die angegebenen Teilaufgaben an Tabelle Artikel

artikelnr INT AUTO_INCREMENT PRIMARY KEY name VARCHAR

preis DOUBLE bestand INT

Einfügen von 50 Stück des Artikels "Baldrian" zum Preis von 4.99

INSERT INTO Artikel (name, preis, bestand) VALUES ( 'Baldrian', 4.99, 50)

Selektion von Name und Preis aller Artikel, geordnet nach Name

SELECT name, preis FROM Artikel ORDER BY name

Selektion aller Artikel mit Bestand < 10

SELECT * FROM Artikel WHERE bestand < 10

Änderung des Namens von "Raider" in "Twix".

UPDATE Artikel SET name='Twix' WHERE name = 'Raider'

Löschung des Artikels mit artikelnr 13

DELETE FROM Artikel WHERE artikelnr = 13

(21)

Teil 7: Netzwerke [5P]

Aufgabe 7.1 Allgemeines Verständnis von Netzwerken [5P]

Beantworten Sie die folgenden Fragen zum Thema Netzwerke

Nennen Sie zwei Ziele, die durch verteilte Software erreicht werden können? [1P]

Lastverteilung, Ausfallsicherheit

Was versteht man unter einem Netzwerkprotokoll? Nennen Sie ein Beispiel? [1P]

Ein Protokoll, z.B. TCP/IP, regelt den Ablauf und die möglichen Inhalte der Kommunikation Java unterstützt zwei Mechanismen zur Netzwerkkommunikation. Welche? [1P]

Sockets und Remote Method Invocation

Welche Aufgabe hat die Registry (Naming Service) bei der Kommunikation? [1P]

Registriert und gibt Auskunft über verteilte Objekte ("gelbe Seiten")

Implementiert das nachfolgende Programm einen Server oder einen Client? [1P]

Einen Client, da eine Verbindung aktiv aufgebaut wird (der Server wartet auf Verbindungen) 24:

25: import java.io.*;

26: import java.net.*;

27:

28: public class Networker { 29:

30: public void run() { 31: try {

32: int port = 6000;

33: byte[] bytes = new byte[] {(byte)192, (byte)168, (byte)0, (byte)100};

34: InetAddress addr = InetAddress.getByAddress( bytes);

35: Socket sock = new Socket( addr, port);

36: InputStream is = sock.getInputStream();

37: OutputStream os = sock.getOutputStream();

38: // ... send and receive data ...

39: sock.close();

40: } catch ( Exception ex) { 41: ex.printStackTrace();

42: } 43: } 44:

45: public static void main( String[] args) { 46: new Networker().run();

47: } 48:

49: } 50:

Referenzen

ÄHNLICHE DOKUMENTE

Beschreiben Sie, welche der Umwandlungen in der vorherigen Aufgabe nun vereinfacht werden und kommentieren Sie die Zeilen 4-6 des folgenden Codings... Aufgabe 1.4 Kontrollstrukturen

Um Objekte in einem Stream speichern zu können muss das leere Marker Interface Serializable implementiert werden. Dieses zeigt lediglich an, dass die Speicherung gewollt bzw. Die

Beschreiben Sie grafisch oder textuell ein Datenbankschema (Tabellen, Spalten, Datentypen, Querverweise) für den folgenden Sachverhalt:. Ein Rundreise hat einen Namen und

die sich mittels rationaler Funktionen.. des Logarithmus und des arctan

Es soll im folgenden ein Verfahren angegeben werden, daß die Berechnung der Richtungsabhängig- keit der P-Wellen-Geschwindigkeiten aus den elastischen Konstanten des Einkristalls

Um den störtenden Einfluß der Wechselwirkung der Planeten mit einzube- ziehen, kann man annehmen, dass die Planeten sich im Keplerschen Sinne bewegen, aber die

Die allgemeine Lösung einer inhomogenen linearen Differentialgleichung 2... 1: Die Integralkurven der

[r]