1 DATA ABSTRACTION: USER DEFINED TYPES AND THE CLASS.

Slides:



Advertisements
Similar presentations
For(int i = 1; i
Advertisements

STRING AN EXAMPLE OF REFERENCE DATA TYPE. 2 Primitive Data Types  The eight Java primitive data types are:  byte  short  int  long  float  double.
Is the shape below a function? Explain. Find the domain and range.
Domain and Range Increasing and Decreasing x- and y-intercepts
Starting Out with C++, 3 rd Edition 1 Chapter 11 – Structured Data Abstract data types (ADTs) are data types created by the programmer. ADTs have their.
Introduction to Programming Lecture 39. Copy Constructor.
LCS Non-Dynamic Version int function lcs (x, y, i, j) begin if (i = 0) or (j = 0) return 0; else if (x[i] = y[j]) return lcs(x, y, i-1, j-1)+1; else return.
ECE 264 Object-Oriented Software Development Instructor: Dr. Honggang Wang Fall 2012 Lecture 21: Strings (cont.)
Constants and Data Types Constants Data Types Reading for this class: L&L,
Topic 6A – The char Data Type. CISC 105 – Topic 6A Characters are Numbers The char data type is really just a small (8 bit) number. As such, each symbol.
1 Data Structures CSC Data Types & Data Structures Applications/programs read, store and operate on data. Finally output results. What is data?
Representation and Conversion of Numeric Types 4 We have seen multiple data types that C provides for numbers: int and double 4 What differences are there.
Math – Getting Information from the Graph of a Function 1.
LeadSquared File Browser Folder management – See list of folders New Icon, which opens up a popup to manage folders.
Windows Programming, C.-S. Shieh, KUAS EC, Chapter 3 Operators and Expressions.
GUIDED BY- A.S.MODI MADE BY- 1. SHWETA ALWANI 2. PRIYANKA.
Primitive Variables.
The character data type char. Character type char is used to represent alpha-numerical information (characters) inside the computer uses 2 bytes of memory.
Primitive Variables.
Math – What is a Function? 1. 2 input output function.
Data types  CHAR (size): This data type is used to store character strings values of fixed length. The size in brackets determines the number of characters.
Assignment Help From Requirements Elicitation to Elicitation.
1 CS1430: Programming in C++ Section 2 Instructor: Qi Yang 213 Ullrich
Matlab Data types, input and output. Data types Char: >> a = ‘ Jim ’ Char: >> a = ‘ Jim ’ Numeric: uint8, uint16, uint32, uint64 int8, int16, int32, int64.
Primitive Data Types 1 In PowerPoint, point at the speaker icon, then click the "Play" button.
Data Types Always data types will decide which type of information we are storing into variables In C programming language we are having 3 types of basic.
LOOPING IN C. What would be the output of the following program main( ) { int j ; while ( j
Find LCM Least Common Multiple of 3 and 5: List the Multiples of each number, The multiples of 3 are 3, 6, 9, 12, 15, 18,... etc The multiples of 5 are.
Convert from degree measure to radians: 1. 54° ° Convert from radian measure to degree measure: 3. 16π/ π/5.
C LANGUAGE UNIT 3. UNIT 3 Arrays Arrays – The concept of array – Defining arrays – Initializing arrays.
Chapter 2 Variables and Constants. Objectives Explain the different integer variable types used in C++. Declare, name, and initialize variables. Use character.
Unit 2 Review. What does the graph tell you???? What is the Domain What is the range What is the y intercept What are the relative max and mins, absolute.
Code: BCA302 Data Structures with C Prof.(Dr.) Monalisa Banerjee By.
Characters must also be encoded in binary. ASCII maps characters to numbers.
Fundamentals 2.
Prepared by Dr. Inayatullah Shah
Completing the Square and writing in Vertex Form
EPSII 59:006 Spring 2004.
Lecture-5 Arrays.
8-1: Relations and Functions
Data Types The type states how much and what kind of data the variable can store. integers- whole numbers no fractional parts int, short, long floating.
Treatment List: Case # { } {List treatment and tooth numbers}
Variables ,Data Types and Constants
Unit-2 Objects and Classes
Introduction to Java Programming
Escape Sequences Some Java escape sequences: See Roses.java (page 68)
Let’s Review Functions
Data Types.
פחת ורווח הון סוגיות מיוחדות תהילה ששון עו"ד (רו"ח) ספטמבר 2015
Objective 1A f(x) = 2x + 3 What is the Range of the function
Chapter 2: Java Fundamentals
Storing Information Each memory cell stores a set number of bits (usually 8 bits, or one byte) (byte addressable)
Function Rules and Tables.
Data Types Imran Rashid CTO at ManiWeber Technologies.
2.1(c) Notes: Quadratic Functions
Chapter 2: Java Fundamentals
Homework Analyzing Graphs
Data Structures: Introduction
1.5: Velocity-time graphs
Introduction to Computer Systems
ECE 103 Engineering Programming Chapter 8 Data Types and Constants
Function Overloading.
Relations, Domain and Range
(3, 2) 2 -3 (-4, -3) -2 (5, -2) 1. a) Find: f(3) = ______
Data Structures: Abstract Data Types (ADTs)
Data Structures: Introduction
Let’s Review Functions
Variables and Constants
Let’s Review Functions
Functions What is a function? What are the different ways to represent a function?
Presentation transcript:

1 DATA ABSTRACTION: USER DEFINED TYPES AND THE CLASS

2 DATA TYPES A DATA TYPE IS A FORMAL DESCRIPTION OF: 1. THE DOMAIN THAT AN OBJECT OF THAT TYPE CAN HAVE. 2. THE BASIC SET OF OPERATIONS THAT CAN BE APPLIED TO VALUES OF THAT TYPE. 3. DATA REPRESENTATION.

3 THE FORMAL DESCRIPTION OF int AND float VALUES AND THE ALLOWABLE OPERATIONS ON SUCH DATA TYPE COME FROM MATHEMATICS. THE OPERATIONS ARE: +, -, *, AND /. THE RANGE OF VALUES CAN BE LISTED AS INT_MIN TO INT_MAX.

4 THE VALUES OF TYPE char ARE THE ALPHANUMERIC CHARACTERS OF THE ASCII SET. MEMBERS ARE ORDERED IN RELATION TO EACH OTHER. '0' < '1' < '2' <... '7' < '8' < '9' AND 'a' < 'b' < 'c'<... 'x' < 'y' < 'z'

5 AN OBJECT OF THE BASIC TYPES int, float, AND char CAN HOLD ONLY ONE VALUE. EACH ONE IS MADE UP OF INDIVISIBLE, OR ATOMIC ELEMENTS. int AND char SHARE A COMMON PROPERTY: THEY ARE ORDINAL TYPES. THE VALUES OF EACH TYPE CAN BE LISTED IN A SEQUENCE.

6 IN SOME INSTANCES, THE BASIC TYPES MAY NOT BE SUITABLE FOR DATA REPRESENTATION, OR SIMPLY NOT QUITE READABLE. C++ HAS A MECHANISM FOR ALLOWING TO CREATE NEW DATA TYPES. THAT IS, THE PROGRAMMERS DECLARE AND DEFINE NEW TYPES. DATA ABSTRACTION: SIMPLE TYPES (USER-DEFINED)

7 EXAMPLE: TYPE DEFINITION typedef existing_type_name new_type_name ;

8 A SIMULATION OF THE TYPE Logical : typedef int Logical; const Logical TRUE = 1; const Logical FALSE = 0; : Logical positive; : positive = TRUE; // initialize flag

9 MORE ON DATA ABSTRACTION ABSTRACT DATA TYPES PROVIDE FOR THE ABILITY TO MODEL THE DOMAIN AND OPERATIONS OF DATA WITHOUT ANY CONCERN ABOUT IMPLEMENTATION.

10 THE CASE OF THE "COUNTER" A COUNTER IS A SIMPLE INTEGER VARIABLE. ITS VALUE IS CHANGED AND ACCESSED DEPENDING ON SOME OTHER TASK.

11 COMMON OPERATIONS PERFORMED (ON THE INTEGER VARIABLE) ARE: 1. CLEAR (START AT SOME INITIAL VALUE) 2. ALTER THE VALUE TO KEEP TRACK OF TASK (INCREMENT) 3. ALTER THE VALUE TO KEEP TRACK OF TASK (DECREMENT) 4. EXAMINE OR PRINT THE CURRENT VALUE (ACCESS)

12 EXAMPLE: PROBLEM: GRADUATION CERTIFICATION REFERS TO EVALUATING EARNED CREDITS TO ASSURE THAT STUDENTS HAVE SATISFIED CURRICULUM REQUIREMENTS. SOME STUDENTS DO, SOME DO NOT. DEVELOP AND IMPLEMENT A SYSTEM THAT KEEPS TRACK OF THOSE STUDENTS WHO ARE GRADUATING AND THOSE THAT ARE DELAYED BASED ON NUMBER OF CREDITS EARNED.

13 ANALYSIS: 1. DISCUSSION (ONLY REGARDING COUNTER) THE OPERATIONS TO BE PERFORMED ON THE COUNTER ARE: INITIALIZE INCREMENT DECREMENT ACCESS

14 2. SPECIFICATION (ONLY REGARDING COUNTER) a) OPERATIONS void Initialize(int); void Increment(); void Decrement(); int Access_Value(); b) DATA int value;

