Bai 03 trừu tượng hóa và đóng gói

11 12 0
Bai 03   trừu tượng hóa và đóng gói

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bai 03 Truu tuong hoa va Dong goi 1 Bài 3 Trừu tượng hóa và Đóng gói 1 1 Mục tiêu bài học v Tìm hiểu bản chất, vai trò của trừu tượng hóa § Khái niệm, các góc nhìn, so sánh lớp và đối tượng v Tìm hiểu.

Mục tiêu học v Tìm hiểu chất, vai trị trừu tượng hóa § Khái niệm, góc nhìn, so sánh lớp đối tượng v Tìm hiểu Đóng gói Bài 3: Trừu tượng hóa Đóng gói § Khái niệm đóng gói, che giấu liệu § Chỉ định truy cập § Phương thức geHer/seHer v Tìm hiểu cách xây dựng lớp, gói § Xây dựng lớp Java § Quản lý lớp với package § Biểu diễn đối tượng, lớp, gói UML 1 Nội dung Nội dung Trừu trượng hóa Xây dựng lớp Đóng gói che giấu liệu Trừu trượng hóa Xây dựng lớp Đóng gói che giấu liệu 3 4 1.1 Trừu tượng hóa 1.1 Trừu tượng hóa (2) v Là nguyên lý lập trình HĐT v Là trình loại bỏ thơng Un quan trọng giữ lại thơng Un quan trọng, có ý nghĩa v loại trừu tượng hóa v Trừu tượng hóa điều khiển: § Sử dụng chương trình (subprogram) luồng điều khiển (control flow) § Ví dụ: a := (1 + 2) * • Nếu khơng có trừu tượng hóa điều khiển, LTV phải tất ghi, bước tính tốn mức nhị phân… § Trừu tượng hóa điều khiển § Trừu tượng hóa liệu v Trừu tượng hóa liệu: § Xử lý liệu theo cách khác tùy tốn Đa hình Thừa kế Đóng gói Trừu tượng hóa Hướng đối tượng 5 6 Trừu tượng hóa liệu Ví dụ: Điện thoại Nokia v Trừu tượng hóa liệu cách nhìn cách biểu diễn thực thể bao gồm thuộc bnh liên quan ngữ cảnh v Dựa vào đặc điểm, thuộc bnh để phân biệt thực thể khác ngữ cảnh v Góc nhìn khác (bài tốn khác nhau) đặc điểm, thuộc bnh dùng để trừu tượng hóa khác v Những thông tin "đối tượng" này? § Tất điện thoại Nokia § Có loại nắp trượt, có loại nắp gập, có loại dạng bar § Một số điện thoại dòng doanh nhân, số dịng âm nhạc, 3G… § Bàn phím loại tiêu chuẩn, QWERTY khơng có bàn phím § Màu sắc, chất liệu, kích cỡ… khác § v.v… v Tùy tốn, “trích rút” lấy thơng tin quan trọng, phù hợp 7 8 Ví dụ: Điện thoại Nokia (2) Ví dụ: Điện thoại Nokia (3) v Các tốn khác nhau, u cầu mơ tả tính chất khác điện thoại v Có thể trừu tượng hóa nhiều mức Liên quan cơng việc Liên quan trò chơi Liên quan âm nhạc Liên quan 3G 9 10 10 1.2 Lớp Thuộc tính v Lớp (Class) cách phân loại đối tượng dựa đặc điểm chung đối tượng v Lớp kết q trình trừu tượng hóa liệu v Thuộc bnh § Một thuộc „nh lớp trạng thái chung đặt tên tất thể lớp có § Ví dụ: Lớp Ơ tơ có thuộc tính • Màu sắc • Vận tốc § Lớp định nghĩa kiểu liệu mới, trừu tượng hóa tập đối tượng § Một đối tượng gọi thể lớp v Mỗi đối tượng có thuộc bnh riêng § Ví dụ: Ơ tơ có màu đen, vận tốc 60 km/h v Lớp gồm phương thức thuộc 7nh chung đối tượng loại 11 11 12 12 Phương thức Lớp vs Đối tượng v Phương thức: § Xác định hoạt động chung mà tất thể lớp thực § Xác định cách đối tượng đáp ứng lại thông điệp Lớp v Thông thường phương thức hoạt động thuộc bnh thường làm thay đổi trạng thái đối tượng Đối tượng Lớp mơ hình khái niệm, mơ tả thực thể Đối tượng vật thật, thực thể thực Lớp mẫu, định nghĩa thuộc tính phương thức chung đối tượng Mỗi đối tượng có lớp xác định liệu (thuộc tính) hành vi (phương thức) Dữ liệu đối tượng khác khác § Bất kỳ phương thức phải thuộc lớp § Ví dụ: Lớp Ơ tơ có phương thức Một lớp trừu tượng hóa tập đối tượng • Tăng tốc • Giảm tốc Đối tượng thể (instance) lớp 13 13 14 14 Lớp vs Đối tượng (2) Đối tượng MyBook Lớp BOOK Phương thức: hành vi đối tượng thực Thuộc tính: thông tin liên quan đến trạng thái Nội dung borrow getAuthorName getAuthorName borrow countPages Trừu trượng hóa Xây dựng lớp Đóng gói che giấu liệu Thể hiện: Một đối tượng cụ thể Thuộc tính thể hiện: gán giá trị cho thuộc tính đối tượng cụ thể Vu Thi Huong Giang 250 pages countPages Human computer interaction 15 15 16 16 Cú pháp khai báo lớp Thành phần lớp v Cú pháp khai báo v Thông tin cần thiết để định nghĩa lớp package tenpackage; § Tên (Name) chi_dinh_truy_cap class TenLop { // Than lop } • Tên lớp nên mơ tả đối tượng giới thật • Tên lớp nên số ít, ngắn gọn, xác định rõ ràng cho trừu tượng hóa § Danh sách thuộc tính § Danh sách phương thức String owner; double balance; v Chỉ định truy cập § Chỉ định truy cập xác định khả nhìn thấy thành phần chương trình với thành phần khác chương trình § public: Lớp truy cập từ đâu, kể bên ngồi package chứa lớp § Khơng định: Lớp truy cập từ bên package chứa lớp Khai báo thuộc tính Khai báo phương thức package oop.cnpm; public class Student { … } 17 17 18 18 Package - gói Package – gói (2) v Các lớp nhóm lại thành package v Một số package có sẵn Java: java.lang, javax.swing, java.io… § Package bao gồm tập hợp lớp có quan hệ logic với v Gói (package) giống thư mục giúp: v Package ta tự đặt § Tổ chức xác định vị trí lớp dễ dàng sử dụng lớp cách phù hợp § Tránh cho việc đặt tên lớp bị xung đột (trùng tên) Các package khác chứa lớp có tên § Bảo vệ lớp, liệu phương thức mức rộng so với mối quan hệ lớp § Cách dấu “.” § Quy ước sử dụng ký tự thường để đặt tên package § Tên gói phải viết file mã nguồn v Chỉ phép có câu khai báo gói file mã nguồn, khai báo áp dụng cho tất liệu file v Cịn gọi khơng gian tên (namespace) số ngơn ngữ lập trình (C++…) v Một gói đặt gói khác § Phân cách dấu § Ví dụ package trungtt.oop; 19 19 20 20 Khai báo Thuộc tính Khai báo Phương thức v Cú pháp khai báo thuộc tính: Tương tự khai báo biến v Khai báo: tương tự khai báo hàm v Cú pháp chi_dinh_truy_cap kieu tenThuocTinh; chi_dinh_truy_cap kiểuTrảVề tênPhươngThức (ds tham số) { // Nội dung phương thức } v Thuộc tính khởi tạo khai báo Các giá trị mặc định sử dụng khơng khởi tạo v Ví dụ v Ví dụ 21 21 22 22 Chữ ký phương thức (signature) Lệnh return v Mỗi phương thức phải có chữ ký riêng, phân biệt phương thức, gồm: v Khi phương thức trả giá trị đối tượng bắt buộc phải có câu lệnh return để trả điều khiển cho đối tượng gọi phương thức v Nếu phương thức không trả giá trị (void) khơng cần câu lệnh return v Có thể có nhiều lệnh return phương thức; câu lệnh mà chương trình gặp thực thi § Tên phương thức § Số lượng tham số kiểu chúng 23 23 24 24 Ví dụ - Khai báo phương thức Ví dụ - Khai báo lớp class BankAccount { private String owner; private double balance; public boolean debit(double amount){ if (amount > balance) return false; else { balance -= amount; return true; } } public void credit(double amount){ balance += amount; } } public boolean checkOdd(int i) { if (i %2 ==0) return true; else return false; } public boolean checkOdd(int i) { return true; return false; //error } 26 25 25 26 Chỉ định truy cập cho thành viên lớp Chỉ định truy cập cho thành viên lớp v public: Thuộc tính phương thức truy cập từ đâu, kể bên lớp, gói chứa lớp v default/package (khơng có định truy cập): Thuộc tính phương thức truy cập từ bên package chứa lớp v private: Thuộc tính phương thức truy cập phạm vi lớp v protected: Thuộc tính phương thức truy cập phạm vi lớp từ lớp kế thừa lớp public private Cùng lớp Cùng gói Khác gói 27 27 Khơng có 28 28 Biểu diễn UML (1/3) Chỉ định truy cập cho thành viên lớp v Lớp (class) biểu diễn hình chữ nhật với thành phần: public Khơng có private Cùng lớp Cùng gói Yes Yes Yes Yes Yes No Khác gói Yes No No Professor § Tên lớp § Thuộc tính § Phương thức 29 29 + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() 30 30 Biểu diễn UML (2/3) Biểu diễn UML (3/3) v Đối tượng: biểu diễn tên đối tượng:tên lớp, giá trị thuộc tính v Biểu diễn gói UML Student - name - address - studentID - dateOfBirth Class :Student - name = “M Modano” - address = “123 Main St.” - studentID = - dateOfBirth = “03/10/1967” Objects sv2:Student - name = “D Hatcher” - address = “456 Oak Ln.” - studentID = - dateOfBirth = “12/11/1969” 31 31 - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad 32 32 Đóng gói – Encapsulation (1/3) Nội dung v Là nguyên lý lập trình HĐT v Dữ liệu/thuộc bnh hành vi/phương thức đóng gói lớp Trừu trượng hóa Xây dựng lớp Đóng gói che giấu liệu Đa hình Thừa kế Đóng gói Trừu tượng hóa Hướng đối tượng 33 33 34 34 Đóng gói (2/3) Đóng gói (3/3) v Một đối tượng thực thể đóng gói với mục đích: v Sau đóng gói, đối tượng có hai khung nhìn: § Cung cấp tập dịch vụ định § Đối tượng đóng gói xem hộp đen – công việc bên ẩn so với client § Dù thay đổi thiết kế/mã nguồn bên giao diện bên ngồi khơng bị thay đổi theo § Bên trong: Chi tiết thuộc tính phương thức lớp tương ứng với đối tượng § Bên ngồi: Các dịch vụ mà đối tượng cung cấp cách đối tượng tương tác với phần cịn lại hệ thống Client Input Don’t know how it works, but it works! Output Data 35 35 Methods 36 36 Che giấu liệu Che giấu liệu (2) v Sử dụng phạm vi truy cập để che giấu liệu: tránh thay đổi trái phép làm sai lệch liệu v Dữ liệu che giấu bên lớp cách gán phạm vi truy cập private Dữ liệu truy cập từ phương thức bên lớp v Các đối tượng khác muốn truy nhập vào liệu riêng tư phải thông qua phương thức lớp có phạm vi truy cập public v Để truy cập chỉnh sửa giá trị liệu, lớp cần phải cung cấp phương thức § Accessor (geHer): Trả giá trị thuộc „nh (dữ liệu) § Mutator (seHer): Thay đổi giá trị thuộc „nh § Thường getX setX, X tên thuộc „nh 37 37 38 38 Phương thức Get Phương thức Set v Các phương thức truy vấn Get phương thức dùng để hỏi giá trị thành viên liệu đối tượng v Có nhiều loại câu hỏi truy vấn có thể: v Các phương thức thiết lập Set phương thức dùng để thay đổi giá trị thành viên liệu v Ưu điểm việc sử dụng phương thức setter kiểm sốt tính hợp lệ thành phần liệu § truy vấn đơn giản (“giá trị x bao nhiêu?”) § truy vấn điều kiện (“thành viên x có lớn 10 khơng?”) § truy vấn dẫn xuất (“tổng giá trị thành viên x y bao nhiêu?”) § Kiểm tra giá trị đầu vào trước gán vào thuộc tính v Đặc điểm quan trọng phương thức truy vấn khơng nên thay đổi trạng thái đối tượng § khơng thay đổi giá trị thành viên liệu 39 39 40 40 10 Ví dụ: phương thức get, set (2) Ví dụ: phương thức get, set class Student{ private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } } class Student{ private String name; public String getName() { return this.name; } public void setName(String name) class Manager{ private Student[] students; public initialize() { students = new Student[10]; students[0] = new Student(); //students[0].name = “Hung”; error students[0].setName(“Hung”); } } { this.name = name; } } 41 41 42 42 Bài tập Bài tập v Bài 1: Viết khai báo gói chứa hai lớp: lớp hình vng, lớp hình trịn Viết khai báo lớp hình vng, lớp hình trịn thuộc tính thích hợp, phương thức get/set thích hợp v Bài 2: Viết khai báo lớp Vector gồm thành phần với phương thức cộng/trừ vector, nhân với số, nhân vô hướng vector v Bài Viết mã nguồn cho lớp NhanVien hình bên biết: § Lương = Lương * Hệ số lương § Phương thức inTTin() hiển thị thông tin đối tượng NhanVien tương ứng § Phương thức tangLuong(double) tăng hệ số lương lên lượng giá trị tham số double truyền vào Nếu điều làm cho lương nhân viên > lương tối đa cho phép không cho phép thay đổi, in thông báo trả false, ngược lại trả true v Viết phương thức get set cho thuộc tính lớp NhanVien 43 43 NhanVien -tenNhanVien: String -luongCoBan: double -heSoLuong: double +LUONG_MAX: double +tangLuong(double):boolean +tinhLuong(): double +inTTin() 44 44 11 ... liệu Đa hình Thừa kế Đóng gói Trừu tượng hóa Hướng đối tượng 33 33 34 34 Đóng gói (2/3) Đóng gói (3/3) v Một đối tượng thực thể đóng gói với mục đích: v Sau đóng gói, đối tượng có hai khung nhìn:... kế Đóng gói Trừu tượng hóa Hướng đối tượng 5 6 Trừu tượng hóa liệu Ví dụ: Điện thoại Nokia v Trừu tượng hóa liệu cách nhìn cách biểu diễn thực thể bao gồm thuộc bnh liên quan ngữ cảnh v Dựa vào...1.1 Trừu tượng hóa 1.1 Trừu tượng hóa (2) v Là nguyên lý lập trình HĐT v Là trình loại bỏ thơng Un quan trọng giữ lại thơng Un quan trọng, có ý nghĩa v loại trừu tượng hóa v Trừu tượng hóa điều

Ngày đăng: 17/11/2022, 09:01

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan