Introduction to Abstract Data Type & C++ Revision 1 Data Structure & Algorithm Part II 10/26/2015.

Slides:



Advertisements
Similar presentations
Lesson 13 Introduction to Classes CS1 Lesson Introduction to Classes1.
Advertisements

1 Classes and Data Abstraction Chapter What a Class ! ! Specification and implementation Private and public elements Declaring classes data and.
Class and Objects.
Chapter 14: Overloading and Templates
Chapter 3 Data Abstraction: The Walls. © 2005 Pearson Addison-Wesley. All rights reserved3-2 Abstract Data Types Modularity –Keeps the complexity of a.
1 Chapter 11 Structured Types, Data Abstraction and Classes Dale/Weems/Headington.
Starting Out with C++: Early Objects 5th Edition
 2006 Pearson Education, Inc. All rights reserved Midterm review Introduction to Classes and Objects.
Object Oriented Programming.  OOP Basic Principles  C++ Classes  September 2004  John Edgar 22.
Chapter Objectives You should be able to describe: Object-Based Programming Classes Constructors Examples Common Programming Errors.
Review of C++ Programming Part II Sheng-Fang Huang.
 2003 Prentice Hall, Inc. All rights reserved. 1 Introduction to Classes and Objects Outline Introduction Classes, Objects, Member Functions and Data.
 2006 Pearson Education, Inc. All rights reserved Classes: A Deeper Look.
 2006 Pearson Education, Inc. All rights reserved Classes: A Deeper Look, Part 2.
SEN 909 OO Programming in C++ Final Exam Multiple choice, True/False and some minimal programming will be required.
Copyright © 2012 Pearson Education, Inc. Chapter 13: Introduction to Classes.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 3: Data Abstraction: The Walls Data Abstraction & Problem.
Introduction To Classes Chapter Procedural And Object Oriented Programming Procedural programming focuses on the process/actions that occur in a.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Procedural and Object-Oriented Programming 13.1.
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.
Learners Support Publications Classes and Objects.
Modularity Keeps the complexity of a large program manageable by systematically controlling the interaction of its components Isolates errors Eliminates.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley. Ver Chapter 3: Data Abstraction: The Walls Data Abstraction & Problem.
C++ Review (3) Structs, Classes, Data Abstraction.
Copyright 2004 Scott/Jones Publishing Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 7 Structured Data and Classes.
1 Object-Oriented Programming Using C++ CLASS 1. 2 Review of Syllabus Catalog Description –An introduction to object oriented programming techniques using.
Functions Modules in C++ are called functions and classes Functions are block of code separated from main() which do a certain task every C++ program must.
ADTs and C++ Classes Classes and Members Constructors The header file and the implementation file Classes and Parameters Operator Overloading.
Classes In C++ 1. What is a class Can make a new type in C++ by declaring a class. A class is an expanded concept of a data structure: instead of holding.
 Classes in c++ Presentation Topic  A collection of objects with same properties and functions is known as class. A class is used to define the characteristics.