15 GRAD-VALID VALIDATE GET_CREDITSPRINT RESULT LEVEL 0 LEVEL 1 3. STRUCTURE CHART

16 NEW CONCEPTS THE CLASS

17 RELATIONSHIP BETWEEN DATA AND OPERATIONS: SEPARATE ENTITIES PROCESS A DATA STRUCTURES CONTROL STRUCTURES PROCESS D PROCESS C PROCESS B

18 ALTERNATIVE REPRESENTATION THE CLASS, A SET OF OBJECTS, ALLOWS FOR THE REPRESENTATION OF DATA AND OPERATIONS INTO A COHESIVE UNIT.

19 RELATIONSHIP BETWEEN DATA AND OPERATIONS: A COHERENT UNIT CONTROL STRUCTURES AND DATA STRUCTURES PROCESS A PROCESS D PROCESS C PROCESS B DATA

20 THE C++ CLASS A MECHANISM TO MODEL OBJECTS WITH MULTIPLE ATTRIBUTES. THE C++ CLASS ALLOWS FOR THE DEFINITION A NEW TYPE OF DATA ACCORDING TO THE NEEDS OF THE PROBLEM, AND TO DEFINE OPERATIONS (METHODS) TO ACT UPON THE TYPE (ABSTRACT DATA TYPING).

