Important when developing large programs. easier to write, understand, modify, and debug. each module understood individually

Similar documents
Overview of the lecture. Some key issues in programming Java programming. CMPT Data and Program Abstraction. Some of the key programming issues

Data Abstraction: The Walls

CS 225. Data Structures

Laboratorio di Tecnologie dell'informazione

Chapter 4.!Data Abstraction: The Walls! 2011 Pearson Addison-Wesley. All rights reserved 4-1

CS 225. Data Structures. Wade Fagen-Ulmschneider

CS 225. Data Structures. Wade Fagen-Ulmschneider

Classes - 2. Data Processing Course, I. Hrivnacova, IPN Orsay

lecture04: Constructors and Destructors

Making New instances of Classes

21. Exceptions. Advanced Concepts: // exceptions #include <iostream> using namespace std;

C++_ MARKS 40 MIN

Object-Oriented Programming (OOP) Fundamental Principles of OOP

Lecture 7. Log into Linux New documents posted to course webpage

Chapter 3: Data Abstraction

Chapter 11. Abstract Data Types and Encapsulation Concepts

CPSC 427: Object-Oriented Programming

Inheritance, and Polymorphism.

AN OVERVIEW OF C++ 1

Chapter 1: Object-Oriented Programming Using C++

CSCE 110 PROGRAMMING FUNDAMENTALS

Introduction to Classes

C++ Classes & Object Oriented Programming

Chapter 2. Building Multitier Programs with Classes The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill

Exceptions, Case Study-Exception handling in C++.

OBJECT ORIENTED PROGRAMMING. Ms. Ajeta Nandal C.R.Polytechnic,Rohtak

Object-Oriented Programming

OOPS Viva Questions. Object is termed as an instance of a class, and it has its own state, behavior and identity.

Introduction to Programming Using Java (98-388)

Chapter 02 Building Multitier Programs with Classes

Chapter 15 - C++ As A "Better C"

Distributed Real-Time Control Systems. Lecture 17 C++ Programming Intro to C++ Objects and Classes

Implementing Subprograms

Wentworth Institute of Technology COMP201 Computer Science II Spring 2015 Derbinsky. C++ Kitchen Sink. Lecture 14.

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

Short Notes of CS201

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia

Interview Questions of C++

CS201 - Introduction to Programming Glossary By

IS 0020 Program Design and Software Tools

Absolute C++ Walter Savitch

CSE 303: Concepts and Tools for Software Development

III. Classes (Chap. 3)

Cpt S 122 Data Structures. Introduction to C++ Part II

Lab 2: ADT Design & Implementation

Lecture Notes Chapter #9 Summery. Inheritance

C++ Classes, Constructor & Object Oriented Programming


Module 7 b. -Namespaces -Exceptions handling

CSC1322 Object-Oriented Programming Concepts

C++ Crash Kurs. Exceptions. Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck

Recharge (int, int, int); //constructor declared void disply();

Programming in C++: Assignment Week 8

Fast Introduction to Object Oriented Programming and C++

Object Oriented Programming. Assistant Lecture Omar Al Khayat 2 nd Year

OBJECT ORIENTED PROGRAMMING USING C++

Object-Oriented Programming

CMSC 202 Section 010x Spring Justin Martineau, Tuesday 11:30am

Lecture 5: Methods CS2301

The design of an ADT should evolve naturally during the problem-solving process Questions to ask when designing an ADT

Abstraction in Software Development

Introduction Of Classes ( OOPS )

CPSC 427: Object-Oriented Programming

CS1150 Principles of Computer Science Objects and Classes

Data Structures using OOP C++ Lecture 3

Chapter 13: Introduction to Classes Procedural and Object-Oriented Programming

Lecture 18 Tao Wang 1

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

Object Oriented Design

Functions, Arrays & Structs

CS3157: Advanced Programming. Outline

CS304 Object Oriented Programming Final Term

This examination has 11 pages. Check that you have a complete paper.

2 ADT Programming User-defined abstract data types

