Philipp Ciechanowicz 5. Übung zu Software Engineering WS 2007/2008.

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
DI Christian Donner cd (at) donners.com
Internetzugriff mit Strings und Streams
Ausnahmen HS Merseburg (FH) WS 06/07.
Daten Anzeigen und Ausdrucken Zu Zeigende Daten (z.B. Studentenplan) Daten in XML müssen geparst und in PDF- Format umgewandelt werden. Dazu iTEXT Bibliothek.
Java: Programmierung grafischer Oberflächen
Threads Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
MD 5/02 CORBA Lebensdauer von Objekten, Transaktionen.
MD 4/02 Hello World from CORBA ein erster Überblick.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
Philipp Ciechanowicz 6. Übung zu Software Engineering WS 2007/2008.
Java: Programmierung grafischer Oberflächen
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
7.1.5 Java RMI – Remote Method Invocation
Optimale Ursprungsgerade
CuP - Java Zwölfte Vorlesung Klassen – Komposition und Vererbung Freitag, 15. November 2002.
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
Grundkurs Informatik mit Java
 Präsentation transkript:

Philipp Ciechanowicz 5. Übung zu Software Engineering WS 2007/2008

1 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 Entwickeln Sie ein Anwendungssystem zum Verwalten von Studierenden, bestehend aus den drei Schichten Datenhaltung, Geschäftslogik und Benutzerschnittstelle. a)Implementieren Sie eine Klasse Student, welche den Vornamen, den Nachnamen, sowie die Matrikelnummer des Studierenden speichert. b)Implementieren Sie eine Klasse StudentenVerwaltung zum Verwalten der Studierenden. Es soll möglich sein, neue Studierende anzulegen, zu ändern und zu löschen, sowie diese persistent zu speichern. Nutzen Sie die Klassen FileOutputStream und ObjectOutputStream bzw. FileInputStream und ObjectInputStream, um die verwalteten Student-Objekte in eine Datei studenten.dat zu schreiben bzw. diese aus der Datei auszulesen. Es ist ausreichend, wenn Sie diese Datei bei Programmstart komplett einlesen und die Studierenden beim Verlassen des Programms wieder in der Datei sichern. c)Entwerfen Sie eine grafische Benutzeroberfläche (GUI), über welche Sie die Klasse StudentenVerwaltung ansprechen können. In dem Fenster sollte jeweils der Datensatz eines Studierenden angezeigt werden. Sehen Sie hierbei für jedes Attribut der Klasse Student ein Label und ein TextField vor. Implementieren Sie des Weiteren die Schaltflächen Vor und Zurück, mit denen Sie durch die Liste der Studierenden blättern können, eine Schaltfläche Neu, mit der Sie zu den aktuell in den TextFields eingetragenen Daten einen neuen Studenten anlegen können, eine Schaltfläche Ändern, mit der sie die Daten des angezeigten Studierenden aktualisieren können, sowie eine Schaltfläche Beenden, mit der die Daten gesichert werden und die Anwendung beendet wird.

2 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 a) a)Implementieren Sie eine Klasse Student, welche den Vornamen, den Nachnamen sowie die Matrikelnummer des Studierenden speichert. public class Student implements Serializable { private String vorname; private String nachname; private String matrikelnummer; public String getVorname() { return vorname; } public String getNachname() { return nachname; } public String getMatrikelnummer() { return matrikelnummer; } public void setVorname(String v) { vorname = v; } public void setNachname(String n) { nachname = n; } public void setMatrikelnummer(String m) { matrikelnummer = m; } }

3 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public class StudentenVerwaltung { private Vector v; private int pointer; StudentVerwaltung() {... } public void addStudent(Student s) {... } public Student deleteStudent() {... } public Student getNextStudent() {... } public Student getPreviousStudent() {... } public void updateStudent(Student s) {... } private void loadData() {... } private void saveData() {... } private int getNumberOfCurrentStudent() {... } private int getTotalNumberOfStudents() {... } }

4 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public void saveData() { try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILENAME)); oos.writeln(v.size()); for(Student s : v) { oos.writeObject(s); } oos.close(); } catch(Exception e) { e.printStackTrace(); }

5 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public void loadData() { try { File file = new File(FILENAME); if(file.exists()) { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILENAME)); int size = ois.readInt(); for(int i = 0; i < size; i++) { v.add((Student)ois.readObject()); } ois.close(); } pointer = -1; } catch(Exception e) { e.printStackTrace(); }

