Page 37 : 37
Object-oriented Programming in C#
Abstract classes, Interfaces, and Patterns
* Method Combination
Method Combination
Parameter Variance
Covariance and Contravariance
* Abstract Classes - Sealed Classes
Abstract Classes
Abstract classes and abstract methods in C#
Abstract Properties
Sealed Classes and Sealed Methods
* Interfaces
Interfaces
Interfaces in C#
Examples of Interfaces
Interfaces from the C# Libraries
Sample use of IComparable
Sample use of IEnumerator and IEnumerable
Sample use of IFormattable
Explicit Interface Member Implementations
* Patterns and Techniques
The Composite design pattern
A Composite Example: Music Elements
An application of Music Elements
Implementation of MusicElement classes
A Composite example: IntSequence
A Composite example: IntSequence application
Implementation of the IntSequence classes
A Composite Example: A GUI
A Composite Example: A GUI
A Composite Example: A GUI
Cloning
Cloning in C#
The fragile base class problem
The Visitor design pattern
Natural object-oriented IntSequence traversals
Towards a Visitor solution
A Visitor example: IntSequence
Visitors - Pros and Cons
Visitors - Pros and Cons
There are both advantages and disadvantages of
Visitor
Integer Sequence Composite
Consequences of using a
Visitor
A new kind of traversal can be added without affecting the classes of the
Composite
A
Visitor
encapsulates all methods related to a particular traversal
State related to a traversal can - in a natural way - be represented in the
Visitor
If a new class is added to the
Composite
all
Visitor
classes are affected
The indirect recursion that involves
Accept
and the
Visit
methods is more complex than the direct recursion in the natural object-oriented solution
Visitor
is frequently used for processing of abstract syntax trees in compiler construction tools