C++ Introduction This hands-on class introduces object oriented design as a powerful new approach to programming. Students are encouraged to develop and practice good software design methodologies using the C++ language.
Course Goals....
The course begins with an introduction to the object oriented methodology and to the ideas of information hiding, data abstraction, polymorphism, and software reusability. Next, the (object centered) software design and development process is studied in some detail. The C++ extensions and additions to the C language such as the class construct and objects and messages are then examined as a first step into the detailed study of the C++ language, its syntax, and grammar. Finally, the ideas of classes and inheritance, two of the strengths of C++ and object oriented design, are studied. A C++ compiler is necessary for for all homework assignments. A tool that supports the development of UML diagrams is highly recommended but not mandatory.
By the end of the class, the student should have a working knowledge of C++ fundamentals and should be able to design, write, and debug a robust multiple file program of moderate size.
Course Syllabus....
Introduction
- Programming Paradigms
- Motivation for Objects and the Object Model
- Information Hiding
- Abstraction
- Encapsulation
Design and Development
- Objects and the Object Model
- Life Cycle Models
- Waterfall
- V Cycle
- Spiral
- Rapid Prototype
- Agile
- Steps to Design
- Requirements
- Specification
- Functional Design
- Architecture
- Prototype
- Introduction to UML
- Use Cases
- Class Relationships
- Finding Classes, Operators, and Relationships
- CRC Cards
C to C++
- Extensions to C
- Comments
- Const
- Declarations
- Functions
- Operators
- Types
- Extended Dynamic Memory Allocation
- Stream I/O
C++ Classes
- Class Creation
- Member Access
- Initialization
- Overloading
- Scope
- Pointers to Members
Class Membership
- Members
- Member Access Revisited
Class Hierarchy
- Inheritance
- Virtual Functions
- Virtual Base Classes
- Abstract Class
- Multiple Inheritance