Copyright © 2002 Pearson Education, Inc. Slide 1.

Slides:



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

Copyright © 2002 Pearson Education, Inc. Slide 1.
Copyright © 2002 Pearson Education, Inc. Slide 1.
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 8 Operator Overloading, Friends, and References.
Generics and the ArrayList Class
Chapter 14: Overloading and Templates
Slides prepared by Rose Williams, Binghamton University Chapter 14 Generics and the ArrayList Class.
Copyright © 2002 Pearson Education, Inc. Slide 1.
Chapter 16 Templates. Copyright © 2006 Pearson Addison-Wesley. All rights reserved Learning Objectives  Function Templates  Syntax, defining 
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.
Introduction to Classes and Objects CS-2303, C-Term Introduction to Classes and Objects CS-2303 System Programming Concepts (Slides include materials.
1 Classes and Objects. 2 Outlines Class Definitions and Objects Member Functions Data Members –Get and Set functions –Constructors.
CSIS 123A Lecture 12 Templates. Introduction  C++ templates  Allow very ‘general’ definitions for functions and classes  Type names are ‘parameters’
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.
Lecture Set 11 Creating and Using Classes Part B – Class Features – Constructors, Methods, Fields, Properties, Shared Data.
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.
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.
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.
Copyright © 2002 Pearson Education, Inc. Slide 1.
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.
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.
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.
CSE 1201 Object Oriented Programming ArrayList 1.
C/C++ Basics (V) Structures and Classes Berlin Chen 2003 Textbook: 1. Walter Savitch, “Absolute C++,” Addison Wesley, 2002 開發代理 2. Walter Savitch, “Problem.
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 7 Constructors and Other Tools Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
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 18 Introduction to Custom Templates C++ How to Program, 9/e ©2016 by Pearson Education, Inc., Hoboken, NJ. All Rights Reserved. Instructor Note:
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.
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.
General Updates ● The Wiki is now back up to date. I have also added a working link to the lecture slides online. ● Whenever you notice something missing.
COMP 53 – Week Two Operator Overloading.
Friend Class Friend Class A friend class can access private and protected members of other class in which it is declared as friend. It is sometimes useful.
Auburn University COMP 3000 Object-Oriented Programming for Engineers and Scientists Constructors and Other Tools Dr.
COMP 51 Week Twelve Classes.
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.
CMSC 202 Constructors Version 9/10.
Introduction to Classes and Objects
Presentation transcript:

Copyright © 2002 Pearson Education, Inc. Slide 1

Copyright © 2002 Pearson Education, Inc. Slide 2 Chapter 7 Created by Frederick H. Colclough, Colorado Technical University Constructors and Other Tools

Copyright © 2002 Pearson Education, Inc. Slide 3 Learning Objectives  Constructors  Definitions  Calling  More Tools  const parameter modifier  Inline functions  Static member data  Vectors  Introduction to vector class

Copyright © 2002 Pearson Education, Inc. Slide 4 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

Copyright © 2002 Pearson Education, Inc. Slide 5 Constructor Definitions  Constructors defined like any member function  Except: 1. Must have same name as class 2. Cannot return a value; not even void!

Copyright © 2002 Pearson Education, Inc. Slide 6 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; }

Copyright © 2002 Pearson Education, Inc. Slide 7 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!

Copyright © 2002 Pearson Education, Inc. Slide 8 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.dat  4date2.day  5

Copyright © 2002 Pearson Education, Inc. Slide 9 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!

Copyright © 2002 Pearson Education, Inc. Slide 10 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

Copyright © 2002 Pearson Education, Inc. Slide 11 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

Copyright © 2002 Pearson Education, Inc. Slide 12 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

Copyright © 2002 Pearson Education, Inc. Slide 13 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’

Copyright © 2002 Pearson Education, Inc. Slide 14 Class with Constructors Example Display 7.1, page 262

Copyright © 2002 Pearson Education, Inc. Slide 15 Class with Constructors Example Con’t Display 7.1, page 262

Copyright © 2002 Pearson Education, Inc. Slide 16 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!

Copyright © 2002 Pearson Education, Inc. Slide 17 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

Copyright © 2002 Pearson Education, Inc. Slide 18 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

Copyright © 2002 Pearson Education, Inc. Slide 19 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

Copyright © 2002 Pearson Education, Inc. Slide 20 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

Copyright © 2002 Pearson Education, Inc. Slide 21 Class Member Variable Example Display 7.3, page 275

Copyright © 2002 Pearson Education, Inc. Slide 22 Class Member Variable Example Cont’d Display 7.3, page 276

Copyright © 2002 Pearson Education, Inc. Slide 23 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

Copyright © 2002 Pearson Education, Inc. Slide 24 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

Copyright © 2002 Pearson Education, Inc. Slide 25 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

Copyright © 2002 Pearson Education, Inc. Slide 26 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!

Copyright © 2002 Pearson Education, Inc. Slide 27 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!

Copyright © 2002 Pearson Education, Inc. Slide 28 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

Copyright © 2002 Pearson Education, Inc. Slide 29 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!

Copyright © 2002 Pearson Education, Inc. Slide 30 Static Members Example Display 7.6, page 287

Copyright © 2002 Pearson Education, Inc. Slide 31 Static Members Example Cont’d Display 7.6, page 287

Copyright © 2002 Pearson Education, Inc. Slide 32 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

Copyright © 2002 Pearson Education, Inc. Slide 33 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;

Copyright © 2002 Pearson Education, Inc. Slide 34 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

Copyright © 2002 Pearson Education, Inc. Slide 35 Vector Example Display 7.7, page 292

Copyright © 2002 Pearson Education, Inc. Slide 36 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

Copyright © 2002 Pearson Education, Inc. Slide 37 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

Copyright © 2002 Pearson Education, Inc. Slide 38 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’