Chapter 12. 2 Objectives You should be able to describe: Object-Based Programming Classes Constructors Examples Common Programming Errors.

Slides:



Advertisements
Similar presentations
Classes & Objects INTRODUCTION : This chapter introduces classes ; explains data hiding, abstraction & encapsulation and shows how a class implements these.
Advertisements

C++ Programming: Program Design Including Data Structures, Third Edition Chapter 7: User-Defined Functions II.
What have we learned so far… Preprocessor directives Introduction to C++ Variable Declaration Display Messages on Screen Get Information from User Performed.
Chapter Objectives You should be able to describe: Assignment Pointers as Class Members Additional Class Features Common Programming Errors.
OOP Using Classes - I. Structures vs. Classes C-style structures –No “interface” If implementation changes, all programs using that struct must change.
Road Map Introduction to object oriented programming. Classes
 2006 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
Classes and Objects Systems Programming.
Object Oriented Programming.  OOP Basic Principles  C++ Classes  September 2004  John Edgar 22.
Chapter 6. 2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single Value Pass by Reference Variable Scope.
 2006 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
Chapter 11: Classes and Data Abstraction
Introduction to Classes and Objects CS-2303, C-Term Introduction to Classes and Objects CS-2303 System Programming Concepts (Slides include materials.
C++ Functions. 2 Agenda What is a function? What is a function? Types of C++ functions: Types of C++ functions: Standard functions Standard functions.
Review of C++ Programming Part II Sheng-Fang Huang.
 2003 Prentice Hall, Inc. All rights reserved. 1 Introduction to Classes and Objects Outline Introduction Classes, Objects, Member Functions and Data.
Chapter 12: Adding Functionality to Your Classes.
Chapter 6: Modularity Using Functions. In this chapter, you will learn about: – Function and parameter declarations – Returning a single value – Returning.
Chapter 11: Classes and Data Abstraction. C++ Programming: Program Design Including Data Structures, Fourth Edition2 Objectives In this chapter, you will:
Copyright © 2012 Pearson Education, Inc. Chapter 13: Introduction to Classes.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13: Introduction to Classes.
Chapter 13. Procedural programming vs OOP  Procedural programming focuses on accomplishing tasks (“verbs” are important).  Object-oriented programming.
Learners Support Publications Classes and Objects.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 7 Structured Data and Classes.
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
Chapter 11: Introduction to Classes. In this chapter you will learn about: – Classes – Basic class functions – Adding class functions – A case study involving.
Classes In C++ 1. What is a class Can make a new type in C++ by declaring a class. A class is an expanded concept of a data structure: instead of holding.
 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.
Visual C# 2012 for Programmers © by Pearson Education, Inc. All Rights Reserved.
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Chapter 4 Introduction to Classes, Objects, Methods and strings
1 Chapter Four Creating and Using Classes. 2 Objectives Learn about class concepts How to create a class from which objects can be instantiated Learn.
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.
Chapter 3 (B) 3.5 – 3.7.  Variables declared in a function definition’s body are known as local variables and can be used only from the line of their.
Structures and Classes Version 1.0. Topics Structures Classes Writing Structures & Classes Member Functions Class Diagrams.
2 Objectives You should be able to describe: Object-Based Programming Classes Constructors Examples Common Programming Errors.
Copyright © 2002 W. A. Tucker1 Chapter 10 Lecture Notes Bill Tucker Austin Community College COSC 1315.
Chapter 10: Classes and Data Abstraction. Objectives In this chapter, you will: Learn about classes Learn about private, protected, and public members.
CSci 162 Lecture 10 Martin van Bommel. Procedures vs Objects Procedural Programming –Centered on the procedures or actions that take place in a program.
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.
Structures Revisited what is an aggregate construct? What aggregate constructs have we studied? what is a structure? what is the keyword to define a structure?
Chapter 3 Functions. 2 Overview u 3.2 Using C++ functions  Passing arguments  Header files & libraries u Writing C++ functions  Prototype  Definition.
 2008 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 12: Classes and Data Abstraction.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 11: Classes and Data Abstraction.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 05: Classes and Data Abstraction.
CPS120: Introduction to Computer Science Lecture 16 Data Structures, OOP & Advanced Strings.
Slide 1 Chapter 6 Structures and Classes. Slide 2 Learning Objectives  Structures  Structure types  Structures as function arguments  Initializing.
Array in C++ / review. An array contains multiple objects of identical types stored sequentially in memory. The individual objects in an array, referred.
Chapter 10: Classes and Data Abstraction. Classes Object-oriented design (OOD): a problem solving methodology Objects: components of a solution Class:
Chapter 4: More Object Concepts. Objectives Understand blocks and scope Overload a method Avoid ambiguity Create and call constructors with parameters.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 13: Introduction to Classes.
Functions Skill Area 314 Part B. Lecture Overview Functions Function Prototypes Function Definitions Local Variables Global Variables Default Parameters.
Programming Fundamentals1 Chapter 7 INTRODUCTION TO CLASSES.
100 學年度碩士班新生暑期課程 程式設計 Object-Oriented Programming: Part I The Basics of Classes.
Defining Data Types in C++ Part 2: classes. Quick review of OOP Object: combination of: –data structures (describe object attributes) –functions (describe.
C# Programming: From Problem Analysis to Program Design1 Creating Your Own Classes C# Programming: From Problem Analysis to Program Design 4th Edition.
Classes in C++ By: Mr. Jacobs. Objectives  Explore the implications of permitting programmers to define their own data types and then present C++ mechanism.
Structures Revisited what is an aggregate construct? What aggregate constructs have we studied? what is a structure? what is the keyword to define a structure?
Chapter 3: Using Methods, Classes, and Objects
Structures Revisited what is an aggregate construct? What aggregate constructs have we studied? what is a structure? what is the keyword to define a structure?
Chapter 5 Classes.
Introduction to Classes
Introduction to Classes and Objects
Lecture 16 Oct 30, 02.
Lecture 8 Object Oriented Programming (OOP)
Classes and Objects Systems Programming.
Presentation transcript:

Chapter 12

2 Objectives You should be able to describe: Object-Based Programming Classes Constructors Examples Common Programming Errors

3 Object-Based Programming Object: Well suited to programming representation –Can be specified by two basic characteristics: State: How object appears at the moment Behavior: How object reacts to external inputs Example of an object: A rectangle –State: Shape and location Shape specified by length and width Location defined by corner positions –Behavior: Can be displayed on a screen, can change its size

4 Object-Based Programming(continued) Modeling: Defining object in terms of its state (attributes) and behavior –We choose only those attributes and behaviors that are of interest and relevant –Important to distinguish between attributes in model and values the attributes can have Class: Attributes and behavior of model Object (of a class): Comes into existence when specific values are assigned to attributes

5 Classes Class: Programmer-defined data type –Also called an abstract data type –Combination of data and their associated operations(capabilities) A C++ class provides mechanism for packaging data structure and functions together in self-contained unit

6 Class Construction Two components: –Declaration section: Declares data types and function for class –Implementation section: Defines functions whose prototypes were declared in declaration section Class members: –Data members (instance variables) –Member functions

7 Class Construction (continued)

8 Example of class declaration section: class Date { private: int month; int day; int year; public: Date(int = 7, int = 4, int = 2006); void setDate(int, int, int); void showDate(void); }; // this is a declaration - don't forget the semicolon

9 Class Construction (continued) Declaration section of class definition –Enclosed in braces –Includes variables (data members) and function declarations –Keywords private and public : Define access rights private : Class members ( month, day, and year ) can only be accessed using class functions –Enforces data security (data hiding) public : class members (functions Date(), setDate(), showDate() can be used outside of the class

10 Class Construction (continued) Constructor function: Initializes class data members with values –Constructor function ( Date() ) has same name as the class –Default values for constructor are 7, 4, 2006 –Constructor function has no return type (a requirement for this special function) Two remaining member functions: setDate() and showDate() declared as returning no value ( void )

11 Class Construction (continued)

12 Class Construction (continued)

13 Class Construction (continued) Implementation section of class definition –As shown in Figure 12.3 Except for constructor function, which has no return data type –Functions: Defined same as other C++ functions but also includes scope resolution operator To identify function as member of class –Implementation and declaration sections declare a class Variables of the class (objects) must still be defined

14 Class Construction (continued) Example: Creation of objects of Date class in main() function of Program 12.1 int main() { Date a, b, c(4,1,1998); // declare 3 objects b.setDate(12,25,2007); // assign values to b's // data members cout << endl; a.showDate(); // display object a's values b.showDate(); // display object b's values c.showDate(); // display object c's values cout << endl; return 0; }

15 Class Construction (continued) Description of main() : –Three objects of class Date defined –Constructor function: Date(), automatically called Memory allocated for each object Data members of the objects initialized –Object a : No parameters assigned therefore defaults are used: a.month = 7 a.day = 4 a.year = 2006

16 Class Construction (continued) Description of main() : (continued) –Notation to create objects: objectName.attributeName –Object b : No parameters assigned, same defaults used –Object c: Defined with arguments 4, 1, and 1998 Three arguments passed into constructor function resulting in initialization of c ’s data members as: c.month = 4 c.day = 1 c.year = 1998

17 Class Construction (continued) Description of main() : continued –All function of class Date are public, therefore b.setDate(12, 25, 2007) is a valid statement inside main() function Calls setDate() function with arguments 12, 25, 2007 –Important distinction: Data members of class Date are private The statement b.month = 12 is invalid in main()

18 Class Construction (continued) Description of main() : continued –Last three statements in main() call showDate() to operate on a, b, and c objects Calls result in output displayed by Program 12.1 The date is 07/04/06 The date is 12/25/07 The date is 04/01/98 –The statement cout << a; is invalid within main() cout does not know how to handle an object of class Date

19 Terminology Class: Programmer-defined data type Objects (instances): Created from classes –Relation of objects to classes similar to relation of variables to C++ built-in data types int a; // a is a variable of type integer Date a; // a is an object of class Date –Instantiation: Process of creating a new object Creates new set of data members belonging to new object: Determines the object’s state

20 Terminology (continued) Interface: Part of class declaration section –Includes: Class’s public member function declarations Supporting comments Implementation: Consists of: –Implementation section of class definition Private member functions Public member functions –Private data members from class declaration section

21 Terminology (continued) Information hiding: –Internal construction of class is not relevant to programmer who just wishes to use class –Implementation can and should be hidden from all users Ensures that class is not altered or compromised in any way –Information needed by programmer to use class is provided by interface

22 Constructors A function that has same name as its class –Multiple constructors can be defined for a class Each must be distinguishable by the number and types of its parameters This is an example of function overloading –If no constructor function is written, compiler assigns default constructor Purpose: Initialize a new object’s data members –May perform other tasks

23 Constructors (continued) Format: Same name as class to which it belongs –Must have no return type (not even void ) Default constructor: Does not require arguments when called –Two cases: No parameters declared –As with compiler-supplied default constructor Arguments have already been given default values in valid prototype statement: –Date (int = 7, int = 4, int = 2006) –Declaration Date a; initializes the a object with default values: 7, 4, 2006

24 Constructors (continued) Sample class declaration: class Date { private: int month, day, year; public: void setDate(int, int, int); void showDate() };

25 Constructors (continued) No constructor has been included –Compiler assigns a do-nothing default constructor equivalent to: Date (void) { } This constructor expects no parameters, and has an empty body

26 Constructors (continued)

27 Constructors (continued) Use of constructor in main() - Program 12.2 int main() { Date a; // declare an object Date b; // declare an object Date c (4,1,2007); // declare an object return 0; }

28 Constructors (continued) Output from Program 12.2 Created a new data object with data values 7, 4, 2006 Created a new data object with data values 4, 1, 2007

29 Destructors Counterpart of constructor function –Has same name as constructor Preceded with a tilde ( ~ ) –Date class constructor: ~Date() Default destructor –Do-nothing destructor provided by C++ compiler in absence of explicit destructor Can only be one destructor per class –Destructors take no values and return no arguments

30 Other Functions Accessor function: Nonconstructor member function –Accesses a class’s private data members –Example: showDate() in the Date class –Complete set of accessor functions should always be provided during class construction

31 Other Functions (continued) Mutator function: Nonconstructor member function –Changes an object’s data members After object initialized by a constructor method Class can have multiple mutators

32 Arrays of Objects Declaring array of objects same as declaring array of C++ built-in type –Example: Date theDate[5]; Creates five objects named theDate[0] through theDate[4] Member functions for theDate array objects are called using: objectName.functionName

33 Examples Create class from which room type objects can be constructed Solution: –One type of object –rectangular shaped room Represented by two double precision variables: length and width –Functions needed: Constructor: To specify an actual length and width value when a room is instantiated

34 Examples (continued) –Functions needed: (continued) Accessor: To display room’s length and width Mutator : To change above values Function to calculate room’s floor area from its length and width values

35 Common Programming Errors Failing to terminate class declaration with semicolon Including return type with constructor’s prototype Failing to include return type with other function’s prototype Using same name for data member as for member function

36 Common Programming Errors (continued) Defining more than one default constructor for class Forgetting to include class name and scope operator, ::, in the header line of all member functions defined in class implementation section All above errors will result in a compiler error message

Standard Library classes string fstream ifstream ofstream 37

One example The ANSI string class implements a first- class character string data type that avoids many problems associated with simple character arrays ("C-style strings"). You can define a string object very simply, as shown in the following example:

#include using namespace std; int main() { string first_name = "Bjarne"; // char first_name[]; string last_name; last_name = "Stroustrup"; string names = first_name + " " + last_name; cout << names << endl; // you cannot do this for C-style strings, but you should use strcat() function. names = last_name + ", " + first_name; // this is powerful. cout << names << endl; return 0; }

40 Summary Class: Programmer defined data type –Class definition: Includes declaration and implementation sections –Class members: Variables and functions Objects: Same relation to class as variables do to C++ built-in data types private keyword: private class members can only be accessed by member functions

41 Summary (continued) Class functions: May be written inline or defined in class implementation section Constructor function: Automatically called each time an object is declared –If none defined, compiler will supply default constructor Default constructor: Constructor that does not require arguments –One default constructor per class

42 Summary (continued) Objects created using either C or C++ style of declaration: –C++: Date a, b, c(12, 25, 2002) –C: Date c = Date(12,25,2006) Constructors may be overloaded If constructor is defined, user-defined default constructor should be written –Compiler will not provide it Destructor: Called when object goes out of scope –Takes no arguments, returns no value