1/51 Projekt online Shop 4. Informatiktag NRW 14.3.05 Barbara Leipholz Schumacher Euregio Kolleg, Würselen
2/51 Die Firma Sprachen Lernen möchte ihr Angebot auf online Bestellungen ausweiten. Sprache Art Englisch Anfänger, Fortgeschritten Englisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Französisch Anfänger, Fortgeschritten Französisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Spanisch Anfänger, Fortgeschritten Spanisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Chinesisch Anfänger Preis 44,95 199,95 44,95 199,95 44,95 199,95 79,95 Neue Kunden können sich online eintragen. Bereits registrierte Kunden melden sich mittels Benutzername und Kennwort an und können online Rechnungs und Lieferadresse und Bankverbindung bzw. Kreditkartendaten aktualisieren. Der Kunde kann von den angezeigten Artikeln einzelne Artikel zur Bestellung auswählen. Um die endgültige Bestellung durchzuführen, muss er sich authentisieren. Danach werden die zur Bestellung vorgemerkten Artikel, ihre Preise sowie der Rechnungsbetrag angezeigt. Wird die Bestellung abgeschickt, erhält der Kunde eine E Mail mit der Bestätigung der Bestellung und der Rechnung. Das System soll Kundendaten verwalten, insbesondere Name, Vorname, e Mail Adresse, Rechnung und Lieferadresse, Bankverbindung, Benutzername und Passwort des Kunden, sowie seine Bestellungen. Zusätzlich hat der Anbieter die Möglichkeit die einzelnen Artikel zu verwalten, d.h. Artikel aus dem Angebot streichen, Artikel ergänzen und Preise ändern.
3/51 Phasen der Softwareentwicklung Analyse Entwurf Implementierung Test Systemeinführung Wartung
4/51 Objektorientierte Analyse Relevante Abläufe der Realität auf ein Modell übertragen. Erforschen des Anwendungsbereichs Anwendungsfälle herausfinden Objekte aus den Anwendungsfällen herausarbeiten Klassen von den Objekten ableiten den Klassen Aufgaben zuordnen Zusammenarbeit von Klassen festlegen Quelle: http://www.die.informatik.uni siegen.de/iml/im/ooa/ooa.htm#anfang
Anforderung 5/51
6/51
Anforderung 7/51
8/51
9/51
10/51 Klassen ermitteln Analyse > Textanalyse > Substantive unterstreichen Das Angebot: Sprache Art Englisch Anfänger, Fortgeschritten Englisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Französisch Anfänger, Fortgeschritten Französisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Spanisch Anfänger, Fortgeschritten Spanisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Chinesisch Anfänger Preis 44,95 199,95 44,95 199,95 44,95 199,95 79,95 Neue Kunden können sich online eintragen. Bereits registrierte Kunden melden sich mittels Benutzername und Kennwort an und können online Rechnungs und Lieferadresse und Bankverbindung aktualisieren. Der Kunde kann von den angezeigten Artikeln einzelne Artikel zur Bestellung auswählen. Um die endgültige Bestellung durchzuführen, muss er sich authentisieren. Danach werden die zur Bestellung vorgemerkten Artikel, ihre Preise sowie der Rechnungsbetrag angezeigt. Wird die Bestellung abgeschickt, erhält der Kunde eine E Mail mit der Bestätigung der Bestellung und der Rechnung. Das System soll Kundendaten verwalten, insbesondere Name, Vorname, e Mail Adresse, Rechnung und Lieferadresse, Bankverbindung, Benutzername und Passwort des Kunden, sowie seine Bestellungen. Zusätzlich hat der Anbieter die Möglichkeit die einzelnen Artikel zu verwalten, d.h. Artikel aus dem Angebot streichen, Artikel ergänzen und Preise ändern.
11/51 Klassen ermitteln Analyse > Textanalyse > Substantive > Wertetest > Frage Kann ein Substantiv einen konkreten Wert annehmen? Angebot Sprache Art Preis Rechnungsadresse Lieferadresse Kunde Name Vorname Adresse Bankverbindung... Benutzername Passwort Artikel Bestellung Rechnung E Mail Bestätigung NEIN NEIN NEIN NEIN NEIN NEIN NEIN NEIN NEIN NEIN
12/51 Klassen ermitteln Analyse > Textanalyse > Substantive > Wertetest > Weitere Fragen 1. Ist Substantiv eindeutig identifizierbar, bzw. ist es wichtig 2 verschiedene Exemplare zu unterscheiden? 2. Hat Substantiv außer dem indentifizierenden Attribut noch ein weiteres? 3. Gibt es von Substantiv eine Mehrzahl? Substantiv Frage 1 Frage 2 Frage 3 Kunde Adresse Bank Kreditkarte Artikel Bestellung Rechnung
13/51 Operationen ermitteln Analyse > Textanalyse > Substantive > Wertetest > Weitere Fragen Tut Substantiv etwas oder wird mit Substantiv etwas getan? Substantiv Frage 4 Kunde wählt Artikel, geht zur Kasse,... Adresse ändern Bank ändern; Kontonummer, Bank, Bankleitzahl angeben Kreditkarte ändern; Kartennummer, Art, Verfallsdatum... angeben Artikel Artikelnummer, Sprache, Art, Preis angeben Bestellung Bestellung angeben Rechnung Rechnung angeben
14/51 Operationen und Assoziationen ermitteln Analyse > Textanalyse Assoziation Lehrbuch Grundlagen der Informatik, Helmut Balzert, S. 175 Eine Assoziation modelliert Verbindungen zwischen Objekten einer oder mehrer Klassen. Eine Assoziation modelliert stets Beziehungen zwischen Objekten, nicht zwischen Klassen. Es ist jedoch üblich, von einer Assoziation zwischen Klassen zu sprechen, obwohl streng genommen die Objekte dieser Klasse gemeint sind.
15/51 Operationen und Assoziationen ermitteln Analyse > Textanalyse > Verben unterstreichen Angebot: Sprache Art Englisch Anfänger, Fortgeschritten Englisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Französisch Anfänger, Fortgeschritten Französisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Spanisch Anfänger, Fortgeschritten Spanisch Anfänger + Fortgeschritten Netzwerk (5 Lizenzen) Chinesisch Anfänger Preis 44,95 199,95 44,95 199,95 44,95 199,95 79,95 Neue Kunden können sich online eintragen. Bereits registrierte Kunden melden sich mittels Benutzername und Kennwort an und können online Rechnungs und Lieferadresse und Bankverbindung bzw. Kreditkartendaten aktualisieren. Der Kunde kann von den angezeigten Artikeln einzelne Artikel zur Bestellung auswählen. Um die endgültige Bestellung durchzuführen, muss er sich authentisieren. Danach werden die zur Bestellung vorgemerkten Artikel, ihre Preise sowie der Rechnungsbetrag angezeigt. Wird die Bestellung abgeschickt, erhält der Kunde eine E Mail mit der Bestätigung der Bestellung und der Rechnung. Das System soll Kundendaten verwalten, insbesondere Name, Vorname, e Mail Adresse, Rechnung und Lieferadresse, Bankverbindung, Benutzername und Passwort des Kunden, sowie seine Bestellungen. Zusätzlich hat der Anbieter die Möglichkeit die einzelnen Artikel zu verwalten, d.h. Artikel aus dem Angebot streichen, Artikel ergänzen und Preise ändern.
16/51 Operationen und Assoziationen ermitteln Analyse > Textanalyse > Verben Ein Verb, das im Zusammenhang mit einem Substantiv erwähnt wird, das bereits als Klasse erkannt wurde, wird es als Operation zu dieser modelliert. Ein Verb, das im Zusammenhang mit mehreren Substantiven steht, bei denen es sich mit hoher Wahrscheinlichkeit um Klassen handelt, wird voraussichtlich als Assoziation zwischen den beiden Klassen modelliert. Ausdrücke wie "Bestellung ausführen", statt "bestellen", werden wie Verben betrachtet. Kunde auswählen Artikel Assoziation zwischen Kunde und Artikel Kunde bestellen Artikel Assoziation zwischen Kunde und Artikel Kundendaten eintragen Server Assoziation zwischen Kunde und Server Kunde anmelden Server Operation von Server Kunde authentisieren Server Operation von Server Kunde aktualisieren Bankverbindung,.., Adressen Assoziation Kunde, Bestellung, Artikel verwalten Server Assoziation Artikel streichen, hinzufügen Operation von Artikelverwaltung Artikel Preis ändern Operation Kundenverwaltung verwaltet Kunden Assoziation zwischen Kundenverwaltung und Kunde Artikelverwaltung verwaltet Artikel Assoziation zwischen Artikelverwaltung und Artikel
17/51 Assoziationen ermitteln, Kardinalitäten und Rollen ergänzen Analyse > Textanalyse > Verben Kardinalität Lehrbuch der Objektmodellierung, Heide Balzert, S. 57 Die Kardinalität bezeichnet die Wertigkeit einer Assoziation, d.h. sie spezifiziert die Anzahl der an der Assoziation beteiligten Objekte. Definition Rolle Lehrbuch Grundlagen der Informatik, Helmut Balzert, S. 175 Die Rolle gibt an, welche Funktion ein Objekt in einer Assoziation hat.
18/51 Operationen und Assoziationen ermitteln Kundenverwaltung Server verwaltet kommuniziert mit 1..* Adresse Kunde 0..* 1..* Artikel wählt aus/ bestellt hat 1..2 Konto 1..* hat hat 0..1 Geldkarte 0..1 verwaltet Artikelverwaltung
19/51 CRC Karten Analyse CRC = Class Responsibilities Collaborators (Klasse Zuständigkeiten Partnerklassen) Szenario Objektorientierte Programmierung mit Java, David Barnes, Michael Kölling, S. 394 Ein Szenario ist ein Beispiel für eine Aktivität, die das System ausführen oder unterstützen muss. Szenarios werden häufig auch als Geschäftsfälle (engl. use cases) bezeichnet.
20/51 CRC Karten Analyse > CRC Karten Kunde Klassenname Attribute Operation Beteiligte Attribute kundennummer nachname vorname email benutzername passwort Operation gibkundennummer gibnachname... aendereadresse aenderebankverbindung aendereemail aenderepasswort... Beteiligte Adresse Konto Geldkarte Artikel Bestellung Warenkorb
21/51 CRC Karten Analyse > CRC Karten Warenkorb Artikel Attribute artikelnummer sprache art preis Operation gibartikelnummer gibsprache... aenderepreis Beteiligte Attribute einkaufsliste Operation hinzufuegen entfernen ändereanzahl erhöheanzahl zustring Beteiligte ArtikelUndAnzahl
22/51 CRC Karten Analyse > CRC Karten ArtikelUndAnzahl Attribute zahl artikel Operation ändereanzahl erhöheanzahl gibanzahl gibartikel gibnummer gibsprache gibpreis gibartikel Bestellung Beteiligte Artikel Attribute datum kunde bestelliste Operation tostring gibrechnung Beteiligte Datum Kunde ArtikelUndAnzahl
CRC Karten Analyse > CRC Karten Karten so anordnen, dass Assoziationen und Kardinalitäten eingetragen werden können. 23/51
24/51 CRC Karten Analyse > CRC Karten Kunde Beteiligte Adresse Konto Geldkarte Artikel Bestellung Warenkorb ArtikelUndAnzahl Beteiligte Artikel 1..* 1 1 macht 1..* enthält hat 1 1 enthält Warenkorb 0..* 1 Bestellung Beteiligte ArtikelUndAnzahl Beteiligte Datum Kunde ArtikelUndAnzahl
25/51 Checkliste Klassen Analyse > Checklisten 1. Liegt ein aussagefähiger Klassenname vor? 2. Ist das gewählte Abstraktionsniveau richtig? 3. Wann liegt keine Klasse vor? 4. Relevanz der Objekte einer Klasse für das System? Quelle: http://www.die.informatik.uni siegen.de/iml/im/ooa/check.htm#anfang
26/51 Checkliste Operationen Analyse > Checklisten 1. Welche Aufgaben müssen realisiert werden? 2. Auf welche Ereignisse muss das System reagieren? 3. Welche Art von Operation liegt vor? 4. Zu welcher Klasse gehört die Operation? 5. Besitzt die Operation einen geeigneten Namen? Quelle: http://www.die.informatik.uni siegen.de/iml/im/ooa/check.htm#anfang
Anwendungsfallanalyse Analyse > Anwendungsfallanalyse bilder/usecasekunde.gif 27/51
28/51 Szenarios Analyse > Szenarios Artikel zum Warenkorb hinzufügen zur Kasse gehen Authentisierung Server Authentisierung Benutzer Bestellung bestätigen
Prototyping Analyse > Prototyping 29/51
30/51 Szenarios Analyse > Szenario 1. Sequenzdiagramm Artikel zum Warenkorb hinzufügen bilder/sequenzinwarenkorb.jpg 2. Aktivitätsdiagramm Server Authentisierung bilder/authentisierung.gif 3. Sequenzdiagramm zur Kasse bilder/sequencebestellung.jpg
Objektorientierter Entwurf Entwurf > Architektur Drei Schichten Architektur 1. Benutzungsoberfläche 2. Fachkonzept 3. Datenhaltung 31/51
32/51 Objektorientierter Entwurf Entwurf > Klassendiagramm Klassendiagramm ergänzen Container Klassen Attribute Sichtbarkeit Datentyp Operationen Sichtbarkeit Signatur Konstruktoren Uni und bidirektionale Assoziationen Assoziation, Aggregation, Komposition
33/51
bilder/kunde2.jpg 34/51
bilder/sitzung.jpg 35/51
bilder/bestellung.jpg 36/51
bilder/kundenverwaltung.jpg 37/51
bilder/artikelverwaltung.jpg 38/51
bilder/server.jpg 39/51
bilder/serverkrypto.jpg 40/51
41/51 RMI Remote Method Invocation ShopClient ShopClient Server Stub Skeleton
42/51 Client Stub Stellvertreterobjekt des Servers mit gleicher Schnittstelle leitet Methodenaufrufe an den Server weiter Server Skeleton nimmt Aufrufe des Stubs entgegen bereitet sie auf und übermittelt sie an das Serverobjekt erwartet das Ergebnis und sendet es zurück an den Stub 1. RMI Referenzschicht Finden des Kommunikationspartners, Namensdienst (Registry) 2. RMI Transportschicht Verwaltung der Kommunikationsverbindung und Abwicklung der Kommunikation 3. Transportschicht stellt Host zu Host Datendienste zur Verfügung 4. Internetschicht definiert den Aufbau von Datagrammen und routet Daten durchs Netz 5. Netzzugangsschicht enthält Routinen für den Zugriff auf physikalische Netze
43/51 rmiregistry Naming.lookup ShopClient Server.anmelden() Naming.rebind Server
44/51 Interface IServer import java.rmi.*; import java.util.vector; public interface IServer extends Remote { public Vector authentisiereserver(string geheimzahl, String testchiffre) throws RemoteException; public boolean authentisieren(string sitzungsid, String benutzername, String passwort) throws RemoteException; public void inwarenkorb(string sitzungsid, String nummer) throws RemoteException; public Vector gibwarenkorb(string sitzungsid) throws RemoteException; public Vector gibbestellung(string sitzungsid) throws RemoteException; public String gibanzahl(string sitzungsid, String nummer) throws RemoteException; public String gibgesamt(string sitzungsid, String nummer) throws RemoteException; public void aendereanzahl(string sitzungsid, String nummer, String anzahlneu) throws RemoteException; public void bestaetigen(string sitzungsid) throws RemoteException; public void beenden(string sitzungsid) throws RemoteException; }
45/51 Ergänzungen Server import java.rmi.*; import java.rmi.server.*; public class Server extends java.rmi.server.unicastremoteobject implements IServer //Konstruktor public Server() throws RemoteException { super();... }
46/51 Ergänzungen Server public static void main(string[] args) throws RemoteException { if (System.getSecurityManager() == null) System.setSecurityManager(new RMISecurityManager()); try { Server server = new Server(); Naming.rebind("//IPAdresse/onlineShop",server); } catch (Exception e) { e.printstacktrace(); } }
47/51 Ergänzungen Client 1. import java.rmi.*; 2. public static void main(string[] args) { try { System.setSecurityManager(new RMISecurityManager()); IServer server = (IServer) Naming.lookup("rmi://IPAdresse/onlineShop"); new ShopClient(server); } catch (Exception e) { e.printstacktrace(); } }
48/51 Ergänzungen Client 3. Die Methoden: try {... } catch ( RemoteException fehler) { e.printstacktrace(); } oder: public void methodenname(...) throws RemoteExeception
bilder/iserver.gif 49/51
50/51 1. Server und ShopClient kompilieren 2. Stub und Skeleton erzeugen rmic Server > Server_Stub.class, Server_Skel.class 3. Namensdienst starten rmiregistry 4. Server starten java Server java Djava.security.policy=/pfad/java.policy Server 5. Dateien auf Client Rechner kopieren ShopClient.class, Server_Stub.class 6. ShopClient starten java ShopClient java Djava.security.policy=/pfad/java.policy ShopClient
51/51 Security Java_Home/jre/lib/security/java.policy grant { permission java.security.allpermission; }; oder permission java.net.socketpermission localhost:1099, connect, accept,, listen