Function Overloading

Government Polytechnic, Muzaffarpur. Name of the Lab: OBJECT ORIENTED PROGRAMMING

CSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010


C++ Namespaces, Exceptions

Standard. Number of Correlations

CS24 Week 3 Lecture 1

05-01 Discussion Notes

Lecture #1. Introduction to Classes and Objects

Modern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi

Object Oriented Design

Abstract Data Types and Encapsulation Concepts

Instantiation of Template class

Data Abstraction. Hwansoo Han

September 10,

Paytm Programming Sample paper: 1) A copy constructor is called. a. when an object is returned by value

CS 162, Lecture 25: Exam II Review. 30 May 2018

Extending Classes (contd.) (Chapter 15) Questions:

Introduction to Programming session 24

CSCE 110 PROGRAMMING FUNDAMENTALS

CS 485 Advanced Object Oriented Design. Enum. Spring 2017

Abstract Data Types. Different Views of Data:

What does it mean by information hiding? What are the advantages of it? {5 Marks}

Exception-Handling Overview

Chapter 6: User-Defined Functions. Objectives (cont d.) Objectives. Introduction. Predefined Functions 12/2/2016

Fundamentals of Programming Session 24

Transcription:

Chapter 3: Data Abstraction Abstraction, modularity, information hiding Abstract data types Example-1: List ADT Example-2: Sorted list ADT C++ Classes C++ Namespaces C++ Exceptions 1 Fundamental Concepts Modularity manages complexity of large programs isolates errors eliminates redundancies program is easier to read, write, and modify Information hiding hides certain implementation details within a module makes these details inaccessible from outside the module 3 Modularity and Abstraction Important when developing large programs. Divide program in small manageable modules each module understood individually easier to write, understand, modify, and debug Modules communicate using well-defined interfaces different module implementations use same interface provide a different and easier interface to communicating modules abstraction 2 Abstraction Functional abstraction separates the purpose and use of a module from its implementation Data abstraction asks you to think what you can do to a collection of data independently of how you do it allows you to develop each data structure in relative isolation from the rest of the solution 4

Isolated Tasks Abstract Data Type (ADT) An ADT is composed of collection of data set of operations on that data Specifications of an ADT indicate what the ADT operations do, not how to implement them Implementation of an ADT includes choosing a particular data structure 5 7 Isolation of Modules is Not Total how it interacts with other modules Figure 3-2 A slit in the wall 6 Abstract Data Types Figure 3-4 A wall of ADT operations isolates a data structure from the program that uses it 8

Designing an ADT The design of an ADT should evolve naturally during the problem-solving process Questions to ask when designing an ADT What data does a problem require? What operations does a problem require? 9 List ADT Example Properties Except for the first and last items, each item has a unique predecessor and successor Items are referenced by their position in the list Specifications of the ADT operations Define an operation contract for the ADT list Do not specify how to store the list or how to perform the operations ADT operations can be used in an application without the knowledge of how the operations will be implemented 11 List ADT Example ADT for a list of items: grocery list, TO-DO list What operations do we perform on/with a list? add item, delete item, find item, read, etc. cannot think of everything? should refine iteratively! How to store the data implementation detail hidden from users of the list arrays or linked lists List ADT Example Operations Create an empty list Destroy a list Determine whether a list is empty Determine the number of items in a list Insert an item at a given position in the list Delete the item at a given position in the list Retrieve the item at a given position in the list 10 12

List ADT Operation Contract createlist() destroylist() isempty():boolean query} getlength():integer query} insert(in index:integer, in newitem:listitemtype, out success:boolean) remove(in index:integer, out success:boolean) retrieve(in index:integer, ditem:listitemtype, out success:boolean) query} List ADT Example Operations Remove eggs alist.remove(3, success) milk, bread, butter, juice Insert apples at beginning of list alist.insert(1, apples, success) apples, milk, bread, butter, juice 13 15 List ADT Example Operations Create the list -- milk, eggs, butter alist.createlist() alist.insert(1, milk, success) alist.insert(2, eggs, success) alist.insert(3, butter, success) Insert bread after milk alist.insert(2, bread, success) milk, bread, eggs, butter Insert juice at end of list alist.insert(5, juice, success) milk, bread, eggs, butter, juice List ADT Example -- Operations Algorithm description independent of list implementation, as long as each item has an index Pseudocode function that displays a list displaylist(in alist:list) for (position=1 to alist.getlength()) alist.retrieve(position, dataitem, success) display dataitem } } 14 16