21 INFORMATION HIDING THE ENCAPSULATION OF IMPLEMENTATION DETAILS. PRIVATE CODE AND DATA CANNOT BE ACCESSED DIRECTLY.

22 CLASS SYNTAX class { public: private: };

23 class { public: // optional private:// optional // optional };

24 EXAMPLE 1 // class declaration section class Date { private: int month; //a data member int day; // a data member int year; // a data member public: Date( int = 11, int = 16, int = 2001 ); // the constructor void setdate(int, int, int); // a member function void showdate(); // a member function } ;

25 SYNTAX OF DEFINING MEMBER FUNCTIONS :: ( ) { }

26 EXAMPLE 1 // class implementation section Date::Date( int mm, int dd, int yyyy) { month = mm; day = dd; year = yyyy; } void Date:: setdate(int mm, int dd, int yyyy) { month = mm; day = dd; year = yyyy; return ; }

27 void Date::showdate() { cout<< “ The date is “; cout<< setfill ( ‘0’) << setw(2)<< month << ‘/ ‘ << setw(2)<< day << ‘/ ‘ << setw(2)<< year % 100 ; // extract last //two year digits cout<< ednl ; return ; }

28 Class Scope and Accessing Class Members A class data members and function members belong to that class scope. Nonmember functions are defined as file scope. Within class scope members are accessible by using their name Outside class scope, class members are referenced through one of the handles on an object – an object name, a reference to an object or pointer to an object. Variable defined in member function has function scope. You can hide data member in a function by using same name.

29 Once the class has been defined, it can be used as a type in object, array and pointer definitions. For example class Date can be used in the following main function as follows

30 int main () { Date a, b, c(4, 1, 1998) // declare three objects – //initialize one of them b.setdate(12, 25, 2002);//assign values to b’s data members a.Showdate( ); // display object a’s values b.Showdate( ); // display object b’s values c.Showdate( ); // display object c’s values return 0 ; } /*output The date is 07/04/01 The date is 12/25/02 The date is 04/01/98 */

31 IMPLEMENTATION: THE Counter CLASS // File: Counter.h #include // contains definitions of // INT_MAX and INT_MIN class Counter { public: // member functions void Initialize(int init_value); // initialize counter void Increment();// increment counter void Decrement();// decrement counter int Access_Value();// return current counter // value private: // data members int value; };

32 void Counter::Initialize(int init_value) // initialize counter { value = init_value; } // Initialize() void Counter::Increment() // increment counter { if (value < INT_MAX) value++; else cerr << "Counter overflow. Increment ignored." << endl; } // Increment()

33 void Counter::Decrement() // decrement counter { if (value > INT_MIN) value--; else cerr << "Counter underflow. Decrement ignored." << endl; } // Decrement() int Counter::Access_Value()// return current counter value { return value; } // Access_Value()

34 #include #include "Counter.h" void main() { // Minimum credits for graduation const int GRAD_LEVEL = 130; // local objects of class Counter Counter c_graduated; Counter c_delayed; // local data int class_size, number_of_credits; int i; // get the graduating class size cout << "Enter the class size: "; cin >> class_size; IMPLEMENTATION (USING THE Counter CLASS)

35 // initialize counter values c_graduated.Initialize(0); c_delayed.Initialize(class_size); // use of Increment() and Decrement() for (i = 0; i < class_size; i++) { cout << "Please enter the number of validated credits: "; cin >> number_of_credits; if (number_of_credits >= GRAD_LEVEL) { c_graduated.Increment(); c_delayed.Decrement(); } // print results using Access_value() cout << "The number of students graduating this semester: " << c_graduated.Access_Value() << endl; cout << "The number of students delayed this semester: " << c_delayed.Access_Value() << endl; return; }

36 See example on page 405 and 406

37 Constructors A constructor function is any function that has the same name as it s class. Constructors can be over loaded Constructor has no return type If no constructor is written compiler will provide default constructor

38 Default Constructor Any constructor that does not require any parameters when it is called. This can be because » no parameters are declared »All parameters have been given default values. For example Date(int=7, int =4, int = 2001 )

39 Destructor The name of the destructor for a class is the tilde(~) character followed by the name of the class. There can be only one destructor Destructor take no parameter and it has no return value Destructor is called when a class object is destroyed. A default destructor is provided if not written by programmer.

40 ANOTHER EXAMPLE: PROBLEM: USING FLOATING POINT NOTATION TO REPRESENT FRACTIONS MAY PRODUCE APPROXIMATE RESULTS. FOR EXAMPLE, THE RATIONAL NUMBER 1/3 IS REGARDLESS OF THE NUMBER OF ACCURATE DIGITS, IT WOULD BE IMPOSSIBLE TO PRECISELY REPRESENT SUCH A NUMBER. DESIGN, DEVELOP AND IMPLEMENT A SYSTEM TO REPRESENT FRACTIONS ACCURATELY. AS AN EXAMPLE, WE WILL IMPLEMENT THE ADDITION OPERATION ONLY.

41 ANALYSIS: 1. DISCUSSION THE OPERATIONS TO BE PERFORMED ON THE Fraction CLASS ARE: CONSTRUCT AND INITIALIZE A NEW FRACTION OBJECT DISPLAY A FRACTION GET A FRACTION ADD TWO FRACTIONS (RESULTING IN THIRD FRACTION) CONVERT TO FLOAT POINT NOTATION

42 2. CLASS SPECIFICATION A) PUBLIC CONSTRUCT: Fraction(int n, int d = 1); Fraction(); void Get(); void Show(); double Evaluate(); B) PRIVATE int numerator; int denominator; C) FRIEND friend Fraction operator+ (Fraction f1, Fraction f2);

