1 Object-Oriented Programming Using C++ CLASS 27.

Slides:



Advertisements
Similar presentations
Chapter 13 – Introduction to Classes
Advertisements

Lesson 13 Introduction to Classes CS1 Lesson Introduction to Classes1.
Chapter 6: A First Look at classes. Object-Oriented Programming  Object-oriented programming is centered on creating objects rather than procedures.
1 Introduction to Classes. C++: Classes & Objects - 12 Procedural and Object-Oriented Programming Procedural programming focuses on the process/actions.
Starting Out with C++: Early Objects 5th Edition
COMP 110 Introduction to Programming Mr. Joshua Stough October 8, 2007.
 2006 Pearson Education, Inc. All rights reserved Midterm review Introduction to Classes and Objects.
Object Oriented Programming.  OOP Basic Principles  C++ Classes  September 2004  John Edgar 22.
Chapter Objectives You should be able to describe: Object-Based Programming Classes Constructors Examples Common Programming Errors.
More C++ Classes Systems Programming. Systems Programming: C++ Classes 2 Systems Programming: 2 C++ Classes  Preprocessor Wrapper  Time Class Case Study.
C++ Functions. 2 Agenda What is a function? What is a function? Types of C++ functions: Types of C++ functions: Standard functions Standard functions.
Copyright © 2012 Pearson Education, Inc. Chapter 13: Introduction to Classes.
1 CSE 2341 Object Oriented Programming with C++ Note Set #6.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Classes: A Deeper Look Part.
More C++ Classes Systems Programming. C++ Classes  Preprocessor Wrapper  Time Class Case Study –Two versions (old and new)  Class Scope and Assessing.
Lecture # 8 Constructors Overloading. Topics We will discuss the following main topics: – Static Class Members – Overloaded Methods – Overloaded Constructors.
Copyright © 2012 Pearson Education, Inc. Chapter 13: Introduction to Classes.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Procedural and Object-Oriented Programming 13.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.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13: Introduction to Classes.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
Chapter 13. Procedural programming vs OOP  Procedural programming focuses on accomplishing tasks (“verbs” are important).  Object-oriented programming.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide
Starting Out with C++ 2nd Edition, by Tony Gaddis 1 Chapter 7 – Classes and Structured Data.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 7 Structured Data and Classes.
C++ Functions. Objectives 1. Be able to implement C++ functions 2. Be able to share data among functions 2.
ADTs and C++ Classes Classes and Members Constructors The header file and the implementation file Classes and Parameters Operator Overloading.
Chapter 10 Introduction to Classes
 Classes in c++ Presentation Topic  A collection of objects with same properties and functions is known as class. A class is used to define the characteristics.
