Study Guide to Exam 2

Similar documents
CPSC 427: Object-Oriented Programming

Object-Oriented Principles and Practice / C++

Absolute C++ Walter Savitch

C++ for System Developers with Design Pattern

Cpt S 122 Data Structures. Course Review Midterm Exam # 2

Advanced C++ Programming Workshop (With C++11, C++14, C++17) & Design Patterns

Object-Oriented Principles and Practice / C++

VALLIAMMAI ENGINEERING COLLEGE

Object Oriented Programming with c++ Question Bank

CPSC 427: Object-Oriented Programming

CSE 70 Final Exam Fall 2009

CPSC 427: Object-Oriented Programming

KLiC C++ Programming. (KLiC Certificate in C++ Programming)

CPSC 427a: Object-Oriented Programming

RAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING QUESTION BANK UNIT I 2 MARKS

CPSC 427a: Object-Oriented Programming

Preface to the Second Edition Preface to the First Edition Brief Contents Introduction to C++ p. 1 A Review of Structures p.

Problem Solving with C++

CHAPTER 1 Introduction to Computers and Programming CHAPTER 2 Introduction to C++ ( Hexadecimal 0xF4 and Octal literals 031) cout Object

B.C.A 2017 OBJECT ORIENTED PROGRAMMING USING C++ BCA303T MODULE SPECIFICATION SHEET

Object oriented programming. Encapsulation. Polymorphism. Inheritance OOP

C++ (Non for C Programmer) (BT307) 40 Hours

Learning Objectives. C++ For Artists 2003 Rick Miller All Rights Reserved xli

Foundations of object orientation

CPSC 427: Object-Oriented Programming

Cpt S 122 Data Structures. Course Review FINAL. Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University

CPSC 427: Object-Oriented Programming

I BCS-031 BACHELOR OF COMPUTER APPLICATIONS (BCA) (Revised) Term-End Examination. June, 2015 BCS-031 : PROGRAMMING IN C ++

CONTENTS. PART 1 Structured Programming 1. 1 Getting started 3. 2 Basic programming elements 17

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

The Foundation of C++: The C Subset An Overview of C p. 3 The Origins and History of C p. 4 C Is a Middle-Level Language p. 5 C Is a Structured

Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS

Object Oriented Design

CS427a: Object-Oriented Programming Design Patterns for Flexible and Reusable design

Get Unique study materials from

Short Notes of CS201

CPSC 427: Object-Oriented Programming

CPSC 427: Object-Oriented Programming

CS201 - Introduction to Programming Glossary By

CS 6456 OBJCET ORIENTED PROGRAMMING IV SEMESTER/EEE

Objects Managing a Resource

Welcome to Teach Yourself Acknowledgments Fundamental C++ Programming p. 2 An Introduction to C++ p. 4 A Brief History of C++ p.

MaanavaN.Com CS1203 OBJECT ORIENTED PROGRAMMING DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

COMP322 - Introduction to C++

CGS 2405 Advanced Programming with C++ Course Justification

C# Programming in the.net Framework

Intro to OOP Visibility/protection levels and constructors Friend, convert constructor, destructor Operator overloading a<=b a.

CPSC 427: Object-Oriented Programming

Syllabus of C++ Software for Hands-on Learning: This course offers the following modules: Module 1: Getting Started with C++ Programming

Introduction to C++ Introduction to C++ Dr Alex Martin 2013 Slide 1

Compulsory course in Computer Science

Inheritance, Polymorphism and the Object Memory Model

Object-Oriented Programming

Tokens, Expressions and Control Structures

Course Hours

Final Exam. Final Exam Review. Ch 1: Introduction: Object-oriented analysis, design, implementation. Exam Format

CompuScholar, Inc. Alignment to Nevada "Computer Science" Course Standards

M.C.A DEGREE EXAMINATION,NOVEMBER/DECEMBER 2010 Second Semester MC 9222-OBJECT ORIENTED PROGRAMMING (Regulation 2009)

Computer Science 306 Study Guide

10CS36: Object Oriented Programming with C++

CPSC 427: Object-Oriented Programming


CS 162, Lecture 25: Exam II Review. 30 May 2018

Chapter 11 Object and Object- Relational Databases

CPSC 427: Object-Oriented Programming

Object Oriented Programming

Object-Oriented Programming

Contents. 1 Introduction to Computers, the Internet and the World Wide Web 1. 2 Introduction to C Programming 26

QUIZ. How could we disable the automatic creation of copyconstructors

CHAPTER 1: A CRASH COURSE IN C++ 3 CHAPTER 2: DESIGNING PROFESSIONAL C++ PROGRAMS 49

