C++ Programming Workshop
A Hands-on Course
WHAT ARE THE KEYS TO ROBUST OBJECT-ORIENTED PROGRAMS?
This five-day hands-on workshop provides the knowledge and skills required to design and code understandable, extensible, and efficient C++ programs.
The outstanding features of object-oriented programming are:
- Program design by modeling real-world systems.
- A stronger concept of modularity.
- Support for the building of libraries and re-use of existing code.
- Easier modification and extension of existing code.
- The ability to extend the programming language.
The benefits of object-oriented methods are improved productivity, higher quality software, and more rapid release schedules.
In C++, the features of object-oriented programming have been carefully implemented in a way that preserves the portability and efficiency of C. This class will teach you the details of C++ syntax along with the coding techniques and design principles required to take advantage of the language. This is a hands-on classover 60% of class time will be spent in directed lab exercises.
On completion of this course, students will be able to:
- Describe the principles of object-oriented programming.
- Design programs in C++ that take advantage of the object-oriented features of the language.
- Write clean and efficient C++ code.
- Understand the role and use of standard libraries.
- Use inheritance and polymorphism to write compact, extendable code.
Who will benefit?
This course is intended for experienced developers. Six months programming experience with C is prerequisite.
Call 1.800.756.9450 to schedule this course or request information about other Socrates Group seminars and workshops. The Socrates Group provides comprehensive instruction in all aspects of client/server computing.
Course Outline:
Concepts of object-oriented programming
- Criteria for a modularization method
- Information hiding
- Abstract data types
- Objects and simulation
- Goals of object-oriented programming
- The role of the programming system
- Object-oriented programming systems concepts
- Evolution of object-oriented languages
- Evolution of C++
- Linking C++ with C
C to C++ — basic extensions
- Comments
- Declarations
- Stream I/O
- Free store
- Enumeration and struct names
- Anonymous unions
- Inline functions
- Function prototyping
- Default arguments
- Reference variables
- Initialization vs. assignment
- Function name overloading
Classes and objects
- Adding functions to struct
- Classes and objects
- The current object
- Separating definition and implementation
- Scope resolution
- The message-passing metaphor
- Object-message diagrams
- Constructors
- Member function overloading
- Constructors for automatic type conversion
- Member variable constructors
- Static member variables
- Array initialization
- Headers and libraries
Inheritance
- Public and private base classes
- Protected sections
- Constructors in derived classes
- Documenting inheritance
Collections and polymorphism
- Collections and genericity
- Templates
- Iterators
- Polymorphism
Operator overloading and friends
- Friend classes and functions
- Operator overloading
- Non-member operator overloading
- Overloaded operators and automatic type conversion
- Commutative operators
The I/O stream classes
- Formatting
- Streams and files
- Positioning and state reporting
- Implementation of the stream classes
Memory management
- Variable sized objects
- Destructors
- Copy constructors
- Assignment
- Reference counting
Program design examples
- Constraint propagation
- Simulation
Advanced topics in syntax
- Type conversion rules
- Overloading resolution
- Details of reference syntax
- Initialization of globals
- Multiple inheritance
- Exception processing
- The C++ standard library
- Tricks and tips
The programming context
- Review: Goals of OOP and C++
- Doing OOP in C
- C to C++ migration
- C vs C++ style
- C++ programming style guidelines
- Libraries, tools, and environments
- Organizational issues
© Copyright 1995, The Socrates Group. All Rights Reserved.