Download presentation
Presentation is loading. Please wait.
Published byCassandra Oliver Modified over 9 years ago
1
CSCI-383 Object-Oriented Programming & Design Lecture 5
2
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 2 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
3
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 3 Example Using a Struct 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 struct CarType { 8string maker; 9int year; 10float price; 11 }; 12 13 void getYourCar( CarType & car ); 14 Don’t forget this semicolon.
4
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 4 15 int main( ) 16 { 17 CarType myCar, yourCar; 18 19 myCar.maker = "Mercedes"; // I wish 20 myCar.year = 2005; 21 myCar.price = 45567.75; 22 Example Using a Struct (cont.)
5
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 5 23 getYourCar( yourCar ); 24 25 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; 29 30 return 0; 31 } 32 Example Using a Struct (cont.)
6
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 6 33 void getYourCar( CarType & car ) 34 { 35cout << "Enter your maker: "; 36cin >> car.maker; 37cout << "Enter the year: "; 38cin >> car.year; 39cout << "Enter the price: $"; 40cin >> car.price; 41 } Example Using a Struct (cont.)
7
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 7 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
8
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 8 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
9
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 9 Main Program Using Objects Object A Object B Object C Main Program
10
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 10 Main Program Using Objects Object A Object B Object C Main Program
11
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 11 Main Program Using Objects Object A Object B Object C Main Program
12
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 12 Main Program Using Objects Object A Object B Object C Main Program
13
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 13 Main Program Using Objects Object A Object B Object C Main Program
14
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 14 Main Program Using Objects Object A Object B Object C Main Program
15
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 15 Main Program Using Objects Object A Object B Object C Main Program
16
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 16 Main Program Using Objects Object A Object B Object C Main Program
17
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 17 Main Program Using Objects Object A Object B Object C Main Program
18
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 18 How the Main Program Uses 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
19
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 19 Main Program and Object Main Program Object public: functions private: data
20
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 20 Main Program Calls a Function in the Object Main Program Object public: functions private: data
21
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 21 The Function Accesses Data Main Program Object public: functions private: data
22
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 22 Function Returns a Value Back to the Main Program Main Program Object public: functions private: data
23
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 23 Main Program Calls a Different Function Main Program Object public: functions private: data
24
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 24 Function Calls Another Function Main Program Object public: functions private: data
25
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 25 Second Function Accesses Data Main Program Object public: functions private: data
26
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 26 Second Function Returns Back to First Function Main Program Object public: functions private: data
27
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 27 First Function Accesses Data Main Program Object public: functions private: data
28
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 28 Function Returns Back to Main Program Main Program Object public: functions private: data
29
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 29 Example of a Class 1 class Checkbook 2 { 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)
30
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 30 Example of a Class (cont.) 1 class Checkbook 2 { 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.
31
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 31 Example of a Class (cont.) 1 class Checkbook 2 { 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.
32
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 32 15 #include “checkbook.h” 16 17 void Checkbook::setBalance( float amount ) 18 { 19balance = amount; 20 } Example of a Class (cont.) The function definitions are placed into a separate file called the class implementation file. This file would be called checkbook.cpp (by convention).
33
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 33 15 #include “checkbook.h” 16 17 void Checkbook::setBalance( float amount ) 18 { 19balance = amount; 20 } Example of a Class (cont.) The balance variable is declared in the private section of the class definition.
34
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 34 15 #include “checkbook.h” 16 17 void Checkbook::setBalance( float amount ) 18 { 19balance = amount; 20 } Example of a Class (cont.) Special notation for class function definitions
35
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 35 21 bool Checkbook::writeCheck( float amount ) 22 { 23if ( amount > balance ) 24return false; 25balance -= amount; 26lastCheck = amount; 27return true; 28 } Example of a Class (cont.)
36
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 36 29 void Checkbook::deposit( float amount ) 30 { 31balance += amount; 32lastDeposit = amount; 33 } Example of a Class (cont.)
37
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 37 34 float Checkbook::getBalance( ) 35 { 36return balance; 37 } 38 39 float Checkbook::getLastCheck( ) 40 { 41return lastCheck; 42 } Example of a Class (cont.) end of checkbook.cpp
38
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 38 1 #include 2 #include 3 #include "checkbook.h" 4 5 using namespace std; 6 7 int menu( ); 8 9 const int CHECK = 1, DEPOSIT = 2, BALANCE = 3, QUIT = 4; 10 11 int main( ) 12 { 13Checkbook cb; 14float balance, amount; 15int choice; A Program that Uses the Checkbook Class A main program that uses the Checkbook class is placed into a separate.cpp file
39
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 39 16cout << "Enter the initial balance: $"; 17cin >> balance; 18cb.setBalance( balance ); 19 20cout << fixed << showpoint << setprecision( 2 ); A Program that Uses the Checkbook Class (cont.)
40
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 40 21choice = menu( ); 22while ( choice != QUIT ) { 23 if ( choice == CHECK ) { 24 cout << "Enter check amount: $"; 25 cin >> amount; 26 if ( cb.writeCheck( amount ) ) 27cout << "Check accepted." << endl; 28 else { 29cout << "Your balance is not high "; 30cout << "enough for that check." << endl; 31} 32 } A Program that Uses the Checkbook Class (cont.) body of the while loop continues
41
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 41 33else 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
42
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 42 39 else { // must be a balance request 40 amount = cb.getBalance( ); 41 cout << "Your balance is: $" << amount << endl; 42 } 43 44 choice = menu( ); 45} 46 47return 0; 48 } 49 A Program that Uses the Checkbook Class (cont.) end of while loop
43
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 43 50 int menu( ) 51 { 52int choice; 53 54cout << endl; 55cout << "1Write a check" << endl; 56cout << "2Make a deposit" << endl; 57cout << "3Get the balance" << endl; 58cout << "4Quit" << endl << endl; 59cout << "Enter a number between 1 and 4: "; 60cin >> choice; 61return choice; 62 } A Program that Uses the Checkbook Class (cont.)
44
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 44 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
45
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 45 If Data Members were Accessed Directly… Class int a; int b; int c; Main Program...... Suppose the variables of a class were accessed by 100 places in a program
46
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 46 If Data Members were Accessed Directly… (cont.) Class int arr[10] Main Program...... Then we need to change the way the data is repre- sented (for maintenance)
47
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 47 If Data Members were Accessed Directly… (cont.) Class int arr[10] Main Program...... We need to change 100 lines of code in the main program!
48
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 48 Data Members Should Be Private Class private: int a; int b; int c; Main Program...... Here, the main program calls foo from 100 places. int foo( int x )
49
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 49 Data Members Should Be Private (cont.) Class private: int a; int b; int c; Main Program...... Then foo accesses the private data members. int foo( int x )
50
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 50 Data Members Should Be Private (cont.) Class private: int arr[10] Main Program...... If the data needs to change, the body of foo will need to be rewritten. int foo( int x )
51
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 51 Data Members Should Be Private (cont.) Class private: int arr[10] Main Program...... However, the function call of foo and return type will stay the same. int foo( int x )
52
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 52 Data Members Should Be Private (cont.) Class private: int arr[10] Main Program...... No changes need to be made in the main program! int foo( int x )
53
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 53 Data Members Should Be Private (cont.) Class private: int arr[10] Main Program...... Program maintenance is easier this way… int foo( int x )
54
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 54 Data Members Should Be Private (cont.) Class private: int arr[10] Main Program...... especially if there is more than one program using the class. int foo( int x )
55
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 55 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) So what is the difference between a struct and a class?
56
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 56 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 Struct vs. Class (cont.)
57
Jeffrey S. Childs Clarion University of PA © 2008, Prentice Hall 57 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)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.