(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:

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