Other Datasim websites that might be of interest:  Datasim Education  |  Datasim Component
publishing for advanced software technology and applications
about datasim press books downloads contact feedback news forum links
Book details
 
Design and Implementation of C# Applications
A Design Patterns Approach
By Daniel Duffy and Adriaan Meeling
Publisher Datasim Press
+-340 pages
Available 2nd quarter 2002
about the authors
Daniel Duffy (1952) is the founder of Datasim Education BV and Datasim Component Technology BV, Amsterdam, the Netherlands. These companies are involved in training, consultancy and software development using object-oriented, component and agent technologies. He has been involved in the IT branch since 1979 and has worked in the semi-conductor, engineering, oil and gas, financial and process industries as programmer, systems analyst, network manager and designer. His current interests are in the industrialisation and quantification of the software process by discovering and documenting successful projects from the past and using them as reusable frameworks for future systems. At the moment of writing he is involved with the development of mathematical models for financial derivatives pricing and designing these models using patterns and C++. Daniel Duffy has a B.A. (Mod) (1975) in mathematics, M.Sc. (1977) and Ph.D. (1980) in numerical analysis from Trinity College, Dublin, Ireland. He spent some time as a researcher in various European countries before he switched to IT.
Adriaan Meeling studied software engineering in the Netherlands at the Amsterdamse Hoge School. He has been working in the software industry since 1993. Since then Adriaan has worked in projects like CADObject, a C++ library for the CAD industry, Xeno, a holographic conversion program, BIS, an administrative application and much more. In the projects a range of technologies and languages where used such as C++, Visual Basic, Microsoft Foundation Classes, Design Patterns, CORBA and COM/DCOM. The knowledge learned from these projects has been used to give courses at Datasim Education BV. Since C# was introduced in the Visual Studio's pre-releases and Beta's Adriaan has been examining and using it for research and development. Part of the research was implementing the well-proven Design Patterns in C# in a real-life project environment. His interests are in the area of researching, testing and applying new techniques and languages to improve large-scale development in general.
back to top
table of contents

Part I: C# Language and Syntax

1: Overview

1.1 Background to C#

1.2 C# as an Object-Oriented Language

1.3 C# Support for Interface Programming

1.4 Comparing C# with other Languages


2: C# Basics

2.1 Contents of a C# program

2.2 My first Program: Hello, Cosmos

2.3 Value types and object types

2.4 Basic Data Types

2.5 Array Types

2.6 Structs

2.7 Boxing and unboxing

2.8 Classes


3: The Class Concept

3.1 Class Declarations

3.2 Constructors and Destructors

3.3 Class Members

3.4 Fields

3.5 Methods

3.6 Properties

3.7 Operators


4: Classes and Objects

4.1 Creating Flexible and Reusable Code

4.2 Implementing Inheritance

4.3 Virtual Functions

4.4 Abstract Classes

4.5 Interfaces

4.6 Implementing Aggregation and Composition

4.7 Sealed Classes


5: Extending Classes

5.1 Delegates

5.2 Events

5.3 Attributes


Part II: Introduction Design Patterns

6: Introduction and Classification

6.1 White Box and Black Box Reuse

6.2 Object Lifecycle Model

6.3 Objectification and Objectifiers


7: Creational Patterns

7.1 Singleton

7.2 Factory Method

7.3 Prototype


8: Structural Patterns

8.1 Composite

8.2 Proxy

8.3 Adapter


9: Behavioral Patterns

9.1 Strategy

9.2 Template method

9.3 State pattern


Part III: C# and Interfaces

10: Introduction to Interfaces and Interface-based Programming

10.1 Introduction and Objectives

10.2 What is an Interface?

10.3 Discovering and documenting Interfaces

10.4 Examples of Interfaces


11: Implementing Interfaces

11.1 Introduction and Objectives

11.2 Interface Declarations

11.3 Interface Members

11.4 Interface Implementation

11.5 Interfaces, Inheritance and Delegation

11.6 Combining Inheritance and Delegation: The Roles Patterns


Part IV : Advanced Design Patterns

