mandatory solutions 2011 - universitetet i agdergrimstad.uia.no/.../mandatory_solutions_2011.pdf ·...

35
page 1 Mandatory IKT413 2011

Upload: others

Post on 11-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 1

Mandatory IKT4132011

Page 2: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 2

Page 3: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 3

Page 4: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 4

Controller

TxtField

+ setText(t : String) : void

IntTxtField

txtUpperLeft

1- txt : String

+ getIntTxt() : Integer+ setIntText(intTxt : Integer) : void+ addToIntTxt(number ToAdd : Integer) : void

Task: a

txtLowerLeft

intTxtUpperRight

intTxtLowerRight

1

1

1

Page 5: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 5

*

1

Page 6: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 6

ProposedJava code:

public class DateClass {int year;int month;int day

}public class TimeClass extends DateClass {

int hour;int minute;Step lastStep;Step firstStep;

}public class Step {

int numberOfSteps;StepRegister stepRegister;TimeClass theEnd;TimeClass theStart;

}public class StepRegister {

Step[] step;}*

1

Page 7: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 7

Representing the information of theobject diagram in an XML document:

<?xml version="1.0"?> <StepRegister name="StepRegister1">

<step name="Step1"> <numberofsteps="2500" /><starttime year="2011" />

<month="8" /> <day="14" /> <hour="15" /> <minute="20" />

</starttime> <endtime">

<year="2011" /> <month="8" /> <day="14" /> <hour="15" /> <minute="55" />

</endtime> </step> <step Name="Step2">

<numberofsteps="5700" /> <starttime class="TimeClass" name="TimeClass3">

<year="2011" /><month="9" /> <day="2" /> <hour="10" /> <minute="15" />

</starttime> <endtime class="TimeClass" name="TimeClass4">

<year="2011" /> <month="9" /> <day="2" /> <hour="11" /> <minute="5" />

</endtime> </step>

</stepregister>

Page 8: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 8

Representing the information of the object diagram in a relational database (use tables)

Table StepRegisterTable is not needed if we assume that there is only one step register.

In our case Table DateClassTable is not needed since all information about times are found in table TimeClassTable.

Page 9: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 9

This is an ER-diagram and not what we are looking for(it does not show the tables)

Page 10: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 10

• Propose an OCL constraint that ensures that a TimeClassobject is related to a Step object through either theendTime association or through the startTime association.

Context TimeClass inv:lastStep.size() + firstStep().size() = 1

*

1

This constraint seems to be doing the job.

Page 11: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 11

Propose an OCL constraint that ensures that a TimeClass object is related to a Step object througheither the endTime association or through the startTime association.

context step inv inv1: startTime -> size()=1 or endTime -> size()=1

context Timeclassinv: self.endTime->NotEmpty() xor self.startTime->NotEmpty()

*

1

I am uncertain when it comes to using association name instead of role name (see C1 and C2); logically the role name can be deduced by selecting the opposite side of the association than the context.C1: If using the interpretation described above then self.endTime->size() is the same as self.theEnd->size().Both self.theEnd->size() and self.theStart->size() is already constrained to 1 by the multiplicity shown onthe class diagram. There seems also to be other problems with this constraint…C2: Is using xor and have an ok context. Assuming the interpretation above the this constraint seems to be doing the job.

C1:

C2:

Page 12: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 12

Propose an OCL constraint that ensures that a TimeClass object is related to a Step object through eitherthe endTime association or through the startTimeassociation.

context TimeClass inv:(firstStep->size() = 1 implies lastStep->size() = 0)And(firstStep->size() = 0 implies lastStep->size() = 1)

*

1

This constraint seems to be doing the job.

Page 13: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 13

Propose an OCL constraint that ensures thatthe start time (which is given through thestartTime association) is before the end time (which is given through the endTimeassociation)

context Step inv:(theStart.year < theEnd.year) or((theStart.year = theEnd.year) and ((theStart.month < theEnd.month) or ( (theStart.month = theEnd.month) and ((theStart.day < self.theEnd.day) or( (theStart.day = theEnd.day)and ( (theStart.hour < theEnd.hour) or((theStart.hour = theEnd.hour) and (theStart.minute < theEnd.minute)

))

) )

)))

Page 14: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 14

1

Task: c

A11

Watch

4

B11

C11

D11

Controller

Button

Clock

+ getTime() : Time

+ tick() : void+ oneMoreStep() : void+ oneMoreBeat() : void

11

+ on() : void+ off() : void

11 LoadSpeaker

StepSensor HeartBeatSensor

1 1

1 1

1

1

11

Page 15: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 15

Task: d

:A

:Watch

:B

:C

:D

:Controller

:Button :Clock

:LoadSpeaker

:StepSensor :HeartBeatSensor

:Button

:Button

:Button

Page 16: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 16

hBInterval3 = hBInterval2; hBInterval2 = hBInterval1; hBInterval1 = lastHBTime – previousHBTime; previousHBTime = lastHBTime;

lastHBTime = clock. getTimeInMilliSeconds();

[timeSinceLastHB<60]

[oneMoreBeat() message received]

averageRate = (hBInterval1 + hBInterval2 + hBInterval3) / 3;

heartBeatRate = 60000/averageRate;intTxtLowerRight.setIntText(heartBeatRate)

heartBeatRate = 0;

tickCount++;

tickCount = 0;