43 NEW CONCEPTS FRIEND FUNCTIONS, OPERATOR OVERLOADING, AND CONSTRUCTORS

44 class { friend ;// optional public: // optional private:// optional // optional };

45 class Fraction { // operator overload, so we can do fractional arithmetic // using a familiar operator, the "+" sign friend Fraction operator+ (Fraction f1, Fraction f2); public: : private: : }; FRIEND FUNCTIONS AND OPERATOR OVERLOADING

46 class Fraction { : public: Fraction(int n, int d = 1); // constructor Fraction(); // another constructor : private: : }; CONSTRUCTORS

47 // File: Fraction.h // The class declaration for fractions is included in this // header file. We represent a fraction using a pair of integers: // the numerator (top part) and denominator (bottom part). // This class definition includes more than the rational // numbers, since the number infinity is permitted (a fraction // with a zero denominator--except 0/0)

48 class Fraction { // operator overload, so we can do fractional arithmetic // using a familiar operator, the "+" sign friend Fraction operator+ (Fraction f1, Fraction f2); public: Fraction(int n, int d = 1); // constructor // Set numerator = n, denominator = d // if no second argument, default to 1 // another constructor: Fraction();// Set numerator = 0, denominator = 1 void Get();// Get a fraction from keyboard void Show();// Display a fraction on screen double Evaluate();// Return the decimal value of a fraction private: int numerator;// top part int denominator;// bottom part };

49 // File: Fraction.cpp // The class definition for fractions #include #include "Fraction.h" Fraction operator+ (Fraction f1, Fraction f2) // Override of operator "+" for fraction addition { Fraction r; // the return value of f1 + f2 // compute numerator r.numerator = (f1.numerator * f2.denominator) + (f2.numerator * f1.denominator); // compute denominator r.denominator = f1.denominator * f2.denominator; return r; // return the result }

50 Fraction::Fraction(int n, int d) // A Fraction constructor which allows the numerator and // denominator to be specified { numerator = n; denominator = d; }

51 Fraction::Fraction() // Another constructor. If no arguments specified, default to 0/1 { numerator = 0; denominator = 1; }

52 void Fraction::Get() // Get a fraction from standard input, in the form // "numerator/denominator" { char div_sign; // used to consume the '/' character during input cin >> numerator >> div_sign >> denominator; }

53 void Fraction::Show() // Display a fraction, in the form "numerator/denominator" { cout << numerator << '/' << denominator; }

54 double Fraction::Evaluate() // Calculates and returns the decimal value of a fraction { double n = numerator;// convert numerator to float double d = denominator;// convert denominator to float return (n / d);// return float representation }

55 // File: TestFraction.cpp // Test the Fraction class #include // for output #include "Fraction.h"// for Fraction declarations void main() { // Fraction constructors Fraction f1(3, 2), f2(4), f3, f4; // Display the fractions cout << endl << "The fraction f1 is "; f1.Show(); cout << endl << "The fraction f2 is "; f2.Show(); cout << endl << "The fraction f3 is "; f3.Show(); // Get and display a fraction cout << endl << "Enter a fraction of your own: "; f3.Get(); cout << endl << "You entered "; f3.Show();

56 // Add two Fractions using the overloaded operator f4 = f1 + f3; // Display the fractions and result cout << endl << endl << "The sum of "; f1.Show(); cout << " and "; f3.Show(); cout << " is "; f4.Show(); // Find and display the floating-point value of the Fraction cout << endl << "The value of this fraction is " << f4.Evaluate() << endl; }