12: Creational Patterns

12.1 Abstract Factory

12.2 Builder

12.3 Combining Factories and other Patterns


13 Structural Patterns

13.1 Bridge

13.2 Decorator

13.3 Facade


14 Behavioral Patterns

14.1 Mediator

14.2 Observer pattern

14.3 Visitor

14.4 Propagator pattern


15: Presentation-Abstraction-Control (PAC) Pattern: An Architectural Pattern

15.1 Introduction and Objectives

15.2 What is PAC?

15.3 Why PAC is needed for Enterprise Modeling

15.4 Preparing for PAC

15.5 PAC Components

15.6 Creating PAC Systems

15.7 PAC and the Power of Web Applications


Part V: Applications in C#

16: An Overview of Application Areas

16.1 Introduction and Objectives

16.2 Core, Supporting and Management Processes

16.3 System Decomposition

16.4 Mapping Systems to .Net

16.5 Requirements and Use Cases

16.6 Integrating Use Cases with .Net Applications


17: Order Processing System (OPS)

17.1 Introduction and Objectives

17.2 Order Registration and Validation

17.3 Allocation of Resources

17.4 Order Monitoring and Tracking

17.5 Analysis and Design of OPS

17.6 Implementation under .Net and C#

17.7 Generalizations and Extensions


18: Customer Relationship Management (CRM)

18.1 Introduction and Objectives

18.2 Creating a Customer Database

18.3 Customer Relationship Needs

18.4 Analysis and Design of CRM

18.5 Implementation under .Net and C#

18.6 Generalizations and Extensions


19: Graphics and Visualization Applications (VIS)

19.1 Introduction and Objectives

19.2 Core Processes and Subsystems

19.3 Creating an Architecture

19.4 Analysis and Design of VIS

19.5 Implementation under .Net and C#

19.6 Generalizations and Extensions


20: Management and Executive Information Systems

20.1 Introduction and Objectives

20.2 EIS and MIS System as Transaction Systems

20.3 Core Process and Subsystems

20.4 The Role of Visualization and Reporting

20.5 Analysis and Design of OPS

20.6 Implementation under .Net and C#

20.7 Generalizations and Extensions

20.8 Integration with Office Applications


21: Option Pricing and Risk Management

21.1 Introduction and Objectives

21.2 Introduction to Option Modeling

21.3 Modeling Options as C# Classes

21.4 Methods and Interfaces

21.5 Creating MIS Applications

21.6 Integration with Excel

21.7 Web Integration

21.8 Conclusions and Extensions


Appendices
  1. An Introduction to UML
  2. An Introduction to Domain Categories
  3. Comparing C# and Java
  4. Comparing C# and C++
back to top
preface
This book is about developing applications using the C# language in combination with design patterns. C# fully supports the object-oriented paradigm as well as providing developers with functionality for interface-based programming. We thus see C# as both an object-oriented and as a component-oriented programming language. This implies that it is now possible to create highly flexible and durable applications using advanced syntax features in C# combined with the highly popular and powerful Gamma design patterns. We apply these techniques to the development of applications that we hope will help you in your daily work. In particular, we develop several non-trivial systems to show what the power of C# and how you can adapt the software to suit you own needs.

What this book is

This book is about applying proven techniques to developing applications in C#. It has been written with C++ and Java programmers in mind. C# has many similarities with these languages and for this reason we focus more on design and application issues than impressing the reader with syntax which is much better documented in the C# Language Reference anyway.
The most important topics in the book can be included under the following headings: Important C# syntax
C#’s support for object-oriented programming
Interface programming in C#
Implementing design patterns in C#
Non-trivial applications from various domains
In short, we see C# as being an essential tool for developing large-scale .Net applications.
For whom is this book intended?
This book is for experienced object-oriented and component-oriented software developers. We expect that C++, Java and C programmers will benefit from this book. Comments, criticisms and suggestions for improvements are very welcome. Please send your reactions to dduffy@datasim.nl
We hope that you enjoy this book!
 
Daniel Duffy
Adriaan Meeling
back to top