Maricopa Community Colleges  CIS167AA   19986-20015 
Official Course Description:   MCCCD Approval:  06/23/98
CIS167AA     19986-20015 L+L 3 Credit(s) 4 Period(s)
C++ Object-Oriented Programming
Key object-oriented programming concepts in C++; hands-on experience developing C++ programs. Includes language constructs and extensions. Prerequisites: (CIS123AA or previous Windows Operating System experience) and CIS162AA, or permission of instructor.
 
Go to Competencies    Go to Outline
 
MCCCD Official Course Competencies:
 
CIS167AA   19986-20015 C++ Object-Oriented Programming
1. Describe object-oriented concepts, terminology, and tools. (I, II)
2. Use good C++ programming style. (II)
3. Read and describe basic C++ syntax. (II, III)
4. Define and use C++ classes. (II, III, IV, VI)
5. Create, compile, and run C++ programs using C++ programming environments and tools. (II, VII)
6. Declare, use, and distinguish variables, constants, arrays, pointers, and references. (II-V, VII)
7. Write functions, decisions, and loops. (II-IV, VI-VII)
8. Manage storage using constructors and destructors. (II, V)
9. Derive new classes from existing classes with inheritance. (III, VI)
10. Use standard input and output functions and operators. (IV, VI, VII)
Go to Description    Go to top of Competencies
 
MCCCD Official Course Outline:
 
CIS167AA   19986-20015 C++ Object-Oriented Programming
    I. Overview
        A. Object-oriented programs
          1. What is object-oriented programming?
          2. Evolution of OO programming
          3. Classes for encapsulating data
          4. Single and multiple inheritance
          5. Polymorphism and dynamic binding
        B. Benefits of object-oriented methods
          1. How OO design improves usability
          2. Reliability and maintainability
          3. Recycling existing software
          4. Structured vs. OO approaches
        C. Object-oriented analysis and design
          1. What is an object?
          2. What is a type?
          3. Types vs. classes
          4. Overview of visual object modeling languages
      II. Introduction to C++
          A. C++ and object-oriented programming
            1. Limitations of C as an OO language
            2. Design goals of C++
            3. C++ = C + strong typing + classes
          B. The structure of a C++ program
            1. C++ syntax
            2. Coding standards and notations
            3. Function specifications and declarations
            4. Overloading of functions and operations
            5. Parameter passing
            6. Using separate compilation and including files for modularity
          C. Classes in C++
            1. Declaring and using classes
            2. Simplifying class interfaces
            3. Constructors
        III. Inheritance
            A. Derived classes
              1. Public, private, and protected
              2. Hierarchical initialization
              3. Nested classes
              4. Virtual functions
              5. Multiple inheritance
              6. Using virtual base classes
              7. Abstract classes
              8. Storage allocation for classes
            B. Dynamic typing
              1. Downcasting pointers
              2. Finding an object's type
              3. Comparing types
          IV. Advanced C++ features
              A. Advanced C++ types
                1. Using reference types
                2. Using enumeration types
                3. Using const to improve reliability and efficiency
              B. Advanced C++ functions
                1. Friends
                2. Overloading operators
                3. Overloading (), []
                4. In-lining functions
                5. Default arguments
            V. Memory management
                A. Static storage
                  1. Static data members
                  2. Initializing global data
                B. Dynamic storage allocation
                  1. Recursive data structures
                  2. Storage management in C++
                  3. new and delete
                  4. Copy constructors
                  5. The dangers of aliases
                  6. Using destructors
                  7. Defining assignment to avoid aliases
              VI. Reusable libraries in C++
                  A. Standard libraries (ANSI/ISO)
                    1. I/O class hierarchy
                    2. Standard template libraries
                    3. Iterators
                  B. Template classes
                    1. Reuse via type parameters
                    2. Declaring container classes
                    3. Homogeneous and heterogeneous containers
                    4. Template constructs
                  C. Exception handling
                    1. Error handling in libraries
                    2. Passing error handlers
                    3. Class and method error handlers
                    4. Exceptions: catch, throw, and try
                VII. C++ evolution
                    A. The ANSI/ISO C++ standard
                      1. Namespaces
                      2. Runtime type identification
                      3. Type bool
                      4. Dynamic casting
                    B. Combining C and C++
                      1. Linking C and C++ object files
                      2. Converting structs and global functions to classes
                      3. Eliminating case statements
                Go to Description    Go to top of Competencies    Go to top of Outline