1 / 40

Chapter 2

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: section of a class can only be accessed by member functions and friends of that class

Download Presentation

Chapter 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 class • 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 classes

  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 = newfloat [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) = 2x1000 + 1 B(x) = x4 + 10x3 + 3x2 + 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 <row, column, value> • 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.) classSparseMatrix; // forward declaration classMatrixTerm { friendclassSparseMatrix private: int row, col, value; }; In classSparseMatrix: private: int Rows, Cols, Terms; MatrixTermsmArray[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*columns2) 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(columns) O(terms) O(columns-1) O(terms) O(row * column)

  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. Matrix Multiplication

  27. 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

  28. Two Dimensional Array Row Major Order Col 0 Col 1 Col 2 Col u2 - 1 Row 0 X X X X X X X X Row 1 Row u1 - 1 X X X X u2 elements u2 elements Row u1 - 1 Row i Row 0 Row 1 i * u2 element

  29. Generalizing Array Representation The address indexing of Array A[i1][i2],…,[in] is α+ i1 u2 u3 … un + i2 u3 u4 … un + i3 u4 u5 … un : : + in-1 un + in =α+

  30. String • Usually string is represented as a character array. • General string operations include comparison, string concatenation, copy, insertion, string matching, printing, etc. H e l l o W o r l d \0

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

  32. 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, pf(j-1)+1 = p1 New start matching point

More Related