0% found this document useful (0 votes)
49 views20 pages

Chapter6 Class and Objects

Kỹ thuật lập trình BKHN

Uploaded by

Minh Huệ Tô
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views20 pages

Chapter6 Class and Objects

Kỹ thuật lập trình BKHN

Uploaded by

Minh Huệ Tô
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

EE3491/EE3490E –

Kỹ thuật lập trình /


Programming Techniques
Chapter 6: Class and
Objects – Part 1
Lecturer: Dr. Hoang Duc Chinh (Hoàng Đức Chính)
Department of Industrial Automation
School of Electrical Engineering
Email: [Link]@[Link] © HĐC 2022.1
Content
6.1. Definitions
6.2. From structure to classs
6.3. Member variables
6.4. Member functions
6.5. Access control

Chapter 6: Class and Objects © DIA 2022.1 2


6.1. Definitions - What is an object?
 It is a software entity
 Model/representative of a physical object:
 Tank, heater, furnace
 Motor, Pump, Valve
 Sensor, Thermometer, Flowmeter
 Control Loop, Control System
 Or a logical/conceptual object:
 Trend, Report, Button, Window
 Matrix, Vector, Polynomial

Chapter 6: Class and Objects © DIA 2022.1 3


An object should have…
 Attributes
 State
 Data
 Relationship
 Behaviour
 Operation
 Response
 Identity
 Semantic/responsibility

Chapter 6: Class and Objects © DIA 2022.1 4


Class
 Class is the implementation of objects which have the same:
 Semantic
 Attributes
 Relationship
 Behaviour
 Class = encapsulation [Data structure + functions]
 Class of vectors, matrice (element data + accessing methods + basic
arithmetic operators)
 Class of rectangles (coordinate data + draw, erase, …)
 Class of transfer functions (coefficients of numerator/denominator
polynomials, stability verification, pole identification, …)
 Data of a class member variables
 Functions of a class member functions
 Class variable an object, an instance

Chapter 6: Class and Objects © DIA 2022.1 5


Object-oriented programming (OOP)
 Abstraction: simplify a problem, easy to reuse
 Data encapsulation/ information hiding: improve
reusability and reliability of the software
 Subtyping/inheritance: make the code and its design
easy to reuse
 Polymorphism: reflect the real world accurately and
enhance the software flexibility

OOP methodology enables highly abstract thinking but close to


the real world!
Chapter 6: Class and Objects © DIA 2022.1 6
6.2 From Structure to Class
struct Time { void addSec(Time& t, int s) {
int hour; // gio [Link]+= s;
int min; // phut if ([Link]> 59) {
intsec; // giay addMin(t, [Link]/60);
}; [Link]%= 60;
}
void addHour(Time& t, int h) { else if ([Link]< 0) {
[Link]+= h; addMin(t, [Link]/60 -1);
} [Link]= ([Link]% 60) + 60;
}
void addMin(Time& t, int m) { }
[Link]+= m; void main() {
if ([Link]> 59) { Time t = {1, 0, 0};
[Link]+= [Link]/60; addMin(t,60);
[Link]%= 60; addMin(t,-5);
} addSec(t,25);
else if ([Link]< 0) { ...
[Link]+= ([Link]/60 -1); }
[Link]= ([Link]% 60) + 60;
}
}
Chapter 6: Class and Objects © DIA 2022.1 7
Issues of Structure
 Direct access to the data without strictly control would results in unsafe
operation
Time t1 = {1, 61, -3};// ??!
Time t2;// Uncertain values
int h = [Link];// ??!
int m = 50;
[Link] = m + 15;// ??!
 There is no difference between “internal details” and “external interface”, a
trivial modification requires users to change the source code
 E.g.: the name of one member variable in Time structure has been changed
struct Time {
int h, m, s;
};
The old code cannot be used:
Time t;
[Link]= 5;
Chapter 6: Class and Objects © DIA 2022.1 8
Encapsulating or “Classifying”
class Time {
int hour; // gio
int min; // phut Member variable
int sec; // giay
public:
Time() {hour=min=sec=0;} Constructor
void setTime(int h, int m, int s) {
hour = h;
min = sec = 0;
addSec(s);
addMin(m); Member functions
}
int getHour() { return hour; }
int getMin() { return min; }
int getSec() { return sec; }
void addHour(int h) {hour += h;}
...

Chapter 6: Class and Objects © DIA 2022.1 9


Encapsulating or “Classifying” cont.
void addMin(int m) { void main() {
min += m; Time t;
if (min > 59) {
[Link](1);
hour += min/60;
min %= 60; [Link](60);
} [Link](-5);
else if (min < 0) { [Link](25);
hour += (min/60 -1); [Link]= 1; // error
min = (min % 60) + 60;
[Link]= 65; // error
}
} [Link]= -3; // error
[Link](1, 65, -3);
void addSec(int s) { int h = [Link]();
sec += s; int m= [Link]();
if (sec > 59) {
int s= [Link]();
addMin(sec/60);
sec %= 60; }
}
else if (sec < 0) {
addMin(sec/60 -1);
sec = (sec % 60) + 60;
}
}
};