Starting Out with C++, 3 rd Edition 1 Chapter 13 – Introduction to Classes.
Structured Data and Classes Chapter 7. Combining Data into Structures Structure: C++ construct that allows multiple variables to be grouped together Structure.
1 C++ Classes: Access (II) Ying Wu Electrical Engineering & Computer Science Northwestern University ECE230 Lectures Series.
Chapter 3 Part I. 3.1 Introduction Programs written in C ◦ All statements were located in function main Programs written in C++ ◦ Programs will consist.
2 Objectives You should be able to describe: Object-Based Programming Classes Constructors Examples Common Programming Errors.
CSci 162 Lecture 10 Martin van Bommel. Procedures vs Objects Procedural Programming –Centered on the procedures or actions that take place in a program.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Brief Edition Chapter 12 Introduction to Classes.
CS-1030 Dr. Mark L. Hornick 1 Basic C++ State the difference between a function/class declaration and a function/class definition. Explain the purpose.
1 CSE 2341 Object Oriented Programming with C++ Note Set #5.
C++ Programming Lecture 13 Functions – Part V The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
Lecture 19: Introduction to Classes Professor: Dr. Miguel Alonso Jr. Fall 2008 CGS2423/COP1220.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 7: Introduction to Classes and Objects Starting Out with C++ Early.
1 Liang, Introduction to C++ Programming, (c) 2007 Pearson Education, Inc. All rights reserved X 1 Chapter 10 More on Objects and Classes.
Topic 8Classes, Objects and Methods 1 Topic 8 l Class and Method Definitions l Information Hiding and Encapsulation l Objects and Reference Classes, Objects,
Prof. amr Goneid, AUC1 CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 15. Dictionaries (1): A Key Table Class.
Separating Class Specification tMyn1 Separating Class Specification from Implementation Usually class declarations are stored in their own header files.
CS1201: Programming Language 2 Classes and objects.
Array in C++ / review. An array contains multiple objects of identical types stored sequentially in memory. The individual objects in an array, referred.
1 Introduction to Object Oriented Programming Chapter 10.
1 CSE 2341 Object Oriented Programming with C++ Note Set #7.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 13: Introduction to Classes.
Starting Out with C++, 3 rd Edition 1 Chapter 13 – Introduction to Classes Procedural and Object-Oriented Programming Procedural programming is a method.
1 Object-Oriented Programming Using C++ CLASS 2 Honors.
1 Class 19 Chapter 13 – Creating a class definition.
1 CSE 2341 Object Oriented Programming with C++ Note Set #12.
1 C++ Classes and Data Structures Course link…..
Data Structures Lecture 4: Classes in C++ Azhar Maqsood NUST Institute of Information Technology (NIIT)
Pointer to an Object Can define a pointer to an object:
Procedural and Object-Oriented Programming
Chapter 7: Introduction to Classes and Objects
Abstract Data Types Programmer-created data types that specify
Classes.
Introduction to Classes
Chapter 7: Introduction to Classes and Objects
Chapter 5 Classes.
CS1201: Programming Language 2
Introduction to Classes
Lecture 8 Object Oriented Programming (OOP)
Chapter 6: A First Look at classes
Presentation transcript:

1 Object-Oriented Programming Using C++ CLASS 27

2 Objectives Create a class definition Use a constructor and destructor Differentiate between class interface and implementation Write a main driver to test set and get methods of a class

Introduction to the Class In C++, the class is the construct primarily used to create objects. class class-name { declaration statements here };

4 Example: class Rectangle { private: float Width, Length, Area; public: void SetData(float, float); void CalcArea(void); float GetWidth(void); float GetLength(void); float GetArea(void); };

5 Access Specifiers The key words private and public are access specifiers. private means they can only be accessed by the member functions. public means they can be called from statements outside the class. –Note: the default access of a class is private, but it is still a good idea to use the private key word to explicitly declare private members. This clearly documents the access specification of the class.

Defining Member Functions Class member functions are defined similarly to regular functions. void Rectangle::SetData(float W, float L) { Width = W; Length = L; }

Defining an Instance of a Class Class objects must be defined after the class is declared. Defining a class object is called the instantiation of a class. Rectangle Box; //Box is an instance of Rectangle

8 Accessing an Object’s Members Box.CalcArea();

9 Pointers to Objects Rectangle *BoxPtr; BoxPtr = &Box; BoxPtr->SetData(15,12);

10 Program 13-1 P. 786 // This program demonstrates a simple class. #include // Rectangle class declaration. class Rectangle { private: float width; float length;

11 Program 13-1 public: void setWidth(float); void setLength(float); float getWidth(void); float getLength(void); float getArea(void); };

12 // SetData copies the argument W to private // member Width and // L to private member Length. void Rectangle::setWidth(float w) { width = w; } void Rectangel::setLength(float l) { length = l; }

13 // 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(void) { return length; } // GetArea returns the value in the private member // Area. float Rectangle::getArea(void) { return width * length; }

14 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; }

15 Program Output This program will calculate the area of a rectangle. What is the width? 10 [Enter] What is the length? 5 [Enter] Here is the rectangle's data: Width: 10 Length: 5 Area: 50

Why Have Private Members? In object-oriented programming, an object should protect its important data by making it private and providing a public interface to access that data.

