Chapter 7 Constructors and Other Tools Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Slides:



Advertisements
Similar presentations
Copyright © 2002 Pearson Education, Inc. Slide 1.
Advertisements

Copyright © 2002 Pearson Education, Inc. Slide 1.
Chapter 7 Constructors and Other Tools. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 7-2 Learning Objectives Constructors Definitions.
Chapter 6 Structures and Classes. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 6-2 Learning Objectives Structures Structure types Structures.
Chapter 8 Operator Overloading, Friends, and References.
Generics and the ArrayList Class
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 7: User-Defined Functions II.
Chapter 14: Overloading and Templates
Slides prepared by Rose Williams, Binghamton University Chapter 14 Generics and the ArrayList Class.
Chapter 16 Templates. Copyright © 2006 Pearson Addison-Wesley. All rights reserved Learning Objectives  Function Templates  Syntax, defining 
Copyright © 2008 Pearson Addison-Wesley. All rights reserved. Chapter 9 Pointers and Dynamic Arrays.
Slides prepared by Rose Williams, Binghamton University Chapter 14 Generics and the ArrayList Class.
Chapter 6. 2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single Value Pass by Reference Variable Scope.
Chapter 14 Generics and the ArrayList Class Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
CSIS 123A Lecture 12 Templates. Introduction  C++ templates  Allow very ‘general’ definitions for functions and classes  Type names are ‘parameters’
Data Structures Using C++ 2E
Chapter 6 Structures and Classes. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 6-2 Structures  2 nd aggregate data type: struct  Recall:
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single.
Chapter 8 Friends and Overloaded Operators. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. Slide 2 Overview Friend Function (8.1) Overloading.
More C++ Classes Systems Programming. C++ Classes  Preprocessor Wrapper  Time Class Case Study –Two versions (old and new)  Class Scope and Assessing.
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.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 13 Introduction to Classes.
Chapter 14 Generics and the ArrayList Class Slides prepared by Rose Williams, Binghamton University Copyright © 2008 Pearson Addison-Wesley. All rights.
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 8 Operator Overloading, Friends, and References.
Slide 1 Chapter 10 Pointers and Dynamic Arrays. Slide 2 Learning Objectives  Pointers  Pointer variables  Memory management  Dynamic Arrays  Creating.
CSC241 Object-Oriented Programming (OOP) Lecture No. 6.
Slide 1 Chapter 8 Operator Overloading, Friends, and References.
Pointers and Dynamic Arrays
Aug 9, CMSC 202 ArrayList. Aug 9, What’s an Array List ArrayList is  a class in the standard Java libraries that can hold any type of object.
Lecture 3 Classes, Structs, Enums Passing by reference and value Arrays.
1 Announcements Note from admins: Edit.cshrc.solaris instead of.tcshrc Note from admins: Do not use delta.ece.
CPSC 252 The Big Three Page 1 The “Big Three” Every class that has data members pointing to dynamically allocated memory must implement these three methods:
1 Class Features and Design Issues COSC 1567 C++ Programming Lecture 5.
Chapter 4&5 Defining Classes Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
Chapter 5 Arrays. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 5-2 Learning Objectives  Introduction to Arrays  Declaring and referencing.
A FIRST BOOK OF C++ CHAPTER 6 MODULARITY USING FUNCTIONS.
By Joaquin Vila Prepared by Sally Scott ACS 168 Problem Solving Using the Computer Week 13 More on Classes Chapter 8 Week 13 More on Classes Chapter 8.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 15: Overloading and Templates.
CMSC 202 Advanced Section Classes and Objects: Object Creation and Constructors.
Functions Math library functions Function definition Function invocation Argument passing Scope of an variable Programming 1 DCT 1033.
Friend Functions.  An ordinary function that is given special access to the private members of a class  NOT a member function of the class  Prototype.
Programming Fundamentals. Topics to be covered Today Recursion Inline Functions Scope and Storage Class A simple class Constructor Destructor.
Copyright 2006 Pearson Addison-Wesley, 2008, 2013 Joey Paquet 2-1 Concordia University Department of Computer Science and Software Engineering COMP345.
CSE 1201 Object Oriented Programming ArrayList 1.
Slide 1 Chapter 6 Structures and Classes. Slide 2 Learning Objectives  Structures  Structure types  Structures as function arguments  Initializing.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 9 Pointers and Dynamic Arrays.
Copyright © 2014 Pearson Addison-Wesley. All rights reserved. Chapter 9 Pointers and Dynamic Arrays.
Chapter 4: More Object Concepts. Objectives Understand blocks and scope Overload a method Avoid ambiguity Create and call constructors with parameters.
Glenn Stevenson CSIS 113A MSJC CSIS 123A Lecture 3 Vectors.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 13: Introduction to Classes.
Chapter 16 Templates Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 6-1 Learning Objectives  Classes  Constructors  Principles of OOP  Class type member.
Copyright 2006 Pearson Addison-Wesley, 2008, 2012 Joey Paquet 1 Concordia University Department of Computer Science and Software Engineering SOEN6441 –
Chapter 5 Arrays Copyright © 2016 Pearson, Inc. All rights reserved.
100 學年度碩士班新生暑期課程 程式設計 Object-Oriented Programming: Part I The Basics of Classes.
COMP 3000 Object-Oriented Programming for Engineers and Scientists Operator Overloading Dr. Xiao Qin Auburn University
Defining Data Types in C++ Part 2: classes. Quick review of OOP Object: combination of: –data structures (describe object attributes) –functions (describe.
Copyright © 2002 Pearson Education, Inc. Slide 1.
Copyright © 2002 Pearson Education, Inc. Slide 1.
COMP 53 – Week Two Operator Overloading.
Pointer to an Object Can define a pointer to an object:
Auburn University COMP 3000 Object-Oriented Programming for Engineers and Scientists Constructors and Other Tools Dr.
Learning Objectives Classes Constructors Principles of OOP
Constructors and Other Tools
Operator Overloading, Friends, and References
8.3 Vectors Copyright © 2008 Pearson Addison-Wesley. All rights reserved. 1.
Presentation transcript:

Chapter 7 Constructors and Other Tools Copyright © 2010 Pearson Addison-Wesley. All rights reserved

Learning Objectives Constructors – Definitions – Calling More Tools – const parameter modifier – Inline functions – Static member data Vectors – Introduction to vector class 7-2 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructors Initialization of objects – Initialize some or all member variables – Other actions possible as well A special kind of member function – Automatically called when object declared Very useful tool – Key principle of OOP 7-3 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructor Definitions Constructors defined like any member function – Except: 1.Must have the same name as class 2.Cannot return a value; not even void! 7-4 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructor Definition Example Class definition with constructor: – class DayOfYear { public: DayOfYear(int monthValue, int dayValue); //Constructor initializes month & day void input(); void output(); … private: int month; int day; } 7-5 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructor Notes Notice name of constructor: DayOfYear – Same name as class itself! Constructor declaration has no return-type – Not even void! Constructor in public section – It’s called when objects are declared – If private, could never declare objects! 7-6 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Calling Constructors Declare objects: DayOfYear date1(7, 4), date2(5, 5); Objects are created here – Constructor is called – Values in parens passed as arguments to constructor – Member variables month, day initialized: date1.month  7date2.month  5 date1.day  4date2.day  Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructor Equivalency Consider: – DayOfYear date1, date2; date1.DayOfYear(7, 4);// ILLEGAL! date2.DayOfYear(5, 5);// ILLEGAL! Seemingly OK… – CANNOT call constructors like other member functions! 7-8 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructor Code Constructor definition is like all other member functions: DayOfYear::DayOfYear(int monthValue, int dayValue) { month = monthValue; day = dayValue; } Note same name around :: – Clearly identifies a constructor Note no return type – Just as in class definition 7-9 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Alternative Definition Previous definition equivalent to: DayOfYear::DayOfYear(int monthValue, int dayValue) : month(monthValue), day(dayValue)  { } Third line called "Initialization Section" Body left empty Preferable definition version 7-10 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructor Additional Purpose Not just initialize data Body doesn’t have to be empty – In initializer version Validate the data! – Ensure only appropriate data is assigned to class private member variables – Powerful OOP principle 7-11 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Overloaded Constructors Can overload constructors just like other functions Recall: a signature consists of: – Name of function – Parameter list Provide constructors for all possible argument-lists – Particularly "how many" 7-12 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class with Constructors Example: Display 7.1 Class with Constructors (1 of 3) 7-13Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class with Constructors Example: Display 7.1 Class with Constructors (2 of 3) 7-14Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class with Constructors Example: Display 7.1 Class with Constructors (3 of 3) 7-15Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Constructor with No Arguments Can be confusing Standard functions with no arguments: – Called with syntax: callMyFunction(); Including empty parentheses Object declarations with no "initializers": – DayOfYear date1;// This way! – DayOfYear date(); // NO! What is this really? Compiler sees a function declaration/prototype! Yes! Look closely! 7-16 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Explicit Constructor Calls Can also call constructor AGAIN – After object declared Recall: constructor was automatically called then – Can call via object’s name; standard member function call Convenient method of setting member variables Method quite different from standard member function call 7-17 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Explicit Constructor Call Example Such a call returns "anonymous object" – Which can then be assigned – In Action: DayOfYear holiday(7, 4); Constructor called at object’s declaration Now to "re-initialize": holiday = DayOfYear(5, 5); – Explicit constructor call – Returns new "anonymous object" – Assigned back to current object 7-18 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Default Constructor Defined as: constructor w/ no arguments One should always be defined Auto-Generated? – Yes & No – If no constructors AT ALL are defined  Yes – If any constructors are defined  No If no default constructor: – Cannot declare: MyClass myObject; With no initializers 7-19 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class Type Member Variables Class member variables can be any type – Including objects of other classes! – Type of class relationship Powerful OOP principle Need special notation for constructors – So they can call "back" to member object’s constructor 7-20 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class Member Variable Example: Display 7.3 A Class Member Variable (1 of 5) 7-21Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class Member Variable Example: Display 7.3 A Class Member Variable (2 of 5) 7-22Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class Member Variable Example: Display 7.3 A Class Member Variable (3 of 5) 7-23Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class Member Variable Example: Display 7.3 A Class Member Variable (4 of 5) 7-24Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Class Member Variable Example: Display 7.3 A Class Member Variable (5 of 5) 7-25Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Parameter Passing Methods Efficiency of parameter passing – Call-by-value Requires copy be made  Overhead – Call-by-reference Placeholder for actual argument Most efficient method – Negligible difference for simple types – For class types  clear advantage Call-by-reference desirable – Especially for "large" data, like class types 7-26 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

The const Parameter Modifier Large data types (typically classes) – Desirable to use pass-by-reference – Even if function will not make modifications Protect argument – Use constant parameter Also called constant call-by-reference parameter – Place keyword const before type – Makes parameter "read-only" – Attempts to modify result in compiler error 7-27 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Use of const All-or-nothing If no need for function modifications – Protect parameter with const – Protect ALL such parameters This includes class member function parameters 7-28 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Comparisons of Three Uses of const const double pi = ; void display(const Student &a); class Student { public: void show() const; … }; (See more examples from Display 7.4)

Inline Functions For non-member functions: – Use keyword inline in function declaration and function heading For class member functions: – Place implementation (code) for function IN class definition  automatically inline Use for very short functions only Code actually inserted in place of call – Eliminates overhead – More efficient, but only when short! 7-30 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Example of Inline Function const double pi= ; inline double calc_area(double r); double calc_area(double r) { return pi*r*r; } int main() { double x, a; … a = calc_area(x); }

Inline Member Functions Member function definitions – Typically defined separately, in different file – Can be defined IN class definition Makes function "in-line" Again: use for very short functions only More efficient – If too long  actually less efficient! 7-32 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Example of Inline Member Function class Student { public: int getScore(void) { return score; } … private: int score; … }; (See Display 7.5 for more examples)

Static Members Static member variables – All objects of class "share" one copy – One object changes it  all see change Useful for "tracking" – How often a member function is called – How many objects exist at given time Place keyword static before type 7-34 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Static vs. Nonstatic members class A { public: private: static A a1; public: private: A an; public: private: static A a2; public: private: static ONLY one copy

Static Functions Member functions can be static – If no access to object data needed – And still "must" be member of the class – Make it a static function Can then be called outside class – From non-class objects: E.g., Server::getTurn(); – As well as via class objects Standard method: myObject.getTurn(); Can only use static data, functions! 7-36 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Example of Static Members class Course { public: Course::Course() { num_courses++; } static int getNumCourses() { return num_courses; } … private: static int num_courses; int num_students; int ID; … }; int Course::num_courses = 0; … int main(void) { Course math, biology, physics; … cout << “The number of courses are: “ << Course::getNumCourses(); … }

Static Members Example: Display 7.6 Static Members (1 of 4) 7-38Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Static Members Example: Display 7.6 Static Members (2 of 4) 7-39Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Static Members Example: Display 7.6 Static Members (3 of 4) 7-40Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Static Members Example: Display 7.6 Static Members (4 of 4) 7-41Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Static Global vs. Static Local Variables static int x; … int f() { static int x; … }

Vectors Vector Introduction – Recall: arrays are fixed size – Vectors: "arrays that grow and shrink" During program execution – Formed from Standard Template Library (STL) Using template class 7-43 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Vector Basics Similar to array: – Has base type – Stores collection of base type values Declared differently: – Syntax: vector Indicates template class Any type can be "plugged in" to Base_Type Produces "new" class for vectors with that type – Example declaration: vector v; 7-44 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Vector Use vector v; – "v is vector of type int" – Calls class default constructor Empty vector object created Indexed like arrays for access But to add elements: – Must call member function push_back Member function size() – Returns current number of elements 7-45 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Vector Example: Display 7.7 Using a Vector (1 of 2) 7-46Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Vector Example: Display 7.7 Using a Vector (2 of 2) 7-47Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Vector Efficiency Member function capacity() – Returns memory currently allocated – Not same as size() – Capacity typically > size Automatically increased as needed If efficiency critical: – Can set behaviors manually v.reserve(32); //sets capacity to 32 v.reserve(v.size()+10); //sets capacity to 10 more than size 7-48 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Summary 1 Constructors: automatic initialization of class data – Called when objects are declared – Constructor has same name as class Default constructor has no parameters – Should always be defined Class member variables – Can be objects of other classes Require initialization-section 7-49 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.

Summary 2 Constant call-by-reference parameters – More efficient than call-by-value Can inline very short function definitions – Can improve efficiency Static member variables – Shared by all objects of a class Vector classes – Like: "arrays that grow and shrink" 7-50 Copyright © 2010 Pearson Addison-Wesley. All rights reserved.