Teil 1: Neuerungen in Java 1.5 [15P]

Größe: px
Ab Seite anzeigen:

Download "Teil 1: Neuerungen in Java 1.5 [15P]"

Transkript

1 Blatt Nummer: 1 Teil 1: Neuerungen in Java 1.5 [15P] Aufgabe 1.1 Autoboxing [2P] Streichen Sie in folgendem Program die Teile, die dank Autoboxing ab Java 1.5 nicht mehr notwendig sind. 01: 02: import java.io.*; 03: import java.util.*; 04: 05: public class Autoboxing { 06: 07: public static void main( String[] args) { 08: System.out.println( "Enter integers, finish with \"OK\""); 09: List numbers = new ArrayList(); 10: CommandLine cl = new CommandLine(); 11: String value = cl.readstring( "==> "); 12: while (!value.equalsignorecase( "OK")) { 13: numbers.add( new Integer( Integer.parseInt( value))); 14: value = cl.readstring( "==> "); 15: } 16: 17: int sum = 0; 18: for ( int i=0; i<numbers.size(); ++i) { 19: sum += ((Integer)numbers.get(i)).intValue(); 20: } 21: System.out.println( "Total=" + sum); 22: } 23: 24: } 07: public static void main( String[] args) { 08: System.out.println( "Enter integers, finish with \"OK\""); 09: List numbers = new ArrayList(); 10: CommandLine cl = new CommandLine(); 11: String value = cl.readstring( "==> "); 12: while (!value.equalsignorecase( "OK")) { 13: numbers.add( new Integer( Integer.parseInt( value))); // 1P 14: value = cl.readstring( "==> "); 15: } 16: 17: int sum = 0; 18: for ( int i=0; i<numbers.size(); ++i) { 19: sum += ((Integer)numbers.get(i)).intValue(); // 1P 20: } 21: System.out.println( "Total=" + sum); 22: } // nur die richtigen Zeilen markiert aber ganz je 0,5P

2 Blatt Nummer: 2 Aufgabe 1.2 Die neue for-schleife [3P] Ersetzen Sie die Schleife in folgendem Codestück durch eine neue for-schleife 07: 08: import java.util.*; 09: 10: public class NewForLoop { 11: 12: public static void main( String[] args) { 13: ArrayList values = new ArrayList(); 14: values.add( "Tic"); 15: values.add( "Tac"); 16: values.add( "Toe"); 17: 18: Iterator iter = values.iterator(); 19: while ( iter.hasnext()) { 20: Object value = iter.next(); 21: System.out.print( value); 22: } 23: System.out.println(); 24: } 25: 26: } 23: 24: import java.util.*; 25: 26: public class NewForLoop { 27: 28: public static void main( String[] args) { 29: ArrayList values = new ArrayList(); 30: values.add( "Tic"); 31: values.add( "Tac"); 32: values.add( "Toe"); 33: 34: for ( Object value : values) { // 2P Struktur + 1P Datentyp 35: System.out.print( value); 36: } 37: System.out.println(); 38: } 39: 40: }

3 Blatt Nummer: 3 Aufgabe 1.3 Die neue for-schleife und ihre Grenzen [3P] Vervollständigen Sie das Programm, so dass folgende Ausgabe erzeugt wird: Tic-Tic-Tic-Tic-Boom! 01: 02: import java.util.*; 03: 04: public class ForWhileDoLoop { 05: 06: public static void main( String[] args) { 07: ArrayList values = new ArrayList(); 08: values.add( "Tic"); 09: values.add( "Tic"); 10: values.add( "Tic"); 11: values.add( "Tic"); 12: values.add( "Boom!"); 13: 14: Iterator iter = values.iterator(); // 0,5P 15: while ( iter.hasnext()) { // 0,5P 16: Object value = iter.next(); // 0,5P 17: System.out.print( value); // 0,5P 18: if ( iter.hasnext()) { // 1P Kriterium 19: System.out.print( "-"); 20: } 21: } 22: 23: } 24: 25: } Hinweis: Wählen Sie eine geeignete Schleife aus um die passende Folge von Werten und "-" auszugeben. Aufgabe 1.4 Generics [2P] Was versteht man unter generischen Klassen wie z.b. den "neuen" Collections? Generische Klassen verwenden einen oder mehrere Typparameter um die zur Laufzeit verwendeten Datentypen zu abstrahieren. Damit lassen sich Klassen und Funktionen beschreiben, die flexibel mit mehreren (jeweils bestimmten) Datentypen verwendbar und trotzdem typsicher sind. 1P für Typparameter / Abstraktion 1P für Typsicherheit / Flexibilität Wenn Konzept "erkennbar wiedererkannt" und mit anderen Worten umschrieben auch 2P

4 Blatt Nummer: 4 Aufgabe 1.5 Generics [5P] Sie haben eine Webapplikation mit Generics und neuer for-schleife aus Java 1.5 entwickelt. Leider wird diese Java Version von Ihrem Hoster noch nicht unterstützt! Wandeln Sie daher den folgenden Code so um, dass er wieder mit Java 1.4 läuft. 01: 02: import java.util.*; 03: 04: public class Renderer { 05: 06: public void renderusers( StringBuffer sb, List<User> users) { 07: sb.append( "<table>\n"); 08: sb.append( " <tr>\n"); 09: sb.append( " <th>realname</th>\n"); 10: sb.append( " <th>loginname</th>\n"); 11: sb.append( " </tr>\n"); 12: 13: for ( User user : users) { 14: sb.append( " <tr>\n"); 15: sb.append( " <td>" + user.realname + "</td>\n"); 16: sb.append( " <td>" + user.loginname + "</td>\n"); 17: sb.append( " </tr>\n"); 18: } 19: 20: sb.append( "</table>\n"); 21: } 22: 23: } 06: public void renderusers( StringBuffer sb, List users) { // 1P 07: sb.append( "<table>\n"); 08: sb.append( " <tr>\n"); 09: sb.append( " <th>realname</th>\n"); 10: sb.append( " <th>loginname</th>\n"); 11: sb.append( " </tr>\n"); 12: 13: Iterator iter = users.iterator(); // alternative Schleife 3P 14: while ( iter.hasnext()) { 15: User user = (User)iter.next(); // Zugriff 1P 16: sb.append( " <tr>\n"); 17: sb.append( " <td>" + user.realname + "</td>\n"); 18: sb.append( " <td>" + user.loginname + "</td>\n"); 19: sb.append( " </tr>\n"); 20: } 21: 22: sb.append( "</table>\n"); 23: }

5 Blatt Nummer: 5 Teil 2: Elementare Bibliothekskomponenten [15P] Aufgabe 2.1 [2P] Streams sind ein universelles Konzept zum Zugriff auf Datenquellen und senken. Begründen Sie, warum man im Zusammenhang mit Streams auch bei korrekter Programmierung stets mit try-catch arbeiten muss. Mit Hilfe von Streams werden Ein-/Ausgabeoperationen implementiert. Dabei wird auf Ressourcen zugegriffen, die außerhalb des Programms und damit außerhalb der Kontrolle des Programmierers liegen. Es kann also potentiell immer etwas schiefgeben (Festplatte voll, Verbindungsabbruch, ). Aufgabe 2.2 [1P] Was versteht man im Zusammenhang mit Streams unter einem Filter Ein Filter ist eine Klasse, die das jeweilige Streaminterface auf Basis des Datentyps byte implementiert und darüber hinaus Methoden anbietet, um "höhere" Datentypen zu verarbeiten bzw. zusätzliche Funktionen wie Pufferung oder Kompression implementiert. Aufgabe 2.3 [2P + 2ZP] Skizzieren Sie eine Kette von Streams und Filtern, die Objekte gezippt und gepuffert in eine Datei schreibt. Achten Sie dabei auf die richtige Reihenfolge der Elemente "Datei", "Objekte", "Puffer" und "Zip" und geben Sie ggf. die zugehörigen Klassennamen an (Zusatzpunkte!). 0,5P+0,5P 0,5P+0,5P 0,5P+0,5P 0,5P+0,5P ObjectOutputStream => ZipOutputStream => BufferedOutputStream => FileOutputStream Anmerkung: Die Aufgabe sagt "zu schreiben": wie kommt man da auf InputStreams? Zunächst werden Objekte geschrieben und als Bytes codiert. Im nächsten Schritt wird die Bytefolge gezippt. Die Pufferung findet erst unmittelbar vor der Übergabe an die Datei statt, um die Anzahl der E/A Operationen auf ein Minimum zu reduzieren und optimale Performance zu erreichen. Aufgabe 2.4 [2P] Was versteht man in Zusammenhang mit Collection Klassen unter einem Iterator? Verwenden Sie zur Erklärung den Vergleich zur Verarbeitung gewöhnlicher Arrays. Ein Iterator ist ein von einer Collection zurückgeliefertes Objekt, mit dessen Hilfe über alle Elemente der Collection iteriert werden kann. Er entspricht in etwa der Laufvariablen bei der Verarbeitung eines Arrays mit Hilfe einer for-schleife. -0,5P falls kein Vergleich mit Array

6 Blatt Nummer: 6 Aufgabe 2.5 [3P] Geben Sie die Ausgabe des folgenden Progamms an und begründen Sie diese. 01: 02: import java.util.*; 03: 04: public class SetMeUp { 05: public static void main( String[] args) { 06: Set elements = new TreeSet(); 07: elements.add( "Tick"); 08: elements.add( "Trick"); 09: elements.add( "Track"); 10: Iterator iter = elements.iterator(); 11: while ( iter.hasnext()) { 12: String element = (String)iter.next(); 13: System.out.println( element); 14: } 15: } 16: } Hinweis: Beachten Sie dabei die besonderen Eigenschaften der verwendeten Collection! Tick Track Trick -1P für falsche Reihenfolge Die Ausgabe erfolgt alphabetisch, da der TreeSet seine Elemente sortiert. Aufgabe 2.6 [5P] Collections vom Typ HashSet und HashMap verwenden bei der Speicherung ihrer Elemente die Methoden equals() und hashcode(). Welcher logische Zusammenhang zwischen diesen beiden Funktionen muss beim Vergleich zweier Objekte bestehen? Gleiche Objekte müssen den gleichen Hashwert haben, d.h. auf o1.equals(o2) MUSS FOLGEN o1.hashcode() == o2.hashcode () damit gleiche Objekte in der gleichen "Hash-Schublade" landen und wiedergefunden werden. Was bedeutet es also, wenn zwei Objekte den gleichen hashcode haben? Nichts, sie sind möglicherweise gleich vielleicht aber auch nicht. Sie sind nicht sicher ungleich 1P Alternativ auch: "Landen in der gleichen Schublade" oder "Zugriff dauert länger"

7 Blatt Nummer: 7 Nach welchem Prinzip erreicht man Konsistenz zwischen equals() und hashcode()? Indem man beide Methoden auf die gleichen Objekteigenschaften, d.h. Instanzvariablen, aufbaut. 1P Implementieren Sie nun die Methode hashcode() für folgende Klasse. 01: 02: public class BankAccount { 03: 04: String accountno; 05: double balance; 06: 07: public BankAccount( String accountno) { 08: this.accountno = accountno; 09: this.balance = 0.0; 10: } 11: 12: public String getaccountno() { 13: return accountno; 14: } 15: 16: public double getbalance() { 17: return balance; 18: } 19: 20: public void deposit( double amount) { 21: balance += amount; 22: } 23: 24: public void withdraw( double amount) { 25: balance -= amount; 26: } 27: 28: public boolean equals( Object o) { 29: if ( o instanceof BankAccount) { 30: BankAccount other = (BankAccount)o; 31: return other.accountno.equals( this.accountno); 32: } else { 33: return false; 34: } 35: } 36: 37: public int hashcode() { 38: // 2P für richtige Umsetzung 39: return accountno.hashcode(); // -1P für balance.hashcode() 40: // Ist ja in equals() auch nicht! 41: } 42: }

8 Blatt Nummer: 8 Teil 3: GUI Layout und Verständnis einfacher Komponenten [15P] Aufgabe 3.1 [3P] Ordnen Sie die folgenden Klassen den richtigen Paketen zu Lösung: 1c, 2a, 3b (1) Color (a) javax.swing (2) JPanel (b) java.awt.event (3) ActionListener (c) java.awt Aufgabe 3.2 [3P] Skizzieren Sie das Layout des folgenden Dialogs nach der Vergrößerung 1P Labels, 1P Textfields, 1P Button (muss mittig sein, wenn unklar -0,5P!) wenn Layout erkennbar völlig missverstanden, z.b. als FlowLayout, dann 0P 01: 02: import java.awt.*; 03: import java.awt.event.*; 04: import javax.swing.*; 05: 06: public class LoginDialog extends JDialog implements ActionListener { 07: 08: JTextField loginfield = new JTextField( 20); 09: JPasswordField passwordfield = new JPasswordField( 20); 10:

9 Blatt Nummer: 9 11: public LoginDialog( JFrame owner) { 12: super( owner, "Login", true); 13: 14: JPanel content = new JPanel(); 15: content.setlayout( new GridBagLayout()); 16: GridBagConstraints gbc = new GridBagConstraints(); 17: gbc.fill = GridBagConstraints.HORIZONTAL; 18: gbc.anchor = GridBagConstraints.EAST; 19: gbc.insets = new Insets( 5, 5, 5, 5); 20: 21: gbc.gridx = 0; 22: gbc.gridy = 0; 23: content.add( new JLabel( "Login"), gbc); 24: gbc.gridy++; 25: content.add( new JLabel( "Password"), gbc); 26: gbc.gridy = 0; 27: gbc.gridx++; 28: gbc.weightx = 1.0; 29: content.add( loginfield, gbc); 30: gbc.gridy++; 31: content.add( passwordfield, gbc); 32: gbc.gridy++; 33: gbc.gridx = 0; 34: gbc.gridwidth = 2; 35: JPanel buttonpanel = new JPanel(); 36: JButton okbutton = new JButton( "OK"); 37: okbutton.addactionlistener( this); 38: buttonpanel.add( okbutton); 39: content.add( buttonpanel, gbc); 40: add( content); 41: pack(); 42: } 43: 44: public void actionperformed( ActionEvent e) { 45: dispose(); 46: } 47: 48: public String getlogin() { 49: return loginfield.gettext(); 50: } 51: 52: public String getpassword() { 53: return passwordfield.gettext(); 54: } 55: 56: public static void main( String[] args) { 57: new LoginDialog( null).setvisible( true); 58: } 59:

10 Blatt Nummer: 10 Aufgabe 3.3 GUI [4P] Skizzieren Sie die Struktur der GUI Elemente des folgenden Programms als Baum 60: import java.io.*; 61: import java.awt.*; 62: import java.awt.event.*; 63: import javax.swing.*; 64: 65: public class SimpleViewer extends JFrame { 66: 67: JTextArea text; 68: JLabel status; 69: 70: public SimpleViewer() { 71: super( "SimpleViewer"); 72: setdefaultcloseoperation( EXIT_ON_CLOSE); 73: 74: // Menü erzeugen, siehe nächste Aufgabe ;-) 75: 76: JPanel content = new JPanel(); 77: content.setlayout( new BorderLayout()); 78: text = new JTextArea(); 79: text.seteditable( false); 80: content.add( new JScrollPane( text), BorderLayout.CENTER); 81: status = new JLabel( "Ready"); 82: content.add( status, BorderLayout.SOUTH); 83: add( content); 84: 85: setsize( 640, 480); 86: setlocationrelativeto( null); 87: } 88: 89: public void openfile() { 90: // Eine Datei auf der Festplatte auswählen und einlesen... 91: } 92: 93: public static void main( String[] args) { 94: SimpleViewer v = new SimpleViewer(); 95: v.setvisible( true); 96: v.openfile(); 97: } 98: }

11 Blatt Nummer: 11 1P pro Element -0,5P pro Fehler JFrame Lösung hier skizzieren JPanel SOUTH CENTER JLabel JScrollPane JTextArea

12 Blatt Nummer: 12 Aufgabe 3.4 [5P] Der Datei-Viewer soll nun um eine Menüleiste ergänzt werden, welche das Menü "File" mit dem Menüpunkt "Open" enthält. Dieser soll nach Auswahl die Funktion openfile() aufrufen. Geben Sie die dafür erforderlichen Codezeilen an. Hinweis: Die entsprechenden Codezeilen werden gedanklich an der durch den Kommentar gekennzeichneten Stelle im Konstruktor eingefügt. 01: JMenuBar menubar = new JMenuBar(); // 1P incl. setjmenubar() 02: JMenu menu = new JMenu( "File"); // 1P incl. add() 03: JMenuItem menuitem = new JMenuItem( "Open"); // 1P incl. add() 04: menuitem.addactionlistener( new ActionListener() { // 1P 05: public void actionperformed( ActionEvent e) { 06: openfile(); // 1P 07: } 08: }); 09: menu.add( menuitem); 10: menubar.add( menu); 11: setjmenubar( menubar);

13 Blatt Nummer: 13 Teil 4: Verständnis komplexer GUI Komponenten [15P] Datei AudioFile.java 01: 02: public class AudioFile { 03: 04: String artist, title; 05: 06: public AudioFile( String artist, String title) { 07: this.artist = artist; 08: this.title = title; 09: } 10: 11: public String getartist() { 12: return artist; 13: } 14: 15: public String gettitle() { 16: return title; 17: } 18: 19: } 20: Datei AudioFileTableModel.java 01: 02: import java.util.*; 03: import javax.swing.*; 04: import javax.swing.table.*; 05: 06: public class AudioFileTableModel extends AbstractTableModel { 07: 08: static final String[] columnnames = { "Artist", "Title"}; 09: 10: List<AudioFile> audiofiles = new ArrayList<AudioFile>(); 11: 12: public int getcolumncount() { 13: return columnnames.length; 14: } 15: 16: public int getrowcount() { 17: return audiofiles.size(); 18: } 19: 20: public boolean iscelleditable( int row, int col) { 21: return false; 22: } 23: 24: public String getcolumnname( int col) { 25: return columnnames[col]; 26: }

14 Blatt Nummer: 14 27: 28: public Object getvalueat( int row, int col) { 29: AudioFile audiofile = audiofiles.get( row); 30: switch ( col) { 31: case 0: 32: return audiofile.getartist(); 33: case 1: 34: return audiofile.gettitle(); 35: default: 36: return null; 37: } 38: } 39: 40: public void setvalueat( Object value, int row, int col) { 41: // Tabelle nicht editierbar 42: } 43: 44: public List<AudioFile> getaudiofiles() { 45: return new ArrayList<AudioFile>( audiofiles); // Kopie liefern 46: } 47: 48: public void setaudiofiles( List<AudioFile> audiofiles) { 49: this.audiofiles = audiofiles; 50: firetabledatachanged(); 51: } 52: 53: } 54: Datei AudioFileBrowser.java 01: 02: import java.util.*; 03: import java.awt.*; 04: import java.awt.event.*; 05: import javax.swing.*; 06: 07: public class AudioFileBrowser extends JFrame implements ActionListener { 08: 09: AudioFileTableModel model = new AudioFileTableModel(); 10: 11: public AudioFileBrowser() { 12: super( "AudioFileBrowser"); 13: setdefaultcloseoperation( EXIT_ON_CLOSE); 14: add( new JScrollPane( new JTable( model)), BorderLayout.CENTER); 15: JPanel controlpanel = new JPanel(); 16: JButton closebutton = new JButton( "close"); 17: closebutton.addactionlistener( this); 18: controlpanel.add( closebutton); 19: add( controlpanel, BorderLayout.SOUTH); 20: pack(); 21: } 22: 23: public void actionperformed( ActionEvent e) { 24: dispose(); 25: }

15 Blatt Nummer: 15 26: 27: public static void main( String[] args) { 28: AudioFileBrowser afb = new AudioFileBrowser(); 29: // Daten laden und setzen... 30: afb.setvisible( true); 31: } 32: } 33: Aufgabe 4.1 Erweiterung (Teil 1) [5P] Die Klasse AudioFile soll um die Eigenschaft "genre" erweitert werden. Zählen Sie die dazu notwendigen Änderungen auf und geben Sie den zugehörigen Code an. Hinweis: Sie brauchen nicht die ganze Klasse sondern nur die neuen / geänderten Bestandteile angeben. 1. Neue Instanzvariable definieren 1P String genre; 2. Konstruktor erweitern 2P public AudioFile( String artist, String title, String genre) { this.artist = artist; this.title = title; this.genre = genre; } 3. Neue Zugriffsmethode definieren 2P public String getgenre() { return genre; } Aufgabe 4.2 Erweiterung (Teil 2) [5P] Die neue Spalte "genre" soll als 3te Spalte in der Tabelle angezeigt werden. Beschreiben Sie alle notwendigen Änderungen an der Klasse AudioFileTableModel. 1. Neuen Spaltennamen hinzufügen 2,5P, -1P wenn nur Text "neue Spalte anlegen" o.ä. static final String[] columnnames = { "Artist", "Title", "Genre"}; 2. Methode getvalueat( ) erweitern 2,5P case 3: return audiofile.getgenre();

16 Blatt Nummer: 16 Aufgabe 4.3 Erweiterung (Teil 3) [5P] Nun soll das GUI um eine Möglichkeit zur Filterung der Einträge erweitert werden. Da (noch) keine Datenbank verwendet wurde, muss die Filterung von Hand programmiert werden. Dazu soll einen Funktionen erstellt werden, die aus einer Liste von AudioFile-Objekten sowie einem Filterausdruck eine neue Liste erstellen, die nur noch AudioFile-Objekte enthält, die dem Filter entsprechen. Implementieren Sie die Funktion zur Filterung nach Titel. Dabei sollen alle AudioFiles zurückgeliefert werden, die mit dem Filterausdruck beginnen. Auszug aus dem API zur Klasse String: public boolean startswith(string prefix) Parameters: prefix - the prefix. Returns: true if the character sequence represented by the argument is a prefix of the character sequence represented by this string; false otherwise. Note also that true will be returned if the argument is an empty string or is equal to this String object as determined by the equals(object) method. 01: public List<AudioFile> filterbytitle( 02: List<AudioFile> audiofiles, 03: String expression 04: ) { 05: List<AudioFile> result = new ArrayList<AudioFile>(); 06: 07: for ( AudioFile audiofile : audiofiles) { 08: if ( audiofile.gettitle().startswith( expression)) { 09: result.add( audiofile); 10: } 11: } 12: 13: return result; 14: } Das Ergebnis der Filterung wird anschließend an die Methode setaudiofiles() der Klasse AudioFileTableModel übergeben. Was bewirkt der darin enthaltene Aufruf firetabledatachanged()? Der Aufruf löst ein Event aus mit dem das JTable Objekt, welches als Listener beim TableModel eingetragen ist, informiert wird, dass sich möglicherweise alle Daten in der Tabelle geändert haben und die Anzeige daher komplett aktualisiert werden muss.

17 Blatt Nummer: 17 Teil 5: Verständnis von Netzwerken [10P] Aufgabe 5.1 Addressierung im Netz [2P] Erläutern Sie die Bedeutung von IP-Adresse und Portnummer für die Addressierung Mit Hilfe der IP-Adresse wird ein Rechner eindeutig identifiziert (Analogie: Haus). Die Portnummer identifiziert einen Dienst auf einem Rechner (Analogie: Briefkasten). Für viele Standarddienste sind feste Portnummern reserviert (z.b. http = 80). Aufgabe 5.2 Netzwerktopologie [3P] Skizzieren Sie die Topologie eines privaten Ethernets mit 3 Rechnern, die über einen Switch untereinander sowie mit einem DSL Router verbunden sind. Lösung hier skizzieren Rechner 2 Rechner 1 Switch Rechner 3 DSL Router ins Internet Aufgabe 5.3 Einfache Protokollverarbeitung [5P] Ein verteiltes Telefonbuch soll die Befehle "define(name,nummer)", "lookup(name)" und "delete(name)" verarbeiten. Diese sollen wie folgt über eine Socketverbindung übertragen werden: Format: "define:{name},{nummer}" Beispiel: "define:meier,07161/12345" Format: "lookup:{name}" Beispiel: "lookup:meier" Format: "delete:{name}" Beispiel: "delete:meier"

18 Blatt Nummer: 18 Implementieren Sie eine Methode, welche die ankommenden Nachrichten verarbeitet indem sie diese zerlegt und die entsprechenden Methoden aufruft. Auszug aus dem API zur Klasse String: public int indexof(string str) Parameters: str - any string. Returns: if the string argument occurs as a substring within this object, then the index of the first character of the first such substring is returned; if it does not occur as a substring, -1 is returned. public String[] split(string regex) Parameters: regex - the delimiting regular expression Returns: the array of strings computed by splitting this string around matches of the given regular expression public String substring(int beginindex) Parameters: beginindex - the beginning index, inclusive. Returns: the substring from beginindex to the end of this string public String substring(int beginindex, int endindex) Parameters: beginindex - the beginning index, inclusive. endindex - the ending index, exclusive. Returns: the substring from beginindex to endindex - 1.

19 Blatt Nummer: 19 01: public class MessageHandler { 02: 03: public void process( String message) { 04: int pivot = message.indexof( ':'); 05: String command = message.substring( 0, (pivot>0? pivot : 0)); 06: String[] parameters = message.substring( pivot+1).split( ","); 07: if ( command.equals( "define")) { // 2P 08: define( parameters[0], parameters[1]); 09: } else if ( command.equals( "lookup")) { // 1,5P 10: lookup( parameters[0]); 11: } else if ( command.equals( "delete")) { // 1,5P 12: delete( parameters[0]); 13: } else { 14: error( message); 15: } 16: } 17: 18: public void define( String name, String phonenumber) { 19: // neue Nummer definieren und Ergebnis zurückschicken 20: } 21: 22: public void lookup( String name) { 23: // Nummer nachschlagen und Ergebnis zurückschicken 24: } 25: 26: public void delete( String name) { 27: // Eintrag löschen und Ergebnis zurückschicken 28: } 29: 30: public void error( String message) { 31: // Protokollfehler 32: } 33: 34: }

20 Blatt Nummer: 20 Teil 6: Verständnis von Datenbanken [10P] Aufgabe 6.1 Datenmodellierung [5P] Beschreiben Sie ein Datenbankschema (Tabellen, Spalten, Datentypen) das den folgenden Sachverhalt wiederspiegelt: Ein Kunde hat einen Vornamen und einen Nachnamen. Zu jedem Kunde kann es mehrere Kontaktinformationen geben, die durch ihren Typ (z.b. Telefon, Fax, ) und ihren Wert gekennzeichnet sind. Hinweis: Führen Sie für Verweise ggf. zusätzliche technische Schlüssel ein. Tabelle Kunde: id INT AUTO_INCREMENT PRIMARY KEY vorname VARCHAR nachname VARCHAR Tabelle KontaktInfo id INT AUTO_INCREMENT PRIMARY KEY kundenid INT REFERENCES Kunde typ VARCHAR (oder INT) wert VARCHAR je 2P für Tabellen inkl. Spalten, 1P für Fremdschlüssel, -0,5P pro Fehler

21 Blatt Nummer: 21 Aufgabe 6.2 Datenbankabfragen [5P] Geben Sie geeignete SQL-Anweisungen für die angegebenen Teilaufgaben an Tabelle Artikel id INT AUTO_INCREMENT PRIMARY KEY artikelnummer VARCHAR bezeichnung VARCHAR kategorie VARCHAR anzahl INT Einfügen von 3 Duschköpfen mit der Artikelnummer in der Kategorie Sanitär INSERT INTO Artikel ( artikelnummer, bezeichnung, kategorie, anzahl) VALUES ( '12345', 'Duschkopf ', 'Sanitär', 3) Hinweis: id ist auto increment! Selektion des Artikels mit der artikelnummer SELECT * FROM Artikel WHERE artikelnummer = '10000' Selektion aller Artikel aus der Kategorie Autozubehör die ausverkauft sind SELECT * FROM Artikel WHERE kategorie = 'Autozubehör' AND anzahl = 0 Änderung der Bezeichnung von Artikelnummer von "Raider" nach "Twix" UPDATE Artikel SET bezeichnung='twix' WHERE artikelnummer = '50512' Löschung aller Artikel deren Bezeichnung mit "ACME" beginnt DELETE FROM Artikel WHERE bezeichnung LIKE 'ACME%' // -05P für = 'ACME*' o.ä.

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

Teil 1: Grundlegende Eigenschaften der Sprache Java [20P] Blatt Nummer: 1 Teil 1: Grundlegende Eigenschaften der Sprache Java [20P] Aufgabe 1.1 Datentypen [5P] Geben Sie die Ausgabe des folgenden Programms an (mit Begründung) 02: public class Datatypes { 03:

Mehr

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

Teil 1: Grundlegende Eigenschaften der Sprache Java [25P] Blatt Nummer: 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. In Java gibt

Mehr

Teil 1: Neuerungen in Java 1.5 [15P]

Teil 1: Neuerungen in Java 1.5 [15P] Blatt Nummer: 1 Teil 1: Neuerungen in Java 1.5 [15P] Aufgabe 1.1 Verständnis von Enums [2P] Welche Vorteile bieten Enums gegenüber einfachen Konstanten? Ein enum definiert einen eigenen Datentyp mit endlichem

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2009 Praktikum: Grundlagen der Programmierung Aufgabenblatt 11 Prof. R. Westermann, R. Fraedrich,

Mehr

Probeklausur: Programmierung WS04/05

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,

Mehr

JTable. W. Lang HWR Berlin, SS

JTable. W. Lang HWR Berlin, SS JTable W. Lang HWR Berlin, SS 2014 1 JTable Die Swing-Komponente JTable dient der Darstellung einer zweidimensionalen Tabelle Verwendung häufig im Zusammenhang mit Datenbankanwendungen Im Gegensatz zu

Mehr

04 - Actions. Actions

04 - Actions. Actions Actions Motivation!In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt.!häufig werden gleiche Aktionen durch verschiedene Swing-Komponenten ausgelöst. Z.B. durch

Mehr

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr. Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 22 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische Benutzeroberfläche (engl: Graphical User Interface,

Mehr

jcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout.

jcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout. 04.07.2011 Lösungsvorschlag 1. Aufgabe (12 + 12 Punkte): Screendesign : im Center: Label mit Bild 3P: Panel im West mit BoxLayout und TextField, Scrollpane und TextArea 4P: Panel im East mit FlowLayout

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 1 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,...

Mehr

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane Hochschule Harz Programmierung2 Tutorial 04: FB Automatisierung und Informatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, JSplitPane und I/O Versuchsziele Kenntnisse

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.

Mehr

Informatik II Aufgabenblatt 7

Informatik II Aufgabenblatt 7 Prof. Dr. Th. Letschert FB MNI TH Mittelhessen StudiumPlus Informatik II Aufgabenblatt 7 Gruppenübung Stücklisten Stücklisten beschreiben die Zusammensetzung von Erzeugnissen aus Untereinheiten. Bei der

Mehr

GUI Programmierung mit JAVA Swing

GUI Programmierung mit JAVA Swing GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1 JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische

Mehr

Funktionale und Objekt-Orientierte Programmierkonzepte

Funktionale und Objekt-Orientierte Programmierkonzepte Funktionale und Objekt-Orientierte Programmierkonzepte Prof. Marc Fischlin, Wintersemester 15/16 Kapitel 17: GUI, Threads und verschachtelte Klassen 13. Oktober 2010 Dr.Marc Fischlin Kryptosicherheit 1

Mehr

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert

Mehr

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1 IT I: Heute abstrakte Methoden und Klassen Interfaces Interfaces List, Set und Collection 22.11.2018 IT I - VO 7 1 Wissensüberprüfung Überschreiben von Methoden: Aufruf der Methode der Oberklasse ist oft

Mehr

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen Einführung in die Programmierung für NF Grafische Benutzeroberflächen Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorienferte Programmierung kennenlernen.

Mehr

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Generic Programming without Generics from JAVA5 Motivation Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen? Ein Bespiel: sie haben bereits eine Klasse zur Multiplikation von Matrizen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

Mehr

Programmieren 2 Übung Semesterwoche 6

Programmieren 2 Übung Semesterwoche 6 Programmieren 2 Übung Semesterwoche 6 1. Aufgabe: Klasse Cube public class Cube implements Comparable protected int number; Nummer des Kubus int s1, s2, s3; Die 3 Seiten des Kubus. public static

Mehr

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList.

Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList. Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 37 JList JTable Layout-Manager GridBagLayout 2 / 37 Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Exkurs: Graphische Benutzeroberflächen FH Braunschweig/Wolfenbüttel Sommersemester 2009 1 / 22 Gliederung I Wiederholung Klassen, Objektorientierung (Kapitel 10,11) Exkurs:

Mehr

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1

Heute. Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files IT I - VO 11 1 Heute Grafische Benutzeroberflächen (Anonyme) innere Klassen Einfache Simulationen main / ausführbare jar-files 17.01.2017 IT I - VO 11 1 Organisatorisches Noch zwei UE und eine Wissensüberprüfung Heute

Mehr

JList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

JList JTable Layout-Manager GridBagLayout. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 JList 2 JTable 3 Layout-Manager 4 GridBagLayout Die Klasse JList Die Klasse JList stellt einen Container für Auswahllisten

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Aufgabe Ein Benutzer soll zwei Zahlen in ein Programm

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik GUI-Programmierung mit Swing AWT und Swing Java enthält zwei Pakete zur Programmierung graphischer Oberflächen. java.awt: Das Abstract

Mehr

Aufgabe 03. Swing: Die Swing-Oberfläche wird vorgegeben: Abbildung 1 Musterlösung

Aufgabe 03. Swing: Die Swing-Oberfläche wird vorgegeben: Abbildung 1 Musterlösung Hochschule Harz Programmierung 2 Aufgabe 03: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 2 für MI / WI Thema: Swing, GridBagLayout und Bit-Funktionen Versuchsziele

Mehr

Instrumentierung und Dekodierung

Instrumentierung und Dekodierung 116 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Instrumentierung und Dekodierung Erweiterung der Grafikklassen Das awt-paket erweitert alle Klassen für Grafikobjekte in java.awt, so

Mehr

Einführung in GUI-Programmierung. javax.swing

Einführung in GUI-Programmierung. javax.swing Einführung in GUI-Programmierung javax.swing GUI Graphical User Interface ( Grafische Benutzerschnittstelle ) Anschaulichere und leichtere Möglichkeit zur Dateneingabe und Kontrolle von Programmen Stellt

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Aufgabe Ein Benutzer soll

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 5. Grafische Userinterfaces Christian Scheible Institut für Maschinelle Sprachverarbeitung 31. Juli 2009 Christian Scheible Java für Computerlinguisten 31. Juli 2009 1 / 33

Mehr

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 6. Juli 2018 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 27. August

Mehr

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

Teil 1: Grundlegende Eigenschaften der Sprache Java [25P] Blatt Nummer: 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

Mehr

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ EAD II Übung 5 Graphische Benutzungsoberfläche mit BlueJ Graphische Benutzungsoberfläche (GUI) Fenster, das weitere Komponenten zur Darstellung und Interaktion enthält spezielle Standardbibliotheken erforderlich,

Mehr

Objektorientiertes Programmieren. Übungsblatt 5

Objektorientiertes Programmieren. Übungsblatt 5 Objektorientiertes Programmieren Christian Silberbauer Übungsblatt 5 Folgende Aufgaben beziehen sich weitgehend auf die GUI-Folien der Vorlesung. Speichern Sie bitte die einzelnen Versionen der KundenVerwaltung

Mehr

Kapitel 8: Grafische Benutzerschnittstellen

Kapitel 8: Grafische Benutzerschnittstellen Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

Mehr

Versuchsziele Vertiefung im Verständnis der JFrame-Programmierung, Benutzung von Klassen für die Tabellenanzeige.

Versuchsziele Vertiefung im Verständnis der JFrame-Programmierung, Benutzung von Klassen für die Tabellenanzeige. Hochschule Harz FB Automatisierung und Informatik Versuch: Grafische Nutzerschnittstellen mit Java Grafikdarstellung Thema:Anzeigen einer Grafikdatei in einer Tabelle Versuchsziele Vertiefung im Verständnis

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software

Teil 1: Grundeigenschaften von Rechnern und Software Blatt Nummer: 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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1 IT I: Heute Klasse Object equals, hashcode, tostring HashSet 14.11.2017 IT I - VO 6 1 Wissensüberprüfung Wie ruft man statische Methode auf? Gegeben Klasse Fix mit statischer Methode static boolean foxi(string

Mehr

...erinnern Sie sich? oopjs4b / kwhbkd4r

...erinnern Sie sich? oopjs4b / kwhbkd4r ...erinnern Sie sich? oopjs4b / kwhbkd4r !" Ereignisbehandlung in awt/swing führt Liste interessierter Behandler GUI- Komponente (z.b. Knopf) wird eingetragen trägt ein Ereigniskanal fertigt ab neuer Behandler

Mehr

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 { Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Stand FTE2 Anfang 4. Semester plus Projekt Multiuhren_Thread Ich gehe im Hinblick auf Klassenarbeiten und der Abschlussprüfung davon aus, dass Sie das Skript OOP JAVA2 durchgearbeitet haben. Wir haben

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen

Mehr

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

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12. Heute Nachbetrachtung Wissensüberprüfung Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.2015 IT I - VO 9 1 Organisatorisches Zwischentest findet am 16.12. von 17:30 bis

Mehr

Technische Universität Braunschweig

Technische Universität Braunschweig Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren II Dr. Werner Struckmann 18. August 2017 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Javakurs für Fortgeschrittene

Javakurs für Fortgeschrittene Javakurs für Fortgeschrittene Einheit 03: Swing Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Einführung in GUI-Programmierung Motivation Grundlagen von Swing Praxis: UI für

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

Java Spickzettel von Panjutorials.de

Java Spickzettel von Panjutorials.de Java Spickzettel von Panjutorials.de Hallo Welt public class HalloWelt public static void main(string[] args) // Gibt "Hallo Welt" auf die Konsole aus System.out.print("Hallo Welt"); Eine eigenständige

Mehr

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick 1 Einführung 2 Einfache Swing Komponenten 3 Ereignisbehandlung und Adapterklassen 4 Zeichnen 5 Layout Manager 6 Komplexere Swing Komponenten

Mehr

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2) Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Vorlosung: Swing: Erstellen eines JFrames mit GridBagLayout

Vorlosung: Swing: Erstellen eines JFrames mit GridBagLayout Hchschule Harz BS/GUI Vrlesung: FB Autmatisierung und Infrmatik Dipl.-Inf., Dipl.-Ing. (FH) M. Wilhelm BS/GUI Thema: Swing und GridBagLayut Versuchsziele Kenntnisse in der Anwendung vn: Erstellen einer

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik GUI-Programmierung mit Java Teil I Unterlagen zum Modul OOP mit Java V 3.0 2007 by WBR1/BFH-TI 2011 by MOU2/BFH-TI GUI-Programmierung V3.0 2011 by WBR1&MOU2/BFH-TI Lernziele Die Kursteilnehmer sind in

Mehr

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 7. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Juli 2017 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 28. August

Mehr

Propädeutikum Programmierung in der Bioinformatik

Propädeutikum Programmierung in der Bioinformatik Propädeutikum Programmierung in der Bioinformatik Java Collections Thomas Mauermeier 15.01.2019 Ludwig-Maximilians-Universität München Collections? Was ist eine Collection? Container für mehrere Objekte

Mehr

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer

Objektorientierung II & die Java Klassenbibliothek. Kristian Bergmann und Arthur Lochstampfer Java Kurs Objektorientierung II & die Java Klassenbibliothek Kristian Bergmann und Arthur Lochstampfer Vergleich class Apfel { String farbe; int gewicht; String geerntetin; class Erdbeere { String farbe;

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache

Mehr

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen Teil 5 - Java Programmstruktur Operatoren Schlüsselwörter Datentypen 1 Kommentare in Java In Java gibt es drei Möglichkeiten zur Kommentierung: // Kommentar Alle Zeichen nach dem // werden ignoriert. für

Mehr

Grafische Benutzeroberflächen

Grafische Benutzeroberflächen 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"

Mehr

Probeklausur Informatik 2 Sommersemester 2013

Probeklausur Informatik 2 Sommersemester 2013 Probeklausur Informatik 2 Sommersemester 2013 1 Probeklausur Informatik 2 Sommersemester 2013 Name: Matrikelnummer: Hilfsmittel: Es sind alle schriftlichen Unterlagen, aber keine elektronischen Hilfsmittel

Mehr

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

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Schein-/Bachelorklausur Teil 2 am 13.02.2007 Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock. Alle Studiengänge außer Bachelor melden sich über die Lehrstuhlwebseite

Mehr

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung Aufgabe Editor package BA.GUI.Swing; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.logging.level; import java.util.logging.logger;

Mehr

Swing Lernen am Code Teil 1

Swing Lernen am Code Teil 1 Swing Lernen am Code Teil 1 Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster

Mehr

II.4.4 Exceptions - 1 -

II.4.4 Exceptions - 1 - n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen

Mehr

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor(); Bereich: Grafische Benutzeroberflächen (UI), Events (2) Editor Package: de.dhbwka.java.exercise.ui.editor Klasse: Editor Aufgabenstellung: Schreiben Sie einen kleinen Texteditor mit Swing! Keine Panik,

Mehr

11. GUI-Programmierung mit SWING Überblick

11. GUI-Programmierung mit SWING Überblick 11. GUI-Programmierung mit SWING Überblick 11.1 Einführung 11.2 Einfache Swing Komponenten 11.3 Ereignisbehandlung und Adapterklassen 11.4 Zeichnen 11.5 Dialoge 11.6 Layout Manager 11.7 Komplexere Swing

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1 IT I: Heute Klasse Object equals, hashcode, tostring HashSet 13.11.2018 IT I - VO 6 1 Organisatorisches Wissensüberprüfung gleich im Anschluss an die VO UE heute schon früher (ab 11:45) heute beide UE-Gruppen

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen Werkzeugkiste Java 1 1 Klassen anlegen und Objekte erzeugen Klassengrundgerüst 1 /** 2 * Write a description of class Testklasse here. 3 * 4 * @author ( your name ) 5 * @version (a version number or a

Mehr

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Java I Vorlesung 11 Graphische Oberflächen mit Swing Java I Vorlesung 11 Graphische Oberflächen mit Swing 5.7.2004 Swing Komponenten Layout-Manager Events Swing und Threads Die Java-Plattform 2 Die Java-Plattform 3 "Hello World" in Swing HelloWorldS.java

Mehr

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch) JAVA BASICS 2. Primitive Datentypen 1. Warum Java? zunehmend weit verbreitet einfach und (relativ) sicher keine Adressrechnung, aber Pointer keine gotos kein Präprozessor keine globalen Variablen garbage

Mehr

Wie entwerfe ich ein Programm?

Wie entwerfe ich ein Programm? Wie entwerfe ich ein Programm? Welche Objekte brauche ich? Flussdiagramme für Programmablauf Vorcode Testcode Hauptcode Wir spielen Lotto! Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 5 +

Mehr

Teil 1: Grundeigenschaften von Rechnern und Software [20P]

Teil 1: Grundeigenschaften von Rechnern und Software [20P] Blatt Nummer: 1 Teil 1: Grundeigenschaften von Rechnern und Software [20P] Aufgabe 1.1 [6P] 1P pro Stichwort Welchen Vorteil bieten Computer gegenüber anderen Maschinen und durch welchen Nachteil wird

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 22 Einführung: Grafische Benutzeroberflächen 2 / 22 Einführung: GUI Fast alle Programme besitzen mittlerweile eine grafische

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung

Mehr

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

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Hauptklausur: PRGII MD

Hauptklausur: PRGII MD Hauptklausur: PRGII MD Aufgabe 1 (18 Punkte) Betrachten Sie folgenden binären Suchbaum. a) Geben Sie die Knoten des Baumes in postorder aus. anne, helmut, harald, bert, arno, manuel, uwe, thorsten, sebastian,

Mehr

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Klausur Fachprüfung Wirtschaftsinformatik. Name: Klausur Fachprüfung Wirtschaftsinformatik Dauer: 2 Stunden Datum: 02.10.2003 Name: Punkte True-or-False: von 15 Punkte Multiple Choice: von 15 Punkte Quickies: von 30 Punkte Shorties: von 20 Punkte Longies:

Mehr

Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

Mehr

Java - Programmierung - Prozedurale Programmierung 1

Java - Programmierung - Prozedurale Programmierung 1 Java - Programmierung - Prozedurale Programmierung 1 // elementare Datentypen public class el_dt public static void main(string args []) byte b = 127; short s = 32767; int i = 2147483647; long l = 9223372036854775807L,

Mehr

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind:

Aufgabe 1.1. Wählen Sie jene Variablendeklarationen mit Initialisierungen aus, die in Java hinsichtlich der Typen korrekt sind: Test 1 in Programmkonstruktion 59 / 100 Punkte 1. Multiple-Choice-Aufgaben 20 / 30 Punkte Bitte wählen Sie alle zutreffenden Antwortmöglichkeiten aus. Es können beliebig viele Antwortmöglichkeiten zutreffen,

Mehr

Objektorientierung III

Objektorientierung III Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 10 9.1.2017 Objektorientierung III Aufgabe 10.1. Wir sind doch alle gleich In der Vorlesung

Mehr

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4

Fachhochschule Stuttgart Prof. Uwe Schulz 5. Juli 2006 Hochschule der Medien Klausur Informatik, EDV-Nr (42021) Seite 1 von 4 Hochschule der Medien Klausur Informatik, EDV-Nr. 40301(42021) Seite 1 von 4 Name: Matr. Nr.: Note Teil 1: Keine Hilfsmittel! Bearbeitungszeit: 20 Minuten Frage Stichwort Punkte 1 Schleife 2 2 Code-Fragment

Mehr