lecture 21 inheritance
play

Lecture 21: Inheritance 2015-02-05 Prof. Dr. Andreas Podelski, Dr. - PDF document

Software Design, Modelling and Analysis in UML Lecture 21: Inheritance 2015-02-05 Prof. Dr. Andreas Podelski, Dr. Bernd Westphal 21 2015-02-05 main Albert-Ludwigs-Universit at Freiburg, Germany Contents & Goals Last


  1. Software Design, Modelling and Analysis in UML Lecture 21: Inheritance 2015-02-05 Prof. Dr. Andreas Podelski, Dr. Bernd Westphal – 21 – 2015-02-05 – main – Albert-Ludwigs-Universit¨ at Freiburg, Germany Contents & Goals Last Lecture: • Live Sequence Charts Semantics This Lecture: • Educational Objectives: Capabilities for following tasks/questions. • What’s the Liskov Substitution Principle? • What is late/early binding? • What is the subset, what the uplink semantics of inheritance? • What’s the effect of inheritance on LSCs, State Machines, System States? • Content: – 21 – 2015-02-05 – Sprelim – • Inheritance in UML: concrete syntax • Liskov Substitution Principle — desired semantics • Two approaches to obtain desired semantics 2 /48

  2. – 21 – 2015-02-05 – Sblank – 3 /48 Motivations for Generalisation • Re-use , • Sharing , • Avoiding Redundancy , • Modularisation , • Separation of Concerns , • Abstraction , • Extensibility , • . . . → See textbooks on object-oriented analysis, development, programming. – 21 – 2015-02-05 – main – 4 /48

  3. Inheritance: Syntax – 21 – 2015-02-05 – main – 5 /48 Abstract Syntax Recall : a signature (with signals) is a tuple S = ( T , C , V, atr , E ) . Now (finally): extend to S = ( T , C , V, atr , E , F, mth , ⊳ ) where F/ mth are methods, analogously to attributes and ⊳ ⊆ (( C \ E ) × ( C \ E )) ∪ ( E × E ) is a generalisation relation such that C ⊳ + C for no C ∈ C (“acyclic”). C ⊳ D reads as • C is a generalisation of D , – 21 – 2015-02-05 – Ssyntax – • D is a specialisation of C , • D inherits from C , • D is a sub-class of C , • C is a super-class of D , • . . . 6 /48

  4. Reflexive, Transitive Closure of Generalisation Given classes C 0 , C 1 , D ∈ C , we say D inherits from Definition. C 0 via C 1 if and only if there are C 1 0 , C 1 0 , . . . C n 1 , . . . C m 1 ∈ C such that C 0 ⊳ C 1 0 ⊳ . . . C n 0 ⊳ C 1 ⊳ C 1 1 ⊳ . . . C m 1 ⊳ D. We use ‘ � ’ to denote the reflexive, transitive closure of ‘ ⊳ ’. In the following, we assume • that all attribute (method) names are of the form – 21 – 2015-02-05 – Ssyntax – C ∈ C ∪ E C ∈ C ) , C :: v, ( C :: f, • that we have C :: v ∈ atr ( C ) resp. C :: f ∈ mth ( C ) if and only if v ( f ) appears in an attribute (method) compartment of C in a class diagram. 7 /48 Extend Typing Rules – 21 – 2015-02-05 – main – 8 /48

  5. Well-Typedness with Inheritance Recall : With extension for visibility we obtained v ( w ) : τ C → τ ( v ) � v : τ, ξ, expr 0 , P C � ∈ atr ( C ) , w : τ C v ( expr 1 ( w )) : τ C 2 → τ ( v ) � v : τ, ξ, expr 0 , P C � ∈ atr ( C 2 ) , expr 1 ( w ) : τ C 2 , w : τ C 1 , and C 1 = C 2 or ξ = + Now : v ( w ) : τ C → τ ( v ) � v : τ, ξ, expr 0 , P C � ∈ atr ( C ) , w : τ C 1 , τ C � τ C 1 v ( expr 1 ( w )) : τ C 2 → τ ( v ) � v : τ, ξ, expr 0 , P C � ∈ atr ( C 2 ) , expr 1 ( w ) : τ C 2 , w : τ C 1 , – 21 – 2015-02-05 – Styping – and ( C 1 = C 2 or ξ = + or ( C 2 � C 1 and ξ = # )) 9 /48 Inheritance: System States – 21 – 2015-02-05 – main – 10 /48

  6. System States Wanted : a formal representation of “if C � D then D ‘ is a ’ C ”, i.e., (i) D has the same attributes as C , and (ii) C objects (identities) can be used in any context where D objects can be used. We’ll discuss two approaches to semantics: • Domain-inclusion Semantics (more theoretical ) • Uplink Semantics (more technical ) – 21 – 2015-02-05 – Sstrucsem – 11 /48 Domain Inclusion Semantics – 21 – 2015-02-05 – main – 12 /48

  7. Domain Inclusion Semantics: Idea Sensor context s 1 , s 2 : Sensor inv : v < 0 Label : String u 1 : SmokeSensor u 2 : TempSensor SmokeSensor TempSensor s : Int t : Float Label = ”51.3.1” Label = ”51.3.17” s = 3 t = 19 . 7 – 21 – 2015-02-05 – Sdomincl – 13 /48 Domain Inclusion Structure Let S = ( T , C , V, atr , E , F, mth , ⊳ ) be a signature. Now a structure D • [ as before ] maps types, classes, associations to domains, • [ for completeness ] methods to transformers, • [ as before ] indentities of instances of classes not (transitively) related by generalisation are disjoint, • [ changed ] the indentities of a super-class comprise all identities of sub-classes, i.e. � ∀ C ∈ C : D ( C ) � D ( D ) . C ⊳ D – 21 – 2015-02-05 – Sdomincl – Note : the old setting coincides with the special case ⊳ = ∅ . 14 /48

  8. � Domain Inclusion System States Now : a system state of S wrt. D is a type-consistent mapping σ : D ( C ) � → ( V → ( D ( T ) ∪ D ( C 0 , 1 ) ∪ D ( C ∗ ))) that is, for all u ∈ dom( σ ) ∩ D ( C ) , • [ as before ] σ ( u )( v ) ∈ D ( τ ) if v : τ , τ ∈ T or τ ∈ { C ∗ , C 0 , 1 } . • [ changed ] dom( σ ( u )) = � C 0 � C atr ( C 0 ) , Example : C 0 , 1 x : Int n – 21 – 2015-02-05 – Sdomincl – D x : Int y : Int Note : the old setting still coincides with the special case ⊳ = ∅ . 15 /48 Satisfying OCL Constraints (Domain Inclusion) • Let M = ( C D , OD , SM , I ) be a UML model, and D a structure. • We ( continue to ) say M | = expr for context C inv : expr 0 ∈ Inv ( M ) iff � �� � = expr ∀ π = ( σ i , ε i ) i ∈ N ∈ � M � ∀ i ∈ N ∀ u ∈ dom( σ i ) ∩ D ( C ) : I � expr 0 � ( σ i , { self �→ u } ) = 1 . • M is (still) consistent if and only if it satisfies all constraints in Inv ( M ) . • Example : C 0 , 1 – 21 – 2015-02-05 – Sdomincl – x : Int n D 16 /48

  9. Transformers (Domain Inclusion) • Transformers also remain the same , e.g. [VL 12, p. 18] update ( expr 1 , v, expr 2 ) : ( σ, ε ) �→ ( σ ′ , ε ) with σ ′ = σ [ u �→ σ ( u )[ v �→ I � expr 2 � ( σ )]] where u = I � expr 1 � ( σ ) . – 21 – 2015-02-05 – Sdomincl – 17 /48 Inheritance and State Machines: Triggers • Wanted : triggers shall also be sensitive for inherited events, sub-class shall execute super-class’ state-machine (unless overridden). ( cons , Snd ) ( σ ′ , ε ′ ) if ( σ, ε ) − − − − − − → u • ∃ u ∈ dom( σ ) ∩ D ( C ) ∃ u E ∈ D ( E ) : u E ∈ ready ( ε, u ) • u is stable and in state machine state s , i.e. σ ( u )( stable ) = 1 and σ ( u )( st ) = s , • a transition is enabled, i.e. ∃ ( s, F, expr , act , s ′ ) ∈→ ( SM C ) : F = E ∧ I � expr � (˜ σ ) = 1 where ˜ σ = σ [ u. params E �→ u e ] . and • ( σ ′ , ε ′ ) results from applying t act to ( σ, ε ) and removing u E from the ether, i.e. – 21 – 2015-02-05 – Sdomincl – ( σ ′′ , ε ′ ) = t act (˜ σ, ε ⊖ u E ) , σ ′ = ( σ ′′ [ u. st �→ s ′ , u. stable �→ b, u. params E �→ ∅ ]) | D ( C ) \{ u E } where b depends : • If u becomes stable in s ′ , then b = 1 . It does become stable if and only if there is no transition without trigger enabled for u in ( σ ′ , ε ′ ) . 18 /48 • Otherwise b = 0 .

  10. Domain Inclusion and Interactions C D C E e E C’ F • Similar to satisfaction of OCL expressions above: • An instance line stands for all instances of C (exact or inheriting). • Satisfaction of event observation has to take inheritance into account, too, so we have to fix , e.g. – 21 – 2015-02-05 – Sdomincl – = β E ! σ, cons , Snd | x,y if and only if β ( x ) sends an F -event to βy where E � F . • C -instance line also binds to C ′ -objects. 19 /48 Uplink Semantics – 21 – 2015-02-05 – main – 20 /48

  11. Uplink Semantics: Idea Sensor context s 1 , s 2 : Sensor inv : v < 0 Label : String u 1 : SmokeSensor u 2 : TempSensor SmokeSensor TempSensor s : Int t : Float Label = ”51.3.1” Label = ”51.3.17” s = 3 t = 19 . 7 – 21 – 2015-02-05 – Suplink – 21 /48 Uplink Semantics • Idea : • Continue with the existing definition of structure , i.e. disjoint domains for identities. • Have an implicit association from the child to each parent part (similar to the implicit attribute for stability). C x : Int D • Apply (a different) pre-processing to make appropriate use of that association, e.g. rewrite (C ++ ) x = 0; – 21 – 2015-02-05 – Suplink – in D to uplink C -> x = 0; 22 /48

  12. Pre-Processing for the Uplink Semantics • For each pair C ⊳ D , extend D by a (fresh) association uplink C : C with µ = [1 , 1] , ξ = + ( Exercise : public necessary?) • Given expression v (or f ) in the context of class D , • let C be the smallest class wrt. “ � ” such that • C � D , and • C :: v ∈ atr ( D ) • then there exists (by definition) C ⊳ C 1 ⊳ . . . ⊳ C n ⊳ D , • normalise v to ( = replace by) – 21 – 2015-02-05 – Suplink – uplink C n -> · · · -> uplink C 1 .C :: v • If no (unique) smallest class exists, the model is considered not well-formed ; the expression is ambiguous. 23 /48 Uplink Structure, System State, Typing • Definition of structure remains unchanged . • Definition of system state remains unchanged . • Typing and transformers remain unchanged — the preprocessing has put everything in shape. – 21 – 2015-02-05 – Suplink – 24 /48

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend