implementation. di bab ini terfokus kepada bagaimana mengkonversi model final menjadi sebuah code...

38
Implementation

Post on 21-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Implementation

Page 2: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Di Bab ini terfokus kepada

Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan antara mode dan program, dalam hal ini mencakup Bagaimana sebuah class dan hubungan antar

class di terjemahkan dalam sebuah code/program Bagaimana sebuah object dibuat dari sebuah

class Bagaimana sebuah message melakukan passing

dan alur kontrol yang dimodelkan dalam sequence diagram di implementasikan didalam program

Dalam bab ini implementasinya menggunakan bahasa java

Page 3: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Mengimplementasikan class diagram

CarParkSystem

+decSpaces()+incSpaces()+spacesLeft()

-capacity-spaces

CarPark

+arrivalgenerated()+departuregenerated()+getcardno()+stillthegenerated()

-MaxCardNo

Simulator

+SwitchOn()+SwitchOff()

-LightOn

FullSign

+raise()+lower()

-up

Barrier

+raise()+lower()

ExitBarrier

+raise()+lower()

EntranceBarrier

+cardReadOK()

CardReader

+carArriving()+carLeaving()+carPresent()

Sensor

+validCard()+addCard()+deleteCard()

ValidCards

+getNumber()+delete()

-number

Card

+delete()

-currentDate

VisitorCard

+delete()

-name-departement-expirydate

StaffCard

Page 4: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Card Class

Perbedaan utama antara model dengan program adalah operasi konstruktor

Operasi konstruktor adalah sebuah operasi yang dilakukan otomatis ketika sebuah obyek atau instance sebuah class dibuat.

Sebuah obyek dibuat dengan menggunakan kata new(dalam programming)

Operasi konstruktor dapat diinisialisasi oleh programer bisa juga otomatis

Page 5: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Ketika melihat code berikut, perlu diingat point berikut ini

Ketika sebuah obyek card baru dibuat, konstruktor mengeset nilai attribut number dengan nilai yang ada dari parameter num

Segala sesuatu yang berada diantara /* dan */ adalah sebuah komentar

Segala sesuatu yang berada diantara // sampai pindah garis baru adalah komentar

Page 6: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

/* parrent class for cards */

