1. Trang chủ
  2. » Thể loại khác

Session03 lap trinh huong doi tuong

6 32 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

2/23/2018 Nội dung • Lịch sử phát triển kỹ thuật lập trình • Hạn chế kỹ thuật lập trình truyền thống • Khái niệm lập trình hướng đối tượng CƠNG NGHỆ JAVA CH3 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG – Đóng gói / Che dấu thơng tin Giảng viên: ThS Lê Nhật Tùng www.lenhattung.com 2/23/2018 http://www.lenhattung.com 2/23/2018 http://www.lenhattung.com Phần mềm ngày lớn Vì • Một số hệ Unix chứa khoảng 4M dòng lệnh • MS Windows chứa hàng chục triệu dòng lệnh • Người dùng ngày đòi hỏi nhiều chức năng, đặc biệt chức thơng minh • Phần mềm ln cần sửa đổi • Cần kiểm sốt chi phí 2/23/2018 http://www.lenhattung.com – Chi phí phát triển – Chi phí bảo trì • Giải pháp sử dụng lại – Giảm chi phí thời gian phát triển – Nâng cao chất lượng 2/23/2018 http://www.lenhattung.com 2/23/2018 Để sử dụng lại (mã nguồn) • • • • Các phương pháp lập trình Cần dễ hiểu Được coi xác Có giao diện rõ ràng Khơng u cầu thay đổi sử dụng chương trình 2/23/2018 http://www.lenhattung.com • • • • • Lập trình khơng có cấu trúc Lập trình có cấu trúc (lập trình thủ tục) Lập trình chức Lập trình logic Lập trình hướng đối tượng 2/23/2018 http://www.lenhattung.com Lập trình khơng có cấu trúc (non-structured programming) Ví dụ • Là phương pháp xuất đầu tiên: 10 20 30 40 50 60 70 100 110 – Các ngôn ngữ như: Asembly, Basic… – Sử dụng biến tổng thể – Lạm dụng lệnh GOTO • Các nhược điểm: – – – – 2/23/2018 Khó hiểu, khó bảo trì, khơng thể sử dụng lại Chất lượng Chi phí cao Khơng thể phát triển ứng dụng lớn http://www.lenhattung.com 2/23/2018 k =1 gosub 100 if y > 120 goto 60 k = k+1 goto 20 print k, y stop y = 3*k*k + 7*k-3 return http://www.lenhattung.com 2/23/2018 Lập trình thủ tục (structured/procedural programming) Ví dụ • Sử dụng lệnh có cấu trúc: for, while, if then else • Các ngơn ngữ: Pascal, C, • Chương trình tập hàm/thủ tục • Ưu điểm struct Date { int year, mon, day; }; print_date(Date d) { printf(”%d / %d / %d\n”, d.day, d.mon, d.year); } – chương trình cục hóa, dễ hiểu, dễ bảo trì – dễ dàng tạo thư viện phần mềm 2/23/2018 http://www.lenhattung.com 2/23/2018 http://www.lenhattung.com Lập trình có cấu trúc/lập trình thủ tục Tại phải thay đổi cấu trúc liệu? • Nhược điểm • Cấu trúc liệu mơ hình tốn cần giải – Dữ liệu mã xử lý tách rời – Người lập trình phải biết cấu trúc liệu (vấn đề thời gian dài coi hiển nhiên) – Khi thay đổi cấu trúc liệu mã xử lý (thuật tốn) phải thay đổi theo – Khó đảm bảo tính đắn liệu – Không tự động khởi tạo hay giải phóng liệu động 10 – Do thiếu kiến thức tốn, miền ứng dụng , khơng phải lúc tạo CTDL hoàn thiện từ đầu – Tạo CTDL hợp lý vấn đề đau đầu người lập trình • Bản thân tốn khơng bất biến – Cần phải thay đổi CTDL để phù hợp với yêu cầu thay đổi 2/23/2018 http://www.lenhattung.com 11 2/23/2018 http://www.lenhattung.com 12 2/23/2018 Các vấn đề Ví dụ: MyDate • Thay đổi cấu trúc – Dẫn đến việc sửa lại mã chương trình (thuật tốn) tương ứng làm chi phí phát triển tăng cao – Không tái sử dụng mã xử lý ứng với CTDL cũ • Đảm bảo tính đắn liệu – Một nguyên nhân gây lỗi phần mềm gán liệu không hợp lệ – Cần phải kiểm tra tính đắn liệu thay đổi giá trị 2/23/2018 http://www.lenhattung.com 13 MyDate.java: class MyDate { public int year, month, day; } MyCalendar.java: MyDate d = new MyDate(); d.day = 32; // invalid day d.day = 31; d.month = 2; // how to check d.day = d.day + 1; // 2/23/2018 http://www.lenhattung.com Ví dụ: MyDate (2) Giải pháp Thay đổi cấu trúc liệu: • Che dấu liệu (che dấu cấu trúc) • Truy cập liệu thông qua giao diện xác định MyDate.java: class MyDate { public short year; public short mon_n_day; } 2/23/2018 http://www.lenhattung.com 14 class MyDate { private int year, mon, day; public int getDay() { } public boolean setDay(int) { } } 15 2/23/2018 http://www.lenhattung.com 16 2/23/2018 Sử dụng giao diện Đóng gói/che dấu thơng tin MyCalendar.java: • Đóng gói liệu thao tác tác động lên liệu thành thể thống (lớp đối tượng) thuận tiện cho sử dụng lại • Che dấu thơng tin MyDate d = new MyDate(); d.day = 32; // compile error d.setDay(31); d.setMonth(2); // should return False 2/23/2018 http://www.lenhattung.com – Thao tác với liệu thông qua giao diện xác định – Che dấu người lập trình khách (client programmer) thay đổi (tách bất biến khỏi khả biến) 17 2/23/2018 http://www.lenhattung.com Lớp đối tượng Hệ thống hướng đối tượng • Lớp đối tượng (class) khuôn mẫu để sinh đối tượng • Đối tượng thể (instance) lớp Đối tượng có • Bao gồm tập đối tượng – định danh – thuộc tính (dữ liệu) – hành vi (phương thức) 2/23/2018 http://www.lenhattung.com 19 18 – đối tượng chịu trách nhiệm cơng việc • Các đối tượng tương tác thông qua trao đổi thông điệp (message) • Các đối tượng tồn phân tán/có thể hoạt động song song 2/23/2018 http://www.lenhattung.com 20 2/23/2018 Mơ hình hóa đối tượng Lập trình hướng đối tượng làm tăng • • • • MyDate -year -month -day + + + + + + - getDay() setDay(int) getMonth() setMonth(int) getYear() setYear(int) validDate(int, int, int) 2/23/2018 http://www.lenhattung.com 21 suất lập trình (năng suất phát triển) chất lượng phần mềm tính hiểu phần mềm vòng đời phần mềm 2/23/2018 OOP OOL http://www.lenhattung.com 22 Summary • Có thể thể phần tư tưởng đóng gói/che dấu thơng tin ngơn ngữ thủ tục – khơng triệt để, khó kiểm sốt • Ngơn ngữ hướng đối tượng cung cấp khả kiểm soát truy cập; ngồi – kế thừa – đa hình 2/23/2018 http://www.lenhattung.com 23 2/23/2018 http://www.lenhattung.com 24

Ngày đăng: 04/11/2019, 23:37

Xem thêm:

TỪ KHÓA LIÊN QUAN

w