BÀI GIẢNG: MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG - Pdf 18

BÀI GIẢNG: MÔN
LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG
MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 1
Đối tượng : SV ₫ại học chính quy ngành CNTT
Tài liệu tham khảo :
 Tập slide bài giảng & thực hành của môn học này.
 The C++ Programming Language (special 3rd edition),
Bjarne Stroustrup, 2000.
 3 CD MSDN trong Microsoft Visual Studio.
 Online-Help của môi trường JBuilder
MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 2
Nội dung chính gồm 10 chương :
1. Ôn lại các tính chất của lập trình cấu trúc.
2. Các khái niệm chính của lập trình OOP.
3. Cơ chế dịch mã OOP sang mã máy.
4. Tổng quát về mức ₫ộ hỗ trợ OOP của VC++ & Java.

sử dụng ₫ể phân tích công việc, nội dung của phương pháp này là cố gắng xác
₫ịnh xem công việc cần giải quyết ₫ược cấu thành từ những công việc nhỏ nào,
mỗi công việc nhỏ ₫ược cấu thành từ các công việc nhỏ hơn nào, cứ như v
ậy cho
₫ến khi những công việc xác ₫ịnh ₫ược là những công việc thật ₫ơn giản, có thể
thực hiện dễ dàng.
Thí dụ việc học lấy bằng kỹ sư CNTT khoa CNTT ĐHBK TP.HCM có thể bao gồm
9 công việc nhỏ hơn là học từng học kỳ từ 1 tới 9, học học kỳ i là học n môn học
của học kỳ ₫ó, học 1 môn học là học m chương của môn ₫ó,
Hình vẽ của slide kế cho thấy trực quan của phương pháp phân tích top-down.
Chương 1: Ôn lại các tính chất của lập trình cấu trúc
Phương pháp phân tích từ-trên-xuống (tt)
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 5
Công việc cần
giải quyết (A)
Công việc
A
1
Công việc
A
2
Công việc
A
n
Công việc
A
11

 Tầm vực của một biến là tập các lệnh ₫ược phép truy xuất biến ₫ó.
 C và C++ cho phép 3 cấp ₫ộ tầm vực sau :
o cục bộ trong function : bất kỳ lệnh nào trong function ₫ều có thể truy xuất
₫ược biến cục bộ trong function ₫ó.
void Command1_Click() {
char strGreeting[256]; // Khai báo cục bộ

}
o cục bộ trong module : bất kỳ lệnh nào trong module ₫ều có thể truy xuất
₫ược biến cục bộ trong module ₫ó.
static char strAddr[256]; // biến cục bộ trong module
char strName[256]; // biến toàn cục
o toàn cục : bất kỳ lệnh nào trong chương trình cũng có thể truy xuất ₫ược
biến toàn cục.
 Trong một ngữ cảnh (cùng 1 function, cùng 1 module, hay cấp toàn cục), không
thể dùng hai biến cùng tên (C phân biệt chữ HOA và chữ thường).
Chương 1: Ôn lại các tính chất của lập trình cấu trúc
Cấu trúc 1 chương trình hướng cấu trúc
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 7
Chương trình = cấu trúc dữ liệu + giải thuật
entry 'start'
global data
module
(package)
local data
of module
local data

Slide 9
 Xét Turbo Pascal, 1 ứng dụng gồm 1 module chương trình và
nhiều module dịch vụ ₫ược gọi là Unit. Để sử dụng các thành phần
trong 1 module nào ₫ó, ta phải dùng lệnh Use.
 Xét C, 1 ứng dụng gồm nhiều module ngang hàng, mỗi module là
1 file gồm nhiều hàm chức năng. Điểm nhập ứng dụng là hàm
main(). Module C cũng có thể là file thư viện liên kết tĩnh (*.lib) hay
₫ộng (*.dll). Để sử dụng các thành phần trong 1 module nào ₫ó, ta
phải dùng lệnh #include.
Chương 1: Ôn lại các tính chất của lập trình cấu trúc
Mối quan hệ client/server giữa các module
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 10
//₫ặc tả interface của module B : server
extern int B_intA;
typedef struct { } B_Type1;
#define B_MAXLEN 1024
int B_func1(char c, char* d);
//₫ặc tả interface của module A : client
#include B.h
extern int A_intA;
typedef struct { } A_Type1;
#define A_PI 3.14159
int A_func1(int a, double b);
#include B.h
//hiện thực của module B
int B_intA;
static int B_intB;

