Download presentation
Presentation is loading. Please wait.
Published byGary Marsh Modified over 9 years ago
1
CSC 213 – Large Scale Programming
2
Today’s Goal Learn Unified Process to design programs Understand what are the “types” of Java classes Methods of selecting the potential classes How these designs presented for others to use
3
Classroom Development Always start from scratch Know all requirements from the start And requirements will not change Coding begins immediately at start Projects are trivial jokes in real-world If lasts 15 weeks, project “large scale” Code cannot be reused Never look at again, anyway
4
Why These Phases Matter
5
Our Goal
6
Our Nemesis
7
Other Nemesis
9
Where We Start
10
Find the Classes Designing classes next step in process Could help find & fix inconsistent requirements Requirements clarified if you do not understand them Outlining classes makes coding easy Already know methods to call from other classes Will provide chance to do some easy debugging
11
Noun Extraction Finds entity class candidates to be used in design Initial pass may (will) not find all entity classes Some classes not used even though found early on Provides strong hints for other needed classes Start with plain English requirements Should be easy & comes with most assignments Many nouns not needed, so can prune list Eliminate any & all classes external to program
12
Designing Elevator Controller Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed.
13
Noun Extraction 1. Underline the nouns in the requirements Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed.
14
1. Underline the nouns in the requirements Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Noun Extraction
15
2. Eliminate nouns external to the problem Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Noun Extraction
16
2. Eliminate nouns external to the problem Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Noun Extraction
17
3 “Types” of Classes Unified Process concept simplifies design process Entity classes hold long-lived data driving program Input & output handled by boundary classes Control classes do complex processing in program "Types" not real, exist for design purposes only A class is a class is a class within Java & program But they can help checking design covers all needs
18
Entity Classes
19
Focus on entity classes & ignore (for now) others Since not things, prune abstract (non-physical) nouns Ignore if used for communication – rarely drive program must work iteratively Thinking will change -- must work iteratively Writing & debugging easier given good design Minutes spent in design saves hours in coding & testing
20
“Must work iteratively” !=
21
Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Entity Classes
22
1. Ignore abstract (non-physical) nouns Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Entity Classes
23
1. Ignore abstract (non-physical) nouns Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Entity Classes
24
2. Only use singular form of each noun Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Entity Classes
25
2. Only use singular form of each noun Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Entity Classes
26
Our Entity Classes
27
Boundary Classes These classes will perform all input & output May have many details which are all independent it will change before its over Only 1 detail known: it will change before its over Make class for each detail & limit future rewriting Make life easier, start from simplest ideas Easy to combine simple classes to create complex ones Taking a complex class and breaking up far harder Rarely rewrite complex classes because of difficulty… … instead often just throw out & start from scratch
28
Skipping Boundary Classes Boundary classes may duplicate primitive type Can eliminate this class; it adds nothing to design Code will have primitive hard-coded everywhere Saves writing javadoc for class, field, getter & setter When needs change and class now needed…
29
Skipping Boundary Classes Boundary classes may duplicate primitive type Can eliminate this class; it adds nothing to design Code will have primitive hard-coded everywhere Saves writing javadoc for class, field, getter & setter When needs change and class now needed… Find & replace all primitives littering code Scan entire program to track down all I/O for this data Retest entire application to ensure now bugs created
30
Skipping Boundary Classes Boundary classes may duplicate primitive type Can eliminate this class; it adds nothing to design Code will have primitive hard-coded everywhere Saves writing javadoc for class, field, getter & setter When needs change and class now needed… Find & replace all primitives littering code Scan entire program to track down all I/O for this data Retest entire application to ensure now bugs created Industry usually finds better writing class at start
31
1. Reexamine abstract nouns & keep if used in I/O Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Boundary Classes
32
1. Reexamine abstract nouns & keep if used in I/O Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Boundary Classes
33
2. Only use singular form of each noun Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Boundary Classes
34
3. There is no step 3 Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Find Boundary Classes
35
3. There is no step 3 Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Movement Request Illumination I Know Boundary Classes!
36
Control Classes Non-obvious algorithms using many classes Rule of thumb: obvious algorithm have name Control classes already exist for named algorithms Needed for those plurals ignored previously Can use array or enum, if exact number known Else, design needs structure to hold instances
37
Control Classes
39
1. Reexamine plurals & keep when necessary Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Finding Control Classes!
40
1. Reexamine plurals & keep when necessary Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Finding Control Classes!
41
2. Eliminate if constant number (array) needed Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Finding Control Classes!
42
2. Eliminate if constant number (array) needed Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Finding Control Classes!
43
2. Eliminate if constant number (array) needed Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Finding Control Classes!
44
3. Select data structure to use for each plural Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed. Finding Control Classes!
45
3. Select data structure to use for each plural Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed.PriorityQueue Finding Control Classes!
46
Now Determine Fields in Design Designing classes next step in process For each class, determine fields Link classes that work together so easy to code When done well, coding becomes relatively simple What should be fields & how can we know? Since they are abstract, boundary classes often fields Control classes often fields; something must use it Read text again: look where one noun posses another
47
What To Do Next? Must communicate design in clear way to others Make explicit what the classes for this program are Identify fields & other relationships between classes Make certain information is clearly highlighted Provides vital check that can often find bugs Will do this by drawing pretty pictures
48
What To Do Next? Must communicate design in clear way to others Make explicit what the classes for this program are Identify fields & other relationships between classes Make certain information is clearly highlighted Provides vital check that can often find bugs Will do this by drawing pretty pictures
49
Pictures Worth 1,000 Words
52
Why Draw Classes? Pictures used to share ideas easily Gets everyone up & coding at once Group spends lab watching you code… suckers …or get suckers to work while you relax
53
Why Draw Classes? Pictures used to share ideas easily Gets everyone up & coding at once Group spends lab watching you code… suckers teammates …or get suckers teammates to work while you relax
54
Why Draw Classes? Pictures used to share ideas easily Gets everyone up & coding at once Group spends lab watching you code… suckers teammates suckers …or get suckers teammates suckers to work while you relax
55
Why Draw Classes? Pictures used to share ideas easily Gets everyone up & coding at once Group spends lab watching you code… suckers teammates suckers …or get suckers teammates suckers to work while you relax Even better to get suckers working in parallel
56
Why Draw Classes? Pictures used to share ideas easily Gets everyone up & coding at once Group spends lab watching you code… suckers teammates suckers …or get suckers teammates suckers to work while you relax Even better to get suckers working in parallel
57
Why Draw Classes? Pictures used to share ideas easily Gets everyone up & coding at once Group spends lab watching you code… suckers teammates suckers …or get suckers teammates suckers to work while you relax Even better to get suckers working in parallel Methods & their signatures included in diagrams Can write code using all classes, even if unwritten
58
UML Class Diagrams
59
Drawing Relationships Must be able to explain all relationships
60
Drawing Relationships Must be able to explain all relationships Boyfriend-Girlfriend Just Friends Friends “with benefits” Sweeties Married Best Friends
61
Relationships From Fields Aggregation Used for collection whose instances do not rely on source aggregates Car aggregates CarParts (e.g., tires, engine, lights…) Composition Use when objects from target used only within source composes Chessboard composes Squares Association Source object has field of target type (not a collection) Often used to imply source calls target's methods
62
Playing “Utah Hold’Em”? All of above relationships must be labeled Give field a name & show it near midpoint of arrow Monogamous? Poly? Specify numbers involved Each end of link has number involved on that end Could be some range of numbers like ‘2..5’ + means 1 of more objects required to be used Use Kleene’s star ‘*’ for 0 or more objects Specific number (1, 42, 69) good if specifically known
63
Generalization (“inheritance”) Shows subclass-superclass relationship Does not involve fields, multiplicities, or anything else Makes this a different type of connection than others Must draw all generalizations within the diagram For implementation to be correct, these are critical Other Type of Connections
64
Our “Final” Design Decisions Buttons in elevators and on the floors control the movement of n elevators in a building with m floors. Buttons illuminate when pressed to request the elevator stop at a specific floor; the illumination is canceled when the request has been satisfied. When an elevator has no requests, it remains at its current floor with its doors closed.
65
Elevator's UML Class Diagram Note that Button class serves two purposes Direct travel to specific floor if in an elevator Used on a floor to request travel up or down Much easier with 2 subclasses of Button
66
Elevator's UML Class Diagram
68
Next: where do methods come from?
69
For Next Lecture Link to article for Monday on lecture page Reading for Monday available on Angel What else can we do before coding? Are there more tricks that enables our laziness? How to trick smarter suckers into doing our work? Weekly assignment problem due in class Mon. Weekly assignment page has problem for today Noun extraction to find entity, boundary, & control classes Show the connections by drawing UML class diagram
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.