Chapter 8, Object Design: - - PDF document

chapter 8 object design
SMART_READER_LITE
LIVE PREVIEW

Chapter 8, Object Design: - - PDF document

Object-Oriented Software Engineering Chapter 8, Object Design:


slide-1
SLIDE 1
  • Using UML, Patterns, and Java

Object-Oriented Software Engineering

Chapter 8, Object Design: Object Constraint Language

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3

  • !"
  • #
  • $%
  • $&

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4

  • '(

context Tournament inv: self.getMaxNumPlayers() > 0 )'(

*+&& ,-

(

  • *-*+-
  • !".,

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5

  • '(

context Tournament::acceptPlayer(p) pre: not self.isPlayerAccepted(p) )'(

*+&/0&1 &&,-

(

  • +
  • &$/0&

+

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6

  • '(

context Tournament::acceptPlayer(p) post: self.getNumPlayers() = self@pre.getNumPlayers() + 1 )'(

*+& & &/0-

(

  • 2

,

,

slide-2
SLIDE 2
  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7

  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8

  • !
  • !
  • !

"

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9

! "

# $%%&'( %! %!)* %$ + $%%&, %(-& %-&& %%$ ,+ $%%.&'( %&%$ #/0 $%%.&'( %&%$ #/0 $%%& %&&( %&' %& %1 % % % % %$ #/0 $%%&! %&&( %& % %1 % %" %$ !#/0

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10

#

  • How do we specify constraints on
  • n a group of classes?

Starting from a specific class in the UML class diagram, we navigate the associations in the class diagram to refer to the other classes and their properties (attributes and Operations).

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11

$%&'$(&)

  • %
  • #0
  • 2

2

  • %

, 2 2 ! %

  • 3

3 %

  • %

"( 3, $+4

  • 1,

5, & +&& & , 6, + & 1 + ,

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12

!"*

4, &!,

  • ''
  • 5

6

  • 7 8

7 9 : 28; 28<

)+) *

slide-3
SLIDE 3
  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13

,(## "

  • 1. Local attribute
  • 2. Directly related class
  • 3. Indirectly related class
  • ,

% %

  • %

,

  • %

%

  • 2

2

  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 14

#-

  • %
  • #0
  • 2

2

  • %

, 2 2 ! %

  • 3

3 %

  • %

& !

  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15

).

  • Sets, Bags and Sequences are predefined in OCL and

subtypes of Collection. OCL offers a large number of predefined operations on collections. They are all of the form: collection->operation(arguments)

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 16

/

  • +!"7+&"

+&+

  • "
  • ( ,'&

&

  • ($%

/0

  • 8($%
  • '"(
  • /)0(
  • /0(
  • 8/"0(8

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 17

//0

size: Integer

  • includes(o:OclAny): Boolean

+%o

count(o:OclAny): Integer

"&

  • isEmpty: Boolean

+%&

notEmpty: Boolean

+%& +!"7+& !"7+&

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 18

//*

union(c1:Collection)

c1

intersection(c2:Collection)

)"c2 /&% c2

including(o:OclAny)

""

  • select(expr:OclExpression)

%!"7 expr

slide-4
SLIDE 4
  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 19

122/3

  • $&&
  • $&

37

  • 3(&
  • 3(&

/0

  • 3(

9:& 8

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 20

(##0/&

'($";

  • =

")69

Alternative writing style

Customer card->size <= 4

name: String titel: String age: Integer birthday: Date getage(): Integer Customer valid: Boolean validSince: Date expires: Date color: enum { silver, gold} printedName : String customerCard

  • wner

card *

card denotes a set of customercards

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 21

(##0/&

'(

  • '")6

nrcustomer: Integer programPartner name:String titel: String age: Integer birthday: Datum getage(): Integer Customer 1..* 1..* register(k: Customer) Bonusprogram program * .*

Customer denotes a multiset of customer bonusprogram denotes a set of Bonusprograms

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 22

(##&

{ordered} &,

  • '(

Bonusprogram level->size = 2

register(k: Customer) Bonusprogram {ordered} name: String Level *

level denotes a sequence von levels

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 23

2/

  • !"!"7"(

+8

  • 8

8

8,

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 24

$%

programPartner

nrcustomer = bonusprogram.Customer->size +&% 8(

programPartner

nrcustomer = bonusprogram.Customer->asSet->size

nrcustomer: Integer programPartner name:String titel: String age: Integer birthday: Datum getage(): Integer Customer 1..* 1..* register(k: Customer) Bonusprogram program * .*

slide-5
SLIDE 5
  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 25

/Sequence

(+

+8

(+

+8

/()0(+

+ 8

'( < !" !"7)(

Bonusprogram: level->first.name = "Silber"

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 26

#-4

  • !

!""#

&

  • %

#0

  • 2

2

  • %

, 2 2 ! %

  • 3

3 %

  • %

Indirectly related class navigation

$%

  • &

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 27

$$%

+!" ,

  • &73
  • +!"
  • &=,,3
  • +&%
  • &7>
  • +
  • &%
  • ?9:%

8

  • *37&-

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 28

5

!"8

$%&-&& >(%$ &")(&? ('(

!"8

$%4&&& ((&%$ &")&?@

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 29

/ /

  • =3!

3")4 ")4 =3! @! =! ")4 ! =! ! = ! ") A!'B = ") = 3!, !6

  • A!'B'

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 30

  • '(*$+

+-

&")(? ('(

'(*&1 +-

= ")(? ")(? ) !

slide-6
SLIDE 6
  • Bernd Bruegge & Allen Dutoit

Object-Oriented Software Engineering: Conquering Complex and Changing Systems 31

  • #

'(*$&&

  • &

")(? ")? &")( & &(

  • %
  • &

& % %

  • %

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 32

&'

  • .,,?%$,@,A

+!"(@&& $%$7?&%5%5==6

  • ,&

!7! "%5% B%3CCD,

  • ,&%

&"(+$%"%)'''% E,6=%,5%,35C736=%.&3CCD,

(FF,,FFF&FF F,

  • ",$,#,B%

$, "$"%35/3=0(GDH7GIG%! 3CHC,/@B(

(FF,1,F1FBJ0

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 33

  • "/
  • "

%

  • /*&-0
  • !"
  • "

% 6&,