Focus on Software Engineering: Some Design Considerations Usually class declarations are stored in their own header files. Member function definitions are stored in their own.CPP files. The #ifndef directive allows a program to be conditionally compiled. This prevents a header file from accidentally being included more than once.

18 Program 13-3 P. 796 Contents of Rectangle.h #ifndef RECTANGLE_H #define RECTANGLE_H // Rectangle class declaration. class Rectangle { private: float width; float length;

19 Program 13-3 public: bool setWidth(float); bool setLength(float); float getWidth(void); float getLength(void); float getArea(void); }; #endif

20 Contents of Rectangle.CPP #include "rectang.h" // SetWidth copies the argument w to private member // width if the argument is valid; if argument is negative // private member width is set to 0.0 and a false returned bool Rectangle::setWidth(float w) { bool status; if (w < 0) { width = 0.0; status = false; } else { width = w; status = true; } return status; }

21 Contents of Rectangle.CPP #include "rectang.h" // Setwidth copies the argument len to private member // length if the argument is valid; if argument is negative // private member length is set to 0.0 and a false // returned bool Rectangle::setLength(float len) { bool status; if (l < 0) { length = 0.0; status = false; } else { length = len; status = true; } return status; }

22 Program continues // 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(void) { return length; } // GetArea returns the value in the private member Area. float Rectangle::GetArea(void) { return width * length; }

23 Contents of the main program, PR13-3.CPP // This program demonstrates a simple class. #include #include “rectangle.h" // contains Rectangle class declaration using namespace std; // Don't forget to link this program with Rectangle.cpp! 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;

24 Program continues if (!Box.setWidth(rectWidth)) cout << “invalid value for width”; else if ( if (!Box.setLength(rectLength)) cout << “invalid value for length; else { cout << "Here rectangle's data:\n"; cout << "Width: " << Box.getWidth() << endl; cout << "Length: " << Box.getLength() << endl; cout << "Area: " << Box.getArea() << endl; } return 0; }

25 Performing I/O in a Class Object Notice that the Rectangle example has no cin or cout. This is so anyone who writes a program that uses the Rectangle class will not be “locked into” the way the class performs input or output. Unless a class is specifically designed to perform I/O, operations like user input and output are best left to the person designing the application.

26 Table 13-1 P. 799 Rectangle.hContains the declaration of the Rectangle class. Rectangle.cppContains the Rectangle class’s member function definitions. Pr13-3.cppContains functiton main

Focus on Software Engineering: Using Private Member Functions A private member function may only be called from a function that is a member of the same object.

Inline Member Functions When the body of a member function is defined inside a class declaration, it is declared inline.

29 P. 805 // Rectangle class declaration with some functions // written inline class Rectangle { private: float width; float length; public: bool setWidth(float); // not inlined; would be // defined in.cpp file bool setLength(float); // not inlined float getWidth() { return width(); } // inlined // would not be in.cpp float getLength() { return length(); } float getArea() { return width * length; }

Constructors A constructor is a member function that is automatically called when a class object is created. Constructors have the same name as the class. Constructors must be declared publicly. Constructors have no return type.

31 Program 13-5 P. 807 // This program demonstrates a constructor. #include using namespace std; class Demo { public: Demo(void);// Constructor }; Demo::Demo(void) { cout << "Welcome to the constructor!\n"; }

