Projekt onlineShop 1/51 4. Informatiktag NRW 14.3.05 Projekt online­Shop 4. Informatiktag NRW – 14.3.05 Barbara Leipholz­Schumacher Euregio­Kolleg, Würselen Projekt onlineShop 2/51 4. Informatiktag NRW 14.3.05 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. Projekt onlineShop 3/51 Phasen der Softwareentwicklung • Analyse • Entwurf • Implementierung • Test • Systemeinführung • Wartung 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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 4. Informatiktag NRW 14.3.05 Projekt onlineShop Anforderung 5/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 6/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop Anforderung 7/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 8/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 9/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 10/51 4. Informatiktag NRW 14.3.05 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. Projekt onlineShop 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 JA JA JA NEIN NEIN NEIN JA JA NEIN NEIN JA JA NEIN NEIN NEIN JA NEIN 4. Informatiktag NRW 14.3.05 Projekt onlineShop 12/51 4. Informatiktag NRW 14.3.05 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 JA JA JA Adresse JA JA JA Bank JA JA JA Kreditkarte JA JA JA Artikel JA JA JA Bestellung JA JA JA Rechnung JA JA JA Projekt onlineShop 13/51 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop 14/51 4. Informatiktag NRW 14.3.05 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. Projekt onlineShop 15/51 4. Informatiktag NRW 14.3.05 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. Projekt onlineShop 16/51 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop 17/51 4. Informatiktag NRW 14.3.05 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. Projekt onlineShop 18/51 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop 19/51 4. Informatiktag NRW 14.3.05 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. Projekt onlineShop 20/51 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop 21/51 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop 22/51 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop CRC­Karten Analyse –> CRC­Karten Karten so anordnen, dass • • Assoziationen und Kardinalitäten eingetragen werden können. 23/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 24/51 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop 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 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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 4. Informatiktag NRW 14.3.05 Projekt onlineShop Anwendungsfallanalyse Analyse ­> Anwendungsfallanalyse bilder/UseCaseKunde.gif 27/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 28/51 Szenarios Analyse ­> Szenarios • Artikel zum Warenkorb hinzufügen • zur Kasse gehen • • • Authentisierung Server Authentisierung Benutzer Bestellung bestätigen 4. Informatiktag NRW 14.3.05 Projekt onlineShop Prototyping Analyse ­> Prototyping 29/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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 4. Informatiktag NRW 14.3.05 Projekt onlineShop Objektorientierter Entwurf Entwurf ­> Architektur Drei­Schichten­Architektur 1. Benutzungsoberfläche 2. Fachkonzept 3. Datenhaltung 31/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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 4. Informatiktag NRW 14.3.05 Projekt onlineShop 33/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/kunde2.jpg 34/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/sitzung.jpg 35/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/bestellung.jpg 36/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/kundenVerwaltung.jpg 37/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/artikelVerwaltung.jpg 38/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/server.jpg 39/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/serverKrypto.jpg 40/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 41/51 4. Informatiktag NRW 14.3.05 RMI ­ Remote Method Invocation ShopClient ShopClient Server Stub Skeleton Projekt onlineShop 42/51 Client Stub Stellvertreterobjekt des Servers mit gleicher Schnittstelle leitet Methodenaufrufe an den Server weiter 4. Informatiktag NRW 14.3.05 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 Projekt onlineShop 43/51 4. Informatiktag NRW 14.3.05 rmiregistry Naming.lookup ShopClient Server.anmelden() Naming.rebind Server Projekt onlineShop 44/51 4. Informatiktag NRW 14.3.05 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; } Projekt onlineShop 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(); ... } 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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(); } } 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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(); } } 4. Informatiktag NRW 14.3.05 Projekt onlineShop 48/51 Ergänzungen Client 3. Die Methoden: try { .... } catch ( RemoteException fehler) { e.printStackTrace(); } oder: public void methodenname(...) throws RemoteExeception 4. Informatiktag NRW 14.3.05 Projekt onlineShop bilder/iserver.gif 49/51 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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 4. Informatiktag NRW 14.3.05 Projekt onlineShop 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“ 4. Informatiktag NRW 14.3.05