#endif
extern int B_intA;
typedef struct { } B_Type1;
#define B_PI 3.14159
int B_func1(char c, char* d);
//₫ặc tả interface của module A
#define _AH
#ifndef _BH
#include B.h
#endif
extern int A_intA;
typedef struct { } A_Type1;
#define A_PI 3.14159
int A_func1(int a, double b);
#include B.h
//hiện thực của module B
int B_intA;
static int A_intB;
int B_func1(int a, double b) {

B_func2(a);

}
static void B_func2(int a) {
}
#include A.h
//hiện thực của module A
int A_intA;
static int A_intB;
int A_func1(int a, double b) {

Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Cấu trúc chương trình OOP
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 14
Chương trình = tập các ₫ối tượng tương tác nhau
Đối tượng
(object)
local data
of object
local data
of operation
entry
Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Cấu trúc chương trình OOP
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 15
 Cấu trúc chương trình hướng ₫ối tượng rất thuần nhất, chỉ chứa
1 loại thành phần : ₫ối tượng.
 Các ₫ối tượng có tính ₫ộc lập rất cao ⇒ quản lý, kiểm soát
chương trình rất dễ (cho dù chương trình có thể rất lớn) ⇒ dễ
nâng cấp, bảo trì.
 Không thể tạo ra dữ liệu toàn cục của chương trình ⇒ ₫iểm yếu
nhất của chương trình cấu trúc không tồn tại nữa.
Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Đối tượng (Object)
Khoa Công nghệ Thông tin

 User không cần quan tâm ₫ến class (hiện thực cụ thể) của ₫ối
tượng.
Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Kiểu trừu tượng trong Java
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 18
Java hỗ trợ kiểu trừu tượng thông qua lệnh interface, lệnh này ₫ịnh nghĩa
abstract type của nhiều ₫ối tượng của ứng dụng (có thể thuộc nhiều class khác
nhau
.
public interface Sleeper {
public void wakeUp();
public long ONE_SECOND = 1000; // in milliseconds
public long ONE_MINUTE = 60000; // in milliseconds
}
public class DigitalClock extends Applet implements Sleeper {…}
public class AnalogClock extends Applet implements Sleeper {…}

Sleeper object;
Object = new DigitalClock(); //biến object giữ tham khảo ₫ến 1 ₫ối tượng
DigitalClock
Object = new AnalogClock(); //biến object giữ tham khảo ₫ến 1 ₫ối tượng
AnalogClock
Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Class (Implementation)
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng

LPARAM lParam);
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg void OnConnect();
HICON m_hIcon;
private :
SOCKET sock;
u_short portno; // Which tcp port are we going to use?
};
Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Tính bao ₫óng (encapsulation)
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 21
 Bao ₫óng : che dấu mọi chi tiết hiện thực của ₫ối tượng, không
cho bên ngoài thấy và truy xuất ⇒ tạo ₫ộ ₫ộc lập cao giữa các
₫ối tượng (hay tính kết dính - cohesion giữa các ₫ối tượng rất
thấp).
 che dấu các thuộc tính dữ liệu : nếu cần cho phép bên ngoài
truy xuất 1 thuộc tính, ta tạo 2 tác vụ get/set tương ứng ₫ể
giám sát và kiểm soát việc truy xuất (thuộc tính này vẫn ₫ược
che giấu).
 che dấ
u chi tiết hiện thực các tác vụ.
 che dấu các internal function và sự hiện thực của chúng.
 Java, VC++ cung cấp các từ khóa private, protected, public ₫ể
xác ₫ịnh tầm vực truy xuất từng thành phần của class.
Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Tính thừa kế (inheritance)

int xPos, yPos;
COLORREF color;
};
class Group : public Geometry {
public:
Group( );
~Group( );
virtual void Draw( Window *pWnd ); // override
private:
Geometry**ppGeo; // pointer container
int geoCount;
};
Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng
Tính bao gộp (aggregation)
Khoa Công nghệ Thông tin
Trường ĐH Bách Khoa Tp.HCM
Môn : Lập trình hướng ₫ối tượng
Slide 24
 1 ₫ối tượng có thể chứa nhiều ₫ối tượng khác ⇒ tạo nên mối
quan hệ bao gộp 1 cách ₫ệ quy giữa các ₫ối tượng.
 Có 2 góc nhìn về tính báo gộp: ngữ nghĩa & hiện thực.
Góc nhìn ngữ nghĩa
Góc nhìn hiện thực
O
1
O
2
O
3
O


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status