List ADT Example -- Implementation How to implement the List ADT? th item is stored in items[k-1] To insert an item, make room in the array 17 List ADT Options Many other design options are possible retrieve items by name, instead of by index sort items by name or some other factor display list in some sorted order Several data structures can be used during implementation arrays, linked lists, trees, hash-tables, etc. different advantages, restrictions, and costs 19 List ADT Example -- Implementation To delete an item, remove gap in array Figure 3-13 (a) Deletion causes a gap; (b) fill gap by shifting ADT Sorted List -- Properties Maintains items in sorted order Inserts and deletes items by their values, not their positions 18 20

ADT Sorted List Operation Contract sortedisempty():booleanquery} sortedgetlength():integerquery} sortedinsert(in nitem:listitemtype, out success:boolean) sortedremove(in index:integer, out success :boolean) sortedretrieve(in index:integer, out ditem:listitemtype, out success :boolean)query} locateposition(in anitem:listitemtype, out ispresent:boolean):integerquery} 21 Hiding Data Structures and Code Figure 3-8 ADT operations provide access to a data structure 23 Implementing ADTs Choosing the data structure to represent the Choice of a data structure depends on Context in which the operations will be used Implementation details should be hidden behind a wall of ADT operations A program (client) should only be able to access the data structure by using the ADT operations Violating Information Hiding Figure 3-9 Violating the wall of ADT operations 22 24

C++ Classes operations to form an object an object is an instance of a class a class defines a new data type a class contains data members and methods (member functions) by default, all data members in a class are private but, can specify them as public can only be accessed by other class members some member functions have to be public encapsulation hides implementation details C++ Classes Each class definition is placed in a header file Classname.h placed in an implementation file Classname.cpp 25 27 C++ Classes Figure 3-10 are encapsulated 26 C++ Classes: Constructors Constructors create and initialize new instances of a class invoked when you declare an instance of the class have the same name as the class have no return type, not even void A class can have several constructors a default constructor has no arguments compiler will generate a default constructor if you do not define any constructors 28

C++ Classes: Constructors The implementation of a method qualifies its name with the scope resolution operator :: The implementation of a constructor sets data members to initial values can use an initializer Sphere::Sphere() : theradius(1.0) } // end default constructor cannot use return to return a value 29 C++ Classes: The header file /** @file Sphere.h */ const double PI = 3.14159; class Sphere public: Sphere(); // Default constructor Sphere(double initialradius); // Constructor void setradius(double newradius); double getradius() const double getdiameter() const; double getcircumference() const; double getarea() const; double getvolume() const; void displaystatistics() const; private: double theradius; // data members should be private }; // end Sphere 31 C++ Classes: Destructors Destructor lifetime ends called automatically for local variables on subroutine exit called explicitly by delete operator primary duty is to de-allocate dynamic memory Each class has one destructor for many classes, you can omit the destructor if they do not allocate any memory the compiler will generate a destructor if you do not define one 30 C++ Classes: The implementation file /** @file Sphere.cpp */ #include <iostream> #include "Sphere.h" // header file using namespace std; Sphere::Sphere() : theradius(1.0) } // end default constructor Sphere::Sphere(double initialradius) if (initialradius > 0) theradius = initialradius; else theradius = 1.0; } // end constructor 32