Chapter 6: Class and Objects © DIA 2022.1 10


6.3 Member variables
 Variable declaration of a class is similar to that in structure
class Time {
public:
int hour, min, sec;
...
};
 By default, member variables of the class can be neither accessed externally (private
variables) nor initialized conventionally:
Time t = {1, 0, 0};// error!
[Link]= 2;// error!
 It is possible to make a member variable enable to be accessed externally (public
variables), however it is hardly required:
class Point {
public:
int x,y;
};

Chapter 6: Class and Objects © DIA 2022.1 11


Member variables
 Private variables should be accessed via member functions
 The only way to initialize member variable is to use a constructor:
class Time {
...
public:
Time() {hour=min=sec=0;}
};
Time t;// [Link]= [Link]= [Link]= 0;
 Some member variables are used to store internal states of the object, they should not
be accessed by external entities, even indirectly via member functions
class PID {
double Kp, Ti, Td;// controller parameters
double I;// internal state
...
};

Chapter 6: Class and Objects © DIA 2022.1 12


6.4 Member functions
 Definition of structure & functions  Definition of classes
struct Time { class Time {
int hour, min, sec int hour,min,sec;
}; public:
void addHour(Time& t, int h) { void addHour(int h) {
[Link]+= h; hour += h;
} }
... ...
};
 Function call with structure variable  Call of an object member function
Time t; Time t;
... ...
addHour(t,5); [Link](5);

Representation is not the same but it is not the key difference


Chapter 6: Class and Objects © DIA 2022.1 13
Declaration and definition of member
functions
 Usually, class and member variables are declared in a header file (*.h). E.g. in
“mytime.h”:
class Time {
int hour,min,sec;
public:
void addHour(inth);
void addMin(intm);
void addSec(ints);
...
};
 Functions are often defined in source file (*.cpp):
#include “mytime.h”
...
void Time::addHour(inth) {
hour += h;
}

Chapter 6: Class and Objects © DIA 2022.1 14


Declaration and definition of member
functions
 It is possible to define a member function in header file as an inline function (applying for simple one
only), e.g.:
inline void Time::addHour(inth) { hour += h;}
 A member function can be defined in class declaration ⇒ it is an inline function by default, e.g.:
class Time {
int hour,min,sec;
public:
void addHour(int h) { hour += h; }
};
 When defining a member function, it is possible to use member variables and other member functions
without the class name, e.g.:
void Time::addSec(int s) {
...
addMin(sec/60);
...
}

Chapter 6: Class and Objects © DIA 2022.1 15


Member function
class Time {
int hour,min,sec;
public:Time() { hour=min=sec=0; }
void addHour(int h) {
this->hour += h;// this pointer is the address of the object
} // which calls the member function
...
};

void main() {
Time t1,t2; // automatically call the constructor Time() for t1 and t2
[Link](5); // same as addHour(&t1,5);
t2 = t1; // OK
[Link](5); // same as addHour(&t2,5);
...
}

Chapter 6: Class and Objects © DIA 2022.1 16


6.5 Access control
 public: members are public, can be used externally
 private: members are private, cannot be used externally even
in derived classes (will be discussed later)
class Time {
private:
int hour,min,sec;
...
};
 By default, once class is declared, members are private
 protected: members are protected, cannot be accessed
externally but can be used by derived classes (will be discussed
later)

Chapter 6: Class and Objects © DIA 2022.1 17


6.6 Object pointer
#include "mytime.h“
void main() {
Time t;// call constructor Time()
[Link](5);
Time *pt = &t;// pt is identical to this pointer
pt->addSec(70);
pt = new Time;// call constructor Time()
pt->addMin(25);
...
delete pt;
pt = new Time[5]; // call constructor 5 times
for (inti=0; i < 5; ++ i)
pt[i].addSec(10);
...
delete [] pt;
}

Chapter 6: Class and Objects © DIA 2022.1 18


Homework
 Based on Vector structure and related functions
implemented in Chapter 4, build Vector class with necessary
member functions
 Declare a class in order to store student information, it
should include the following attributes:
 Student number (identity): Integer
 Full name: String
 Year of birth: Integer
 Declare and define the class to manage students by member
functions which perform:
 Input student full name
 Input student number
 Input year of birth
 Search and display student information with given student number
Chapter 6: Class and Objects © DIA 2022.1 19
TO BE CONTINUED

Chapter 6: Class and Objects © DIA 2022.1 20

You might also like