Bài giảng Lập trình hướng đối tượng: Bài 3 - Nguyễn Khanh Văn
lượt xem 4
download
Bài giảng "Lập trình hướng đối tượng - Bài 3: Đóng gói và xây dựng lớp, tạo và sử dụng các đối tượng" cung cấp cho người học các kiến thức: Trừu tượng hóa dữ liệu, đóng gói và xây dựng lớp, tạo và sử dụng đối tượng. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Bài 3 - Nguyễn Khanh Văn
- 8/24/2011 Mục tiêu bài học Bộ môn Công nghệ Phần mềm Nêu được bản chất, vai trò của trừu tượng hóa Viện CNTT & TT Giải thích về đóng gói và che giấu thông tin Trường Đại học Bách Khoa Hà Nội Xây dựng lớp Định nghĩa lớp, thực hiện ẩn Tạo các phương thức, các trường/thuộc tính LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Tạo và sử dụng đối tượng Bài 03. Đóng gói và xây dựng lớp, Phương thức khởi tạo tạo và sử dụng đối tượng Khai báo và khởi tạo đối tượng Sử dụng đối tượng 2 Nội dung Nội dung 1. Trừu trượng hóa dữ liệu 1. Trừu trượng hóa dữ liệu 2. Đóng gói và xây dựng lớp 2. Đóng gói và xây dựng lớp 3. Tạo và sử dụng đối tượng 3. Tạo và sử dụng đối tượng 3 4 1.1. Trừu tượng hóa 1.1. Trừu tượng hóa (2) 2 loại trừu tượng hóa Trừu tượng hóa điều khiển Trừu tượng hóa dữ liệu 1
- 8/24/2011 1.2. Trừu tượng hóa dữ liệu trong OOP Đối tượng trong thực tế phức tạp 7 8 1.2. Trừu tượng hóa dữ liệu (3) 1.2. Trừu tượng hóa dữ liệu (2) Any model that includes the most important, Tập hợp các thể hiện của essential, or distinguishing aspects of các thực thể thành các nhóm something while suppressing or ignoring less có chung các thuộc tính important, immaterial, or diversionary details. The result of removing distinctions so as to emphasize commonalties (Dictionary of Object Technology, Firesmith, Eykholt, 1995). 9 10 11 12 2
- 8/24/2011 1.3. Lớp vs. Đối tượng 13 14 Biểu diễn lớp trong UML Thuộc tính (attribute) là gì? 3 thành phần: Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad Student + submitFinalGrade() + acceptCourseOffering() - name + setMaxLoad() - address + takeSabbatical() - studentID + teachClass() - dateOfBirth Lớp và đối tượng trong UML Nội dung Trừu trượng hóa dữ liệu :Student 1. - name = “M. Modano” Student - address = “123 Main St.” - studentID = 9 2. Đóng gói và xây dựng lớp Tạo và sử dụng đối tượng - name - dateOfBirth = “03/10/1967” - address 3. - studentID - dateOfBirth sv2:Student - name = “D. Hatcher” - address = “456 Oak Ln.” - studentID = 2 - dateOfBirth = “12/11/1969” 18 3
- 8/24/2011 2.1. Đóng gói (Encapsulation) 2.1. Đóng gói (2) Một đối tượng có hai khung nhìn: BankAccount - owner: String - balance: double Client Methods + debit(double): boolean +credit(double) Data 19 20 2.1. Đóng gói (3) 2.2. Xây dựng lớp Thông tin cần thiết để định nghĩa một lớp BankAccount - owner: String - balance: double + debit(double): boolean Input Don’t know how Output +credit(double) it works, but it works! 21 22 2.2. Xây dựng lớp (2) 2.2. Xây dựng lớp (3) Lớp đóng gói các thành viên (member) Các lớp được nhóm lại thành package String owner; double balance; 23 24 4
- 8/24/2011 2.2.1. Khai báo lớp Ví dụ - Khai báo lớp Cú pháp khai báo: package oop.k52.cnpm; package tenpackage; chi_dinh_truy_cap class TenLop { // Than lop public class Student { } … } 25 26 2.2.2. Khai báo thành viên của lớp Ví dụ: private class Student{ private String name; public String getName() { public Không có private return this.name; } Cùng lớp public void setName(String name) Cùng gói { Khác gói this.name = name; } } 27 28 Ví dụ: private (2) a. Thuộc tính class Student{ private String name; Các thuộc tính phải được khai báo bên trong lớp public String getName() { return this.name; } public void setName(String name) { this.name = name; } Student } class Manager{ - name private Student[] students; - address public initianize() - studentID { - dateOfBirth students[0] = new Students(); Nguyễn Thu Hương //student.name = “Hung”; error … student.setName(“Hung”); Nguyễn Hoàng Nam Hải Phòng… } Hà Nội… } 29 30 5
- 8/24/2011 a. Thuộc tính (2) b. Phương thức Thuộc tính có thể được khởi tạo khi khai báo BankAccount - owner: String - balance: double + debit(double): boolean boolean +credit(double) 31 32 * Chữ ký phương thức (signature) * Kiểu dữ liệu trả về Lệnh return 33 34 Ví dụ c. Thành viên hằng public Boolean checkOdd(int i) { Ví dụ: final double PI = 3.141592653589793; if (i %2 ==0) return true; public final int VAL_THREE = 39; else private final int[] A = { 1, 2, 3, 4, 5, 6 }; return false; } public Boolean checkOdd(int i) { return true; return false; } 35 6
- 8/24/2011 package com.megabank.models; public class BankAccount { 2.3. Che giấu dữ liệu (Data hiding) 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; } 37 38 } Cơ chế che giấu dữ liệu BankAccount - owner: String - balance: double + debit(double): boolean 39 +credit(double) 40 Cơ chế che giấu dữ liệu (2) Accessor (getter): Mutator (setter): 41 42 7
- 8/24/2011 Nội dung 3.1. Khởi tạo dữ liệu 1. Trừu trượng hóa dữ liệu 2. Đóng gói và xây dựng lớp 3. Tạo và sử dụng đối tượng Student - name - address - studentID - dateOfBirth Nguyễn Thu Hương Nguyễn Hoàng Nam … Hải Phòng… 43 Hà Nội… 44 Khởi tạo và hủy bỏ đối tượng 3.2. Phương thức khởi tạo Tạo Mục đích chính? Hủy Student - name - address - studentID - dateOfBirth Nguyễn Thu Hương Nguyễn Hoàng Nam … Hải Phòng… Hà Nội… 45 46 3.2. Phương thức khởi tạo (2) 3.2. Phương thức khởi tạo (3) Ví dụ: Các chỉ định truy cập có thể dùng? public BankAccount(String o, double b){ Được xem như là thành viên của lớp? owner = o; balance = b; } 47 48 8
- 8/24/2011 3.2. Phương thức khởi tạo (4) 3.3. Khai báo và khởi tạo đối tượng Phương khởi tạo mặc định (default Đối tượng được tạo ra, thể hiện hóa constructor) (instantiate) từ một mẫu chung (lớp). 49 50 3.3. Khai báo và khởi tạo đối tượng (2) 3.3. Khai báo và khởi tạo đối tượng (3) Đối tượng cần được khởi tạo trước khi sử Ví dụ: dụng BankAccount account = new BankAccount(); 51 52 3.3. Khai báo và khởi tạo đối tượng (4) 3.3. Khai báo và khởi tạo đối tượng (5) Ví dụ: Employee emp1 = new Employee(123456); Employee emp2; emp2 = emp1; Department dept[] = new Department[100]; Test[] t = {new Test(1),new Test(2)}; 53 54 9
- 8/24/2011 Ví dụ 1 Ví dụ 2 class BankAccount{ public class BackAccount{ private String owner; private String owner; private double balance; private double balance; public BankAccount(){ } owner = ”noname”; public class Test{ } public static void main(String args[]){ } BankAccount acc1 = new BankAccount(); public class Test{ public static void main(String args[]){ } BankAccount acc1 = new BankAccount(); } } } 55 56 Ví dụ 3 3.4. Sử dụng đối tượng Đối tượng cung cấp các hoạt động phức tạp public class BankAccount { private String owner; private double balance; hơn các kiểu dữ liệu nguyên thủy public BankAccount(String name){ setOwner(name); } public void setOwner(String o){ owner = o; } } public class Test{ public static void main(String args[]){ BankAccount account1 = new BankAccount(); BankAccount account2 = new BankAccount(“Hoang”); } 57 58 } 3.4. Sử dụng đối tượng (2) public class BankAccount{ private String owner; private double balance; Toán tử “.” public BankAccount(String name) { setOwner(name); } public void setOwner(String o){ owner = o; } public String getOwner(){ return owner; } } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount(“”); BankAccount acc2 = new BankAccount(“Hong”); acc1.setOwner(“Hoa”); System.out.println(acc1.getOwner() + “ ”+ acc2.getOwner()); } 59 60 10
- 8/24/2011 Tự tham chiếu – this public class BankAccount{ private String owner; private double balance; Cho phép truy cập vào đối tượng hiện tại của public BankAccount() { } lớp. public void setOwner(String owner){ this.owner = owner; } public String getOwner(){ return owner; } } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount(); BankAccount acc2 = new BankAccount(); acc1.setOwner(“Hoa”); acc2.setOwner(“Hong”); System.out.println(acc1.getOwner() + “ ” + acc2.getOwner()); 61 } 62 11
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 87 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 104 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn