(original) (raw)
YALE UNIVERSITY
DEPARTMENT OF COMPUTER SCIENCE
| | CPSC 427a: Object-Oriented Programming | Handout #6 | | | ---------------------------------------- | ---------- | ---------------- | | Professor M. J. Fischer | | October 12, 2010 | | | | | | | | | |
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:
- All of Chapters 1–8 except for section 8.4.
- All of Chapters 10 and 12.
- Chapter 14, section 14.1.4 only.
- Chapter 16, sections 16.1 and 16.2 only.
In addition, 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.
1 About This Course [lecture 01]
∙ Where to find information
∙ Course mechanics
∙ Topics to be Covered
∙ Course goals - practical
∙ Course goals - conceptual
2 Kinds of Programming [lecture 01]
∙ Two views of programming
∙ Problem solving
∙ Software Construction
∙ Programming in the large
3 C++ Programming Standards [lecture 01]
∙ Three commandments for this course
∙ Can is not the same as should!
4 C++ Overview [lecture 02]
∙ General properties of C++
4.1 Comparison of C and C++
∙ C++ Extends C
∙ Some Extensions in C++
∙ Tools
5 Example [lecture 02]
5.1 Insertion sort
∙ Generic Insertion Sort
5.2 C version
∙ C version
∙ C++ version
6 Header file [lecture 03]
∙ dataPack.hpp
∙ class DataPack
∙ Class elements
∙ Inline functions
∙ Visibility
∙ Constructor
∙ Constructor
∙ Destructor
∙ Destructor
7 Implementation File [lecture 03]
∙ dataPack.cpp
∙ File I/O
8 Main Program [lecture 03]
∙ main.cpp
9 Building Your Code [lecture 03]
∙ Manual compiling and linking
∙ Makefile
∙ Integrated Development Environment (e.g., Eclipse)
∙ Integrated Development Environment (e.g., Eclipse)
∙ Integrated Development Environment (e.g., Eclipse)
10 Remarks on Laboratory Work [lecture 04]
∙ 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
11 Review and Readings [lecture 04]
∙ A brief course review to date
∙ How to use the textbook
12 More on C++ I/O [lecture 04]
∙ Opening and closing streams
∙ Reading data
∙ Writing data
∙ Manipulators
∙ End of file and error handling
13 IO Demos [lecture 05]
∙ Handling data errors and end of file
∙ How to write a test program
14 Introduction to Classes [lecture 05]
∙ Classes, visibility, functions, inline
∙ Stack example
15 Functions and Methods [lecture 05]
15.1 Parameters
∙ Call by value
∙ Call by pointer
∙ Call by reference
∙ I/O uses reference parameters
15.2 Choosing Parameter Types
∙ 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
16 Functions and Methods [lecture 06]
16.1 Choosing Parameter Types
∙ 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
16.2 The Implicit Argument
∙ The implicit argument
∙ this
17 Simple Variables [lecture 06]
∙ L-values and R-values
∙ Simple variable declaration
∙ Simple assignment
∙ Automatic dereferencing
18 Pointers [lecture 06]
∙ Pointer values
∙ Pointer creation
∙ Pointer variables
∙ Pointer assignment
∙ Following a pointer
∙ Pointer example
∙ Pointer declaration syntax
19 References [lecture 06]
∙ Reference types
∙ Reference declarators
∙ Use of named references
∙ Reference parameters
∙ Reference return values
∙ Custom subscripting
∙ Constant references
∙ Comparison of reference and pointer
20 Remarks on Problem Sets [lecture 07]
20.1 Problem Set 1
20.2 Problem Set 2
∙ Pseudorandom number generators
∙ Random numbers in C++
∙ rand() and srand()
∙ Generating uniform distribution over a discrete interval
∙ Generating random doubles
∙ Alternate method for generating uniform distribution over a discrete interval
∙ Generating exponential distribution
21 BarGraph Demo [lecture 07]
∙ Bar Graph Demo
21.1 graph.hpp
22 BarGraph Demo [lecture 08]
∙ Bar Graph Demo
22.1 graph.hpp
∙ Notes: graph.hpp
22.2 graph.cpp
∙ Notes: graph.cpp
22.3 row.hpp
∙ Notes: row.hpp
22.4 row.cpp
∙ Notes: row.cpp
22.5 rowNest.hpp
∙ Nested classes: rowNest.hpp
23 Storage Managemet [lecture 08]
∙ Storage classes
∙ Assignment and copying
∙ Static data members
∙ Static function members
∙ Five common kinds of failures
24 Bells and Whistles [lecture 08]
∙ Optional parameters
∙ const
∙ const implicit argument
∙ Operator extensions
25 Remarks on Problem Set 2 [lecture 09]
∙ Coding conventions for this course
∙ Coding conventions (cont.)
∙ Error checking and error handling
∙ Design choices
∙ PS2 issues
26 Classes [lecture 09]
∙ What is a class?
∙ Class relationships
27 Derivation [lecture 09]
∙ What is derivation?
∙ Instances
∙ Some uses of derivation
28 Construction, Initialization, and Destruction [lecture 09]
∙ Structure of an object
∙ 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
29 Name Visibility [lecture 10]
∙ Private derivation (default)
∙ Private derivation example
∙ Public derivation
∙ Public derivation example
∙ The protected keyword
∙ Protected derivation
∙ Privacy summary
30 Polymorphic Derivation [lecture 10]
∙ 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
31 PS2 Craps Game Revisited [lecture 10]
∙ Extending existing code
∙ Summary of extensions
∙ 1. Polymorphic dice
∙ 2. Command line interface
∙ 3. Command line parser
∙ 4. Naming convention with underscores
∙ 4. Naming convention without underscores
∙ 5. Print functions
∙ Other changes
32 Name Visibility Revisited [lecture 11]
∙ 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
33 Interacting Classes and UML [lecture 11]
∙ 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
∙ Association Relationship