SD Lab
SD Lab
Usecase Diagram:
Pattern Instance:
Class diagram:
Sequence Diagram:
Java Code:
WeatherData.java:
import java.util.Observable;
public class WeatherData extends Observable
{
private float temperature;
public float getTemperature()
{
return temperature;
}
private float pressure;
public float getPressure()
{
return pressure;
}
private float humidity;
public float getHumidity()
{
return humidity;
}
public void measurementschanged()
{
setChanged();
notifyObservers();
}
public void setMeasurements(float theTemperature, float theHumidity, float thePressure)
{
temperature=theTemperature;
pressure=thePressure;
humidity=theHumidity;
measurementschanged();
}
}
ForeCastDisplay.java:
import java.util.Observable;
import java.util.Observer;
public class ForeCastDisplay implements Observer
{
private float currentPressure = 29.92f;
CurrentConditionDisplay.java
import java.util.Observable;
import java.util.Observer;
public class CurrentConditionDispaly implements Observer
{
private float temperature;
private float humidity;
Observable observable;
public CurrentConditionDispaly(Observable observable)
{
this.observable = observable;
observable.addObserver(this);
}
public void update(Observable obs, Object arg)
{
if (obs instanceof WeatherData)
{
WeatherData weatherData = (WeatherData)obs;
this.temperature = weatherData.getTemperature();
this.humidity = weatherData.getHumidity();
display();
}
}
public void display()
{
System.out.println("Current conditions: " + temperature
+ "F degrees and " + humidity + "% humidity");
}
}
Client.java
public class WeatherStation
{
public static void main(String[] args)
{
WeatherData weatherData = new WeatherData();
CurrentConditionDispaly currentConditions = new
CurrentConditionDispaly(weatherData);
ForeCastDisplay forecastDisplay = new ForeCastDisplay(weatherData);
weatherData.setMeasurements(80, 65, 30.4f);
weatherData.setMeasurements(82, 70, 29.2f);
weatherData.setMeasurements(78, 90, 29.2f);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class _switch extends JFrame{
JTextField jtf=new JTextField(10);
JLabel jlb=new JLabel("sentence");
_switch()
{
Container container=getContentPane();
container.setLayout(new FlowLayout());
JButton button1=new JButton("bold");
JButton button2=new JButton("capitalize");
JButton button3=new JButton("undo");
container.add(jlb);
container.add(jtf);
container.add(button1);
container.add(button2);
container.add(button3);
Font f=jtf.getFont();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button1.addActionListener(new receiver(jtf,f));
button2.addActionListener(new receiver(jtf,f));
button3.addActionListener(new receiver(jtf,f));
}
public static void main(String args[])
{
_switch dt=new _switch();
dt.setSize(500, 500);
dt.setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Set;
public class receiver implements ActionListener{
JTextField jtf;
Font f;
receiver(JTextField ob,Font f1)
{
jtf=ob;
f=f1;
}
public void actionPerformed(ActionEvent ae)
{
String show=jtf.getText();
if(ae.getActionCommand().equals("bold"))
jtf.setFont(new Font("Dialog",Font.BOLD,15));
else if (ae.getActionCommand().equals("capitalize"))
jtf.setText(jtf.getText().toUpperCase());
else
{jtf.setText(jtf.getText().toLowerCase());
jtf.setFont(f);
}
}}
Usecase Diagram:
Activity Diagram:
Pattern instance:
Class Diagram:
Client
Entry
ipa : String
portno : int
main()
Forwarder
Forwarder()
Register
htable : Hashtable
put()
get()
Entry()
ipadd()
port()
Receiver
main()
Sequence Diagram:
Java Code:
Client.java
class Client
{
static Register reg=new Register();
public static void main(String arg[])throws Exception
{
Entry entry=new Entry("127.0.0.1",1600);
reg.put("server",entry);
String msg="hello server";
Forwarder f=new Forwarder("server",reg,msg);
}
}
Entry.java
class Entry
{
String ipa;
int portno;
public Entry(String ip,int port)
{
ipa=ip;
portno=port;
}
public String ipadd()
{
return ipa;
}
public int port()
{
return portno;
}
}
Forwarder.java
import java.net.*;
import java.util.*;
import java.io.*;
public class Forwarder
{
public Forwarder(String name,Register reg,String msg)throws Exception
{
String data=null;
Entry entry=reg.get(name);
Socket skt= new Socket(entry.ipadd(),entry.port());
System.out.println(msg);
InputStream is=skt.getInputStream();
OutputStream os=skt.getOutputStream();
DataInputStream dis=new DataInputStream(is);
DataOutputStream dos=new DataOutputStream(os);
dos.writeUTF(msg);
data=dis.readUTF();
System.out.println(data);
}
}
Receiver.java
import java.net.*;
import java.io.*;
import java.util.*;
public class Receiver
{
public static void main(String args[])throws IOException
{
String data=null;
ServerSocket sskt=new ServerSocket(1600);
System.out.println("Server Starded......................");
Socket skt=sskt.accept();
InputStream is=skt.getInputStream();
OutputStream os=skt.getOutputStream();
DataInputStream dis=new DataInputStream(is);
DataOutputStream dos=new DataOutputStream(os);
data=dis.readUTF();
dos.writeUTF("hi,how are you");
System.out.println("Response Sucessful");
}
}
Register.java
import java.util.*;
class Register
{
Hashtable htable=new Hashtable();
public void put(String name,Entry ent)
{
htable.put(name,ent);
}
public Entry get(String key)
{
return (Entry)htable.get(key);
}
}
Activity Diagram:
Pattern Instance:
Class diagram:
Sequence Diagram:
Java Code :
CDS.java:
public class CDS
{
public static Dispatcher disp = new Dispatcher();
public static void main(String[] args)
{
Service sl = new PrintService ("printSvc1","srvl") ;
Service s2 = new PrintService("printSvc2","srv2");
Client client = new Client () ;
client .doTask () ;
}
}
Dispatcher.java:
import java.util.*;
import java.io.*;
class NotFound extends Exception {}
public class Dispatcher
{
private Client client;
private PrintService printservice;
Hashtable registry = new Hashtable();
Random rnd = new Random(123456);
public void registerService(String svc, Service obj)
{
Vector v = (Vector) registry. get (svc) ;
if (v == null)
{
v = new Vector ();
registry.put (svc, v) ;
}
v.addElement(obj);
}
public void unregisterService()
{
}
public Service locateServer(String svc)throws NotFound
{
Vector v = (Vector) registry .get (svc) ;
if (v == null) throw new NotFound ( ) ;
Service.java:
public abstract class Service
{
String nameofservice;
String nameofserver;
public Service(String svc, String srv)
{
nameofservice = svc;
nameofserver = srv;
CDS.disp.registerService(nameofservice,this) ;
}
abstract public void runService() ;
}
PrintService.java :
public class PrintService extends Service
{
private Dispatcher dispatcher;
private Client client;
public PrintService(String svc, String srv)
{
super (svc, srv) ;
}
public void acceptConnection()
{
}
public void runService()
{
System.out.println("Service " + nameofservice
+ " by " + nameofserver);
}
public void receiveRequest()
{
}
Client.java:
public class Client
{
private Dispatcher dispatcher;
private PrintService printservice;
public void doTask()
{
Service s;
try
{
s = CDS .disp. locateServer ("printSvc1") ;
s . runService ( ) ;
}
catch (NotFound n)
{
System.out .println ("Not available") ;
}
try
{
s = CDS .disp.locateServer("printSvc2");
s .runService ( ) ;
}
catch (NotFound n)
{
System.out.println("Not available");
}
try
{
s = CDS .disp.locateServer("drawSvc");
s .runService () ;
}
catch (NotFound n)
{
System.out.println("Not available") ;
}
}
public void sendRequest()
{
}
}
Output:
Collaboration:
Example: Proxy
Imagine that we are creating an Application that is making use of email-service such as send and
receive email.. Assuming that the Client Application won't be always accessing the Email
Service, the Email Service is an ideal candidate to be modeled as a Virtual Proxy.
UseCase Diagram:
Pattern Instance:
Class Diagram:
Sequence Diagram :
Communication Diagram:
Java Code :
EMailService.java:
public interface EMailService
{
public void sendMail(String receiver, String subject, String text);
public void receiveMail(String receiver);
}
RealEMailService.java:
public class RealEMailService implements EMailService
{
public void sendMail(String receiver, String subject, String text)
{
System.out.println("Sending mail to '" + receiver + "'" + " with subject '" +
subject + "'" + " and message '" + text + "'");
}
public void receiveMail(String receiver)
{
System.out.println("Receiving mail from '" + receiver + "'");
}
}
ProxyEMailService.java:
public class ProxyEMailService implements EMailService
{
private RealEMailService emailService;
public void receiveMail(String receiver)
{
if (emailService == null)
{
emailService = new RealEMailService();
}
emailService.receiveMail(receiver);
}
public void sendMail(String receiver, String subject, String text)
{
if (emailService == null)
{
emailService = new RealEMailService();
}
emailService.sendMail(receiver, subject, text);
}
}
Application.java:
public class Application
{
public EMailService locateEMailService()
{
EMailService emailService = new ProxyEMailService();
return emailService;
}
}
ApplicationClient.java:
public class ApplicationClient
{
public static void main(String[] args)
{
Application application = new Application();
EMailService emailService = application.locateEMailService();
emailService.sendMail("[email protected]", "Hello", "A test mail");
emailService.receiveMail("[email protected]");
}
}
Output:
Sending mail to '[email protected]' with subject 'Hello' and message 'A test mail'
Receiving mail from '[email protected]'
Client
WholeGraphics
Graphics
Ellipse
Interaction Diagram
: Ellipse
: Client
: WholeGraphics
initialize ellipse
initialize whole graphics
Use-Case Diagram
Ellipse
Initialize ellipse
Client
Compose Graphics
WholeGraphics
import java.util.List;
import java.util.ArrayList;
/** "Component" */
interface Graphic {
//Prints the graphic.
public void print();
}
/** "Whole" */
class WholeGraphic implements Graphic {
//Collection of child graphics.
private List<Graphic> childGraphics = new ArrayList<Graphic>();
//Prints the graphic.
public void print() {
for (Graphic graphic : childGraphics) {
graphic.print();
}
}
//Adds the graphic to the composition.
Master.java
public class Master {
private Resource resource;
private int sk=2;
private Resource res=new Resource();
private Slave[] slave=new Slave[sk];
public Resource getResource() {
return resource;
}
public void setResource(Resource theResource) {
resource = theResource;
}
public void slave() {
}
public void run()
{
for(int i=0;i<sk;i++)
slave[i]=new Slave(res);
for(int i=0;i<sk;i++)
slave[i].start();
for(int i=0;i<sk;i++)
{
try
{
slave[i].join();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
finally
{
System.out.println(slave[i].getName()+"--has died");
}
}
}
}
}
}
Resource.java