Lecture Notes on Programming Languages

Fast Introduction to Object Oriented Programming and C++

The C# Programming Language. Overview

Chapter 5 Object-Oriented Programming

Object-Oriented Principles and Practice / C++

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++

QUIZ. How could we disable the automatic creation of copyconstructors

SAURASHTRA UNIVERSITY

What is Polymorphism? Quotes from Deitel & Deitel s. Why polymorphism? How? How? Polymorphism Part 1

Midterm Exam #2 Review. CS 2308 :: Spring 2016 Molly O'Neil

6 Architecture of C++ programs

! Mon, May 5, 2:00PM to 4:30PM. ! Closed book, closed notes, clean desk. ! Comprehensive (covers entire course) ! 30% of your final grade

Copyright 2016 Ramez Elmasri and Shamkant B. Navathe

Chapter 10 Introduction to Classes

CPSC 427: Object-Oriented Programming

POLYMORPHISM 2 PART Abstract Classes Static and Dynamic Casting Common Programming Errors

Objects First with Java

CHOICE BASED CREDIT SYSTEM (With effect from )

CS250 Final Review Questions

Polymorphism Part 1 1

Introduction to Programming System Design CSCI 455x (4 Units)

POLYMORPHISM 2 PART. Shared Interface. Discussions. Abstract Base Classes. Abstract Base Classes and Pure Virtual Methods EXAMPLE

Borland 105, 278, 361, 1135 Bounded array Branch instruction 7 break statement 170 BTree 873 Building a project 117 Built in data types 126

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Data Structures in C++ Using the Standard Template Library

Curriculum Map Grade(s): Subject: AP Computer Science

COEN244: Class & function templates

Fast Track to Core Java 8 Programming for OO Developers (TT2101-J8) Day(s): 3. Course Code: GK1965. Overview

Microsoft. Microsoft Visual C# Step by Step. John Sharp

ощ 'ршорвшэш! цвн-эориэу ощ 'sajbpossv # PIPG DUJ 'ssjmoossv ^ PIPG pipa w н OX ЛЮН VAV

Transcription:

YALE UNIVERSITY DEPARTMENT OF COMPUTER SCIENCE CPSC 427a: Object-Oriented Programming Handout #10 Professor M. J. Fischer November 27, 2011 Study Guide to Exam 2 This exam covers the entire course, but emphasis will be on topics covered since exam 1 (see Study Guide to Exam 1). You are reponsible for the contents of lectures 1 21, 22a, 22b, and as much of lectures 23a and 23b as we are able to cover in class on November 29. You are also responsible for the corresponding class demos, concepts used in the problem sets, and the entire textbook (Chapters 1 18) except for the following chapeters and sections: Omit section 8.4 (event traces) Omit sections 9.3 (ragged arrays), 9.5 (StringArray), 9.6 (hashing), and 9.7 (dictionary example) Omit chapter 11 (modules and makefiles) Omit section 16.6 (virtual inheritance) Below is an index to the lecture notes. It lists all of the sections, subsections, and slide titles from all of the lectures. 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] 4.1 C++ Goals Why did C need a ++? C++ was Designed for Modeling General properties of C++

2 Study Guide to Exam 2 4.2 Comparison of C and C++ C++ Extends C Some Extensions in C++ 4.3 Tools Tools Recommended IDE s 5 Example [lecture 02] 5.1 Insertion sort Generic Insertion Sort 5.2 C version C version ee code demo02 5.3 C++ version C++ version ee code demo02 6 Example [lecture 03] C++ version ee code demo03 6.1 Header file datapack.hpp class DataPack Class elements Inline functions Visibility Constructor Constructor Destructor Destructor 6.2 Implementation File datapack.cpp File I/O

Handout #10 November 27, 2011 3 6.3 Main Program main.cpp 7 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) 8 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 9 Review and Readings [lecture 04] A brief course review to date How to use the textbook 10 A Survival Guide for PS1 [lecture 04] 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 11 More on C++ I/O [lecture 04] Opening and closing streams Reading data Writing data Manipulators End of file and error handling

4 Study Guide to Exam 2 12 Functions and Methods [lecture 05] 12.1 Parameters Call by value Call by pointer Call by reference I/O uses reference parameters 12.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 Receiving data from a function 12.3 The Implicit Argument The implicit argument this 13 Simple Variables [lecture 05] L-values and R-values Simple variable declaration Simple assignment Automatic dereferencing 14 Pointers [lecture 05] Pointer values Pointer creation Pointer variables Pointer assignment Following a pointer Pointer example Pointer declaration syntax 15 References [lecture 05] Reference types Reference declarators Use of named references Reference parameters Reference return values Custom subscripting Constant references Comparison of reference and pointer

