Evaluation Issues in Generic Programming with Inheritance and Templates in C++
|
|
- Brittany Charles
- 6 years ago
- Views:
Transcription
1 Evaluation Issues in Generic Programming with Inheritance and Templates in C++ Emil Vassev, Joey Paquet Department of Computer Science and Software Engineering Concordia University Montreal, Quebec, H3G 1M8, Canada {i_vassev, Abstract Generic Programming is a concept and style of programming that increases the correctness and reusability of the source code. In this paper, we draw upon our experience and the experience of other researchers in this field to discuss the advantages and disadvantages of the two major models of generic programming - inheritance and templates. This article reveals some practical cases when the use of the two models is appropriate and when not recommended. Finally, the article concludes with an example of natural coexistence of the two models and demonstrates how they can complement each other. Keywords: Generic Programming, Templates, Inheritance, OOP, Class, Function 1. Introduction Writing generic code is related to making the code reusable and clear, hence it improves the programming efficiency. In C++, there are two major programming models that allow code reuse. Code reuse is possible through inheritance and templates. The main difference lies in how the reuse happens. Whereas in inheritance the code reuse happens across inherited classes, in templates we have a sort of macro substitution of the type name to generate code for that type name. Whereas the main policy provided by inheritance is that the class methods (also called member functions) should be written only once and propagated via inheritance, in programming with templates we follow the principle that algorithms should be written only once and not duplicated across different types [2]. 2. Generic Programming with Inheritance Inheritance is one of the cornerstones of OOP [3]. Inheritance allows classes to inherit class members from other classes. The advantage is that related classes could be clearly expressed, thus avoiding cluttering of programs through reuse of code [4]. By using inheritance, we can arrange classes having common features into a class hierarchy. Class hierarchy specifies a certain order among the similar classes - classes declared lower in the hierarchy inherit features (data and function members) from classes declared higher in the hierarchy. The general idea is to make classes being like another [3] through code reuse. For example, in [5] a star system has the features of a space system, due to the fact the first inherits the last. In addition, a star system maintains a vector of comets and asteroids, those not being maintained by the space system. Hence, the star system is like the space system, which is the base class (also called super class) and the star system is the derived class (also called sub class). Kinds of inheritance. As we have already specified, classes can inherit data and functions. Inheriting functions can be inheritance with
2 declarations of the function only, or inheritance with declarations and definitions of the functions. We refer to the first case as interface inheritance and the second case as implementation inheritance [1]. In addition, C++ provides three kinds of access inheritance public, protected and private, those restricting in some sense the access to the inherited members. Multiple inheritance is another controversial C++ feature, which allows a class to inherit more than one base class. This could result in complicated inheritance relationships. Ambiguity is one of these complications [6]. For example potential ambiguity is when we have two base classes A and B and both declare a public or protected data member age. Then if C inherits A and B it will have two data members called age, A::age and B::age. Then operation as: C* pc; pc->age; is illegal since it is ambiguous. We resolve the problem by explicit qualification: pc-> A::age. Concepts for generic programming. Generic programming with inheritance relies on two principle concepts: virtual functions and inheritance polymorphism. These two features of inheritance [3] provide a mechanism for providing generic functions that: are defined in the base class in a class hierarchy; will work on all the objects instantiated from derived classes; will have possibly a different behavior for different derived classes. In [1] Grogono defines the virtual functions as an inheritance feature that opens up the possibility of redefinition in derived classes, this leading to polymorphic behaviour. Also in [1] Grogono defines a particular set of circumstances for inheritance polymorphism defined simply as class-dependent behavior. Hence, we draw a conclusion that polymorphism is observed when a derived class object is accessed via a pointer or reference to a base class object and the base class defines a virtual function that is predefined in the derived class. For example in [5] the base class SpaceEntity defines a virtual functions show() that is predefined in all the derived classes. Hence, the polymorphism takes place when we call show() defined in a derived class via a pointer to SpaceEntity class. This technique is also called dynamic binding. In dynamic binding, the determination of which function should be called is not made until run-time [4], as opposed to static binding that happens at compile time [3]. Virtual functions also have the ability to be defined but not declared in a class pure virtual functions. Inheriting a pure virtual function results in interface inheritance (see kinds of inheritance). This introduces a special type of class called abstract class [1]. An abstract class is a class with at least one pure virtual function. Examples for generic programming with inheritance. In [3] Koenig et al. demonstrate how to obtain a value without knowing the object s type. They create a generic inheritance function that compares the grades of two Core objects, where Core is a base class defining the virtual grade() function: bool compare_grades(const Core& c1, const Core& c2) { return c1.grade() < c2.grade(); } This function works for all the instances of Core class as well as for all the instances of Grad class, which class inherits Core class. In the last case, we make polymorphic calls on the grade() function. In [1] Grogono presents an example of generic tree traversal routines one using generic programming with templates and one using generic programming with inheritance. For the inheritance solution to work, the classes must be derived from the same base class and the generic traversal function must have a parameter of type pointer-to-base-class [1]. In contrary, the template solution does not require any dependency between the classes, but the presence of the appropriate functions. Concerning the binding process the difference between the two solutions is that whereas the inheritance solution finds the appropriate derived class at run-time, the template solution matches the template parameters with the appropriate classes at compile time. Hence, each solution has its advantages since the early binding provides high efficiency and late binding
3 provides high flexibility. In [1] Grogono demonstrates when the inheritance solution is more efficient in case we need more run-time flexibility. Another example for generic programming with inheritance is the following code: Project* getbigger(project* pp1, Project* pp2) { Project *prj; }; if (*pp1 > *pp2) prj = pp1->clone(); else prj = pp2->clone(); return prj; This function compares two projects and creates a project clone of the bigger one. The Project class is the base class in the project hierarchy and the function getbigger() works on any class derived from Project class, since the parameters are pointers to the base class. Operator overloading. The example above reveals another aspect of generic programming operator overloading. In order to make our code generic it is often necessary to overload the standard C++ operators like <, >, ==, <<, >>, +, - etc. Both generic models inheritance and templates rely on operator overloading. Operator overloading is just like function overloading but with some restrictions. An operator function must be a member function or take at least one argument of a class (reference) and cannot have default arguments. Given the overall analysis above and the following examples, we conclude that generic programming with inheritance is appropriate when the generic objects are related through a hierarchical inheritance structure and these objects are open to polymorphic behavior. 3. Generic Programming with Templates Whereas the generic programming with inheritance is object oriented programming, the generic programming with templates is not. In fact, according to Joshua Juran in [2], these two programming models are by no means incompatible. Where does the advantage of using templates lie then? The answer is the nature of templates. Templates establish a style of generic programming that concentrates on the single, typesafe definition of an algorithm that works across any type [2] supporting the operations required by the algorithm. Kinds of templates. C++ provides two kinds of templates: class templates and function templates. Function templates allow writing generic functions that can be used with arbitrary types. For example, we may have searching and sorting routines which can be used with any arbitrary type. The Standard Template Library (STL) generic algorithms have been implemented as function templates, and the containers have been implemented as class templates. Following the rule that templates are not restricted to types, Grogono talks in [1] about non-type parameters template functions. For example, the following template function falls in this category: template<int Max> int randint() { }; and it is called like this: randint<6>(); Here the argument can be only an integer constant. There are some complications coming with the use of templates. In [1] Grogono reveals four possible complications as following: a) Compiling template code. With templates in order to compile, most of the C++ platforms require to put together the declaration and definition code in one header file. This is not a restriction of the concept of templates itself, but rather restriction of the C++ compiler. b) Template return types. There are some restrictions for template functions with return type template parameter. Such functions should have at least one parameter typed with the return type template parameter [1].
4 template <typename T> T f(const T& param) { }; c) Specialization and function overloading. With template specialization we redefine the default template implementation to handle a particular type in a different way. When we need some special definition for a general template we have a specialized version for this template (class or function), i.e. we specialize the template parameters (some or all of them) with special types. We can specialize class templates partially or fully. For example, the class template template <typename A,typenameB> class X { } can be fully specialized to arrive at: template <> class X<int, int> { } or can be partially specialized to arrive at: template <typename A,typenameB> class X<A, int> { } The function templates can only be fully specialized. The restriction is coming from the fact the function templates are C++ functions and when having the same name they overload. Hence, the function template template< typename A> void f( A, A ); and its partially specialized version template< typename A> void f( A, int ); are in fact two distinct function templates that overload. In [7] Sutter demonstrates some problems when specializing function templates. d) Default arguments. Templates allow default arguments: template <class A = Star, class B=Planet> class SpaceSystem However, definition like the following is not allowed: SpaceSystem s; We must use the brackets < > even though we intend to use the default values: SpaceSystem s < >; Where are the templates appropriate? One of the key strengths of generic programming with templates lies in the paradigm that an algorithm and a user-defined type, each developed without knowledge of the other, can nevertheless be combined [2]. The use of templates reduces the redundancy in the source code but does not affect the functionality of the code. In C++ without templates, in order to make our functions generic, we generate overloaded versions for the various data types. For example we will have multiple versions of the max(x,y) function, which function returns the larger of x and y. However, using templates provides much simpler way to do this. With templates, we define only one version of our function, i.e. we define the algorithm. The use of function templates is not appropriate in case we expect the compiler to convert the function arguments implicitly for us. The generic template functions prevent implicit conversions in some cases. In [1] Grogono demonstrates the problem arising with the max() function when the last is called as following: max (1, 3.4) This call is not possible because the compiler does not convert argument 1 from integer to double. In order to solve the problem we can explicitly cast one of the arguments: max (static_cast<double>(1), 3.4) Templates are very useful when implementing generic constructs like vectors, stacks, lists, queues etc, which constructs can be used with any arbitrary type. For example, we can easily implement a generic template class Queue<T> that stores any type of objects, integral types or even pointers. One
5 of the most famous STL template class is the vector class. In [5] the base class SpaceSystem maintains two sets one of gravity objects and one of satellites. Those sets are implemented as vectors of pointer objects: std::vector<a*> gravityobjects; std::vector<b*> satellites; Generally, the use of class templates is always appropriate when we want our class to be independent on the type of object it is intended to manage. In [3] Koenig and Moo demonstrate a generic template class called handle that encapsulates a handle behavior, i.e. it refers to an object and when we destroy the handle object it will destroy the associated object as well. The use of templates requires knowledge about the nature of the template arguments. It is extremely important to ensure that template arguments incorporate the behavior required by the template algorithm. For example, a class passed as a template parameter defines a function doit() if such function is called within the template body: template<class T> void executetask(t task) { task.doit(); }; C++ templates are a powerful tool for creating reusable code and they become even more powerful by relying on predefined library like the STL and Boost [1]. The STL provides containers, iterators, and algorithms. Boost includes libraries for threading and smart pointers. Smart pointers are reference counting pointer objects useful for deallocating memory. 4. Conclusion Generic programming with inheritance and generic programming with templates provide different approaches in making our code generic. A better approach or maybe better generic programming model will be the coexistence of these two models. For the development of Universum [5], we apply both generic programming models in an attempt to achieve a level of generic programming that is not possible if you stick only with one of them. The result is a coexistence of templates and inheritance where each working in its most appropriate area. We used templates for object containers and for the base SpaceSystem class. The SpaceSystem class is an abstract template class. It defines all the common functionality for all the possible space systems star system, planet system, galaxy and universe. By providing different template arguments, we specify different set of data and common functionality for each one, those preventing from redundancy coming with the creation of multiple base classes. By providing different definitions for the virtual member functions in the derived classes, we provide a polymorphic behavior for those functions. Therefore, we demonstrated the two generic programming models together in action, complementing each other for the common goal improving the generic programming. References [1] P. Grogono, Software Development with C++, Lecture Notes, Concordia University, Quebec, Canada, 2005 [2] J. Juran, L.F. Bic et al. Using Generic Programming Techniques in C++ with the Mac OS Toolbox, The Advanced Developers Hands on Conference, 2002, rogramming.pdf [3] A. Koenig, B. E. Moo, Accelerated C++, Pearson Education Inc., Boston, 2000 [4] Fr. Coenen, Inheritance, Lecture Notes, University of Liverpool, op3.html [5] E. Vassev, Universum, COMP 6441 Term Project, Concordia University, Quebec, Canada, fall 2005 [6] Bjarne Stroustrup, Multiple Inheritance for C++, AT&T Bell Laboratories, Murray Hill, New Jersey, [7] Herb Sutter, Why Not Specialize Function Templates?, C/C++ Users Journal, 19(7), July 2001
What are the characteristics of Object Oriented programming language?
What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is
More informationSTUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING
OBJECT ORIENTED PROGRAMMING STUDY NOTES UNIT 1 - INTRODUCTION TO OBJECT ORIENTED PROGRAMMING 1. Object Oriented Programming Paradigms 2. Comparison of Programming Paradigms 3. Basic Object Oriented Programming
More informationInstantiation of Template class
Class Templates Templates are like advanced macros. They are useful for building new classes that depend on already existing user defined classes or built-in types. Example: stack of int or stack of double
More informationAN OVERVIEW OF C++ 1
AN OVERVIEW OF C++ 1 OBJECTIVES Introduction What is object-oriented programming? Two versions of C++ C++ console I/O C++ comments Classes: A first look Some differences between C and C++ Introducing function
More informationCpt S 122 Data Structures. Course Review Midterm Exam # 2
Cpt S 122 Data Structures Course Review Midterm Exam # 2 Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Midterm Exam 2 When: Monday (11/05) 12:10 pm -1pm
More informationObject Oriented Programming with c++ Question Bank
Object Oriented Programming with c++ Question Bank UNIT-1: Introduction to C++ 1. Describe the following characteristics of OOP. i Encapsulation ii Polymorphism, iii Inheritance 2. Discuss function prototyping,
More informationC++ Important Questions with Answers
1. Name the operators that cannot be overloaded. sizeof,.,.*,.->, ::,? 2. What is inheritance? Inheritance is property such that a parent (or super) class passes the characteristics of itself to children
More informationAbsolute C++ Walter Savitch
Absolute C++ sixth edition Walter Savitch Global edition This page intentionally left blank Absolute C++, Global Edition Cover Title Page Copyright Page Preface Acknowledgments Brief Contents Contents
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationOBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe
OBJECT ORIENTED PROGRAMMING USING C++ CSCI 5448- Object Oriented Analysis and Design By Manali Torpe Fundamentals of OOP Class Object Encapsulation Abstraction Inheritance Polymorphism Reusability C++
More informationCS304 Object Oriented Programming Final Term
1. Which of the following is the way to extract common behaviour and attributes from the given classes and make a separate class of those common behaviours and attributes? Generalization (pg 29) Sub-typing
More informationCOEN244: Class & function templates
COEN244: Class & function templates Aishy Amer Electrical & Computer Engineering Templates Function Templates Class Templates Outline Templates and inheritance Introduction to C++ Standard Template Library
More informationObject Oriented Programming. Solved MCQs - Part 2
Object Oriented Programming Solved MCQs - Part 2 Object Oriented Programming Solved MCQs - Part 2 It is possible to declare as a friend A member function A global function A class All of the above What
More informationObject-Oriented Programming
- oriented - iuliana@cs.ubbcluj.ro Babes-Bolyai University 2018 1 / 56 Overview - oriented 1 2 -oriented 3 4 5 6 7 8 Static and friend elements 9 Summary 2 / 56 I - oriented was initially created by Bjarne
More informationC++ Coding Standards. 101 Rules, Guidelines, and Best Practices. Herb Sutter Andrei Alexandrescu. Boston. 'Y.'YAddison-Wesley
C++ Coding Standards 101 Rules, Guidelines, and Best Practices Herb Sutter Andrei Alexandrescu 'Y.'YAddison-Wesley Boston Contents Prefaee xi Organizational and Poliey Issues 1 o. Don't sweat the small
More informationPROGRAMMING IN C++ COURSE CONTENT
PROGRAMMING IN C++ 1 COURSE CONTENT UNIT I PRINCIPLES OF OBJECT ORIENTED PROGRAMMING 2 1.1 Procedure oriented Programming 1.2 Object oriented programming paradigm 1.3 Basic concepts of Object Oriented
More informationLecture Notes on Programming Languages
Lecture Notes on Programming Languages 85 Lecture 09: Support for Object-Oriented Programming This lecture discusses how programming languages support object-oriented programming. Topics to be covered
More informationChapter 11. Categories of languages that support OOP: 1. OOP support is added to an existing language
Categories of languages that support OOP: 1. OOP support is added to an existing language - C++ (also supports procedural and dataoriented programming) - Ada 95 (also supports procedural and dataoriented
More informationVALLIAMMAI ENGINEERING COLLEGE
VALLIAMMAI ENGINEERING COLLEGE SRM Nagar, Kattankulathur 603 203 DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING QUESTION BANK B.E. - Electrical and Electronics Engineering IV SEMESTER CS6456 - OBJECT ORIENTED
More informationCOMP322 - Introduction to C++
COMP322 - Introduction to C++ Winter 2011 Lecture 08 - Inheritance continued School of Computer Science McGill University March 8, 2011 Last Time Single Inheritance Polymorphism: Static Binding vs Dynamic
More informationChapter 5 Object-Oriented Programming
Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares
More informationFast Introduction to Object Oriented Programming and C++
Fast Introduction to Object Oriented Programming and C++ Daniel G. Aliaga Note: a compilation of slides from Jacques de Wet, Ohio State University, Chad Willwerth, and Daniel Aliaga. Outline Programming
More informationRAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING QUESTION BANK UNIT I 2 MARKS
RAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING YEAR/SEM:II & III UNIT I 1) Give the evolution diagram of OOPS concept. 2) Give some
More informationIntro to OOP Visibility/protection levels and constructors Friend, convert constructor, destructor Operator overloading a<=b a.
Intro to OOP - Object and class - The sequence to define and use a class in a program - How/when to use scope resolution operator - How/when to the dot operator - Should be able to write the prototype
More informationCS304 Object Oriented Programming
1 CS304 Object Oriented Programming 1. Which of the following is the way to extract common behaviour and attributes from the given classes and make a separate class of those common behaviours and attributes?
More informationOOPS Viva Questions. Object is termed as an instance of a class, and it has its own state, behavior and identity.
OOPS Viva Questions 1. What is OOPS? OOPS is abbreviated as Object Oriented Programming system in which programs are considered as a collection of objects. Each object is nothing but an instance of a class.
More informationObject Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia
Object Oriented Programming in Java Jaanus Pöial, PhD Tallinn, Estonia Motivation for Object Oriented Programming Decrease complexity (use layers of abstraction, interfaces, modularity,...) Reuse existing
More informationSTRUCTURING OF PROGRAM
Unit III MULTIPLE CHOICE QUESTIONS 1. Which of the following is the functionality of Data Abstraction? (a) Reduce Complexity (c) Parallelism Unit III 3.1 (b) Binds together code and data (d) None of the
More informationCpt S 122 Data Structures. Course Review FINAL. Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University
Cpt S 122 Data Structures Course Review FINAL Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Final When: Wednesday (12/12) 1:00 pm -3:00 pm Where: In Class
More informationDr. Md. Humayun Kabir CSE Department, BUET
C++ Dr. Md. Humayun Kabir CSE Department, BUET History of C++ Invented by Bjarne Stroustrup at Bell Lab in 1979 Initially known as C with Classes Classes and Basic Inheritance The name was changed to C++
More informationProblem Solving with C++
GLOBAL EDITION Problem Solving with C++ NINTH EDITION Walter Savitch Kendrick Mock Ninth Edition PROBLEM SOLVING with C++ Problem Solving with C++, Global Edition Cover Title Copyright Contents Chapter
More informationPolymorphism. Contents. Assignment to Derived Class Object. Assignment to Base Class Object
Polymorphism C++ Object Oriented Programming Pei-yih Ting NTOU CS 26-1 Contents Assignment to base / derived types of objects Assignment to base / derived types of pointers Heterogeneous container and
More informationVIRTUAL FUNCTIONS Chapter 10
1 VIRTUAL FUNCTIONS Chapter 10 OBJECTIVES Polymorphism in C++ Pointers to derived classes Important point on inheritance Introduction to virtual functions Virtual destructors More about virtual functions
More informationObject Oriented Paradigm
Object Oriented Paradigm History Simula 67 A Simulation Language 1967 (Algol 60 based) Smalltalk OO Language 1972 (1 st version) 1980 (standard) Background Ideas Record + code OBJECT (attributes + methods)
More informationAssignment 1: grid. Due November 20, 11:59 PM Introduction
CS106L Fall 2008 Handout #19 November 5, 2008 Assignment 1: grid Due November 20, 11:59 PM Introduction The STL container classes encompass a wide selection of associative and sequence containers. However,
More informationProgramming, numerics and optimization
Programming, numerics and optimization Lecture A-4: Object-oriented programming Łukasz Jankowski ljank@ippt.pan.pl Institute of Fundamental Technological Research Room 4.32, Phone +22.8261281 ext. 428
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Inheritance Introduction Generalization/specialization Version of January 20, 2014 Abstract
More informationC++ Programming Fundamentals
C++ Programming Fundamentals 269 Elvis C. Foster Lecture 11: Templates One of the contemporary sophistries of C++ programming is defining and manipulating templates. This lecture focuses on this topic.
More informationCS 6456 OBJCET ORIENTED PROGRAMMING IV SEMESTER/EEE
CS 6456 OBJCET ORIENTED PROGRAMMING IV SEMESTER/EEE PART A UNIT I 1. Differentiate object oriented programming from procedure oriented programming. 2. Define abstraction and encapsulation. 3. Differentiate
More informationC++ (Non for C Programmer) (BT307) 40 Hours
C++ (Non for C Programmer) (BT307) 40 Hours Overview C++ is undoubtedly one of the most widely used programming language for implementing object-oriented systems. The C++ language is based on the popular
More informationAdvanced C++ Topics. Alexander Warg, 2017
www.kernkonzept.com Advanced C++ Topics Alexander Warg, 2017 M I C R O K E R N E L M A D E I N G E R M A N Y Overview WHAT IS BEHIND C++ Language Magics Object Life Time Object Memory Layout INTRODUCTION
More informationGet Unique study materials from
Downloaded from www.rejinpaul.com VALLIAMMAI ENGNIEERING COLLEGE SRM Nagar, Kattankulathur 603203. DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING Year & Semester : IV Section : EEE - 1 & 2 Subject Code
More informationInterview Questions of C++
Interview Questions of C++ Q-1 What is the full form of OOPS? Ans: Object Oriented Programming System. Q-2 What is a class? Ans: Class is a blue print which reflects the entities attributes and actions.
More informationThe Foundation of C++: The C Subset An Overview of C p. 3 The Origins and History of C p. 4 C Is a Middle-Level Language p. 5 C Is a Structured
Introduction p. xxix The Foundation of C++: The C Subset An Overview of C p. 3 The Origins and History of C p. 4 C Is a Middle-Level Language p. 5 C Is a Structured Language p. 6 C Is a Programmer's Language
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Inheritance Introduction Generalization/specialization Version of January 21, 2013 Abstract
More informationby Pearson Education, Inc. All Rights Reserved. 2
An important part of every container is the type of iterator it supports. This determines which algorithms can be applied to the container. A vector supports random-access iterators i.e., all iterator
More informationIncreases Program Structure which results in greater reliability. Polymorphism
UNIT 4 C++ Inheritance What is Inheritance? Inheritance is the process by which new classes called derived classes are created from existing classes called base classes. The derived classes have all the
More informationCMSC 202 Section 010x Spring Justin Martineau, Tuesday 11:30am
CMSC 202 Section 010x Spring 2007 Computer Science II Final Exam Name: Username: Score Max Section: (check one) 0101 - Justin Martineau, Tuesday 11:30am 0102 - Sandeep Balijepalli, Thursday 11:30am 0103
More informationCHAPTER 1 Introduction to Computers and Programming CHAPTER 2 Introduction to C++ ( Hexadecimal 0xF4 and Octal literals 031) cout Object
CHAPTER 1 Introduction to Computers and Programming 1 1.1 Why Program? 1 1.2 Computer Systems: Hardware and Software 2 1.3 Programs and Programming Languages 8 1.4 What is a Program Made of? 14 1.5 Input,
More informationData Abstraction. Hwansoo Han
Data Abstraction Hwansoo Han Data Abstraction Data abstraction s roots can be found in Simula67 An abstract data type (ADT) is defined In terms of the operations that it supports (i.e., that can be performed
More informationA Proposal to Add a Const-Propagating Wrapper to the Standard Library
Doc number: N4057 Revises: N3973 Date: 2014-07-02 Project: Programming Language C++, Library Evolution Working Group Reply-to: Jonathan Coe Robert Mill A Proposal
More informationJayaram college of Engineering and Technology, Pagalavadi. CS2203 Object Oriented Programming Question Bank Prepared By: S.Gopalakrishnan, Lecturer/IT
CS2203 Object Oriented Programming Question Bank Prepared By: S.Gopalakrishnan, Lecturer/IT Two Mark Questions UNIT - I 1. DEFINE ENCAPSULATION. Encapsulation is the process of combining data and functions
More informationDepartment of Computer science and Engineering Sub. Name: Object oriented programming and data structures Sub. Code: EC6301 Sem/Class: III/II-ECE Staff name: M.Kavipriya Two Mark Questions UNIT-1 1. List
More informationPreface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS
Contents Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS 1.1. INTRODUCTION TO COMPUTERS... 1 1.2. HISTORY OF C & C++... 3 1.3. DESIGN, DEVELOPMENT AND EXECUTION OF A PROGRAM... 3 1.4 TESTING OF PROGRAMS...
More information(12-1) OOP: Polymorphism in C++ D & D Chapter 12. Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University
(12-1) OOP: Polymorphism in C++ D & D Chapter 12 Instructor - Andrew S. O Fallon CptS 122 (April 3, 2019) Washington State University Key Concepts Polymorphism virtual functions Virtual function tables
More informationOops known as object-oriented programming language system is the main feature of C# which further support the major features of oops including:
Oops known as object-oriented programming language system is the main feature of C# which further support the major features of oops including: Abstraction Encapsulation Inheritance and Polymorphism Object-Oriented
More informationSoftware Paradigms (Lesson 3) Object-Oriented Paradigm (2)
Software Paradigms (Lesson 3) Object-Oriented Paradigm (2) Table of Contents 1 Reusing Classes... 2 1.1 Composition... 2 1.2 Inheritance... 4 1.2.1 Extending Classes... 5 1.2.2 Method Overriding... 7 1.2.3
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationPart X. Advanced C ++
Part X Advanced C ++ topics Philip Blakely (LSC) Advanced C++ 158 / 217 References The following are highly regarded books. They are fairly in-depth, and I haven t read them in their entirity. However,
More informationI BCS-031 BACHELOR OF COMPUTER APPLICATIONS (BCA) (Revised) Term-End Examination. June, 2015 BCS-031 : PROGRAMMING IN C ++
No. of Printed Pages : 3 I BCS-031 BACHELOR OF COMPUTER APPLICATIONS (BCA) (Revised) Term-End Examination 05723. June, 2015 BCS-031 : PROGRAMMING IN C ++ Time : 3 hours Maximum Marks : 100 (Weightage 75%)
More informationJAYARAM COLLEGE OF ENGINEERING AND TECHNOLOGY Pagalavadi, Tiruchirappalli (An approved by AICTE and Affiliated to Anna University)
Estd: 1994 JAYARAM COLLEGE OF ENGINEERING AND TECHNOLOGY Pagalavadi, Tiruchirappalli - 621014 (An approved by AICTE and Affiliated to Anna University) ISO 9001:2000 Certified Subject Code & Name : CS 1202
More informationLecture 13: Object orientation. Object oriented programming. Introduction. Object oriented programming. OO and ADT:s. Introduction
Lecture 13: Object orientation Object oriented programming Introduction, types of OO languages Key concepts: Encapsulation, Inheritance, Dynamic binding & polymorphism Other design issues Smalltalk OO
More informationC++ Quick Guide. Advertisements
C++ Quick Guide Advertisements Previous Page Next Page C++ is a statically typed, compiled, general purpose, case sensitive, free form programming language that supports procedural, object oriented, and
More informationObject-Oriented Principles and Practice / C++
Object-Oriented Principles and Practice / C++ Alice E. Fischer June 3, 2013 OOPP / C++ Lecture 9... 1/40 Const Qualifiers Operator Extensions Polymorphism Abstract Classes Linear Data Structure Demo Ordered
More informationWeek 8: Operator overloading
Due to various disruptions, we did not get through all the material in the slides below. CS319: Scientific Computing (with C++) Week 8: Operator overloading 1 The copy constructor 2 Operator Overloading
More informationSeptember 10,
September 10, 2013 1 Bjarne Stroustrup, AT&T Bell Labs, early 80s cfront original C++ to C translator Difficult to debug Potentially inefficient Many native compilers exist today C++ is mostly upward compatible
More informationDEPARTMENT OF COMPUTER APPLICATIONS B.C.A. - FIRST YEAR ( REGULATION) SECOND SEMESTER LESSON PLAN SRM INSTITUTE OF SCIENCE AND TECHNOLOGY
DEPARTMENT OF COMPUTER APPLICATIONS B.C.A. - FIRST YEAR (2015-2016 REGULATION) SECOND SEMESTER LESSON PLAN SRM INSTITUTE OF SCIENCE AND TECHNOLOGY FACULTY OF SCIENCE AND HUMANITIES SRM NAGAR, KATTANKULATHUR
More informationObject Oriented Programming in C++ Basics of OOP
Object Oriented Programming in C++ Basics of OOP In this section we describe the three most important areas in object oriented programming: encapsulation, inheritance and polymorphism. 1. INTRODUCTION
More informationStudy Guide to Exam 2
YALE UNIVERSITY DEPARTMENT OF COMPUTER SCIENCE CPSC 427a: Object-Oriented Programming Handout #10 Professor M. J. Fischer November 27, 2011 Study Guide to Exam 2 This exam covers the entire course, but
More informationCPSC 427a: Object-Oriented Programming
CPSC 427a: Object-Oriented Programming Michael J. Fischer Lecture 2 September 6, 2011 CPSC 427a 1/14 C++ Overview C++ Goals Comparison of C and C++ Tools Example Insertion sort C version C++ version CPSC
More informationSAURASHTRA UNIVERSITY
SAURASHTRA UNIVERSITY RAJKOT INDIA Accredited Grade A by NAAC (CGPA 3.05) CURRICULAM FOR B.Sc. (Computer Science) Bachelor of Science (Computer Science) (Semester - 1 Semester - 2) Effective From June
More informationCpt S 122 Data Structures. Templates
Cpt S 122 Data Structures Templates Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Topics Introduction Function Template Function-template and function-template
More informationPolymorphism. Miri Ben-Nissan (Kopel) Miri Kopel, Bar-Ilan University
Polymorphism Miri Ben-Nissan (Kopel) 1 Shape Triangle Rectangle Circle int main( ) Shape* p = GetShape( ); p->draw( ); Shape* GetShape( ) choose randomly which shape to send back For example: Shape* p
More informationOverloading המחלקה למדעי המחשב עזאם מרעי אוניברסיטת בן-גוריון
Overloading עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Roadmap In this chapter we will investigate the idea of overloading: Overloading based on scopes Overloading based on type signatures Coercion,
More informationNote 12/1/ Review of Inheritance Practice: Please write down 10 most important facts you know about inheritance...
CISC 2000 Computer Science II Fall, 2014 Note 12/1/2014 1 Review of Inheritance Practice: Please write down 10 most important facts you know about inheritance... (a) What s the purpose of inheritance?
More informationINHERITANCE: EXTENDING CLASSES
INHERITANCE: EXTENDING CLASSES INTRODUCTION TO CODE REUSE In Object Oriented Programming, code reuse is a central feature. In fact, we can reuse the code written in a class in another class by either of
More informationB.C.A 2017 OBJECT ORIENTED PROGRAMMING USING C++ BCA303T MODULE SPECIFICATION SHEET
B.C.A 2017 OBJECT ORIENTED PROGRAMMING USING C++ BCA303T MODULE SPECIFICATION SHEET Course Outline The main objective of this course is to introduce students to the basic concepts of a selected language
More informationComp 248 Introduction to Programming Chapter 4 & 5 Defining Classes Part B
Comp 248 Introduction to Programming Chapter 4 & 5 Defining Classes Part B Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University, Montreal, Canada These slides has
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 10 - Object-Oriented Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages
More informationExceptions. CandC++ 7. Exceptions Templates. Throwing exceptions. Conveying information
Exceptions CandC++ 7. Exceptions Templates Stephen Clark University of Cambridge (heavily based on last year s notes (Andrew Moore) with thanks to Alastair R. Beresford and Bjarne Stroustrup) Michaelmas
More information(heavily based on last year s notes (Andrew Moore) with thanks to Alastair R. Beresford. 7. Exceptions Templates 2/1. Throwing exceptions 14 }
Exceptions Some code (e.g. a library module) may detect an error but not know what to do about it; other code (e.g. a user module) may know how to handle it C++ provides exceptions to allow an error to
More informationComp 249 Programming Methodology Chapter 8 - Polymorphism
Comp 249 Programming Methodology Chapter 8 - Polymorphism Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University, Montreal, Canada These slides has been extracted, modified
More informationCS304- Object Oriented Programming LATEST SOLVED MCQS FROM FINALTERM PAPERS. MC
CS304- Object Oriented Programming LATEST SOLVED MCQS FROM FINALTERM PAPERS JAN 28,2011 MC100401285 Moaaz.pk@gmail.com Mc100401285@gmail.com PSMD01 FINALTERM EXAMINATION 14 Feb, 2011 CS304- Object Oriented
More informationObject-oriented Programming. Object-oriented Programming
2014-06-13 Object-oriented Programming Object-oriented Programming 2014-06-13 Object-oriented Programming 1 Object-oriented Languages object-based: language that supports objects class-based: language
More informationSubtyping (Dynamic Polymorphism)
Fall 2018 Subtyping (Dynamic Polymorphism) Yu Zhang Course web site: http://staff.ustc.edu.cn/~yuzhang/tpl References PFPL - Chapter 24 Structural Subtyping - Chapter 27 Inheritance TAPL (pdf) - Chapter
More informationCS 251 INTERMEDIATE SOFTWARE DESIGN SPRING C ++ Basics Review part 2 Auto pointer, templates, STL algorithms
CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING 2011 C ++ Basics Review part 2 Auto pointer, templates, STL algorithms AUTO POINTER (AUTO_PTR) //Example showing a bad situation with naked pointers void MyFunction()
More informationInheritance and Interfaces
Inheritance and Interfaces Object Orientated Programming in Java Benjamin Kenwright Outline Review What is Inheritance? Why we need Inheritance? Syntax, Formatting,.. What is an Interface? Today s Practical
More informationPROGRAMMING LANGUAGE 2
31/10/2013 Ebtsam Abd elhakam 1 PROGRAMMING LANGUAGE 2 Java lecture (7) Inheritance 31/10/2013 Ebtsam Abd elhakam 2 Inheritance Inheritance is one of the cornerstones of object-oriented programming. It
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 12 Thomas Wies New York University Review Last lecture Modules Outline Classes Encapsulation and Inheritance Initialization and Finalization Dynamic
More informationPaytm Programming Sample paper: 1) A copy constructor is called. a. when an object is returned by value
Paytm Programming Sample paper: 1) A copy constructor is called a. when an object is returned by value b. when an object is passed by value as an argument c. when compiler generates a temporary object
More informationProgramming Languages: OO Paradigm, Polymorhism and Class Members
Programming Languages: OO Paradigm, Polymorhism and Class Members Onur Tolga Şehitoğlu Computer Engineering,METU 1 May 2009 Outline 1 2 Abstract Classes Inheritance inclusion polymorphism Binding is still
More informationInformation System Design (IT60105)
Information System Design (IT60105) Lecture 26 Object-Oriented System Testing Lecture #23 Procedural vs OO paradigms Why not Traditional Testing? Issues Methodology 2 Procedural Vs OO p Procedural Vs OO
More informationCPS 506 Comparative Programming Languages. Programming Language
CPS 506 Comparative Programming Languages Object-Oriented Oriented Programming Language Paradigm Introduction Topics Object-Oriented Programming Design Issues for Object-Oriented Oriented Languages Support
More informationC++ C and C++ C++ fundamental types. C++ enumeration. To quote Bjarne Stroustrup: 5. Overloading Namespaces Classes
C++ C and C++ 5. Overloading Namespaces Classes Alastair R. Beresford University of Cambridge Lent Term 2007 To quote Bjarne Stroustrup: C++ is a general-purpose programming language with a bias towards
More information1/29/2011 AUTO POINTER (AUTO_PTR) INTERMEDIATE SOFTWARE DESIGN SPRING delete ptr might not happen memory leak!
//Example showing a bad situation with naked pointers CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING 2011 C ++ Basics Review part 2 Auto pointer, templates, STL algorithms void MyFunction() MyClass* ptr( new
More informationDistributed Real-Time Control Systems. Lecture 17 C++ Programming Intro to C++ Objects and Classes
Distributed Real-Time Control Systems Lecture 17 C++ Programming Intro to C++ Objects and Classes 1 Bibliography Classical References Covers C++ 11 2 What is C++? A computer language with object oriented
More informationProgramming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur
Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 43 Dynamic Binding (Polymorphism): Part III Welcome to Module
More informationSpring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques
1 CPSC2620 Advanced Programming Spring 2003 Instructor: Dr. Shahadat Hossain 2 Today s Agenda Administrative Matters Course Information Introduction to Programming Techniques 3 Course Assessment Lectures:
More informationEL2310 Scientific Programming
Lecture 15: Inheritance and Polymorphism, STL (pronobis@kth.se) Overview Overview Lecture 15: Inheritance and Polymorphism, STL Wrap Up Additional Bits about Classes Overloading Inheritance Polymorphism
More information