Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 2. C++ Class A class name Data members Member functions Levels of program access –Public: section of a class can be accessed by anyone –Private:

Similar presentations


Presentation on theme: "Chapter 2. C++ Class A class name Data members Member functions Levels of program access –Public: section of a class can be accessed by anyone –Private:"— Presentation transcript:

1 Chapter 2

2 C++ Class A class name Data members Member functions Levels of program access –Public: section of a class can be accessed by anyone –Private: section of a class can only be accessed by member functions and friends of that classfriends –Protected: section of a class can only be accessed by member functions and friends of that class, and by member functions and friends of derived classesfriends

3 Definition of the C++ class Rectangle

4 Program 2.2 Implementation of operations on Rectangle // In the source file Rectangle.C #include “Rectangle.h” // The prefix “Rectangle::” identifies GetHeight() and GetWidth() as member functions belong to class Rectangle. It is required because the member functions are implemented outside their class definition int Rectangle::GetHeight() {return h;} int Rectangle::GetWidth() {return w;}

5 Constructor and Destructor Constructor: is a member function which initializes data members of an object. –Adv: all class objects are well-defined as soon as they are created. –Must have the same name of the class –Must not specify a return type or a return value Destructor: is a member fucntion which deletes data members immediately before the object disappears. –Must be named identical to the name of the class prefixed with a tilde ~. –It is invoked automatically when a class object goes out of scope or when a class object is deleted.

6 Constructors for Rectangle Rectangle r(1, 3, 6, 6); Rectangle *s = new Rectangle(0, 0, 3, 4); Rectangle t;

7 Operator Overloading C++ can distinguish the operator == when comparing two floating point numbers and two integers. But what if you want to compare two Rectangles?

8 Array Is it necessary to define an array as an ADT? –C++ array requires the index set to be a set of consecutive integers starting at 0 –C++ does not check an array index to ensure that it belongs to the range for which the array is defined.

9 ADT 2.1 GeneralArray

10 ADT 2.2 Polynomial

11 Polynomial Representations Representation 1 private: int degree;// degree ≤ MaxDegree float coef [MaxDegree + 1]; Representation 2 private: int degree; float *coef; Polynomial::Polynomial(int d) { degree = d; coef = new float [degree+1]; }

12 Polynomial Representation 3 class Polynomial; // forward delcaration class term { friend Polynomial; private: float coef;// coefficient int exp;// exponent }; private: static term termArray[MaxTerms]; static int free; int Start, Finish; term Polynomial:: termArray[MaxTerms]; Int Polynomial::free = 0;// location of next free location in temArray

13 Representation 3 for two Polynomials Represent the following two polynomials: A(x) = 2x 1000 + 1 B(x) = x 4 + 10x 3 + 3x 2 + 1

14 Polynomial Addition O(m+n)

15 Adding a new Term

16 Disadvantages of Representing Polynomials by Arrays What should we do when free is going to exceed MaxTerms ? –Either quit or reused the space of unused polynomials. But costly. If use a single array of terms for each polynomial, it may alleviate the above issue but it penalizes the performance of the program due to the need of knowing the size of a polynomial beforehand.

17 Sparse Matrices

18 ADT 2.3 SparseMatrix

19 Sparse Matrix Representation Use triple Store triples row by row For all triples within a row, their column indices are in ascending order. Must know the number of rows and columns and the number of nonzero elements

20 Sparse Matrix Representation (Cont.) class SparseMatrix; // forward declaration class MatrixTerm { friend class SparseMatrix private: int row, col, value; }; In class SparseMatrix: private: int Rows, Cols, Terms; MatrixTerm smArray[MaxTerms];

21 Transposing A Matrix Intuitive way: for (each row i) take element (i, j, value) and store it in (j, i, value) of the transpose More efficient way: for (all elements in column j) place element (i, j, value) in position (j, i, value)

22 Transposing a Matrix O(terms*columns)

23 Fast Matrix Transpose The O(terms*columns) time => O(rows*columns 2 ) when terms is the order of rows*columns A better transpose function –It first computes how many terms in each columns of matrix a before transposing to matrix b. Then it determines where is the starting point of each row for matrix b. Finally it moves each term from a to b.

24 O(terms) O(row * column) O(columns) O(terms) O(columns-1)

25 Matrix Multiplication Definition: Given A and B, where A is mxn and B is nxp, the product matrix Result has dimension mxp. Its [i][j] element is for 0 ≤ i < m and 0 ≤ j < p.

26

27 Matrix Multiplication

28

29

30

31 Representation of Arrays Multidimensional arrays are usually implemented by one dimensional array via either row major order or column major order. Example: One dimensional array

32 Two Dimensional Array Row Major Order XXXX XXXX XXXX Col 0Col 1Col 2Col u 2 - 1 Row 0 Row 1 Row u 1 - 1 u 2 elements u 2 elements Row 0Row 1 Row u 1 - 1 Row i i * u 2 element

33 Generalizing Array Representation The address indexing of Array A[i 1 ][i 2 ],…,[i n ] is α + i 1 u 2 u 3 … u n + i 2 u 3 u 4 … u n + i 3 u 4 u 5 … u n : + i n-1 u n + i n = α +

34 String Usually string is represented as a character array. General string operations include comparison, string concatenation, copy, insertion, string matching, printing, etc. HelloWorld\0

35

36

37 String Matching The Knuth- Morris-Pratt Algorithm Definition: If p = p 0 p 1 …p n-1 is a pattern, then its failure function, f, is defined as If a partial match is found such that s i-j … s i-1 = p 0 p 1 …p j-1 and s i ≠ p j then matching may be resumed by comparing s i and p f(j–1)+1 if j ≠ 0. If j = 0, then we may continue by comparing s i+1 and p 0.

38 Fast Matching Example Suppose exists a string s and a pattern pat = ‘abcabcacab’, let’s try to match pattern pat in string s. j 0 1 2 3 4 5 6 7 8 9 pat a b c a b c a c a b f -1 -1 -1 0 1 2 3 -1 0 1 s = ‘- a b c a ? ?... ?’ pat = ‘a b c a b c a c a b’ ‘a b c a b c a c a b’ j = 4, p f(j-1)+1 = p 1 New start matching point

39

40


Download ppt "Chapter 2. C++ Class A class name Data members Member functions Levels of program access –Public: section of a class can be accessed by anyone –Private:"

Similar presentations


Ads by Google