YALE UNIVERSITY
DEPARTMENT OF COMPUTER SCIENCE
CPSC 427a: Object-Oriented Programming | Handout #7 | |
Professor M. J. Fischer | October 8, 2011 | |
Study Guide to Exam 1
For the exam, you are responsible for the contents of lectures 1–11, the class demos, the concepts used in problem sets 1–3, and the corresponding sections of the textbook. In greater detail, you are responsible for the following chapters and sections of the textbook:
In addition, the remainder of Chapter 15 presents some detailed code examples that use polymorphism and virtual functions. While we haven’t gone through the examples in class, you should read this chapter and make sure you understand how these concepts work in the examples presented there.
Below is an index to the lecture notes. It lists all of the sections, subsections, and slide titles from lectures 1–11.
∙ Where to find information
∙ Course mechanics
∙ Topics to be Covered
∙ Course goals - practical
∙ Course goals - conceptual
∙ Two views of programming
∙ Problem solving
∙ Software Construction
∙ Programming in the large
∙ Three commandments for this course
∙ Can is not the same as should!
∙ Why did C need a ++?
∙ C++ was Designed for Modeling
∙ General properties of C++
∙ C++ Extends C
∙ Some Extensions in C++
∙ Tools
∙ Recommended IDE’s
∙ Generic Insertion Sort
∙ C version
ee code demo02
∙ C++ version
ee code demo02
∙ C++ version
ee code demo03
∙ dataPack.hpp
∙ class DataPack
∙ Class elements
∙ Inline functions
∙ Visibility
∙ Constructor
∙ Constructor
∙ Destructor
∙ Destructor
∙ dataPack.cpp
∙ File I/O
∙ main.cpp
∙ Manual compiling and linking
∙ Makefile
∙ Integrated Development Environment (e.g., Eclipse)
∙ Integrated Development Environment (e.g., Eclipse)
∙ Integrated Development Environment (e.g., Eclipse)
∙ Toolset to use for course work
∙ Working remotely
∙ 1. Replicate the Zoo environment on your own machine
∙ 2. Remote login to the Zoo
∙ 3. Set up a virtual Zoo desktop on your machine
∙ Homework submission
∙ A brief course review to date
∙ How to use the textbook
∙ Operator extensions
∙ Adding new methods
∙ Two kinds of functions
∙ An ambiguity with operator extensions
∙ Operator call example: Top-level function
∙ Operator call example: Member function
∙ Back to PS1
∙ Opening and closing streams
∙ Reading data
∙ Writing data
∙ Manipulators
∙ End of file and error handling
∙ Call by value
∙ Call by pointer
∙ Call by reference
∙ I/O uses reference parameters
∙ How should one choose the parameter type?
∙ Sending data to a function: call by value
∙ Sending data to a function: call by reference or pointer
∙ Receiving data from a function
∙ The implicit argument
∙ this
∙ L-values and R-values
∙ Simple variable declaration
∙ Simple assignment
∙ Automatic dereferencing
∙ Pointer values
∙ Pointer creation
∙ Pointer variables
∙ Pointer assignment
∙ Following a pointer
∙ Pointer example
∙ Pointer declaration syntax
∙ Reference types
∙ Reference declarators
∙ Use of named references
∙ Reference parameters
∙ Reference return values
∙ Custom subscripting
∙ Constant references
∙ Comparison of reference and pointer
∙ Handling data errors and end of file
∙ How to write a test program
∙ Classes, visibility, functions, inline
∙ Bar Graph Demo
∙ Bar graph sample input and output
∙ Bar graph data structure
∙ UML Diagram
∙ Notes: graph.hpp
∙ Notes: graph.cpp
∙ Notes: row.hpp
∙ Notes: row.cpp
∙ Nested classes: rowNest.hpp
∙ Variables and storage
∙ Example of a variable
∙ Properties of variables
∙ Storage classes
∙ Assignment and copying
∙ Static data members
∙ Static function members
∙ Five common kinds of failures
∙ Optional parameters
∙ const
∙ const implicit argument
∙ Operator extensions
∙ What is a class?
∙ Class relationships
∙ What is derivation?
∙ Instances
∙ Some uses of derivation
∙ Example: Parallelogram
∙ Example: Rectangle
∙ Example: Square
∙ Notes on Square
∙ Structure of an object
∙ Example of object of a derived class
∙ Referencing a composed object
∙ Referencing a base object
∙ Initializing an object
∙ Construction rules
∙ Destruction rules
∙ Constructor ctors
∙ Initialization ctors
∙ Initialization not same as assignment
∙ Copy constructors
∙ Polymorphism and Type Hierarchies
∙ Polymorphic pointers
∙ Virtual functions
∙ Unions and type tags
∙ Virtual destructors
∙ Uses of polymorphism
∙ Multiple representations
∙ Heterogeneous containers
∙ Run-time variability
∙ Pure virtual functions
∙ Abstract classes
∙ Private derivation (default)
∙ Private derivation example
∙ Public derivation
∙ Public derivation example
∙ The protected keyword
∙ Protected derivation
∙ Privacy summary
∙ Surprising example 1
∙ Surprising example 2: contrast the following
∙ Surprising example 3
∙ Names, Members, and Contexts
∙ Declaration and reference contexts
∙ Declaration context example
∙ Reference context example
∙ Inside and outside class references
∙ Examples
∙ Inherited names
∙ Inheritance example
∙ Inaccessible base class
∙ What is a Class: Syntax
∙ Class Relationships
∙ Class Relationship Between Two Classes
∙ Class B appears in Definition of Class A
∙ B as Data Members in A
∙ B as Data Members in A
∙ Creation and Deletion
∙ Example: BarGraph Class Interaction