Theories of Learning Introduction – Chapter 1 August 24-26, 2005 Classes #2-3.
Chapter 13: Introduction to Classes
-
Upload
jayme-bowen -
Category
Documents
-
view
21 -
download
0
description
Transcript of Chapter 13: Introduction to Classes
![Page 1: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/1.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Chapter 13:
Introduction to Classes
![Page 2: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/2.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
13.1
Procedural and Object-Oriented Programming
![Page 3: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/3.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Procedural and Object-Oriented Programming• Procedural programming focuses on the
process/actions that occur in a program
• Object-Oriented programming is based on the data and the functions that operate on it. Objects represent the data and its functions.
![Page 4: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/4.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Limitations of Procedural Programming• If the data structures change, many
functions must also be changed
• Programs that are based on complex function hierarchies are:– difficult to understand and maintain– difficult to modify and extend
![Page 5: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/5.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Classes and Objects
• A Class is like a blueprint and objects are like houses built from the blueprint
![Page 6: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/6.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Object-Oriented ProgrammingTerminology• attributes: members of a class
• methods: member functions of a class
![Page 7: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/7.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
13.2
Introduction to Classes
![Page 8: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/8.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Introduction to Classes
• Objects are created from a class• Format:
class ClassName
{
declaration;
declaration;
};
![Page 9: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/9.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Class Example
![Page 10: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/10.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Access Specifiers
• Used to control access to members of the class
• public: can be accessed by functions outside of the class
• private: can only be called by or accessed by functions that are members of the class
![Page 11: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/11.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Class Example
Private Members
Public Members
If not specified, the default access specifier is private
![Page 12: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/12.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Using const With Member Functions
• const appearing after the parentheses in a member function declaration specifies that the function will not change any data in the calling object.
![Page 13: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/13.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Defining a Member Function
• When defining a member function:– Put prototype in class declaration– Define function using class name and scope
resolution operator (::)
int Rectangle::setWidth(double w){
width = w;}
![Page 14: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/14.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Accessors and Mutators
• Mutator: a member function that stores a value in a private member variable, or changes its value in some way
• Accessor: function that retrieves a value from a private member variable. Accessors do not change an object's data, so they should be marked const.
![Page 15: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/15.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
13.3
Defining an Instance of a Class
![Page 16: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/16.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Defining an Instance of a Class
• An object is an instance of a class• Defined like structure variables:
Rectangle r;
• Access members using dot operator:r.setWidth(5.2);cout << r.getWidth();
• Compiler error if attempt to access private member using dot operator
![Page 17: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/17.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
![Page 18: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/18.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Program 13-1 (Continued)
![Page 19: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/19.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Program 13-1 (Continued)
![Page 20: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/20.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Program 13-1 (Continued)
![Page 21: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/21.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
13.6
Inline Member Functions
![Page 22: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/22.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Inline Member Functions
• Member functions can be defined– inline: in class declaration– after the class declaration
• Inline appropriate for short function bodies:int getWidth() const { return width; }
![Page 23: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/23.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Rectangle Class with Inline Member Functions 1 // Specification file for the Rectangle class 2 // This version uses some inline member functions. 3 4 5 6 class Rectangle 7 { 8 private: 9 double width;10 double length;11 public:12 void setWidth(double);13 void setLength(double);14 15 double getWidth() const16 { return width; }17 18 double getLength() const19 { return length; }20 21 double getArea() const22 { return width * length; }23 };24
![Page 24: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/24.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Tradeoffs – Inline vs. Regular Member Functions• Regular functions – when called, compiler
stores return address of call, allocates memory for local variables, etc.
• Code for an inline function is copied into program in place of call – larger executable program, but no function call overhead, hence faster execution
![Page 25: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/25.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
13.7
Constructors
![Page 26: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/26.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Constructors
• Member function that is automatically called when an object is created
• Purpose is to construct an object
• Constructor function name is class name
• Has no return type
![Page 27: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/27.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Constructors Example#include <iostream>
using namespace std;
class CRectangle {
int width, height;
public:
CRectangle (int,int);
int area () {return (width*height);}
};
CRectangle::CRectangle (int a, int b) {
width = a;
height = b;
}
int main () {
CRectangle rect (3,4);
CRectangle rectb (5,6);
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
}
![Page 28: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/28.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Default Constructors
• A default constructor is a constructor that takes no arguments.
• If you write a class with no constructor at all, C++ will write a default constructor for you, one that does nothing.
• A simple instantiation of a class (with no arguments) calls the default constructor:
Rectangle r;
![Page 29: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/29.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
13.9
Destructors
![Page 30: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/30.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Destructors
• Member function automatically called when an object is destroyed
• Destructor name is ~classname, e.g., ~Rectangle(){}
• Has no return type; takes no arguments
![Page 31: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/31.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Destructor Example#include <iostream>
using namespace std;
class Rectangle {
public:
Rectangle()
{
cout<<"Constructor invoked"<<endl;
}
~Rectangle()
{
cout<<"Destructor invoked"<<endl;
}
};
int main () {
Rectangle r;
cout<<"Main Function"<<endl;
return 0;
}
![Page 32: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/32.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Inheritance
![Page 33: Chapter 13: Introduction to Classes](https://reader031.fdocuments.net/reader031/viewer/2022033107/5681329d550346895d993d69/html5/thumbnails/33.jpg)
Copyright © 2012 Pearson Education, Inc.Copyright © 2012 Pearson Education, Inc.
Inheritance
• Allows us to define a class in terms of another class
• Provides an opportunity to reuse the code, no need to write from scratch
• The existing class is the base class and the new class is the derived class
• SyntaxClass derived_class : access_specifier base_class
• Supports multiple inheritance• Example