Handout #10 November 27, 2011 5 16 IO Demos [lecture 07] Handling data errors and end of file How to write a test program 17 Introduction to Classes [lecture 07] Classes, visibility, functions, inline 18 BarGraph Demo [lecture 07] Bar Graph Demo 18.1 Specification Bar graph sample input and output Bar graph data structure UML Diagram 18.2 graph.hpp Notes: graph.hpp 18.3 graph.cpp Notes: graph.cpp 18.4 row.hpp Notes: row.hpp 18.5 row.cpp Notes: row.cpp 18.6 rownest.hpp Nested classes: rownest.hpp 19 Storage Managemet [lecture 08] 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

6 Study Guide to Exam 2 20 Bells and Whistles [lecture 08] Optional parameters const const implicit argument Operator extensions 21 Classes [lecture 08] What is a class? 22 Derivation [lecture 09] Class relationships What is derivation? Instances Some uses of derivation Example: Parallelogram Example: Rectangle Example: Square Notes on Square 23 Construction, Initialization, and Destruction [lecture 09] 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 24 Polymorphic Derivation [lecture 09] Polymorphism and Type Hierarchies Polymorphic pointers Virtual functions Unions and type tags Virtual destructors

Handout #10 November 27, 2011 7 25 Polymorphic Derivation (cont.) [lecture 10] Uses of polymorphism Multiple representations Heterogeneous containers Run-time variability Pure virtual functions Abstract classes 26 Name Visibility [lecture 10] Private derivation (default) Private derivation example Public derivation Public derivation example The protected keyword Protected derivation Privacy summary 27 Name Visibility Revisited [lecture 10] Surprising example 1 Surprising example 2: contrast the following Surprising example 3 28 Name Visibility Revisited [lecture 11] 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 29 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

8 Study Guide to Exam 2 30 Interacting Classes and UML (continued) [lecture 12] Association Relationship Accessing B in A s methods Law of Consistency/Encapsulation Limiting coupling between classes Law of Demeter 31 Review for Exam 1 [lecture 12] Goals of OO Programming Insertion sort example Compiling and linking Compiler errors Tool set C++ goodies Stream I/O Functions and methods Variables and data BarGraph demo More on variables Five kinds of memory errors C++ bells and whistles Derivation Polymorphic derivation 32 Privacy Revisited (again) [lecture 13] Visibility rules Explicit privacy attributes Implicit privacy attributes Implicit privacy chart Summary 33 Problem Set 2 Code Review [lecture 13] A retrospective look at PS2 Testing 34 More on Course Goals [lecture 14] Low-level details Example picky detail Efficient use of resources Efficiency measurement

Handout #10 November 27, 2011 9 35 Demo: Stopwatch [lecture 14] How to measure run time of a program High resolution clocks Measuring time in real systems Realtime measurements HirezTime class Versions of HirezTime HirezTime structure Printing a HirezTime number StopWatch class Casting a StopWatch to a HirezTime Why it works 36 Demo: Hangman Game [lecture 14] Hangman game 37 Runtime Tester [lecture 15] Modularizing timing tests Structure of class Tester Objective?? Objective?? Objective?? Objective?? Member function pointers Declaring member function pointers Using typedef with member function pointers Creating member function pointers Using member function pointers 38 Demo: Hangman Game [lecture 15] Hangman game Overall design Use cases Code structure: Model Code structure: Viewer and controller Class Game Storage management String store

10 Study Guide to Exam 2 39 Demo: Hangman Game (continued) [lecture 16] Refactored hangman game Flex arrays Flex array implementation issues String store limitation Refactoring Board class 40 Templates [lecture 16] Template overview Template functions Specialization Template classes Compilation issues Template parameters Using template classes 41 The C++ Standard Library [lecture 17] A bit of history Containers Common container operations vector<t> Iterators Iterator example Using iterator inside a class Using subscripts and size() Algorithms STL sort algorithm Reverse sort example Reverse sort example (cont.) pair<t1, T2> map<key,val> Using a map<key,val> Copying from one container to another Copying from map to vector of pairs string class 42 Casts and Conversions [lecture 18] Casts in C Different kinds of casts C++ casts Explicit cast syntax Implicit casts Ambiguity