public class Card{ int number; // card number public Card(int num) { number = num; // constructor copies parameter to number } // constructor not shown in class diagram int getNum() // gives card number { return number; }}

Card

number : int

getNum()

Page 7: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

/* staffCard inherits the attribute number from card, staff card contain holder name, department and expiry date */

public class StaffCard extends Card { string name; // holders name string department; // holders department string expiryDate; // card expiry date

StaffCard (string belonsTo,string inDept,string expiresOn, int cardNo){ super(carNo); // call parent class constructor to assign card number name = belongTo; // StaffCard constructor copies parameter to name departement = inDept; expiryDate = expiresOn;}}

Staff card class Card

number : int

getNum()

StaffCard

name : string

departement : string

expirydate : string

Inherits relationship

attributes

Page 8: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

VisitorCard Class

/* VisitorCard inherits from Card */

public class VisitorCard extends Card

{

string expiryDate;

VisitorCard()

{

super(9);

expiryDate=“01-01-2003”;

}

}

Card

number : int

getNum()

VisitorCard

expirydate : string

Page 9: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Mengimplementasikan model dinamik Membuat sebuah obyek Mengikuti urutan message Bagian2 program

Page 10: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Creation of the objects

Di bagian ini akan didemontrasikan bagaimana mengcreate sebuah obyek

Ref. Creating Class / Object New Object

A CarParkSystem :CarPark

B :CarPark :ValidCards

C :ValidCards :Card

D :Card :CardReader

E :CardReader :EntranceBarier

Page 11: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

:CarParkSystem

:CarPark

:ValidCards

:Card

:CardReader

:EntranceBarrier

new()

new()

new()

new()

new()

A

B

C

D

E

Page 12: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

mengikuti urutan message

Dibagian ini mendemontrasikan bagaimana urutan message di sequence diagram berhubungan dengan code program.

Mencari class yang mengirim message dan menerima message seperti mencari harta karun

Page 13: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Ref. No. Sending Class Pg. Message/Return Receiving Class

1 CarPark 153 CarArriving() inSensor:Sensor

2 Sensor 157 arrivalGenerated() Simulator

3 Simulator 158 Returns true Sensor

4 Sensor 157 Returns true CarPark

5 CarPark 153 spaceLeft() CarPark

6 CarPark 154 Return true CarPark

7 CarPark 153 cardReadOK() MainCardReader :CardReader

8 CardReader 156 getCardNo() Simulator

9 Simulator 157 Retruns cardNo CardReader

10 CardReader 156 validCardNo(cardNo) okCard : ValidCards

11 ValidCards 155 * getNum() knowCard[i] : Card

12 Card 156 Returns number ValidCards

13 ValidCards 155 Returns true CardReader

14 CardReader 156 raise() inBarrier : EntranceBarrier

15 EntranceBarrier 157 carPresent() inSensor : Sensor

16 Sensor 158 stillThereGenerated() Simulator

17 Simulator 158 Returns false Sensor

18 Sensor 158 Returns false EntranceBarrier

19 EntranceBarrier 157 lower() EntranceBarrier

20 EntranceBarrier 157 decSpaces() ownerCarPark : CarPark

21 CarPark 153 spacesLeft() CarPark

22 CarPark 154 Returns true CarPark

Page 14: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

:CarPark :Simulator :Sensor :CarReader :ValidCards :Card EntranceBarrier

carArriving()

arrivalGenerated()

true

true[carArriving=true]

spacesLeft()

true cardReadOK()

getCardNo()

cardNo

ValidCard(cardNo)

*getNum()

number

true

raise()

carPresent()

stillThereGenerated()

false

false

lower()

decSpaces()

spacesLeft()

true

12

3

4

5

67

8

9

10

11

1213

14

1516

17

18

19

20

21

22

Sequence diagram showing message sequence for the “enter the car park” use cases

Page 15: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Bagian code program

Classes listed

Class Page

CarParkSystem.java 152

CarPark.java 152

ValidCards.java 154

Card.java 155

CardReader.java 156

EntranceBarrier.java 157

Sensor.java 157

Simulator.java 158

Page 16: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

CarParkSystem.java

/* main driver class for car park simulation*/

public class CarParkSystem{ public static CarPark aCarPark; public static void main(string[] args){ // set up car park with 1 entrance, 1 exit ,// 5 spaces, 3 of which are full initiallyaCarPark = new CarPark(1,1,5,3);}}

A

Page 17: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

CarPark.java

/* class representing car park */

public class CarPark { private int capacity; // max number of spaces private int spaces; // actual spaces Sensor inSensor; // sensor for entry Sensor outSensor; // sensor for exit ExitBarrier outBarrier; // barrier for exit ValidCards currentCards; // list of valid cards

CardReader mainCardReader; // card reader on entryFullSign fullLight;

// class to be continued in next page

Page 18: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

public CarPark(int noExits, int noEnts,int in Capacity, int noSpaces) { simulator.setMaxCardNo(10); // set max number for attempted cards capacity = inCapacity; // give value to capacity spaces = noSpaces; // give value to spaces currentCards = new ValidCards(); // create list of valid cards mainCardReader = new CardReader(this,currentCards); // create card reader

// ‘this’ is standard java term used to refer to the class currently being defined

InSensor = new Sensor(); // create sensoroutSensor = new Sensor();fullLight = new FullSign();outBarrier = new ExitBarrier(this); // create exit barrier

// class definition for car park to be continued

BD

Page 19: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

for(int carNo; carNo<50; carNo) // simulate for 50 car{ if(inSensor.carArriving()) // if next event is car arrivall { System.out.print(“\Car Arriving “); if(spaceLeft()) // if any room in park { if(mainCardReader.cardReadOK()) // if valid card entered { // the card reader will handle cars entry if(!spaceLeft()) // switch on full light if full fullLight.switchOn(); fullLight.display(); // display full sign status } } else System.out.print(“No Entry – Car Park Full”); }; // for block statement to be continued

1

5

7

21

Page 20: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

if(spaces != capacity && outSensor.CarLeaving()) // if car park not empty and exit simulated { System.out.print(“\nCar Leaving”); outBarrier.raise(); if(spaces == 1) // if only space is one just vacated

fullLight.switchOff(); fullLight.display(); } } // end of for block statement} // end of car park constructor

public void decSpace() { spaces = spaces – 1; System.out.print(“Spaces Left = “ + spaces + “ “); }

Page 21: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

public void incSpaces() { // add 1 to spaces available spaces = spaces + 1; System.out.print(“Spaces left = “+ spaces +” ”); }

public boolean spaceLeft() { // indicates if spaces available if(spaces>0) { return true; } else { System.out.print(“No Space Left”); return false }

} // end of class CarPark….

6 and 22

Page 22: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

ValidCard.java/* class representing list off valid cards */ public class ValidCards { Card knownCards[]; // list of valid card int i;

ValidCards() { // set up lift of known card. Better system would store in linked list or file knownCard = new Card[8]; // assign memory for valid cards // add 6 staff cardsknownCard[0] = new StaffCard(“Fred”,”Sales”,”17-11-1999”,1);knownCard[1] = new StaffCard(“Sue”,”Sales”,”21-03-2001”,2);knownCard[2] = new StaffCard(“Frank”,”Research”,”03-06-2000”,3);knownCard[3] = new StaffCard(“Mary”,”Testing”,”29-02-2000”,4);knownCard[4] = new StaffCard(“Bill”,”Research”,”05-12-2000”,5);knownCard[5] = new StaffCard(“Jill”,”Testing”,”13-01-2000”);

// add 2 visitor cardknownCard[6] = new VisitorCard();knownCard[7] = new VisitorCard();} // end of constructor ValidsCard

C

Page 23: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

public boolean validCard(int CardNo) // function to check the valid card { boolean valid = false; // initial value // search known card to see if number corresponds for( i = 0; i < 8; i++) { if(knownCard[i].getNum() == cardNo) { valid = true; } }

if(valid) { System.out.print(“Valid Card “+ cardNo + “.”); return true; } else { System.out.print(“Invalid Card “+ cardNo + “.”); return false; } }}

11

13

Page 24: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Card.java public class Card { int number; // card number public Card(int num) { number = num; } int getNum() { return number; }}

12

Page 25: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

StaffCard.Java/* staffCard inherits the attribute number from card, staff card contain holder name, department and expiry date */

public class StaffCard extends Card { string name; // holders name string department; // holders department string expiryDate; // card expiry date

StaffCard (string belonsTo,string inDept,string expiresOn, int cardNo){ super(carNo); // call parent class constructor to assign card number name = belongTo; // StaffCard constructor copies parameter to name departement = inDept; expiryDate = expiresOn;}}

Page 26: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

VisitorCard.java

/* VisitorCard inherits from Card */

public class VisitorCard extends Card{ string expiryDate;

VisitorCard(){ super(9); expiryDate=“01-01-2003”;}

}

Page 27: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

CardReader.java

/* class representing Card reader */ public class CardReader { private ValidCard okCards; // list of valid cards EntranceBarrier inBarrier; // barrier controled by card reader public CardReader(CarPark aCarPark, ValidCards centralList) // constructor { okCards = centralList; // create association inBarrier = new EntranceBarrier(aCarPark); // create aggregation }

E

Page 28: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

public boolean CardReadOK() // is card valid ? { int cardNo; // number of card in machine cardNo = Simulator.getCardNo();//simulate reading

if(okCards.validCard(cardNo) // validate card { inBarrier.raise(); return true; // let car in if ok } else { System.out.print(“Entry refused, invalid card number”); // deny entry return false; } }}

8

10

14

Page 29: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Barrier.java/* class to represent car park barrier parent class for entrance and exit barrier */

public class Barrier { boolean up = false; // status off barrier CarPark ownerCarPark;// car park to which barrier belongs public Barrier(CarPark aCarPark) // constructor { ownerCarPark = aCarPark; } public void raise() { up = true; System.out.print(“Barrier raised”); } // barrier class to be continued

Page 30: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

public lower() { up = false; System.out.print(“Barrier lowered”); }} // end of barrier class

Page 31: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

EntranceBarrier.java/* Entrance Barrier Class which specialises Barrier */ public class EntranceBarrier extends Barrier { public EntranceBarrier(CarPark aCarPark) { super(aCarPark); // pass parameter to parent barrier class }

public void raise() // let a car in { super.raise() // use parents method to raise barrier while(OwnerCarPark.inSensor.carPresent()) { // do nothing just wait } lower(); }

1519

Page 32: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

void lower() // card { super.lower(); ownerCarPark.decSpaces(); }} // end of class barrier

20

Page 33: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

ExitBarrier.java/* class for exit barrier */ public class ExitBarrier extends Barrier { public ExitBarrier(CarPark aCarPark) { super(aCarPark); }

public void raise() { super.raise(); while(ownerCarPark.outSensor.CarPresent()) { // do nothing,just wait } lower(); } void lower() { super.lower(); onwerCarPark.incSpaces(); }

Page 34: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Sensor.java/* class to indicate presence of car at entrance or exit sensor */

public class Sensor { public boolean carArriving() //simulated arrival of car { return(Simulator.arrivalGenerated()); } public boolean carLeaving() //simulated departure of car { return(Simulator.departureGenerated()); }

public boolean carPresent() // simulated sensor detecting car { System.out.print(“Car present”); return(Simulator.stillThereGenerated()); }}

2 and 4

16 and 18

Page 35: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

FullSign.java/* class for the full sign */ class FullSign { boolean lightOn;

FullSign() { lightOn = false; // initialy }

void switchOn() { lightOn = true; }

void switchOff() { lightOn = false; }

Page 36: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

void display() { System.out.print(“Full Light is “); if(lightOn) System.out.println(“ON”); else System.out.println(“OFF”); }} // end of class FullSign

Page 37: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

Simulator.java

/* Class to produce random arrival, departures, and car number */

public class Simulator { static int maxCarNo; // higest card number can be issued public static boolean arrivalGenerated() { //this method true if an arrival has occurred. return(Math.random() <0.7) ;// 0.7 is empirical value to } //give full range of car park states

public static boolean departureGenerated() { return(Math.random() >0.7); }

3

Page 38: Implementation. Di Bab ini terfokus kepada Bagaimana mengkonversi model final menjadi sebuah code (program) dan mendemontrasikan bahai mana peta hubungan

public static boolean stillThereGenerated() { // this method true if car is still detected by sensor return(Math.random() < 0.5); }

public static int getCardNo() { return(int) (maxCardNo*Math.random()); } } // end of class simulator

17

9