Introduction Object
Download
Report
Transcript Introduction Object
Programming Style
Chapter 14
Part 3: Implementation
Object-Oriented Modeling and Design
Byung-Hyun Ha
[email protected]
Sumber dari: ike.ie.pusan.ac.kr/w/images/c/cc/08sal_ch014.ppt
Lecture Outline
Introduction
Object-Oriented Style
Reusability
Extensibility
Robustness
Programming-in-the-large
Introduction
The experienced programmer follows principles to
make readable programs that live beyond the
immediate need
Good style is important in all programming, but it is
even more important in OO design and programming
because much of the benefit of the OO approach is
predicated on producing reusable, extensible,
understandable programs
Object-Oriented Style
Reusability
Extensibility
Robustness
Programming-in-the-large
Reusability
Kind of reusability
Sharing of newly-written code within a project
Reuse of previously-written code on new projects
Style rules for reusability
Keep methods coherent
Keep methods small
Keep methods consistent
Separate policy and implementation
Provide uniform coverage
Broaden the method as much as possible
Avoid global information
Avoid modes
Reusability
Using inheritance
Subroutines
Factoring
Delegation
Encapsulate external code
Extensibility
OO principles for extensibility
Encapsulate classes
Hide data structures
Avoid traversing multiple links or methods
Avoid cast statements on object type
Distinguish public and private operations
Robustness
Guidelines for robustness
Protect against errors
• User errors and low-level system errors
• Programming bugs
Optimize after the program runs
Validate arguments
Avoid predefined limits
Instrument the program for debugging and performance
monitoring
Programming-in-the-large
Guidelines
Do not prematurely begin programming
Keep method understandable
Make methods readable
Use exactly the same names as in the object model
Choose name carefully
Use programming guidelines
Package into modules
Document classes and methods
Publish the specification
Appendix: OO and Programming
We already discussed…
Farm
toString() and priority queue
Window programming
They cannot be possible without inheritance and
polymorphism
If you want to prepare those functionalities in the examples, you
should consider the use of OO concepts
Otherwise, your program will never be understandable (even for
yourself), extensible, and reusable
Appendix: OO and Programming
Inventory example
Inventory simulation
Assumptions
•
•
•
•
Two types of suppliers
Three types of demands
Two types of policies
Two ways of displaying results
If you want to carry out simulation for every possible combination
of settings, you have to write 24 (= 2x3x2x2) programs
• Too complex to write and manage
Let’s make them using one program (Inv_manage1.java)
• How about it?
• Could you understand?
• Do you think you can easily extend the program?
Appendix: OO and Programming
Inventory example (cont’)
Let’s use OO concepts (Inv_manage2.java, …)
First of all, easy to understand
Coherent, small, clear, consistent, extendible, reusable, …
Inv_manage
Supplier
Demand
Policy
Display
put_order
today_deliever
today_demand
today_order
show
Appendix: OO and Programming
Tree example
Tree traversal with different purposes
Structural way (Tree1.java)
• We should implement traversal algorithm every time we need
OO way (Tree2.java)
• Don’t care about how to traverse, only need to write what to do
1
2
4
3
5
5
2
2
6
1
3
7