Summary
This course has covered a lot of material, from the basic principles
and concepts of OOP, though the application of these principles in
common programming situations:
- IO programming
- event-based programming
- GUI programming
- exception handling
- mutli-threaded programming
Aside from this survey of programming technology, the main take-home lessons
of this course should be the motivations, principles, and mechanisms
of OOP:
Motivations
What are we really trying to achieve with OOP
- Maintainability
- Extensability
- Reliability
- Clarity
- Efficiency (both programmer and program)
Principles
What ideas are we using to acheive these goals
- Encapsulation -separating implementation from use
- Abstraction - code re-use, avoid duplication, implement algorithms
at a high level using abstract types.
Mechanisms
What entities in Java support these concepts
- Classes and access control
- Strong typing
- Inheritance and polymorphism
- Interfaces
Process tips
We have also discussed the process of software design and development and
will leave you with these tips.
- Think first, code second
- Design, specify, and document top down
- Implement and test bottom up
- Functionality and Clarity first - optimize last (if ever).