intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng lập trình hướng đối tượng - ĐH Bách khoa

Chia sẻ: Nguyễn Mạnh Cường | Ngày: | Loại File: PDF | Số trang:107

197
lượt xem
33
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Thành phần “giải thuật”bao gồm code ₫ược viết trong các module. Trong từng module, code ₫ược gom nhóm thành những hàm chức năng, mỗi hàm ₫ược nhận dạng

Chủ đề:
Lưu

Nội dung Text: Bài giảng lập trình hướng đối tượng - ĐH Bách khoa

  1. BÀI GIẢNG: MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
  2. MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Đố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 Slide 1
  3. MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 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. 5. Đặc tả class & các tính chất cơ bản của ₫ối tượng trong VC++. 6. Đặc tả class & các tính chất cơ bản của ₫ối tượng trong Java. 7. Chi tiết về gọi hàm, gởi thông ₫iệp & ₫a xạ của VC++. 8. Chi tiết về gọi hàm, gởi thông ₫iệp & ₫a xạ của Java. 9. Chi tiết về thường trú, serialization, COM, Generalization & Template của VC++. 10. Chi tiết về thường trú, serialization, Generalization của Java. 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 Slide 2
  4. MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Chương 1 ÔN LẠI CÁC TÍNH CHẤT CỦA LẬP TRÌNH CẤU TRÚC Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 3
  5. Phương pháp phân tích từ-trên-xuống Mỗi sự vật trong môi trường xung quanh ta ₫ều ₫ược cấu thành từ nhiều phần tử nhỏ hơn, mỗi phần tử nhỏ lại ₫ược cấu thành từ nhiều phần tử nhỏ hơn nữa. Thí dụ, con người gồm ₫ầu, mình, tứ chi. Tứ chi gồm 2 tay và 2 chân... Mỗi công việc cần giải quyết bằng máy tính cũng ₫ược cấu thành từ nhiều công việc nhỏ hơn, mỗi công việc nhỏ hơn lại ₫ược cấu thành từ nhiều công việc nhỏ hơn nữa... Phương pháp phân tích từ-trên-xuống (top-down analysis) là phương pháp thường 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. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 4
  6. Phương pháp phân tích từ-trên-xuống (tt) Công việc cần chia thành nhiều công việc nhỏ hơn, ₫ơn giản ₫ể giải quyết (A) giải quyết hơn. Công việc Công việc Công việc ... A1 A2 An Công việc Công việc Công việc Công việc Công việc Công việc A11 A12 A1n An1 An2 Ann Các công việc ₫ủ nhỏ ₫ể ₫ược miêu tả bằng ... ... ... ... 1 lệnh hay 1 lời gọi hàm/thủ tục ₫ã có. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 5
  7. Tầm vực truy xuất biến 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). Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 6
  8. Cấu trúc 1 chương trình hướng cấu trúc Chương trình = cấu trúc dữ liệu + giải thuật module global data (package) local data of module entry 'start' local data of function Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 7
  9. Cấu trúc 1 chương trình hướng cấu trúc Thành phần “giải thuật” bao gồm code ₫ược viết trong các module. Trong từng module, code ₫ược gom nhóm thành những hàm chức năng, mỗi hàm ₫ược nhận dạng và truy xuất thông qua tên hàm. Thành phần “dữ liệu” bao gồm các biến dữ liệu ₫ược ₫ịnh nghĩa trong các module. Trong từng module, về mặt tầm vực truy xuất, các biến có thể ₫ược ₫ịnh nghĩa 1 trong 2 cấp tầm vực : Public : bất kỳ lệnh nào của chương trình ₫ều có thể truy xuất ₫ược. Private : chỉ có các lệnh trong module hiện hành mới có thể truy xuất. Ngoài ra trong từng hàm chức năng, người ta có thể ₫ịnh nghĩa các biến cục bộ, các biến này chỉ ₫ược truy xuất cục bộ bởi các lệnh trong hàm tương ứng. Ngoại lệ, trong 1 số ngôn ngữ như C, người ta cho phép ₫ịnh nghĩa biến trong lệnh thực thi (block — compose), biến này chỉ ₫ược truy xuất cục bộ bởi các lệnh trong thân của lệnh block tương ứng. ₫iểm yếu nhất trong ngôn ngữ hướng cấu trúc là cho phép ₫ịnh nghĩa biến toàn cục, nếu biến này bị lỗi, ta rất khó xác ₫ịnh nguyên nhân gây lỗi. Việc mang 1 hàm hay 1 module của ứng dụng này sang ứng dụng khác cũng sẽ khó khăn vì thường gây ra hiệu ứng “dây chuyền”. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 8
  10. Cấu trúc 1 chương trình hướng cấu trúc 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. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 9
  11. Mối quan hệ client/server giữa các module //₫ặc tả interface của module B : server //₫ặc tả interface của module A : client extern int B_intA; #include B.h typedef struct {...} B_Type1; extern int A_intA; #define B_MAXLEN 1024 typedef struct {...} A_Type1; int B_func1(char c, char* d); #define A_PI 3.14159 int A_func1(int a, double b); #include B.h #include A.h //hiện thực của module B //hiện thực của module A int B_intA; int A_intA; static int B_intB; static int A_intB; int B_func1(int a, double b) { int A_func1(int a, double b) { ... B_Type1 var; B_func2(a); ... ... B_intA = B_MAXLEN; } A_func2(a); static void B_func2(int a) { B_func1(a,b); } } static void A_func2(int a) { } Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 10
  12. Hai module sử dụng tài nguyên của nhau //₫ặc tả interface của module B //₫ặc tả interface của module A #define _BH #define _AH #ifndef _AH #ifndef _BH #include A.h #include B.h #endif #endif extern int B_intA; extern int A_intA; typedef struct {...} B_Type1; typedef struct {...} A_Type1; #define B_PI 3.14159 #define A_PI 3.14159 int B_func1(char c, char* d); int A_func1(int a, double b); #include B.h #include A.h //hiện thực của module B //hiện thực của module A int B_intA; int A_intA; static int A_intB; static int A_intB; int B_func1(int a, double b) { int A_func1(int a, double b) { ... ... B_func2(a); A_func2(a); ... ... } } static void B_func2(int a) { static void A_func2(int a) { } } Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 1: Ôn lại các tính chất của lập trình cấu trúc Trường ĐH Bách Khoa Tp.HCM Slide 11
  13. MÔN LẬP TRÌNH HƯỚNG ĐỐ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 Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 12
  14. Nội dung 2.1 Cấu trúc của 1 ứng dụng hướng ₫ối tượng 2.2 Đối tượng, thuộc tính, tác vụ. 2.3 Abstract type và class. 2.4 Tính bao ₫óng. 2.5 Tính thừa kế & cơ chế 'override'. 2.6 Tính bao gộp. 2.7 Thông ₫iệp, tính ₫a xạ và kiểm tra kiểu. 2.8 Tính tổng quát hóa. 2.9 Tính thường trú. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 13
  15. Cấu trúc chương trình OOP Chương trình = tập các ₫ối tượng tương tác nhau Đối tượng (object) local data of object entry local data of operation Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 14
  16. Cấu trúc chương trình OOP 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. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 15
  17. Đối tượng (Object) Đối tượng là nguyên tử cấu thành ứng dụng. Đối tượng bao gồm 2 loại thành phần : thuộc tính (dữ liệu) : mỗi thuộc tính mang 1 giá trị nhất ₫ịnh tại từng thời ₫iểm. tác vụ (operation) : thực hiện 1 công việc nào ₫ó. Implementation (class) Interface (abstract type) Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 16
  18. Kiểu trừu tượng (Abstract type) Abstract type (type) ₫ịnh nghĩa interface sử dụng ₫ối tượng. Ta dùng tên nhận dạng ₫ể ₫ặt tên cho kiểu và ₫ể nhận dạng nó. Interface là tập hợp các 'entry' mà bên ngoài có thể giao tiếp với ₫ối tượng. Ta dùng signature ₫ể ₫ịnh nghĩa mỗi 'entry'. Signature gồm : tên tác vụ (operation, function) danh sách tham số hình thức, mỗi tham số ₫ược ₫ặc tả bởi 3 thuộc tính : tên, type và chiều di chuyển (IN, OUT, INOUT). ₫ặc tả chức năng của tác vụ (thường ở dạng chú thích). Ta dùng tên của abstract type (chứ không phải class) ₫ể ₫ặc tả kiểu cho biến, thuộc tính, tham số hình thức. User không cần quan tâm ₫ến class (hiện thực cụ thể) của ₫ối tượng. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 17
  19. Kiểu trừu tượng trong Java 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 Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 18
  20. Class (Implementation) Ta dùng tên nhận dạng ₫ể ₫ặt tên cho class và ₫ể nhận dạng nó. Class ₫ịnh nghĩa chi tiết hiện thực ₫ối tượng : ₫ịnh nghĩa các thuộc tính dữ liệu, mỗi thuộc tính ₫ược ₫ặc tả bởi các thông tin về nó như tên nhận dạng, kiểu dữ liệu, tầm vực truy xuất,... Kiểu của thuộc tính có thể là type cổ ₫iển (số nguyên, thực, ký tự, chuỗi ký tự,...) hay 'abstract type', trong trường hợp sau thuộc tính sẽ là tham khảo ₫ến ₫ối tượng khác. Trạng thái của ₫ối tượng là tập giá trị tại thời ₫iểm tương ứng của tất cả thuộc tính của ₫ối tượng. Trong thời gian tồn tại và hoạt ₫ộng, trạng tái của ₫ối tượng sẽ thay ₫ổi. 'coding' các tác vụ (miêu tả giải thuật chi tiết về hoạt ₫ộng của tác vụ) và các 'internal function'. Định nghĩa các tác vụ tạo (create) và xóa (delete) ₫ối tượng. Định nghĩa các tác vụ 'constructor' và 'destructor'. User không cần quan tâm ₫ến class của ₫ối tượng. Môn : Lập trình hướng ₫ối tượng Khoa Công nghệ Thông tin Chương 2 : Các khái niệm chính của lập trình hướng ₫ối tượng Trường ĐH Bách Khoa Tp.HCM Slide 19
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2