1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2...
-
Upload
kristopher-sanders -
Category
Documents
-
view
219 -
download
0
Transcript of 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2...
![Page 1: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/1.jpg)
1
Chapter 13
Introduction to Classes
![Page 2: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/2.jpg)
2
Topics
12.1 Procedural and Object-Oriented Programming12.2 Introduction to Classes12.3 Defining an Instance of a Class12.4 Why Have Private Members?12.5 Software Design Considerations12.6 Using Private Member Functions12.7 Inline Member Functions12.8 Constructors
![Page 3: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/3.jpg)
3
Topics
12.9 Destructors
12.10 Constructors That Accept Arguments12.11 Input Validation Objects12.12 Overloading Constructors12.13 Only One Default Constructor and One Destructor12.14 Arrays of Objects12.17 An Object-Oriented System Development Primer
![Page 4: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/4.jpg)
4
12.1 Procedural and Object- Oriented Programming
Procedural programming:
focuses on the processes/actions that occur in a program
Object-Oriented programming:
is based on the data and the functions that operate on it.
Objects are instances of ADTs that represent the data and its functions
![Page 5: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/5.jpg)
5
Problems with Procedural Programming
global variables versus complex function hierarchies
Use of global data may allow data corruption
Programs based on complex function hierarchies are: difficult to understand and maintain difficult to modify and extend easy to break
![Page 6: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/6.jpg)
6
Object-Oriented Programming Terminology
class:
like a struct (allows bundling of related variables), but variables and functions in the class can have different properties than in a struct
object:
an instance of a class, in the same way that a variable can be an instance of a struct
![Page 7: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/7.jpg)
7
Object-Oriented Programming Terminology
attributes: member data of a class
behaviors: member functions of a class
![Page 8: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/8.jpg)
8
More on Objects data hiding:
restricting access to certain data members of an object
public interface: members of an object that are available outside of the
object.
This allows the object to provide access to some data and functions without sharing its internal details and design, and provides some protection from data corruption
objects can be general-purpose or application-specific
![Page 9: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/9.jpg)
9
Member Variablesfloat width;float length;float area;
Member Functionsvoid setData(float w, float l){ … function code … }
void calcArea(void){ … function code … }
float getWidth(void){ … function code … }
float getLength(void){ … function code … }
float getArea(void){ … function code … }
Encapsulation
![Page 10: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/10.jpg)
10
Figure 12-2
![Page 11: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/11.jpg)
11
General Purpose Objects
Creating data types that are improvements on C++’s built-in data types. For example, an array object could be created that works like a regular array, but additionally provides bounds-checking. ( Vector )
Creating data types that are missing from C++. For instance, an object could be designed to process currencies or dates as if they were built-in data types.The string class provides an alternative to using C-string.
Creating objects that perform commonly needed tasks, such as input validation and screen output in a graphical user interface.
![Page 12: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/12.jpg)
12
12.2 Introduction to Classes
Objects are created from a class (instances of a class)
Format:class <class name>
{
member data declarations
member function declarations
};
![Page 13: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/13.jpg)
13
Class Example
class Square{
private:int side;
public:void setSide(int s){ side = s; }
int getSide(){ return side; }
};
![Page 14: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/14.jpg)
14
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 15: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/15.jpg)
15
More on Access Specifiers
Can be listed in any order in a class
Can appear multiple times in a class
If not specified, the default is private
![Page 16: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/16.jpg)
16
// This program demonstrates a simple class.#include <iostream>using namespace std;
// Rectangle class declaration.
class Rectangle // class declaration{
private: // private member datafloat width;float length;
public: // public member functionsvoid setWidth(float);void setLength(float);float getWidth();float getLength();float getArea();
};
FunctionPrototypes
private data
public functions
Example
![Page 17: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/17.jpg)
17
<ReturnType> <ClassName>::<functionName>(ParameterList)
// setData copies the argument w to private member // width and len to private member length.
void Rectangle::setWidth(float w){
width = w; }
void Rectangle::setLength(float len){
length = len; }
Example (Cont.)Scope resolution
operator
![Page 18: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/18.jpg)
18
// getWidth returns the value in the private member width.float Rectangle::getWidth(void){
return width;}
// getLength returns the value in the private member length.float Rectangle::getLength( ){
return length;}
// getArea returns the value in the private member area.float Rectangle::getArea( ){
return length * width;}
Example (Cont.)
![Page 19: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/19.jpg)
19
int main( ){
Rectangle box;float rectWidth, rectLength;
cout << "This program will calculate the area of a\n";cout << "rectangle. What is the width? ";cin >> rectWidth;cout << "What is the length? ";cin >> rectLength;
box.setWidth(rectWidth);box.setLength(rectLength);
cout << "Here is the rectangle's data:\n";cout << "width: " << box.getWidth() << endl;cout << "length: " << box.getLength() << endl;cout << "area: " << box.getArea() << endl;
return 0;}
Example (Cont.)
![Page 20: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/20.jpg)
20
Program Output
This program will calculate the area of arectangle. What is the width? 10 [Enter]What is the length? 5 [Enter]Here is the rectangle's data:width: 10length: 5area: 50
![Page 21: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/21.jpg)
21
12.3 Defining an Instance of a Class
Class objects must to be defined after the class is declared An object is an instance of a class Defined like structure variables:
Square sq1, sq2; Access public members using dot operator:
sq1.setSide(5);cout << sq2.getSide();
A compiler error is generated if you attempt to access a private member using a dot operator
Example: Prog 12-1
![Page 22: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/22.jpg)
22
Pointer to an Object
Can define a pointer to an object:Square *sqPtr;
Can access public members via pointer:sqPtr = &sq1;
sqPtr->setSide(12);
sqPtr = &sq2;
sqPtr->setSide(sq1.getSide());
cout << sqPtr->getSide();
![Page 23: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/23.jpg)
23
12.4 Why Have Private Members?
Making data members private provides data protection
Data can be accessed only through public functions
Public functions define the class’s public interface
![Page 24: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/24.jpg)
24
Set versus Get Functions
Set function: function that stores a value in a private member
variable
Get function: function that retrieves a value from a private member
variable
Common class design practice: make all member variables private, provide public
set and get functions
![Page 25: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/25.jpg)
25
12.5 Software Design Considerations
Place class declaration in a header file that serves as the class specification file. Name the file “classname.h”, for example, square.h
Place member function definitions in “classname.cpp”, for example, square.cpp
File should #include the class specification file
Programs that use the class must #include the class specification file, and be compiled and linked with the member function definitions
![Page 26: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/26.jpg)
26
Software Design Considerations
Usually: class declarations are stored in their own
header files. ( .h )
Member function definitions are stored in their own source files. ( .cpp )
The #ifndef directive allows statements to be
conditionally compiled. This prevents a header file from accidentally being included more than once.
![Page 27: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/27.jpg)
27
Contents of Rectangle.h
#ifndef RECTANGLE_H#define RECTANGLE_H// Rectangle class declaration.class Rectangle{
private:float width;float length;float area;
public:void setData(float, float);void calcArea( );float getWidth( );float getLength( );float getArea( );
};#endif
Example
![Page 28: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/28.jpg)
28
Contents of Rectangle.cpp
#include “Rectangle.h" // Rectangle Class Declaration
// Rectangle Class member function definitions follow// setData copies the argument w to private member width and// l to private member length.void Rectangle::setData(float w, float l){
width = w;length = l;
}
...
Example Cont.
![Page 29: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/29.jpg)
29
Defining a Member Function
When defining a member function: Put the function prototype in the class declaration
Define the function outside of the class declaration using class name and scope resolution operator
(::)
int Square::getSide(){
return side;}
Example: .h file, .cpp file, main file
![Page 30: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/30.jpg)
30
Input/Output with Objects Class should be designed to provide functions to
store and retrieve data
Functions that use objects of a class should perform input/output operations, not class member functions
There can be exceptions to these rules: a class can be designed to display a menu, or
specifically to perform I/O
![Page 31: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/31.jpg)
31
12.6 Using Private Member Functions
A private member function can only be called by another member function
It is used for internal processing by the class, not for use outside of the class
A private member function is also referred to as a utility function
Example: .h file, .cpp file, main file
![Page 32: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/32.jpg)
32
12.7 Inline Member Functions
Member functions can be defined in the class declaration ( inline ) after the class declaration
Inline member functions are appropriate for short function bodies:
int getSide() { return side; }
![Page 33: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/33.jpg)
33
Tradeoffs: Inline vs. Regular Member Functions
Regular functions: when called, compiler stores return address of call,
allocates memory for local variables, etc.
Inline functions: 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 34: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/34.jpg)
34
12.8 Constructors
Member function that is called when an object is created
Called automatically
Constructor function name is class name
Has no return type ( not even void )
![Page 35: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/35.jpg)
35
Constructor Example
class Square{
private:int side;
public:Square(); //constructor prototype...
};
Square::Square() //function header{
side = 1;}
Example: Progs 12-4, 12-5
![Page 36: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/36.jpg)
36
12.9 Destructors
Member function automatically called when an object is destroyed
Destructor name is ~classname, e.g., ~Square
~ character is called the tilde
Has no return type; takes no arguments
Only 1 destructor per class, i.e., it cannot be overloaded
If constructor allocates dynamic memory, destructor should release it
Example: Prog 12-7
![Page 37: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/37.jpg)
37
12.10 Constructors That Accept Arguments
Default constructor: constructor that takes no arguments
To create an object using the default constructor, use no argument list and no ():
Square square1;
To create a constructor that takes arguments: indicate parameters in prototype( if used ) , definition provide arguments when object is created:
Square square2(12);
![Page 38: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/38.jpg)
38
Constructors That Accept Arguments
Constructor may have default arguments:
Square(int = 1); // prototype
Square::Square(int s) // heading{ side = s;
}
Example: .h file, main file, .h file, main file
![Page 39: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/39.jpg)
39
12.11 Input Validation Objects
Objects can be designed to validate user input:
Acceptable menu choice Test score in range of valid scores etc.
![Page 40: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/40.jpg)
40
12.12 Overloading Constructors
A class can have more than 1 constructor
Overloaded constructors ( like any overloaded function ) in a class must have different parameter lists:
Square();
Square(int);
![Page 41: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/41.jpg)
41
Member Function Overloading
Non-constructor member functions can also be overloaded:
void setSide();
void setSide(int);
Must have unique parameter lists as for constructors
![Page 42: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/42.jpg)
42
12.13 Only One Default Constructor and One Destructor Do not provide > 1 default constructor for a class:
one that takes no arguments and one that has default arguments for all parameters
Square();
Square(int = 0); // will not compile
Since a destructor takes no arguments, there can only be one destructor for a class
![Page 43: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/43.jpg)
43
12.14 Arrays of Objects
Objects can be the elements of an array:Square lottaSquares[10];
Default constructor for object is used when array is defined
Must use initializer list to invoke constructor that takes arguments:Square triSqu[3] = {5,7,11};
More complex initialization if constructor takes > 1 argument
![Page 44: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/44.jpg)
44
Accessing Objects in an Array
Objects in an array are referenced using subscripts
Member functions are referenced using dot notation:
lottaSquares[3].setSide(6);
cout << triSqu[i].getSide();
![Page 45: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/45.jpg)
45
12.17 An Object-Oriented System Development Primer Procedural Programming:
program is made up of procedures: sets of programming statements that perform tasks
Object-Oriented Programming: program is made up of objects: entities that
contain data (attributes) and actions (methods)
![Page 46: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/46.jpg)
46
Benefits of Object-Oriented Programming
Simplification of software development for graphical (GUI) applications visual components (menus, text boxes, etc.)
modeled as objects visual components (e.g., windows) may be
made up of multiple objects some objects (e.g., buttons) may have
methods associated with them
![Page 47: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/47.jpg)
47
Benefits of Object-Oriented Programming Simplification of software development for
non-GUI applications - the problem: procedural programming enforces separation
between code and data changes in data format require extensive
analysis, testing to ensure program functionality
![Page 48: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/48.jpg)
48
Benefits of Object-Oriented Programming Simplification of software development for
non-GUI applications - a solution: OO programming addresses the problem
through encapsulation: combination of data and actions in
an object data hiding: protection of an object’s data by its
public member functions
![Page 49: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/49.jpg)
49
Component Reusability
Component: a software object that performs a well-defined task or that provides a service
Component Reusability: the ability to use a component in multiple programs without (or with little) modification
![Page 50: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/50.jpg)
50
Relationships Between Objects
A program may contain objects of different classes
Objects may be related by one of the following: Access (‘knows’ relationship) Ownership (‘has a’ relationship) Inheritance (‘is a’ relationship)
![Page 51: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/51.jpg)
51
Messages and Polymorphism
Message: request to an object to perform a task. Implemented as a member function call
Polymorphism: ability to take many forms. Sending the same message to different objects may produce different behaviors
![Page 52: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/52.jpg)
52
Object Oriented Analysis
Used to create the logical design of a system, what the system is to do
Usually includes examine the problem domain; model the system
from within that perspective identify the objects that exist within the boundaries
of that system identify the relationships between the objects realize that there may be many ‘right’ solutions
![Page 53: 1 Chapter 13 Introduction to Classes. 2 Topics 12.1 Procedural and Object-Oriented Programming 12.2 Introduction to Classes 12.3 Defining an Instance.](https://reader030.fdocuments.us/reader030/viewer/2022032805/56649ee85503460f94bfa29d/html5/thumbnails/53.jpg)
53
Object Oriented Design
Used to determine how requirements from OO Analysis will be implemented
Usually includes determine hierarchical relation between
objects determine object ownership of attributes implement and test; refine as required