EncartaLabs

Object-Oriented Design for C++

( Duration: 5 Days )

The Object-Oriented Design for C++ training course provides an elegant conceptual view of a system’s purpose, but little advice on the practicalities of constructing a system. By contrast, implementation technologies, such as C++ , provides the detail necessary to build but little advice on how to establish an effective architecture for the system.

This course acts as the bridge between object-oriented analysis and implementation knowledge, in many respects picking up where C++ programming language courses and analysis and design courses leave off. The course begins by looking at the conceptual model of a system and the modeling elements used to express it. This is followed by an introduction to patterns, which are an essential concept in modern OO development. Patterns for architecture, design and language-level idioms are introduced and applied to the conceptual model. Technology issues such as concurrency and distribution are covered as options later in the course.

By attending Object-Oriented Design for C++ workshop, Delegates will learn to:

  • Develop a system architecture given the analysis models and architectural constraints
  • Take the detail of a class model and elaborate it into a more complete design specification
  • Implement an object-oriented design in C++
  • Apply patterns to their object models to resolve architectural, design and implementation issues
  • Use features of C++ that support the construction of large applications, and the use of frameworks and existing libraries
  • Apply the appropriate technology to the implementation of design elements

Delegates must have a solid C++ background, with at least 6 months hands-on experience following the C++ for C Programmers or C++ for non-C Programmers course, or equivalent.

Delegates must also have a thorough understanding of object-oriented concepts, which might be gained from one of the analysis and design courses. Your understanding should include Encapsulation, and how to make best use of the C++ public, protected and private access specifies; Inheritance and how it is expressed in C++ ; Polymorphism and the use of virtual functions in C++ ; Abstract classes and pure virtual functions; object relationships, such as association and composition; How to use the C++ const qualifier; How to use existing code libraries, such as the standard C++ library.

C++ programmers wishing to enhance their OO development skills.

COURSE AGENDA

1

System Development

  • The development life cycle
  • Activities and deliverables
  • Use Cases and scenarios
2

Static Modeling

  • Classes and object diagrams
  • Attributes and operations
  • Association, aggregation and composition
  • Parameterized classes
  • Stereotypes
3

Dynamic Modeling

  • Sequence diagrams
  • Collaboration diagrams
  • State diagrams
4

Constraints

  • Programming by contract
  • Specifying operation behavior
  • Clarifying operation and attribute effects
  • Constraints between relationships
5

Patterns

  • Recognizing, reusing and documenting recurring design solutions
  • The Composite pattern
  • The Iterator pattern
  • The Command pattern
  • Idioms as language level patterns
  • Object streaming
  • STL iterators
6

Architecture

  • Coupling and cohesion
  • Package, source code, execution and deployment architectures
  • Architectural patterns
  • Layered systems
7

Functionality and Representation

  • Mapping attributes and operations to C++ class members
  • Logical vs physical const-ness
  • Argument passing conventions
  • Class static members
  • Inline functions
  • Separation of policy from computation
8

Delegation

  • Delegation principles
  • The Object Adapter pattern
  • Reducing compile-time dependencies with the Cheshire Cat idiom
  • The Bridge pattern
  • The Proxy pattern
  • Smart pointers
9

Class Relationships

  • Inheritance vs delegation
  • Interfaces
  • Pure abstract classes
  • Multiple inheritance
  • Class Adapter pattern
10

Object Relationships

  • Resolving relationship multiplicity and link attributes
  • Implementation techniques for association, aggregation and composition
  • The Null Object pattern
  • Bidirectional relationships
11

Object Creation and Ownership

  • Customizing the new and delete operators
  • Object factories
  • The Factory Method pattern
  • The Disposal Method pattern
  • The Singleton pattern
  • Reference counted smart pointers
12

Object State

  • Object life cycle models and state diagrams
  • Explicit and derived attributes for object state
  • State transition tables
  • The Objects for States pattern
  • The Collections for States pattern
13

Exceptions

  • Handling constraint violations at runtime
  • Catching and throwing exceptions in C++
  • Writing exception safe code
14

Events and Notification

  • Events and event propagation models
  • The pull model and polling
  • The push model and callbacks
  • The Chain of Responsibility pattern
  • The Observer pattern
  • Model/View/Controller (MVC)
  • Event queues
15

Libraries and Frameworks

  • Reusing code through libraries
  • The standard C++ library
  • Framework types
  • Framework architecture
16

Concurrency

  • Active and passive objects
  • Sequential, guarded and concurrent operations
  • Threaded objects
  • Thread safety
17

Component Systems

  • Overview of COM
  • Overview of CORBA
  • Interface Definition Languages (IDLs)
  • Stubs and skeletons
18

Distributed Systems

  • Principles and consequence of distribution
  • Distributed object development
  • Distribution idioms
  • The Distributed Iterator pattern
19

Persistence

  • Object to RDBMS mapping
  • Object DBMS
  • Serialisation

Encarta Labs Advantage

  • One Stop Corporate Training Solution Providers for over 4,000 Modules on a variety of subjects
  • All courses are delivered by Industry Veterans
  • Get jumpstarted from newbie to production ready in a matter of few days
  • Trained more than 50,000 Corporate executives across the Globe
  • All our trainings are conducted in workshop mode with more focus on hands-on sessions

View our other course offerings by visiting http://encartalabs.com/course-catalogue-all.php

Contact us for delivering this course as a public/open-house workshop/online training for a group of 10+ candidates.

Top