Chapter 4 Data Abstraction: The Walls. © 2004 Pearson Addison-Wesley. All rights reserved4-2 Abstract Data Types Modularity –Keeps the complexity of a.
Comp 245 Data Structures (A)bstract (D)ata (T)ypes ADT.
Structured Data and Classes Chapter 7. Combining Data into Structures Structure: C++ construct that allows multiple variables to be grouped together Structure.
1 Announcements Note from admins: Edit.cshrc.solaris instead of.tcshrc Note from admins: Do not use delta.ece.
Chapter 9 Classes: A Deeper Look, Part I Part II.
Copyright © 2002 W. A. Tucker1 Chapter 10 Lecture Notes Bill Tucker Austin Community College COSC 1315.
Advanced C++ Topics Chapter 8. CS 308 2Chapter 8 -- Advanced C++ Topics This chapter describes techniques that make collections of reusable software components.
Chapter 10: Classes and Data Abstraction. Objectives In this chapter, you will: Learn about classes Learn about private, protected, and public members.
EGR 2261 Unit 11 Classes and Data Abstraction  Read Malik, Chapter 10.  Homework #11 and Lab #11 due next week.  Quiz next week.
CSci 162 Lecture 10 Martin van Bommel. Procedures vs Objects Procedural Programming –Centered on the procedures or actions that take place in a program.
CS-1030 Dr. Mark L. Hornick 1 Basic C++ State the difference between a function/class declaration and a function/class definition. Explain the purpose.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 15: Overloading and Templates.
Structures Revisited what is an aggregate construct? What aggregate constructs have we studied? what is a structure? what is the keyword to define a structure?
C++ Class. © 2005 Pearson Addison-Wesley. All rights reserved 3-2 Abstract Data Types Figure 3.1 Isolated tasks: the implementation of task T does not.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 7: Introduction to Classes and Objects Starting Out with C++ Early.
1 Classes II Chapter 7 2 Introduction Continued study of –classes –data abstraction Prepare for operator overloading in next chapter Work with strings.
COP3530 Data Structures300 Data Abstraction: The Walls Abstract Data Types (ADT) Specifying ADTs –The ADT List –The ADT Sorted List –Designing an ADT Implementation.
Array in C++ / review. An array contains multiple objects of identical types stored sequentially in memory. The individual objects in an array, referred.
Chapter 10: Classes and Data Abstraction. Classes Object-oriented design (OOD): a problem solving methodology Objects: components of a solution Class:
1 Introduction to Object Oriented Programming Chapter 10.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 13: Introduction to Classes.
Programming Fundamentals1 Chapter 7 INTRODUCTION TO CLASSES.
1 Classes and Data Abstraction Chapter What a Class ! ! Specification and implementation Private and public elements Declaring classes data and.
Defining Data Types in C++ Part 2: classes. Quick review of OOP Object: combination of: –data structures (describe object attributes) –functions (describe.
Introduction to C++ programming Recap- session 1 Structure of C++ program Keywords Operators – Arithmetic – Relational – Logical Data types Classes and.
1 Chapter 12 Classes and Abstraction. 2 Chapter 12 Topics Meaning of an Abstract Data Type Declaring and Using a class Data Type Using Separate Specification.
Chapter 12 Classes and Abstraction
Pointer to an Object Can define a pointer to an object:
Procedural and Object-Oriented Programming
Abstract Data Types Programmer-created data types that specify
About the Presentations
Introduction to Classes
This technique is Called “Divide and Conquer”.
Introduction to Classes
Classes and Data Abstraction
Classes and Objects.
Lecture 8 Object Oriented Programming (OOP)
Presentation transcript:

Introduction to Abstract Data Type & C++ Revision 1 Data Structure & Algorithm Part II 10/26/2015

Objectives At the end of the class students are expected to: Understand Abstract Data Type concept Review C++ programming ▫Declaring a class, data member and function member ▫Creating constructor and destructor ▫Create object as function parameter ▫Return object from a function ▫Array of class ▫Pointer to class ▫Define and implement a class within header files and implementation files 2 10/26/2015

Abstraction and Information Hiding Abstraction ▫Separates the purpose of a module from its implementation ▫Specifications for each module are written before implementation ▫Functional abstraction  Separates the purpose of a module from its implementation 3 10/26/2015

Abstraction and Information Hiding ▫Data abstraction  Focuses on the operations of data, not on the implementation of the operations  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  A natural extension of functional abstraction ▫Abstract data type (ADT)  A collection of data and a set of operations on the data  You can use an ADT’s operations without knowing their implementations or how data is stored, if you know the operations’ specifications 4 10/26/2015

Abstraction and Information Hiding Information hiding ▫Hide details within a module ▫Ensure that no other module can tamper with these hidden details ▫Makes these details inaccessible from outside the module ▫Public view of a module  Described by its specifications ▫Private view of a module  Implementation details that the specifications should not describe 5 10/26/2015

Abstract data type (ADT) ▫An ADT is composed of  A collection of data  A 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 6 10/26/2015

Abstraction of a book book title year author publisher price getData() print() checkPrice() checkPublisher() Abstracion of book abstract to attributes behavior 7 10/26/2015

C++ Classes Encapsulation combines an ADT’s data with its 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 members in a class are private  But you can specify them as public ▫Encapsulation hides implementation details 8 10/26/2015

C++ Classes An object’s data and methods are encapsulated 9 10/26/2015

Class definition class clasName { public: list of data member declaration; list of function member declaration; private: list of data member declaration; list of function member declaration; }; // end class definition public : members that are accessible by other modules private : members that are hidden from other modules and can only be accessed by function member of the same class. class members: data and function 10 10/26/2015

Class definition class Sphere { public: Sphere(); // Default constructor Sphere(double initialRadius); // Constructor void setRadius(double newRadius); double getRadius()const; //can’t change data members double getDiameter() const; double getCircumference() const; double getArea() const; double getVolume() const; void displayStatistics() const; ~Sphere() private: double theRadius; // data members should be private }; // end Sphere 11 10/26/2015

Class methods/member functions Constructor – allocates memory for an object and can initialize new instances of a class to particular values. Destructor – destroys an instance of a class when the object’s lifetime ends. C++ function const function – function that cannot alter data member of the class 12 10/26/2015

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 ▫The compiler will generate a default constructor if you do not define any constructors 13 10/26/2015

Constructor Properties Can have more than one constructor (overloading) whereby each constructor must be distinguished by the arguments. Sphere(); Sphere(double initialRadius); Default constructor: Sphere(); Can have argument: Sphere(double initialRadius); Can have default argument: Sphere(double initialRadius =10.00) 14 10/26/2015

Constructor Implementation : default constructor The implementation of a method qualifies its name with the scope resolution operator :: Sets data members to initial values Instance declaration: Sphere unitSphere; // theRadius is set to 1.0 Sphere::Sphere() : theRadius(1.0) { } // end default constructor 15 10/26/2015

Constructor implementation : Constructor with argument Sphere::Sphere(double initialRadius) { if (initialRadius > 0) theRadius = initialRadius; else theRadius = 1.0; } // end constructor Instance declaration: Sphere mySphere(5.1); // set theRadius to /26/2015

Constructor implementation: Constructor with default argument 2 methods of to declare instance of a class: Sphere mySphere(10.1); // set theRadius to 10.1 Sphere mySphere; // set theRadius to default value 5.0 Must avoid ambiguity error Sphere::Sphere(double initialRadius = 5.00) { if (initialRadius > 0) theRadius = initialRadius; else theRadius = 1.0; } // end constructor with default argumen /26/2015

C++ Classes: Destructors Destructor ▫Destroys an instance of an object when the object’s lifetime ends Each class has one destructor ▫For many classes, you can omit the destructor ▫The compiler will generate a destructor if you do not define one Example:  ~Sphere(); 18 10/26/2015

Member function Implementation Method to call the member function: From main() or nonmember function cout << mySphere.getDiameter() << endl; From member function void Sphere::displayStatistics() const { cout << “\nDiameter = " << getDiameter() << “\nVolume = “ << getVolume() << endl; } // end displayStatistics double Sphere::getDiameter() const { return 2.0 * theRadius; } // end getDiameter 19 10/26/2015

Classes as Function Parameters Class objects can be passed to another function as parameters 3 methods of passing class as parameter to function ▫Pass by value ▫Pass by reference ▫Pass by const reference Pass by value – Any change that the function makes to the object is not reflected in the corresponding actual argument in the calling function /26/2015

Pass by value : Example 21 class subject { private: char subjectName[20]; char kod[8]; int credit; public: subject (char *,char *,int k=3); void getDetail(); friend void changeSubject(subject); }; subject:: subject (char *sub,char *kd,int kre) {strcpy(subjectName,sub); strcpy(kod,kd); credit = kre; } void subject:: getDetail() { cout << "\n\nSubject Name : " << subjectName; cout << "\nSubject Code : " << kod; cout << "\nCredit hours : " << credit; } Have to use friend function to pass object as parameter. This nonmember function is accessing private data member. 10/26/2015

Pass by value : Example 22 // friend function implementation that receive object as parameter void changeSubject(subject sub); // receive object sub { cout << "\nInsert new subject name: "; cin >> sub. subjectName; cout << "\nInsert new subject code: "; cin >> sub.kod; cout << "\n Get new information for the subject."; sub. getDetail(); } main() { subject DS("Data Structure C++","SCJ2013"); DS.getDetail(); changeSubject(DS); // pass object DS by value cout << "\n View the subject information again: "; DS.getDetail(); // the initial value does not change getch(); }; Access class member, including private data member from sub. 10/26/2015

Pass by reference Any changes that the function makes to the object will change the corresponding actual argument in the calling function. Function prototype for function that receive a reference object as parameter: use operator & 23 functionType functionName(className & classObject) { // body of the function { 10/26/2015

Pass by reference - Example 24 // pass by reference // friend function that receive object as parameter void changeSubject(subject &sub); // operator & is used { cout << "\nInsert new subject name: "; cin >> sub. subjectName; cout << "\nInsert new subject code: "; cin >> sub.kod; cout << "\n Get new information for the subject."; sub. getDetail(); } main() { subject DS("Data Structure C++","SCJ2013"); DS.getDetail(); changeSubject(DS); // pass by reference cout << "\n View the subject information again: "; DS.getDetail(); // the value within the object has changed getch(); }; 10/26/2015

const parameter Reference parameter can be declared as const if we don’t want any changes being done to the data in the function. Function prototype for function that receive a reference object as parameter. 25 functionType functionName(const className & classObject) { // body of the function { 10/26/2015

const parameter : Example 26 void changeSubject(const subject &sub); // operator const and & is used { cout << "\nInsert new subject name: "; cin >> sub. subjectName; cout << "\nInsert new subject code: "; cin >> sub.kod; cout << "\n Get new information for the subject."; sub. getDetail(); } In this case, data member for sub is trying to be changed. Error will occur since parameter const cannot be modified. 10/26/2015

Class as return value from function Syntax for declaring function that return a class object className functionName(parameter list) { // function body } Syntax to call function that return a class objectName = functionName(); where, ▫objectName, an object from the same class with the type of class return from the function. This object will be assigned with the value returned from function ▫functionName(): function that return class 27 10/26/2015

Class as return value from function : Example 28 Point findMiddlePoint(Point T1, Point T2) { double midX, midY; midX = (T1.get_x() + T2.get_x()) / 2; midY = (T1.get_y() + T2.get_y()) / 2; Point middlePoint(t midX, midY); return middlePoint; } Point point1(10,5), point2(-5,5); Point point3; // use defult argumen point3 = findMiddlePoint(point1, point2) // point3 is the point in the middle of point1 and point2 Function that return a class object, Point Statement that call function that return a class Function type is a class Create instance of Point Return instance of Point Call function that return object, value returned is assigned to point3 10/26/2015

Array of class A group of objects from the same class can be declared as array of a class Example: ▫Array of class students registered in Data Structure class ▫Array of class lecturer teaching at FSKSM ▫Array of class subjects offered in Semester I. Every element in the array of class has it’s own data member and function member. Syntax to declare array of objects : className arrayName[arraySize]; 29 10/26/2015

Array of class : Example 30 class staff { char name[20]; int age ; float salary; public: void read_data() ; { cin >> name >> age >> salary; void print_data() { cout << name << age << salary; } } ; main() { staff manager[20]; // declare array of staff } Declare 20 managers from class staff. Each element has name, age and salary. 10/26/2015

Array of class : Example 2 methods to call member function for manager array. 1.By using array subscript in order to access manager in certain location of the array. cin >> n ; manager[n].read_data() ; cout << manager[n].name << manager[n].age ; manager[n].print_data() ; 2. By using loop in order to access a group of managers // read information for 10 managers for ( int x = 0 ; x < 10; x++ ) manager[x].read_data() ; // print information of 10 managers for ( int y = 0 ; y < 10; y++ ) manager[y].print_data() 31 10/26/2015

Pass array of object to function: Example class info { private: char medicine[15]; char disease[15]; public: void setMed() { cin >> medicine;} void setDisease() { cin >> disease;} char*getMedicine(){return medicine;} char* getDisease() {return disease;} }; 32 main() { info data[10]; for (int n = 0; n < 5; n++) { data[n].setMedicine); data[n].setDisease(); } cout <<"\nList of disease and medicine"; for (int n = 0; n < 5; n++) cout << "\n" << data[n].getMedicine() << data[n].getDisease(); // pass the whole array to function checkMedicine(data); getch(); } Class info store information about disease and the relevant medicine 10/26/2015

Pass array of object to function: Example checkMedicine(data) function receive an array of object info. This function require the user to enter the name of the disease. Based on the disease’s name, the function will search for the medicine that is suitable for the disease /26/2015

Pass array of object to function: 34 void checkMedicine(info x[]) { char diseas[20]; int found = 0; cout << "\nEnter the disease name: "; cin >> diseas; for (int n = 0; n < 5; n ++) if (strcmp(diseas, x[n].getDisease()) == 0 ) { cout << "\nMedicine for your disease: " << diseas << " is " << x[n].getMedicine(); found = 1; break; } if (found == 0) cout << "\nSorry, we cannot find the medicine for your disease. Please refer to other physician."; } checkMedicine( data); Call this function, where data is an array of objects from class info. 10/26/2015

Pointer to Object Pointer – store address of a variable. Pointer can also store address of an object. Example student student1; // create instance of student student* studentPtr = &student1; Create a pointer variable studentPtr and initialize the pointer with the address of instance student /26/2015

Pointer to Object Method to access class member through pointer variable studentPtr : 1)(* studentPtr ).print() or 2) studentPtr ->print() 36 10/26/2015

Pointer to Object : Example 37 // pointer to object #include class student { private: char name[30]; unsigned long metricNo; public: // konstruktor 2 param student(char* nama,unsigned long num) { no_metrik = num; strcpy(name, nama); } void print() { cout <<“\nStudent’s name:“ << name; cout <<“\nStudent’s metric number:“ << metricNo; } }; void main() { student student1("Ahmad", ); student student2("Abdullah", ); cout << “Address of the object"; cout << "\nAddress student1: " << &student1 << "\nAddress student2 : " << &student2; student* ptr; cout << "\n\nPointer value “; ptr = &student1; cout <<"\nPointer value for student1“ << ptr; ptr = &student2; cout <<"\nPointer value for student2“ << ptr; ptr ->print(); } 10/26/2015

Pointer to Object PROGRAM OUTPUT 38 Address of the object Address student1: : 0x0012ff68 Address student2: : 0x0012ff44 Pointer value Pointer value for student1 : 0x0012ff68 Pointer value for student2 : 0x0012ff44 Student’s name: Abdullah Student’s metric number: /26/2015

Pointer to Object We can also allocate memory for a pointer variable using operator new We can destroy memory for a pointer variable using operator delete Example: 39 void main() { student *ptr = new student("Ahmad", ); ptr -> print(); delete(ptr); ptr = new student("Abdullah", ); ptr ->print(); delete(ptr); } 10/26/2015

Header File and Implementation File To implement ADT C++ separate files into header files and implementation files. This way, programmers can use implementation file without knowing how the member functions are implemented. Each class definition is placed in a header file ▫Classname.h The implementation of a class’s methods are placed in an implementation file ▫Classname.cpp 40 10/26/2015

The header file – Sphere.h Sphere.h */ const double PI = ; class Sphere { public: Sphere(); // Default constructor Sphere(double initialRadius); // Constructor void setRadius(double newRadius); double getRadius() const; // can’t change data members 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 41 10/26/2015

The implementation file- Sphere.cpp Sphere.cpp */ #include #include "Sphere.h" // must include 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 42 10/26/2015

The implementation file- Sphere.cpp void Sphere::setRadius(double newRadius) { if (newRadius > 0) theRadius = newRadius; else theRadius = 1.0; } // end setRadius The constructor could call setRadius 43 10/26/2015

The implementation file- Sphere.cpp double Sphere::getRadius() const { return theRadius; } // end getRadius... double Sphere::getArea() const { return 4.0 * PI * theRadius * theRadius; } // end getArea /26/2015

Client File: Using the class Sphere /* SphereDemo.cpp */ #include #include "Sphere.h" // must include header file using namespace std; int main() // the client { Sphere unitSphere; Sphere mySphere(5.1); cout << mySphere.getDiameter() << endl;... } // end main 45 10/26/2015

File Compilation and Execution Compile all.cpp files separately in order to create object files. Link all files to create.exe files. 46 Sphere.h Sphere.cpp sphereDemo.cpp compile Object files for Sphere.cpp Object files for SphereDemo.cpp link Execution file include 10/26/2015

Create File Project in Borland C++ Environment Steps to create project file: Compile.cpp files separately. Crete project file by choose the menu Set the project setting as follows: Project name : ProjectName.prj or ProjectName.ide Target name: will create automatically Target type: Application [.exe] Platform : Win32 Target model : Console Frameworks/Control: Uncheck all the check boxes. Libraries: Static Then click OK /26/2015

Create File Project in Borland C++ Environment Choose the implementation file for the projects: ▫Right click the mouse button on the ProjectName.exe. ▫Delete all files in the list. ▫Choose and choose Sphere.cpp and ▫Click button. ▫Choose and choose SphereDemo.cpp and ▫Click button. Link all object files by clicking ProjectName.exe and choose menu then choose. If there is a linker error, debug the error and link the files again. The execution file will be generated when all errors have been debug. Run the execution file by choosing and /26/2015

Conclusion In this class you have learned about: Data Abstraction Concept Review C++ concept: ▫Declaring a class, data member and function member ▫Creating constructor and destructor ▫Create object as function parameter ▫Return object from a function ▫Array of class & Pointer to class ▫Define and implement a class within header files and implementation files ▫Welcome to Data Structure class 49 10/26/2015

References 1.Frank M. Carano, Data Abstraction and problem solving with C++. Walls and Mirrors Nor Bahiah et al. Struktur data & algoritma menggunakan C++. Penerbit UTM, /26/2015