c++ classes and data structures jeffrey s. childs chapter 1 structs and classes
DESCRIPTION
C++ Classes and Data Structures ppt Ch1TRANSCRIPT
![Page 1: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/1.jpg)
C++ Classes and Data StructuresJeffrey S. Childs
Chapter 1Structs and Classes
1
Jeffrey S. Childs
Clarion University of PA
© 2008, Prentice Hall
![Page 2: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/2.jpg)
Structs
• A struct holds data, like an array• Each unit of data in a struct is called a data
member (or member)– they are called “elements” in arrays
• In a struct, each data member can have a different data type– in arrays, the data type of each element is the
same
2
![Page 3: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/3.jpg)
Example Using a Struct
3
1 #include <iostream>2 #include <iomanip>3 #include <string>45 using namespace std;67 struct CarType {8 string maker;9 int year;10 float price;11 };1213 void getYourCar( CarType & car );14
Don’t forget this semicolon.
![Page 4: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/4.jpg)
Example Using a Struct (cont.)
4
15 int main( )16 {17 CarType myCar, yourCar;1819 myCar.maker = "Mercedes"; // I wish20 myCar.year = 2005;21 myCar.price = 45567.75;22
![Page 5: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/5.jpg)
Example Using a Struct (cont.)
5
23 getYourCar( yourCar );2425 cout << "Your car is a: " <<
yourCar.maker << endl;26 cout << fixed << showpoint <<
setprecision( 2 ) << 27 "I'll offer $" << yourCar.price - 100
<< 28 " for your car." << endl;2930 return 0;31 }32
![Page 6: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/6.jpg)
Example Using a Struct (cont.)
6
33 void getYourCar( CarType & car )34 {35 cout << "Enter your maker: ";36 cin >> car.maker;37 cout << "Enter the year: ";38 cin >> car.year;39 cout << "Enter the price: $";40 cin >> car.price;41 }
![Page 7: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/7.jpg)
Object Assignment
• An object of a struct can be assigned to another object of the same struct type:
myCar = yourCar;
• This assigns each data member in yourCar to the corresponding data member of myCar
• Also assigns any array data members
7
![Page 8: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/8.jpg)
Classes
• A class is similar to a struct• A class contains data members, but it also contains
function members• Objects are made from classes, similarly to the way
that objects are made from structs• The main program communicates with the objects
– data is passed from main program to object and from object back to the main program
8
![Page 9: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/9.jpg)
Main Program Using Objects
9
Object A
Object B
Object C
Main
Program
![Page 10: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/10.jpg)
Main Program Using Objects
10
Object A
Object B
Object C
Main
Program
![Page 11: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/11.jpg)
Main Program Using Objects
11
Object A
Object B
Object C
Main
Program
![Page 12: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/12.jpg)
Main Program Using Objects
12
Object A
Object B
Object C
Main
Program
![Page 13: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/13.jpg)
Main Program Using Objects
13
Object A
Object B
Object C
Main
Program
![Page 14: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/14.jpg)
How the Main ProgramUses A Class Object
• The main program does not access the data within a class object
• The main program only accesses the functions of a class object– communication occurs by passing data as
parameters into the object’s function– the object passes data to the main program
through its return type
14
![Page 15: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/15.jpg)
Main Program and Object
15
Main
Program
Object
public:
functions
private:
data
![Page 16: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/16.jpg)
Main Program Calls a Function in the Object
16
Main
Program
Object
public:
functions
private:
data
![Page 17: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/17.jpg)
The Function Accesses Data
17
Main
Program
Object
public:
functions
private:
data
![Page 18: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/18.jpg)
Function Returns a Value Back to the Main Program
18
Main
Program
Object
public:
functions
private:
data
![Page 19: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/19.jpg)
Main Program Calls a Different Function
19
Main
Program
Object
public:
functions
private:
data
![Page 20: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/20.jpg)
Function Calls Another Function
20
Main
Program
Object
public:
functions
private:
data
![Page 21: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/21.jpg)
Second Function Accesses Data
21
Main
Program
Object
public:
functions
private:
data
![Page 22: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/22.jpg)
Second Function Returns Back to First Function
22
Main
Program
Object
public:
functions
private:
data
![Page 23: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/23.jpg)
First Function Accesses Data
23
Main
Program
Object
public:
functions
private:
data
![Page 24: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/24.jpg)
Function Returns Back to Main Program
24
Main
Program
Object
public:
functions
private:
data
![Page 25: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/25.jpg)
Example of a Class
25
1 class Checkbook2 {3 public:4 void setBalance( float amount );5 bool writeCheck( float amount ); 6 void deposit( float amount );7 float getBalance( );8 float getLastCheck( );9 float getLastDeposit( ); 10 private:11 float balance;12 float lastCheck;13 float lastDeposit;14 };
This class definition is placed into its own file, called the class specification file, named checkbook.h (by convention)
![Page 26: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/26.jpg)
Example of a Class (cont.)
26
1 class Checkbook2 {3 public:4 void setBalance( float amount );5 bool writeCheck( float amount ); 6 void deposit( float amount );7 float getBalance( );8 float getLastCheck( );9 float getLastDeposit( ); 10 private:11 float balance;12 float lastCheck;13 float lastDeposit;14 };
The writeCheck function returns false if the amount of the check is greater than the balance; returns true otherwise.
![Page 27: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/27.jpg)
Example of a Class (cont.)
27
1 class Checkbook2 {3 public:4 void setBalance( float amount );5 bool writeCheck( float amount ); 6 void deposit( float amount );7 float getBalance( );8 float getLastCheck( );9 float getLastDeposit( ); 10 private:11 float balance;12 float lastCheck;13 float lastDeposit;14 };
Don’t forget the semicolon.
![Page 28: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/28.jpg)
Example of a Class (cont.)
28
15 #include “checkbook.h”1617 void Checkbook::setBalance( float amount )18 {19 balance = amount;20 } The function definitions are placed into a
separate file called the class implementation file. This file would be called checkbook.cpp (by convention).
![Page 29: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/29.jpg)
Example of a Class (cont.)
29
15 #include “checkbook.h”1617 void Checkbook::setBalance( float amount )18 {19 balance = amount;20 }
The balance variable is declared in the private section of the class definition.
![Page 30: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/30.jpg)
Example of a Class (cont.)
30
15 #include “checkbook.h”1617 void Checkbook::setBalance( float amount )18 {19 balance = amount;20 }
Special notation for class function definitions
![Page 31: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/31.jpg)
Example of a Class (cont.)
31
21 bool Checkbook::writeCheck( float amount )22 {23 if ( amount > balance )24 return false;25 balance -= amount;26 lastCheck = amount;27 return true;28 }
![Page 32: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/32.jpg)
Example of a Class (cont.)
32
29 void Checkbook::deposit( float amount )30 {31 balance += amount;32 lastDeposit = amount;33 }
![Page 33: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/33.jpg)
Example of a Class (cont.)
33
34 float Checkbook::getBalance( ) 35 {36 return balance;37 }3839 float Checkbook::getLastCheck( )40 {41 return lastCheck;42 }
end of checkbook.cpp
![Page 34: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/34.jpg)
A Program that Uses the “Checkbook” Class
34
1 #include <iostream>2 #include <iomanip>3 #include "checkbook.h"45 using namespace std;67 int menu( );89 const int CHECK = 1, DEPOSIT = 2, BALANCE = 3, QUIT = 4; 1011 int main( )
A main program that uses the "Checkbook" class is placed into a separate .cpp file
![Page 35: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/35.jpg)
35
12 {13 Checkbook cb;14 float balance, amount;15 int choice;16 cout << "Enter the initial balance: $";17 cin >> balance;18 cb.setBalance( balance );1920 cout << fixed << showpoint << setprecision( 2 );
A Program that Uses the "Checkbook" Class (cont.)
![Page 36: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/36.jpg)
36
21 choice = menu( );22 while ( choice != QUIT ) {23 if ( choice == CHECK ) {24 cout << "Enter check amount: $";25 cin >> amount;26 if ( cb.writeCheck( amount ) )27 cout << "Check accepted." << endl;28 else {
A Program that Uses the "Checkbook" Class (cont.)
![Page 37: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/37.jpg)
37
29 cout << "Your balance is not high ";30 cout << "enough for that check." << endl; 31 }32} 33 else if ( choice == DEPOSIT ) {34 cout << "Enter deposit amount: $";35 cin >> amount;36 cb.deposit( amount );37 cout << "Deposit accepted." << endl;38 }
A Program that Uses the "Checkbook" Class (cont.)
body of the while loop continues
body of the while loop continues
![Page 38: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/38.jpg)
38
39 else { // must be a balance request40 amount = cb.getBalance( );41 cout << "Your balance is: $" << amount << endl;42 }4344 choice = menu( );45 } 4647 return 0;48 }49
A Program that Uses the "Checkbook" Class (cont.)
end of while loop
![Page 39: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/39.jpg)
39
50 int menu( )51 {52 int choice;5354 cout << endl;55 cout << "1 Write a check" << endl;56 cout << "2 Make a deposit" << endl;57 cout << "3 Get the balance" << endl;58 cout << "4 Quit" << endl << endl;59 cout << "Enter a number between 1 and 4: ";60 cin >> choice;61 return choice;62 }
A Program that Uses the "Checkbook" Class (cont.)
![Page 40: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/40.jpg)
Keep In Mind
• The data members of a class cannot be accessed by a main program.
• The object always retains the current values of its data members, even when object code is no longer executing.
• Each function of a class can use the data members of the class as though they have been declared within the function.
40
![Page 41: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/41.jpg)
Maintenance
• Maintenance refers to any work done on a program after it is put into operation
• The world constantly changes• Programs have to be maintained (modified) to
keep up with the changes• When programs are maintained, the data
members sometimes have to change• Private data members make it easier to
maintain a program
41
![Page 42: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/42.jpg)
If Data Members were Accessed Directly…
42
Class
int a;int b;int c;
Main Program
.
.
.Suppose the variables of a class were accessed by 100 places in a program
![Page 43: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/43.jpg)
If Data Members were Accessed Directly… (cont.)
43
Class
int arr[10]
Main Program
.
.
.Then we need to change the way the data is repre-sented (for maintenance)
![Page 44: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/44.jpg)
If Data Members were Accessed Directly… (cont.)
44
Class
int arr[10]
Main Program
.
.
.We need to change 100 lines of code in the main
program!
![Page 45: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/45.jpg)
Data Members ShouldBe Private
45
Class
private:int a;int b;int c;
Main Program
.
.
.Here, the main program calls function “foo” from
100 places.
int foo( int x )
![Page 46: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/46.jpg)
Data Members ShouldBe Private (cont.)
46
Class
private:int a;int b;int c;
Main Program
.
.
.Then foo accesses the private data members.
int foo( int x )
![Page 47: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/47.jpg)
Data Members ShouldBe Private (cont.)
47
Class
private:
int arr[10]
Main Program
.
.
.If the data needs to change, then only the
function “foo” will need to be rewritten.
int foo( int x )
![Page 48: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/48.jpg)
Data Members ShouldBe Private (cont.)
48
Class
private:
int arr[10]
Main Program
.
.
.However, the function call of foo and the return type
will stay the same.
int foo( int x )
![Page 49: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/49.jpg)
Data Members ShouldBe Private (cont.)
49
Class
private:
int arr[10]
Main Program
.
.
.i.e. No changes need to be made in the main
program!
int foo( int x )
![Page 50: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/50.jpg)
Data Members ShouldBe Private (cont.)
50
Class
private:
int arr[10]
Main Program
.
.
.Program maintenance is easier this way…especially
if there is more than one program using the class.
int foo( int x )
![Page 51: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/51.jpg)
Data Members ShouldBe Private (cont.)
51
Class
private:
int arr[10]
Main Program
.
.
.especially if there is more than one program using the class.
int foo( int x )
![Page 52: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/52.jpg)
When Writing a Class
• Your class may be used by hundreds or even thousands of clients (main programmers)
• Write your class for clients, not for computer users
• Do not put code in your class which gives messages to users or asks users for information – let clients handle this the way they want
52
![Page 53: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/53.jpg)
Debugging a Program with Classes
• First technique – make the classes and the main program and test everything all at once– inefficient: takes a long time to track down each
bug
• Second technique – test each class as it is made by writing a main program just to test it (called a test driver or driver)
53
![Page 54: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/54.jpg)
First Technique
54
Class 1
Class 2
Class 3
Class 4
Main
Program
bugs in the classes
Let’s assume it takes 2 hours, on average, to fix each problem.
![Page 55: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/55.jpg)
2nd Technique - Using Drivers
55
Class 1
Class 2
Class 3
Class 4
We’ll try the second technique – write a driver to test each class.
Assume it takes one hour to write a driver.
Fixing a runtime error will be faster – let’s say it takes a half an hour.
Time for first technique: 40:00
![Page 56: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/56.jpg)
Using Drivers (cont.)
56
Class 1
Class 2
Class 3
Class 4 Runtime Errors: 0Time: 14:00Drive
r
Time for first technique: 40:00
![Page 57: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/57.jpg)
Function Definitions in the Class Specification
• The following slides show that function definitions can be placed into the class specification.
• In general, we should avoid doing this because it is a hindrance to program maintenance.
• It is shown here because you will see code written this way during your career.
57
![Page 58: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/58.jpg)
Function Definitions in the Class Specification (cont.)
58
1 // checkbook.h – A class for a checkbook2 class Checkbook3 {4 public:5 void setBalance( float amount ) 6 { balance = amount; }7 bool writeCheck( float amount ); // returns
false if 8 // amount is greater than balance; 9 // otherwise returns true10 void deposit( float amount ) { balance
+= amount; 11 lastDeposit =
amount; }
![Page 59: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/59.jpg)
Function Definitions in the Class Specification (cont.)
59
12 float getBalance( ) { return balance; } 13 float getLastCheck( ) { return lastCheck; } 14 float getLastDeposit( ) { return lastDeposit; }
15 private:16 float balance;17 float lastCheck;18 float lastDeposit;19 };
![Page 60: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/60.jpg)
Function Definitions in the Class Specification (cont.)
60
20 // checkbook.cpp – function definitions for the 21 //Checkbook class22 #include “checkbook.h”2324 bool Checkbook::writeCheck( float amount )25 {26 if ( amount > balance )27 return false;28 balance -= amount;29 lastCheck = amount;30 return true;31 }
![Page 61: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/61.jpg)
Struct vs. Class
• Functions can be placed in a struct, but only when necessary
• The public and private keywords can be left out of a class (rare).
• The public and private keywords can be placed into a struct (rare).
61
![Page 62: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/62.jpg)
Struct vs. Class (cont.)**************
So what is the difference between a struct and a class?
•If public and private are not used in a struct, all data members are public by default.•If public and private are not used in a class, all data members are private by default.
**************KEY SLIDE!!!
62
![Page 63: C++ Classes and Data Structures Jeffrey S. Childs Chapter 1 Structs and Classes](https://reader033.vdocuments.mx/reader033/viewer/2022042601/5474d6a5b4af9fa84e8b45aa/html5/thumbnails/63.jpg)
Conventions
• By convention, we use structs when we want all data members to be public– structs are typically defined and used within the
client’s program, not in a separate file– typically used for records of information
• By convention, we use classes when we want all data members to be private (for maintenance purposes)
63