32 Program continues int main() { Demo DemoObj;// Declare a Demo object; cout << "This program demonstrates an object\n"; cout << "with a constructor.\n"; return 0; }

33 Program Output Welcome to the constructor. This program demonstrates an object with a constructor.

34 Constructor Arguments When a constructor does not have to accept arguments, it is called an object’s default constructor. Like regular functions, constructors may accept arguments, have default arguments, be declared inline, and be overloaded.

35 Program 13-7 P. 809 class InventoryItem { private: char *description; int units; public: InventoryItem(void) { description = new char[51]; } void setDescription(char *d) { strcpy(description,d); } void setUnits(int u) { units = u; } char *getDescription(void) { return description; } int getUnits(void) { return units; } };

36 Program continues int main() { InventoryItem Stock; Stock.setDescription("Wrench“); Stock.setUnits(20); cout << "Item Description: " << Stock.getDescription() << endl; cout << "Units on hand: " << Stock.getUnits() << endl; return 0; }

37 Program Output Item Description: Wrench Units on hand: 20

Destructors A destructor is a member function that is automatically called when an object is destroyed. –Destructors have the same name as the class, preceded by a tilde character (~) –In the same way that a constructor is called then the object is created, the destructor is automatically called when the object is destroyed. –In the same way that a constructor sets things up when an object is created, a destructor performs shutdown procedures when an object is destroyed.

39 Program 13-8 P. 810 // This program demonstrates a constructor. #include using namespace std; class Demo { public: Demo(void); // Constructor ~Demo(void); // Destructor }; Demo::Demo(void) { cout << "Welcome to the constructor!\n"; }

40 Demo::~Demo(void) { cout << "The destructor is now running.\n"; } int main() { Demo DemoObj;// Declare a Demo object; cout << "This program demonstrates an object\n"; cout << "with a constructor and destructor.\n"; return 0; }

41 Program Output Welcome to the constructor! This program demonstrates an object with a constructor and destructor. The destructor is now running.

42 Program 13-9 class InventoryItem {private: char *description; int units; public: InventoryItem(void) { description = new char[51]; } ~InventoryItem() { delete [] description; } void setDescription(char *d) | { strcpy(description,d); } void setUnits(int u) { units = u; } char *getDescription(void) { return description; } int getUnits(void) { return units; } };

43 Program continues int main() { InventoryItem Stock; Stock.setDescription("Wrench"); Stock.setUnits(20); cout << "Item Description: " << Stock.getDescription() << endl; cout << "Units on hand: " << Stock.getUnits() << endl; return 0; }

44 Program Output Item Description: Wrench Units on hand: 20

Constructors that Accept Arguments Information can be passed as arguments to an object’s constructor.

46 Program P. 813 Contents of SALE.H #ifndef SALE_H #define SALE_H // Sale class declaration class Sale { private: float TaxRate; float Total; public: Sale(float Rate) { TaxRate = Rate; } void CalcSale(float Cost) { Total = Cost + (Cost * TaxRate) }; float GetTotal(void) { return Total; } }; #endif

47 Contents of main program, PR13-10.CPP #include using namespace std; #include "sale.h" int main() { Sale Cashier(0.06);// 6% sales tax rate float Amnt; cout.precision(2); cout.setf(ios::fixed | ios::showpoint); cout << "Enter the amount of the sale: "; cin >> Amnt; Cashier.CalcSale(Amnt); cout << "The total of the sale is $"; cout << Cashier.GetTotal << endl; return 0; }

48 Program Output Enter the amount of the sale: The total of the sale is $132.50

49 Program Contents of SALE2.H #ifndef SALE2_H #define SALE2_H // Sale class declaration class Sale { private: float TaxRate; float Total; public: Sale(float Rate = 0.05) { TaxRate = Rate; } void CalcSale(float Cost) { Total = Cost + (Cost * TaxRate) }; float GetTotal(void) { return total; } }; #endif

50 Program continues Contents of main program, PR13-11.CPP #include #include "sale2.h“ using namespace std; int main() { Sale Cashier1;// Use default sales tax rate Sale Cashier2(0.06); // Use 6% sales tax rate float Amnt; cout.precision(2); cout.set(ios::fixed | ios::showpoint); cout << "Enter the amount of the sale: "; cin >> Amnt; Cashier1.CalcSale(Amnt); Cashier2.CalcSale(Amnt);

51 Program continues cout << "With a 0.05 sales tax rate, the total\n"; cout << "of the sale is $"; cout << Cashier1.GetTotal() << endl; cout << "With a 0.06 sales tax rate, the total\n"; cout << "of the sale is $"; cout << Cashier2.GetTotal() << endl; return 0; }

52 Program Output Enter the amount of the sale: With a 0.05 sales tax rate, the total of the sale is $ With a 0.06 sales tax rate, the total of the sale is $132.50