Download presentation
Presentation is loading. Please wait.
Published byFranklin Barrett Modified over 9 years ago
1
Fundamentals of Software Development 1Slide 1 Outline of this exercise Learning objectives:Learning objectives: –After this exercise, a student should be able to: Read a UML class diagramRead a UML class diagram Describe the basic process for developing a UML class diagramDescribe the basic process for developing a UML class diagram Explain what is easy about the process and what is hardExplain what is easy about the process and what is hard Explain the iterative nature of the design processExplain the iterative nature of the design process Process:Process: –Review the specification of BallWorld –Develop a UML class diagram for BallWord Together (in groups), step by stepTogether (in groups), step by step
2
Fundamentals of Software Development 1Slide 2 Specification of BallWorld BallWorld is just that -- a world that contains various kinds of ballsBallWorld is just that -- a world that contains various kinds of balls –along with hotspots and perhaps other things eventually Each of the buttons represents a Java class that you will writeEach of the buttons represents a Java class that you will write –Pressing a button creates a ball of that type Types of Balls might include:Types of Balls might include: –Dud: does nothing –DudThatMoves: just moves in a constant, random velocity –Dragger: the user can drag it around and kill (delete) it –Mover: like a Dragger, but moves like a MovingDud Questions? You cannot design software unless you know what it is supposed to do! –Bouncer: like a Mover, but bounces off the walls of the World –Shrinker: A Bouncer that grows and shrinks in size –Exploder: Grows, then explodes and replicates itself!
3
Fundamentals of Software Development 1Slide 3 Design BallWorld, by drawing a UML class diagram for it Review the specification, then: 1.Identify kinds of objects – these become classes 2.Identify relationships between classes is-a (extends), is-a (implements), has-ais-a (extends), is-a (implements), has-a Identify interfaces that specify what is needed for the classes to relateIdentify interfaces that specify what is needed for the classes to relate 3.For each class, determine its attributes and operations 4.For each class, for each attribute/operation, determine its type We frequently retrace our steps and fine tune our design.
4
Fundamentals of Software Development 1Slide 4 List the classes in BallWorld List the kinds of things – classes – that you think belong in the BallWorld design:List the kinds of things – classes – that you think belong in the BallWorld design: –Some are visual –Some are internal –Some are relevant Java library classes like JFrame When done, compare your list with other lists around the roomWhen done, compare your list with other lists around the room
5
Fundamentals of Software Development 1Slide 5 The classes that I chose Visual things:Visual things: –BallWorldFrame –WorldPanel –ButtonsPanel –BallButton A single class, with several instances with different labelsA single class, with several instances with different labels Non-visual things:Non-visual things: –BallWorld The class that contains mainThe class that contains main –Ball –Various subclasses of Ball –HotSpot –World The class that manages all the Balls and HotSpotsThe class that manages all the Balls and HotSpots Relevant Java library classes:Relevant Java library classes: –JFrame –JPanel –JButton Question: Why not just let the WorldPanel play this role? Answer: I choose to separate function from display of that function
6
Fundamentals of Software Development 1Slide 6 Design BallWorld, by drawing a UML class diagram for it Review the specification, then: 1.Identify kinds of objects – these become classes 2.Identify relationships between classes is-a (extends), is-a (implements), has-ais-a (extends), is-a (implements), has-a Identify interfaces that specify what is needed for the classes to relateIdentify interfaces that specify what is needed for the classes to relate 3.For each class, determine its attributes and operations 4.For each class, for each attribute/operation, determine its type We frequently retrace our steps and fine tune our design. We just did our first iteration of Step 1 Now we’ll do our first iteration of Step 2, beginning with the is-a (extends) relationship
7
Fundamentals of Software Development 1Slide 7 BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton World BallHotSpot Is-a relationships Draw the is-a relationships between the classes shown Notation: A is-a B, that is, A extends B This means that A inherits all the attributes (data) and operations (behaviors) of B AB
8
Fundamentals of Software Development 1Slide 8 BallWorldFrame BallWorld JFrame ButtonsPanelWorldPanel JPanel BallButton JButton Questions on is-a so far? Is-a relationships World Ball HotSpot Draw the is-a relationships between the classes shown Notation: A is-a B, that is, A extends B This means that A inherits all the attributes (data) and operations (behaviors) of B AB
9
Fundamentals of Software Development 1Slide 9 Ball Dud Bouncer Shrinker Exploder... MovingDud Dragger Is-a relationships Types of Balls might include:Types of Balls might include: –Dud: does nothing –MovingDud: just moves in a constant, random velocity –Dragger: the user can drag it around and kill (delete) it –Mover: like a Dragger, but moves like a MovingDud –Bouncer: like a Mover, but bounces off the walls of the World –Shrinker: A Bouncer that grows and shrinks in size –Exploder: Grows, then explodes and replicates itself! Mover Draw the is-a relationships between the types of Balls Notation: A is-a B, that is, A extends B This means that A inherits all the attributes (data) and operations (behaviors) of B AB
10
Fundamentals of Software Development 1Slide 10 Ball Dud Bouncer Shrinker Exploder... MovingDud Dragger Is-a relationships Types of Balls might include:Types of Balls might include: –Dud: does nothing –MovingDud: just moves in a constant, random velocity –Dragger: the user can drag it around and kill (delete) it –Mover: like a Dragger, but moves like a MovingDud –Bouncer: like a Mover, but bounces off the walls of the World –Shrinker: A Bouncer that grows and shrinks in size –Exploder: Grows, then explodes and replicates itself! Mover Questions on is-a relationships? Draw the is-a relationships between the types of Balls Notation: A is-a B, that is, A extends B This means that A inherits all the attributes (data) and operations (behaviors) of B AB
11
Fundamentals of Software Development 1Slide 11 Has-a relationships Draw the has-a relationships in which objects are created, for the classes shown Notation: A has-a B, here, A creates a B Indicate the multiplicity on each end: 1.. * (one or more) 3 (exactly 3) (blank often means 1) AB We also use color (here, lime green, but more often I use red) to indicate has-a relationships that involve object creation. This is not standard UML. BallWorldFrame BallWorld JFrame ButtonsPanelWorldPanel JPanel BallButton JButton World Ball HotSpot
12
Fundamentals of Software Development 1Slide 12 BallWorldFrame BallWorlds JFrame ButtonsPanel WorldPanel JPanel BallButton JButton Has-a relationships World BallHotSpot 1..* I chose to have the BallWorlds create each World, which creates the two panels (WorldPanel and ButtonPanel). Why? Who else might I have chosen to create the World? The Panels? Part of an answer: I envision a single frame, but possibly many Worlds and associated Panels. Do you see why that leads to my choices? At this point, we need to ask ourselves – what remains to be created? Who should create them? Notation: A has-a B, here, A creates a B Indicate the multiplicity on each end: 1.. * (one or more), blank for exactly 1 AB
13
Fundamentals of Software Development 1Slide 13 BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton Has-a relationships World BallHotSpot 1..* We have yet to create the Balls and HotSpots? Who should create the HotSpots? Notation: A has-a B, here, A creates a B Indicate the multiplicity on each end: 1.. * (one or more), blank for exactly 1 AB 0..* Answer: the World seems a natural choice. Who creates a new Ball, e.g., a new Exploder? How? Answer: the human user, by pressing a BallButton.
14
Fundamentals of Software Development 1Slide 14 BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton Has-a relationships World BallHotSpot 1..* Notation: A has-a B, here, A creates a B Indicate the multiplicity on each end: 1.. * (one or more), blank for exactly 1 AB 0..* So the human user creates each Ball (e.g. an Exploder), by pressing a BallButton. When the human presses a BallButton, a Ball of the appropriate type must be: Constructed Added to the World Drawn In the current design, the latter two are impossible. Explain.
15
Fundamentals of Software Development 1Slide 15 BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton Has-a relationships World BallHotSpot 1..* Notation: A has-a B, here, A creates a B Indicate the multiplicity on each end: 1.. * (one or more), blank for exactly 1 AB 0..* So the human user creates each Ball (e.g. an Exploder), by pressing a BallButton. When the human presses a BallButton, a Ball of the appropriate type must be: Constructed Added to the World Drawn In the current design, the latter two are impossible. Draw the has-a relationships that are needed – who needs to know whom? These are has-a relationships, but do NOT involve creation of objects. How are these relationships going to be implemented?
16
Fundamentals of Software Development 1Slide 16 Relationships BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton World Ball DudBouncerBloaterExploder... is-a has-a 1..* Draw links to enable the construct/add/draw actions. Revise your answers to the “who-should” questions as needed, as you design. When a new Ball is created, it must be: Constructed Added to the World Drawn Who should construct the Ball? Add it to the World? Draw it?
17
Fundamentals of Software Development 1Slide 17 Relationships BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton World Ball DudBouncerBloaterExploder... is-a has-a 1..* Draw links to enable the construct/add/draw actions. Revise your answers to the “who-should” questions as needed, as you design. Here are my decisions, as I made them. BallButton: construct the new Ball. No links needed. (Why?) BallButton: tell the World to add the Ball. What does that imply is needed in the diagram?
18
Fundamentals of Software Development 1Slide 18 Relationships BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton World Ball DudBouncerBloaterExploder... is-a has-a 1..* BallButton: construct the new Ball. No links needed. BallButton: tell the World to add the Ball. Hence: BallButton must have the World World must be able to add a Ball What has-a relationships does that imply need to be added, for the BallButton to have the World? How does the BallButton obtain the World? Answer: BallWorldFrame creates the World, then sends it to the ButtonsPanel, who sends it to each BallButton. Do you see why it was a good decision for BallWorldFrame to create the 3 big things?
19
Fundamentals of Software Development 1Slide 19 Relationships BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton World Ball DudBouncerBloaterExploder... is-a has-a 1..* The World is intended to hold all of the balls. What has-a does that imply? Draw it. Who creates a new Ball, e.g., a new Exploder? How? Answer: the human user, by pressing a BallButton.
20
Fundamentals of Software Development 1Slide 20 Relationships BallWorldFrame BallWorld JFrame ButtonsPanel WorldPanel JPanel BallButton JButton World Ball DudBouncerBloaterExploder... Animatable interface WorldManagement interface Drawable interface is-a has-a 1..* What about interfaces? – This is a chance to give the design strategic consistency by defining up front how the interacting entities should talk!
21
Fundamentals of Software Development 1Slide 21 More questions Attributes:Attributes: –What does a Ball have? When the human user clicks a BallButton, should the World become aware of the constructed Ball? If so, how?When the human user clicks a BallButton, should the World become aware of the constructed Ball? If so, how? How is drawing done?How is drawing done? –WorldPanel gives info to Ball, or Ball gives info to WorldPanel? How do Balls “act”? What else should the human user be able to do to Balls? How is that accomplished?How do Balls “act”? What else should the human user be able to do to Balls? How is that accomplished? Who should act independently (i.e., what threads should exist)?Who should act independently (i.e., what threads should exist)? What interfaces would be useful in the above? In particular, what should the following be able to do:What interfaces would be useful in the above? In particular, what should the following be able to do: –Ball HotSpot ManagerOfBalls ManagerOfHotSpots
22
Fundamentals of Software Development 1Slide 22 Design BallWorld, by drawing a UML class diagram for it Review the specification, then: 1.Identify kinds of objects – these become classes 2.Identify relationships between classes is-a (extends), is-a (implements), has-ais-a (extends), is-a (implements), has-a Identify interfaces that specify what is needed for the classes to relateIdentify interfaces that specify what is needed for the classes to relate 3.For each class, determine its attributes and operations 4.For each class, for each attribute/operation, determine its type We frequently retrace our steps and fine tune our design. We just did our first iteration of Step 1 & 2 Now we’ll continue with our first iteration of Step 3 & 4
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.