[tickCount<3AND tick() message received]

[after some initialization]

timeSinceLastHB = (clock. getTimeInMilliSeconds() – previousHBTime) / 1000;

[else]

If pulse is lower than 1 per min. thenthe system assumes there is an error!

[tick() message received]

[tickCount>=3AND tick() message received]

Task: e

Page 17: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 17

Alternative solution to Task: e

Page 18: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 18

Alternative solution to Task: e continues

Page 19: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 19

Alternative solution to Task: e continues

Page 20: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 20+ getTime() : Time+ getTimeInMilliSeconds():Integer

Controller

HBIntervalUpdater

HBUpdater IntTxtField

+ getIntTxt() : Integer+ setIntText(intTxt : Integer)+ addToIntTxt(number ToAdd : Integer)

HeartBeatSensor

Clock

+ tick()+ calculateBeatRate()

+ oneMoreBeat()- updateIntervals()

oneMoreBeat()

:Clock:HeartBeatSensor :HBIntervalUpdater :HBUpdater intTxtUpperRight:IntTextField

getTimeInMilliSeconds()

updateIntervals()

hBInterval1 : IntegerhBInterval2 : Integer hBInterval3 : IntegerpreviousHBTime : Integer

tick()

oneMoreBeat()getTimeInMilliSeconds()

updateIntervals() tick()

tick()calculateBeatRate()

setIntText(heartBeatRate)oneMoreBeat()getTimeInMilliSeconds()

updateIntervals() tick()

Task: f

Using Structured Classifier Notation:Parts connected via ports and Controllercomposed of HBIntervalUpdater and HBUpdater.

This is not part of Task f, but helps to describe it!

Page 21: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 21

Alternative solution toTask: f

Page 22: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 22

Alternative solution to Task: f continues…

Page 23: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 23

Task: g

Page 24: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 24

Task: h

Page 25: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 25

[1] Structured Classifier• [Ref.Man.] A classifier containing parts or roles that

form its data structure and realize its behaviour.

• [Ref.Man.] A Structured class is the description of the internal implementation of a class. A structured class owns its ports, parts, and connectors. The class and its ports may have interfaces…

Page 26: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 26

[2] Composite Structure DiagramsIn UML models, a composite structure diagram

depicts the internal structure of structuredclassifiers by using parts, ports, and connectors.

The example in the figure shows how the composite structure diagram identifies the containing classifier, Car. The diagram frame shows four internal composite parts of the containing classifier, which represent the four wheels of the car and are of the type Wheel. A communication link connects the front wheels and the rear wheels with connectors named frontaxle and rearaxle.

Page 27: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 27

[2] Parts & Connectors

• In composite structure diagrams, a part is a diagram element that represents a set of one or more instances that a containing structuredclassifier owns. A part describes the role of an instance in a classifier.

• In UML diagrams, a connector is a line thatrepresents a relationship in a model. When youmodel the internal structure of a classifier, youcan use a connector to indicate a link betweentwo or more instances of a part or a port.

Page 28: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 28

[2] Ports

• In composite structure diagrams, a portdefines the interaction point between a classifier instance and its environment or between the behavior of the classifier and its internal parts.

Page 29: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 29

In the figure, the Car class contains two internal composite parts: rear:Wheel[2], which represents the two rear wheels of a car, and e:Engine, which represents the engine of the car. The rearaxle connector links the engine of the car to the instances in the set named rear:Wheel.

[2]

In the figure, the class named Boat contains a part named :Propeller, which is connected by the shaft connector to the port of the part named e:Engine. Although the part e:Engine has the same type name in both the Car and Boat classes, the parts are different instances and each one belongs to a different containing classifier.

Page 30: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 30

Alternative notation [3]:

From [3]:

Page 31: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 31

From [4]:

The required interfaces of a port characterize the requests that may be made from the classifier to its environment through this port. The provided interfaces of a port characterize requests to the classifier that other classifiers may make through this port. Port is shown as a small square symbol. The name of the port is placed near the square symbol. The port symbol may be placed either overlapping the boundary of the rectangle symbol denoting that classifier or it may be shown inside the rectangle symbol.

Page 32: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 32

Task: i It seems more correct to have :StepSensor and :heartBeatSensoroutside the watch – since this is were they are placed (and not inside the watch as the figure shows)!

Page 33: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 33

Watch

:Controller

IHearBeatListener IStepListener

:HBIntervalUpdater

:Clock

:HBUpdater

Alternative with more details - see next slide for more information about the operations of the interfaces.

IClock

IClockListener

:LoudSpeaker

ILoudSpeaker

The text fields, etc. have not been included.

Page 34: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 34

Page 35: Mandatory Solutions 2011 - Universitetet i Agdergrimstad.uia.no/.../Mandatory_Solutions_2011.pdf · page 11 Propose an OCL constraint that ensures that a TimeClass object is related

page 35

References[1] James Rumbaugh, Ivar Jacobson and Grady Booch: The Unified Modeling Language Reference Manual Second Edition.

Addison-Wesley, 2005

[2] http://publib.boulder.ibm.com/infocenter/rsahelp/v8/index.jsp?topic=/com.ibm.xtools.modeler.doc/topics/ccompstruc.html

[3] http://www.jot.fm/issues/issue_2004_11/column5/

[4] http://www.uml-diagrams.org/composite-structure-diagrams.html#internal-structure-diagrams