C++ Classes: The implementation file void Sphere::setRadius(double newradius) if (newradius > 0) theradius = newradius; else theradius = 1.0; } // end setradius The constructor could call setradius C++ Classes: Using the class Sphere #include <iostream> #include "Sphere.h" // header file using namespace std; int main() // the client Sphere unitsphere; Sphere mysphere(5.1); cout << mysphere.getdiameter() << endl; } // end main 33 35 C++ Classes: The implementation file double Sphere::getRadius() const return theradius; } // end getradius double Sphere::getArea() const return 4.0 * PI * theradius * theradius; } // end getarea 34 Inheritance in C++ Inheritance is a way to reuse the code (and behavior) of existing classes existing class is called the base or super or parent class the new class is called derived or sub class Derived class inherits any of the publicly defined methods or data members of a base class public members are accessible by any function protected members are accessible only in base and derived classes 36

Inheritance in C++ Derived classes can add new data members and member functions methods with the same prototype (name as well as number and types of arguments) in the derived class override base class methods distinct from overloading same function name but different set of parameters An instance of a derived class is considered to also be an instance of the base class can be used anywhere an instance of the base class can be used An instance of a derived class can invoke public methods of the base class C++ Namespaces Mechanism for logically grouping declarations and definitions into one declarative region The contents of the namespace can be accessed by code inside or outside the namespace use the scope resolution operator (::) to access elements from outside the namespace alternatively, the using declaration allows the names of the elements to be used directly 37 39 Inheritance Example enum Color RED, BLUE, GREEN, YELLOW}; class ColoredSphere: public Sphere public: Color getcolor() const; private: Color c; } // end ColoredSphere C++ Namespaces Creating a namespace namespace smallnamespace int count = 0; void abc(); } // end smallnamespace Using a namespace using namespace smallnamespace; count +=1; abc(); see C3-namespace.cpp 38 40

C++ Exceptions Mechanism for handling errors at runtime pre-defined as well as user-defined default action is often to kill the program A function can indicate that an error has occurred by throwing an exception Code that deals with the exception is said to handle it uses a try block and catch blocks C++ Exceptions When a statement in a try block causes an exception rest of try block is ignored destructors of objects local to the block are called control passes to catch block corresponding to the exception after a catch block executes, control passes to statement after last catch block associated with the try block if a catch block for the exception is not found, the program typically aborts see C3-exceptions.cpp 41 43 C++ Exceptions Place a statement that might throw an exception within a try block try statement(s); } Write a catch block for each type of exception handled order is not important catch(exceptionclass identifier) statement(s); } catch(exceptionclass identifier2) statement(s); } C++ Exceptions Throwing exceptions A throw statement throws an exception Methods that throw an exception have a throw clause void mymethod(int x) throw(myexception) if () throw MyException MyException } // end mymethod You can use an exception class in the C++ Standard Library or define your own 42 44

List Implemented Using Exceptions We define two exception classes #include <stdexcept> #include <string> using namespace std; class ListIndexOutOfRangeException : public out_of_range public: ListIndexOutOfRangeException(const string & : out_of_range(message.c_str()) } }; // end ListException List Implemented Using Exceptions /** @file ListAexcept.h */ ListException.h ListIndexOutOfRangeException.h class List public: void insert(int index, const ListItemType& newitem) throw(listindexoutofrangeexception, ListException); } // end List 45 47 List Implemented Using Exceptions #include <stdexcept> #include <string> using namespace std; class ListException : public logic_error public: ListException(const : logic_error(message.c_str()) } }; // end ListException List Implemented Using Exceptions /** @file ListAexcept.cpp */ void List::insert(int index, const ListItemType& newitem) throw(listindexoutofrangeexception, ListException); if (size > MAX_LIST) throw } // end insert 46 48

Summary Data abstraction controls the interaction between a program and its data structures Abstract data type (ADT): a set of datamanagement operations together with the data values upon which they operate Define an ADT fully before making any decisions about an implementation C++ classes used to implement ADT encapsulates both data and operations 49 Summary Members of a class are private by default data members are typically private public methods can be provided to access them Namespace: a mechanism to group classes, functions, variables, types, and constants You can throw an exception if you detect an error during program execution use try and catch blocks to handle exceptions 50