Handout #10 November 27, 2011 11 explicit keyword 43 Operator Extensions [lecture 18] How to define operator extensions Other special cases 44 Virtue Demo [lecture 18] Virtual virtue Main virtue 45 Linear Data Structure Demo [lecture 18] Using polymorphism Interface file Class Linear Example: Stack Example: Queue Class structure C++ features #include structure 46 Exceptions [lecture 19] Exceptions Exception handling C-style solution using status returns C++ exception mechanism Throwing an exception Catching an exception What kind of object should an exception throw? Standard exception class Catching standard exceptions Deriving your own exception classes from std::exception Multiple catch blocks Rethrow A subtle fact about rethrow Example Results Throw restrictions Uncaught exceptions: Ariane 5 Uncaught exceptions: Ariane 5 (cont.) Termination

12 Study Guide to Exam 2 47 Ordered Container [lecture 20] Demo 20a-Multiple Ordered base class Container base class class Item class Linear class PQueue 48 Multiple Inheritance [lecture 20] What is multiple inheritance Object structure Diamond pattern 49 Handling Circularly Dependent Classes [lecture 20] Tightly coupled classes Example: List and Cell Circularity with #include What happens? Resolving circular dependencies 50 Template Example [lecture 20] Using templates with polymorphic derivation Container class hierarchy Item class hierarchy Ordered template class Alternative Ordered interfaces 51 Linear Container Design [lecture 21] Overview of linear container example Differences in functionality Class structure Template structure Further extensions Two problems Defining KeyType Constructing the data elements 21a-Multiple-template Storage management

Handout #10 November 27, 2011 13 52 STL and Polymorphism [lecture 21] Derivation from STL containers Replacing authority with understanding Two kinds of derivation How are they the same? What is simple derivation good for? What are the problems with simple derivation? What is polymorphic derivation good for? What are the problems of polymorphic derivation? Contrasts between simple and polymorphic derivation Containment as an alternative to simple derivation Argument for containment STL container as a base class Can I turn an STL container into a polymorphic base class? A polymorphic base class Dynamic cast 53 Design Patterns [lecture 22a] General OO principles What is a design pattern? Adaptor pattern Adaptor diagram Indirection Proxy pattern Polymorphism pattern Polymorphism diagram Controller Three kinds of controllers Bridge pattern Bridge diagram Subject-Observer or Publish-Subscribe: problem Subject-Observer or Publish-Subscribe: pattern Subject-Observer or Publish-Subscribe: diagram Singleton pattern StringStore example 54 Reusability, Flexibility, and Maintainability [lecture 22b] The Waterfall Software Process Why a Pure Waterfall Process is Usually Not Practical The Spiral Process Advantage of OO Design Aspect of Reusability Making a Class Re-usable Reducing Dependency Among Classes

14 Study Guide to Exam 2 Aspect of Flexibility Some Techniques to Achieve Flexibility Roadmap What is a Design Pattern UML/OMT Notation 55 Graphical User Interfaces [lecture 23a] User Interfaces Interfaces for C++ Overall Structure of a GUI Concurrency and Events Event Loop A GUI event structure Interface between user and system code Binding system calls to user functions Polymorphic binding Binding through callback registration Callback using function pointers: GUI side Callback using function pointer: User side Type safety Signals and slots 56 The gtkmm Framework [lecture 23a] Structure of gtkmm Compiling a gtkmm program Linking a gtkmm program Using a GUI Example: clock Main program 57 Example: Duck Game [lecture 23b] Initial Design Design Change: add fly() Problem Anticipating Changes Handling Varying Behaviors Design Programming to implementation vs interface/supertype Implementation Exercise: Add rocket-powered flying?

Handout #10 November 27, 2011 15 58 The Strategy Pattern [lecture 23b] Exercise Summary: Design Principles 59 Example: KitchenViewer Interface [lecture 23b] KitchenViewer Example Selecting Antique Style KitchenViewer Using Standard Inheritance The Abstract Factory Idea Abstract Factory Design Pattern Applied to KitchenViewer 60 Abstract Factory Design Pattern [lecture 23b] Concrete and Abstract Layers Abstract Factory Application Sequence Diagram Potential use of this Design Pattern? 61 References [lecture 23b] 62 Example: Starbuzz Coffee [lecture 23b] Problem Starbuzz UML Attempt 1 Potential Changes Design idea Design approach 1 63 Decorator design [lecture 23b] Decoration Delegation Process Decorator Class Model Sequence Diagram for Decorator Decoration Features Exercise: different sizes for beverages 64 Some Common Design Patterns [lecture 23b] Example: Weather-O-Rama Weather-O-Rama Weather-O-Rama Interface First Implementation

16 Study Guide to Exam 2 65 Observer Pattern [lecture 23b] Observer Design Pattern How does Observer apply these design principles? Discussion