Download presentation
Presentation is loading. Please wait.
Published byNancy Jackson Modified over 6 years ago
1
Andy Wang Object Oriented Programming in C++ COP 3330
Final Review Andy Wang Object Oriented Programming in C++ COP 3330
2
Bitwise Operators Built-in operators that allow accessing and manipulating of individual bits Necessary because smallest variables that can be created are at least 1 byte Accessing individual bits can be useful for making more efficient algorithms, or using less storage space
3
The Bitwise Operators Bitwise &. Bitwise | Bitwise ^ (exclusive OR)
Performs the & operation on individual bits (1 is true, 0 is false) Bitwise | Performs the | operation on individual bits Bitwise ^ (exclusive OR) XOR is true if there is exactly one true and one false Complement ~ Reverses the bits of a variable (1 -> 0, 0 -> 1)
4
The Bitwise Operators << (left shift) >> (right shift)
Shifts the bits of a variable to the left >> (right shift) Shifts the bits of a variable to the right
5
Accessing Individual Bits
Understand the concept of a bit mask and how to create one Understand how to do these basic operations on a single bit from a variable, without changing the other bits stored in the variable Set a bit to 1 Unset a bit (set to 0) Flip a bit to its opposite Query a bit (find out what it is—1 or 0) You should be able to identify or derive how the above operations are done on a single bit, with a combination of an appropriate operation and a bit mask
6
Templates Function templates
Functions that can work with multiple parameter types Compiler builds a separate function for each needed type An easy way to create overloaded functions without writing individual version Operations performed inside the function need to be valid for types used in the calls
7
Class Templates Extension of function template idea
Allows creation of a generic class, where the type of item stored can vary Again, operations used inside the class need to be valid for any type used to instantiate the class Each member function written as a function template
8
Template Declarations and Object Instantiations
Use keyword template, along with template parameters in angle brackets <> template<class T> template<typename T> Examples stack<double> myStack; stack<int> stack2(10:
9
Data Structures Basic data structure types
Stack—first in last out structure Queue—first in first out structure Vector—storage of a list using array-based storage Linked-list—storage of a list in a linear format using self- referential objects A self-referential object contains data, along with one+ pointers, which point to other objects of the same type Each node of a linked list stores a piece of data, and points to the next node in the list Tree—non-linear storage of a set of data using self- referential objects Each node in a tree has 2+ pointers to other nodes Binary tree is good for soring and searching
10
Data Structures Implementing basic data structures
Encapsulation of data structure inside an object means details can be handled internally Outside access through simpler interface Often involves pointers and dynamic memory allocation Templates are commonly used, to make data structures more general Some structures can be implemented with others Through inheritance or composition A stack can be implemented with a linked list of a vector
11
Exception Handling A method of error-handling
Good for processing errors that must be handled in places other than where they occurred Good for handling errors from libraries or other components Should not be used for general program control (confusing to the reader
12
Syntax try { } Label used for a block that encloses an area where exception might be thrown throw Used to throw an exception Can throw an item like a variable or an object throw DivideByZeroException() Also used to build a throw list void function(int x) thorw (ThisException, ThatException)
13
Syntax catch { } The catch blocks immediately follow the try blocks
Can have more than one Each catch can take one parameter, indicating the type of exception Special catch block catch(…) { } Will catch any thrown exception Useful for a default case—a “catch all”
14
Recursion Recursive function Recursion vs. iteration
A function that calls itself Recursion vs. iteration Some example algorithms Factorial, Fibonnaci, GCD, sorting, binary search
15
Miscellaneous Conditional compilation #define SYMBOL #ifdef SYMBOL
Brings the symbol into existence #ifdef SYMBOL Do something #ifndef SYMBOL #endif
16
Code Writing Test Format
Specifications Main program Sample execution output Your job Write the declarations and definition files
17
Example Main Program #include <iostream> #include “flex.h” using namespace std; int main() { Flex a, b(“Merry”), c(“Christmas”); cout << a << ‘,’ << b << ‘,’ << c << endl; b.cat(a); cout << b << endl; b.cat(c); c.cat(c); c.cat(c); cout << c << endl; return 0; }
18
Example Output * *,*Merry*,*Christmas* *Merry * *Merry Christmas* *ChristmasChristmasChristmasChristmas*
19
Specifications Objects of class Flex allow a variable length string to be maintained When the constructor for Flex is provided a c-string as a parameter, the Flex object created will have that string value. If no parameter is provided, a default string consisting of exactly one space should be created. Flex should have an overload of the output operator that will display the string surrounded by stars Flex also has a void function, cat, having one reference parameter of type Flex. The function cat should append the string in that parameter to the end of the Flex object invoking cat
20
Specifications There is no established bound on the size of a Flex object, so dynamic storage allocation should be used All Flex member data is private Show the content in flex.h and flex.cpp It is okay to use the cstring library functions
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.