6 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public void addStudent(Student s) { v.add(s); pointer = v.size() - 1; } public void updateStudent(Student s) { if(v.size() != 0) { v.setElementAt(s, pointer); }

7 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public Student deleteStudent() { if(v.size() != 0) { v.removeElementAt(pointer); } if(v.size() == 0) { pointer = -1; return null; } else { if(pointer = v.size()) { pointer = v.size() - 1; } return v.elementAt(pointer); }

8 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public Student getNextStudent() { if(v.size() == 0) { return null; } else { pointer++; if(pointer == v.size()) { pointer = 0; } return v.elementAt(pointer); }

9 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public Student getPreviousStudent() { if(v.size() == 0) { return null; } else { pointer--; if(pointer == -1) { pointer = v.size() - 1; } return v.elementAt(pointer); }

10 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 b) public StudentVerwaltung() { v = new Vector (); loadData(); } public int getTotalNumberOfStudents() { return v.size(); } public int getNumberOfCurrentStudent() { return pointer + 1; }

11 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 12 c) public class StudentenVerwaltungGui extends JFrame implements ActionListener, WindowListener { private StudentenVerwaltung sv; private JTextField textfieldVorname, textfieldNachname, textfieldNummer; private JLabel labelVorname, labelNachname, labelNummer; private JButton buttonPrev, buttonNext, buttonNew, buttonUpdate, buttonDelete, buttonExit; public StudentenVerwaltungGui() {... } public static void main(String[] args) {... } public void actionPerformed(ActionEvent e) {... } // WindowListener, Hilfsmethoden, etc... }

12 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 13 Implementieren Sie eine CORBA-basierte verteilte Anwendung, die auf einem Server einen Weihnachtsmann bereitstellt, von dem Sie mit dem Aufruf der Methode public String holeGeschenk() ein Geschenk abholen können. a)Spezifizieren Sie die Schnittstelle der Server-Klasse Weihnachtsmann in IDL. b)Implementieren Sie die Methode public String holeGeschenk() des Weihnachtsmanns in der Klasse WeihnachtsmannImpl. c)Implementieren Sie die Server-Anwendung WeihnachtsmannServer analog zum auf der Vorlesungsseite zur Verfügung gestellten Beispiel. d)Implementieren Sie die Client-Anwendung WeihnachtsmannClient. Geben Sie das Geschenk, das Sie von dem auf dem Server hinterlegten Weihnachtsmann bekommen, auf dem Bildschirm aus. e)Erzeugen und übersetzen Sie mit idlj und javac die für Ihre Anwendung benötigten Klassen. f)Testen Sie Ihre Anwendung sowohl lokal als auch mit dem Weihnachtsmann, der auf dem Rechner wi-vm573.uni-muenster.de, Port 1050 hinterlegt ist. Welches Geschenk haben Sie bekommen?

13 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 13 a) a)Spezifizieren Sie die Schnittstelle der Server-Klasse Weihnachtsmann in IDL. interface Weihnachtsmann { string holeGeschenk(); }

14 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 13 b) b)Implementieren Sie die Methode public String holeGeschenk() des Weihnachtsmanns in der Klasse WeihnachtsmannImpl. public class WeihnachtsmannImpl implements WeihnachtsmannPOA { public String holeGeschenk() { GregorianCalendar cal = new GregorianCalendar(); return cal.getTime().toString(); }

15 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 13 c) c)Implementieren Sie die Server-Anwendung WeihnachtsmannServer analog zum auf der Vorlesungsseite zur Verfügung gestellten Beispiel. public class WeihnachtsmannServer { public static void main(String[] args) { try { ORB orb = ORB.init(args, null); POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootPOA.the_POAManager().activate(); WeihnachtsmannImpl weihnachtsmannImpl = new WeihnachtsmannImpl(); org.omg.CORBA.Object reference = rootPOA.servant_to_reference(weihnachtsmannImpl); Weihnachtsmann weihnachtsmannReferenz = WeihnachtsmannHelper.narrow(reference); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); NameComponent[] path = ncRef.to_name("Weihnachtsmann"); ncRef.rebind(path, weihnachtsmannReferenz); orb.run(); } catch (Exception e) { e.printStackTrace(); System.exit(0); }

16 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 13 d) d)Implementieren Sie die Client-Anwendung WeihnachtsmannClient. Geben Sie das Geschenk, das Sie von dem auf dem Server hinterlegten Weihnachtsmann bekommen, auf dem Bildschirm aus. public class WeihnachtsmannClient { static Weihnachtsmann weihnachtsmann; public static void main(String[] args) { try { ORB orb = ORB.init(args, null); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); weihnachtsmann = WeihnachtsmannHelper.narrow(ncRef.resolve_str("Weihnachtsmann")); System.out.println(weihnachtsmann.holeGeschenk()); } catch (Exception e) { e.printStackTrace(); System.exit(0); }

17 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 13 e) e)Erzeugen und übersetzen Sie mit idlj und javac die für Ihre Anwendung benötigten Klassen. idlj -fall Weihnachtsmann.idl javac *.java Weihnachtsmann, WeihnachtsmannHelper, WeihnachtsmannHolder, WeihnachtsmannOperations, WeihnachtsmannPOA und _WeihnachtsmannStub jeweils als *.java- und *.class-Datei

18 Übung zu Software Engineering im WS 2007/2008 Philipp Ciechanowicz Aufgabe 13 f) f)Testen Sie Ihre Anwendung sowohl lokal als auch mit dem Weihnachtsmann, der auf dem Rechner wi-vm573.uni- muenster.de, Port 1050 hinterlegt ist. Welches Geschenk haben Sie bekommen? 1.ORB starten start orbd -ORBInitialPort ORBInitialHost localhost 2.Server starten start java -cp. WeihnachtsmannServer -ORBInitialPort ORBInitialHost localhost 3.Client starten java -cp. WeihnachtsmannClient -ORBInitialPort ORBInitialHost wi-vm573.uni-muenster.de Der Weihnachtsmann schaut in seinen Sack, kramt herum und überreicht dir wortlos einen Zettel mit den Lottozahl für die nächste Ziehung:...