Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Philipp Ciechanowicz 5. Übung zu Software Engineering WS 2007/2008."—  Präsentation transkript:

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

2 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.

3 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; } }

4 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() {... } }

5 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(); }

6 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(); }

7 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); }

8 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); }

9 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); }

10 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); }

11 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; }

12 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... }

13 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?

14 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(); }

15 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(); }

16 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); }

17 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); }

18 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

19 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 1050 -ORBInitialHost localhost 2.Server starten start java -cp. WeihnachtsmannServer -ORBInitialPort 1050 -ORBInitialHost localhost 3.Client starten java -cp. WeihnachtsmannClient -ORBInitialPort 1050 -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:...


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

Ähnliche Präsentationen


Google-Anzeigen