Object Oriented Programming
Course Description
The maximum benefits of adopting OO are gained only if the software is appropriately designed. The choice of classes, and the distribution of tasks between the objects, is of crucial importance. Nontrivial systems include many recurring design problems whose solutions are commonly repeated from place to place, and from programmer to programmer. The essence and basic structure of a solution may be repeated many times, even though the realization is different in each case. Patterns offer a technique for capturing good design, and offer a quick way to become proficient at Object Oriented design. This course introduces patterns from the ground up, presenting principles as well as concrete examples in UML and Java. It develops understanding through lectures, discussion, and some exercises to reinforce the concepts by putting them into practice.
5 Days
Contact us for pricing
Prerequisites
Ideally this training would be preceded by the course: design and develop Java applications.OO design
Introducing the principles of OO designaims of OO design
OO designs are based on the 'real' world
what's an object?
distribution of responsibilities
objects, classes, messages and methods
decoupling for flexible software
interfaces and the 'implements' relation
types and object specifications
class extension
OO analysis
layering design decisions: abstractionexposing gaps and inconsistencies: precision
traceable designs: continuity
clear, ready communication: a language for design
a vanilla process: development from scratch (brief overview)
system requirements models
responsibilities and collaborations
persistence, GUI, distribution
coding in an OO language
component-based design (brief overview)
robust, flexible software
components and interfaces
components kits and architecture
component and reuse culture
patterns (brief overview)
Modelling with UML
static modelsobjects, types, attributes, snapshots
subtypes
dynamics
use-cases and tasks
event charts
state charts
building a business model
finding use-cases
connecting use-case and class views
the dictionary
UML notation review
uses of business model
architecture of business process
context for software requirements
basis for component interface definition
documentation style
Analysis and requirements
system context modelshigh-level operation specs
state charts for system models
meaning of 'model'
how to start abstract and get more detailed
event charts: horizontal and vertical expansion
elaborating models
relating the levels of detail
building a system spec
system context
defining system use-case goals
modelling patterns
Basic design
separating core from GUI, persistence, and other layersselection of control objects
designing system operations with messages
decoupling, extensibility, reusability
CRC 'cards'
dependencies and visibilities
the class dictionary
translation to code
Patterns
basic formproblem and forces
solution and consequences
an example: the Composite pattern
documenting patterns
documenting pattern use
Organizing patterns
pattern cataloguesthe "Gang of Four"
"Pattern-Oriented Software Architecture" (POSA)
strategic versus tactical patterns
review of organizational patterns
review of analysis patterns
review of architectural patterns
review of design patterns and idioms
pattern languages
Delegation patterns
basic principlesAdapter and its variations
Proxy
Bridge
Manager
Domain coupling
GUIsreification of use-cases in UI objects
persistence and proxies
building atop object and relational DBs
networks and layering)
Decoupling patterns
layersInterface Decoupling
Role Decoupling
Observer
The Law of Demeter
Creational patterns
Factory MethodDisposal Method
Singleton (and issues)
Cloning
Copy Constructor
Value patterns
value-based programmingWhole Value
Value Object
Enumeration Values
Class Factory Method
Copied Value
Immutable Value
Mutable Companion
Functional patterns
Named SelectorCommand
Command Processor
Command Adapter
Composite Command
Composite Exception
Block
Active Object)
Sequential patterns
Combined MethodFinally for Each Release
Execute-around Method
Iteration patterns
IteratorCombined Iterator
Enumeration Method
Selection patterns
Null ObjectState-based Selection
Objects for States (State)
Collections for States
OOAD process review
the main tasks and artefactsbusiness/conceptual modelling
specification/requirements modelling
architecture
design, Implementation
integration and test
short-cycle development
spiral model
phased development
role of prototyping
Object Oriented ProgrammingOOP