concurrent programming programmiermethodik ss2006 © 2005 albert zündorf, university of kassel 1
TRANSCRIPT
Concurrent Programming
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 1
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 2
Synchrone Methodenausführung
runtime program
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 4
UML Sequenzdiagramme
s1 :C1
1: m()
r1 :C2
beteiligte Objekte
Lebenslinie
Nachricht / Methodenaufruf vr1.m()
Zeitachse
s2 :C1
4.1: m3()
r2 :C2
4: m2()
x := "100"
4.1.1: lm()Aktivierungsbalken
Rücksprung
s3 :C1
4.1: «create»4: m4()
r3 :C2
4.2: m5()
4.3: «destroy»
Objekterzeugung
Objektlöschung
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 5
button leftbank rightbankapp action
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 6
button leftbank rightbankapp action timer
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 7
button leftbank rightbankapp action timer
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 8
button leftbank rightbankapp action timer
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 9
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 10
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 11
UML Komponentendiagramme
BankSystem
Account
Bank
bs1 :BankSystem bs2 :BankSystem
Struktur
Verhalten Daten
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 12
UML Deploymentdiagramme
Struktur
Verhalten Daten
Server
www.upb.de :Server
bs1 :BankSystem
ws1 :Webserver
daffy.kassel.de :Server
bs2 :BankSystem
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 13
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 14
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 15
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 16
Calling a remote method
class Bank {
public void remoteTransferToBank2(Account account1, String account2, double amount) {
XmlRpcClient xmlrpc = new XmlRpcClient ("http://www.bank2.de:8080/RPC2");
Vector params = new Vector ();
params.addElement ("account2");params.addElement (amount);
// this method returns a booleanBoolean result = (Boolean) xmlrpc.execute ("remoteTransferFromBank1", params);
}
…
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 17
Server accepting remote calls
class Bank {
…
public static void main (String [] args) {WebServer webserver = new WebServer (8080); webserver.addHandler ("transfers", new TransferHandler());
…
}
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 18
Server accepting remote calls
class TransferHandler implements XmlRpcHandler {…
Object execute(XmlRpcRequest pRequest) throws XmlRpcException {
switch (pRequest.getMethodName()) {
case "remoteTransferFromBank1":localTransferFromBank1 ((String) pRequest.getParameter(0),
(double) pRequest.getParameter(1));break;
….
}
}
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel
19
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 20
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 21
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 22
Programmiermethodik SS2006 © 2005 Albert Zündorf, University of Kassel 23