Download presentation
Presentation is loading. Please wait.
Published byAustin Higgins Modified over 9 years ago
1
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa OBJECT DESIGN Now we need to design in such detail that the design can be implemented. It will be important to know, which structures the programming language supports, in order not to use inappropriate constructs. E.g. Java does not support multiple inheritance -> use interfaces instead in such situations.
2
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Class Diagram Before Design isAtAirport(): Boolean hasMoney(): Boolean getPlace(): Place move(p: Place) isWinner(): Boolean hasTreasure(): Boolean giveTreasure(): Treasure takeTreasure(t: Treasure) pay() clearFunds() Player name: String funds: Integer move(p: Place) getPlace(): Paikka Piece color: Integer 0..1 Card effect (p: Pelaaja) value: Integer TreasureJewel Bandit own use 0..1 Players addPlayer(n: String) nextPlayer(): Player treasurePlayer(p: Place): Player initialize() addPlayer(n: String) throwDice() movePlayer(p: Paikka) takeCard(p: Place) end() Game play 1 1 0..1 throw(): Integer Dice {ordered} * 1 1 FlightTraffic getDestinations(p: Place): set of Place hasCard():Boolean giveCard() Place located * SpecialPlace NormalPlace FlightRoute place * 2 Map giveAdjacent(p: Place, n: Integer): set 1 * cover * follow Aggregation Order of navigation
3
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa UserPlayer Choose to take card showFunds(p:Player) Examine All Sequence Diagrams! Game pay() Place Card turnCard() effect(p:Player) showFunds(p:Player)
4
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Object Design Tasks Improve efficiency by adding derived attributes and associations. Design implementation of associations. Increase maintainability by using design patterns. Reorganise class structure, inheritance and interfaces. Add additional classes, operations and attributes necessary for implementation. Design for user interface implementation. Edit the sequence diagrams to refer to existing classes. Identify operations based on the sequence diagrams. Describe complicated and important operations.
5
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Finding operations Rewrite sequence diagrams to use existing classes Add parameters, if they are still missing. Collect operations.
6
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Get Operations From Sequence Diagrams LuokkaOperationMeaning Playermove(p:Place)Move player to place p pay()Pay one unit game money hasMoney()True, if funds>0, false otherwise …
7
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Attribute types Class or a Primitive Type –E.g. Money or integer Class or several attributes –E.g. Point or two integers x,y
8
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Efficiency Considerations Shortening association paths –If necessary, add more associations. –Add an association between Game and Player Derived attributes –Avoid unnecessary re-computing –Explicit update, every time when source values change –Explicit update, at intervals –Implicit (compute when necessary)
9
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Association Design Study the associations and their usage –Usage in one or both directions? –If one, then which? –Are all associations necessary?
10
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Association Implementation Small cardinality (1 or 2, maybe 3) -> a referencing attribute Larger cardinality -> a container class, e.g. list Qualification -> a container class with hashing or indexing
11
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Nontrivial associations Aggregation associations –FlightTraffic-Flightroute –Map-Place Other –Place-Follow-Place –Players-Player
12
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Qualification and Indexing Qualification FlightTraffic getDestinations(p: Place): Set fee(p1, p2: Place): Integer giveCard() Place SpecialPlace cardSeen: Boolean hasCard():Boolean giveCard() NormalPlace Set placeNo ends {indexed} 1 * Place (or at least Special Place) must eventually have placeNo as an attribute. placeNo: Integer We are slowly iterating towards an implementable version. Only that version contains all details.
13
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa FlightTraffic-FlightRoute Observations: –Qualification using Place –Association is used by getDestinations(p: Place), which returns a set of places based on a a given place. –FlightRoute objects are to be organised in such a way that for each place we can find the other places reachable with a flight route. Solution: –Each place is given an identifying number 0..n. Use a search structure (table, binary tree, …) to find other places based on the number. Similarly associations Map-Place and Place-Follow-Place
14
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa FlightTraffic-FlightRoute Search will be based on special places (as only they have flight connections. Therefore, we may give them numbers 0..k Create a table k x 1 table flightDestinations Each cell contains a list (or a reference to a list) of possible destinations, e.g. from cell flightDestinations[1] we find a list of possible flight destinations from place 1 (assuming k is at least 1).
15
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa FlightTraffic-FlightRoute: Table Only Search Structure As an alternative, create a boolean k x k table flightDestinations2 If there is a flight destination between special place i and special place j, then flightDestinations2[i,j]== flightDestinations2[j,i]==true else flightDestinations2[i,j]== flightDestinations2[j,i]==false Search is a bit slower, but implementation is easier.
16
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Applying a similar idea to using dice Create a k x 6 table destinations (6 being the maximum value for dice) Each cell contains a list (or a reference to a list) of possible destinations, e.g. from cell [1,6] we find a list of possible destinations. Alternatively, use a k x 6 x k table: if you can walk from i to j with s steps, then destinations[i][s][j]==true
17
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa FlightTraffic-FlightRoute Search will be based on special places (as only they have flight connections. Therefore, we may give them numbers 0..k Create a k x 6 table (6 being the maximum value for dice) Each cell contains a list (or a reference to a list) of possible destinations, e.g. from cell [1,6] we find a list of possible destinations
18
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Players-Player Observations: –Navigation for finding the players –Operations nextPlayer() and treasurePlayer(p: Place) –Player objects need an order Solution: –Use a table indexed by player number. –Change {ordered} into {indexed}, qualification can be removed.
19
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Abstract Classes and Virtual (Abstract) Operations Is it possible to define the operation for the superclass? -> If not -> {abstract}. If there are abstract operations, then the superclass will be abstract.
20
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Superclass-Subclass Example Place is a superclass of SpecialPlace and NormalPlace. Operation hasCard is in a way only meaningful for special places. However, we may want to ask any place if it has a card. Solution: define hasCard for Place and make it return false by default. SpecialPlace will redefine hasCard.
21
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Speculative Design Add abstract classes or interfaces E.g. prepare for new forms of transportation –New abstract class Traffic –with a virtual operation price (p1: Place, p2: Place): Integer. Same in FlightTraffic. –change operation fee() into form fee(h: Integer)
22
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Object Design Class Diagram
23
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Operation Design Operation descriptions are designed with such accuracy that it is possible to implement them based on this design. An operation form may be used.
24
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Operation Form / 1 Class and operation declaration Description: A short operation description. Result: Result of the operation. Assumes: Preconditions, which are to be checked explicitly. Reads: Attributes, whose values the operation reads without modifying them, andobjects, whose state the operation reads without modifying them.
25
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Operation Form / 2 Changes: Attributes, whose values are changed, and objects, whose instances are changed. Exceptions: Possible exceptions, under which the operation terminates abnormally and does not produce the required result. Scenario: Sequence diagram showing the related object interactions. Algorithm: Algorithm for the operation.
26
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Operation Design Analysis-level description forms the basis. Examine operation uses in sequence diagrams. Preconditions guarantee that the operation can be executed (excluding exceptions).
27
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Operation Design Exceptions are described separately (execution terminates without correct result). If the object uses other objects during the execution, this can be described with a sequence diagram (it may be possible to get this from earlier diagrams). Non-trivial algorithms are written using a pseudo language.
28
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Example: treasurePlayer(p: Place) Class: Players Operation: treasurePlayer(p: Place): Player Description: If there is a player in place p with the treasure, returns that player. Result: Returns player Q, for which Q.owns nil and Q.uses.located = p, if such Q exists, otherwise nil. Assumes: p nil
29
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Example: treasurePlayer(p: Place) continued Reads: Player, Piece Exceptions: Player has no piece. Algorithm: while players not processed do Q = unprocessed player; if Q.hasTreasure() then if Q.getPlace() == p then return Q end end; return nil
30
Software Engineering – http://www.cs.uta.fi/se University of Tampere, CS DepartmentJyrki Nummenmaa Final Checks Check that everything matches: The required classes exist. The required operations exist. The required attributes exist. The required associations exist. The types match.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.