LẬP TRÌNH HƯỚNG đối TƯỢNG bài 03 ĐÓNG gói và xây DỰNG lớp, tạo và sử DỤNG đối TƯỢNG

11 259 0
LẬP TRÌNH HƯỚNG đối TƯỢNG   bài 03 ĐÓNG gói và xây DỰNG lớp, tạo và sử DỤNG đối TƯỢNG

Đ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

8/24/2011 Mục tiêu học Nêu chất, vai trò trừu tượng hóa Giải thích vềđóng gói che giấu thông tin Xây dựng lớp Bộ môn Công nghệ Phần mềm Viện CNTT & TT Trường Đại học Bách Khoa Hà Nội Đị nh nghĩa lớp, thực ẩn Tạo phương thức, trường/thuộc tính k o?sqìmg?g ︰mf?I。h?s ︸mf Bài 03 Đóng gói xây dựng lớp, tạo sửdụng đối tượng Tạo sửdụng đối tượng Phương thức khởi tạo Khai báo khởi tạo đối tượng Sửdụng đối tượng Nội dung Nội dung Trừu trượng hóa dữliệu Đóng gói xây dựng lớp Tạo sửdụng đối tượng Trừ u trư ợ ng hóa liệ u Đóng gói xây dựng lớp Tạo sửdụng đối tượng 1.1 Trừu tượng hóa loại trừu tượng hóa 1.1 Trừu tượng hóa (2) Trừu tượng hóa điều khiển Trừu tượng hóa dữliệu 8/24/2011 1.2 Trừu tượng hóa dữliệu OOP Đối tượng thực tếphức tạp 1.2 Trừu tượng hóa dữliệu (3) 1.2 Trừu tượng hóa dữliệu (2) Tập hợp thểhiện thực thểthành nhóm có chung thuộc tính Any model that includes the most important, essential, or distinguishing aspects of something while suppressing or ignoring less important, immaterial, or diversionary details The result of removing distinctions so as to emphasize commonalties (Dictionary of Object Technology, Firesmith, Eykholt, 1995) 10 11 12 8/24/2011 1.3 Lớp vs Đối tượng 13 14 Biểu diễn lớp UML Thuộc tính (attribute) gì? thành phần: Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad Student - name - address - studentID - dateOfBirth + submitFinalGrade() + acceptCourseOffering() + setMaxLoad() + takeSabbatical() + teachClass() Lớp đối tượng UML :Student Student - name - address - studentID - dateOfBirth - name = “M Modano” - address = “123 Main St.” - studentID = - dateOfBirth = “03/10/1967” Nội dung Trừu trượng hóa dữliệu Đóng gói xây dự ng lớ p Tạo sửdụng đối tượng sv2:Student - name = “D Hatcher” - address = “456 Oak Ln.” - studentID = - dateOfBirth = “12/11/1969” 18 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: b ¡‹ BankAccount - owner: String - balance: double Methods + debit(double): boolean +credit(double) Data 19 2.1 Đóng gói (3) 20 2.2 Xây dựng lớp Thông tin cần thiết đểđị nh nghĩa lớp BankAccount - owner: String - balance: double Input Don’t know how it works, but it works! + debit(double): boolean +credit(double) Output 21 2.2 Xây dựng lớp (2) 22 2.2 Xây dựng lớp (3) Các lớp nhóm lại thành package Lớp đóng gói thành viên (member) String owner; double balance; 23 24 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 { public class Student { // Than lop } … } 25 Ví dụ: private 2.2.2 Khai báo thành viên lớp public Không có 26 private Cùng lớp Cùng gói Khác gói class Student{ private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } } 28 27 Ví dụ: private (2) class Student{ private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } } class Manager{ private Student[] students; public initianize() { students[0] = new Students(); //student.name = “Hung”; error student.setName(“Hung”); } } a Thuộc tính Các thuộc tính phải khai báo bên lớp Student - name - address - studentID - dateOfBirth Nguyễn Thu Hương Nguyễn Hoàng Nam Hải Phòng… … Hà Nội… 29 30 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 khai báo BankAccount - owner: String - balance: double + debit(double): boolean +credit(double) boolean 32 31 * Kiểu dữliệu trảvề * Chữký phương thức (signature) Lệnh return 33 Ví dụ 34 c Thành viên public Boolean checkOdd(int i) { if (i %2 ==0) return true; else return false; } Ví dụ: final double PI = 3.141592653589793; public final int VAL_THREE = 39; private final int[] A = { 1, 2, 3, 4, 5, }; public Boolean checkOdd(int i) { return true; return false; } 35 8/24/2011 package com.megabank.models; public class BankAccount { private String owner; private double balance; 2.3 Che giấu dữliệu (Data hiding) public boolean debit(double amount){ if (amount > balance) return false; else { balance -= amount; return true; } } public void credit(double amount){ balance += amount; } 38 37 } Cơ chếche giấu dữliệu 39 BankAccount - owner: String - balance: double + debit(double): boolean +credit(double) 40 41 42 Cơ chếche giấu dữliệu (2) Accessor (getter): Mutator (setter): 8/24/2011 Nội dung 3.1 Khởi tạo dữliệu Trừu trượng hóa dữliệu Đóng gói xây dựng lớp Tạ o 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… … Hà Nội… 43 44 3.2 Phương thức khởi tạo Khởi tạo hủy bỏđối tượng 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 3.2 Phương thức khởi tạo (2) 46 3.2 Phương thức khởi tạo (3) Các chỉđị nh truy cập có thểdùng? Được xem thành viên củ a lớ p? Ví dụ: public BankAccount(String o, double b){ owner = o; balance = b; } 47 48 8/24/2011 3.2 Phương thức khởi tạo (4) 3.3 Khai báo khởi tạo đối tượng Phương khởi tạo mặc đị nh (default constructor) Đối tượng tạo ra, thểhiện hóa (instantiate) từmột mẫu chung (lớp) 49 3.3 Khai báo khởi tạo đối tượng (2) 50 3.3 Khai báo khởi tạo đối tượng (3) Đối tượng cần khởi tạo trước sử dụng Ví dụ: BankAccount account = new BankAccount(); 51 3.3 Khai báo khởi tạo đối tượng (4) 52 3.3 Khai báo 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 8/24/2011 Ví dụ1 Ví dụ2 public class BackAccount{ private String owner; private double balance; public BankAccount(){ owner = ”noname”; } } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount(); } } class BankAccount{ private String owner; private double balance; } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount(); } } 55 Ví dụ3 public class BankAccount { private String owner; private double balance; 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”); } } 56 3.4 Sửdụng đối tượng Đối tượng cung cấp hoạt động phức tạp kiểu dữliệu nguyên thủy 58 57 3.4 Sửdụng đối tượng (2) public class BankAccount{ private String owner; private double balance; 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()); } Toán tử“.” 59 60 10 8/24/2011 Tựtham chiếu – this Cho phép truy cập vào đối tượng lớp 61 public class BankAccount{ private String owner; private double balance; public BankAccount() { } 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()); } 62 11 [...]...8/24/2011 Tựtham chiếu – this Cho phép truy cập vào đối tượng hiện tại của lớp 61 public class BankAccount{ private String owner; private double balance; public BankAccount() { } public void setOwner(String owner){ this.owner = owner; } public String getOwner(){ ... Modano” - address = “123 Main St.” - studentID = - dateOfBirth = 03/ 10/1967” Nội dung Trừu trượng hóa dữliệu Đóng gói xây dự ng lớ p Tạo s dụng đối tượng sv2:Student - name = “D Hatcher” - address... báo khởi tạo đối tượng (3) Đối tượng cần khởi tạo trước sử dụng Ví dụ: BankAccount account = new BankAccount(); 51 3.3 Khai báo khởi tạo đối tượng (4) 52 3.3 Khai báo khởi tạo đối tượng (5) Ví... khởi tạo đối tượng Phương khởi tạo mặc đị nh (default constructor) Đối tượng tạo ra, thểhiện hóa (instantiate) từmột mẫu chung (lớp) 49 3.3 Khai báo khởi tạo đối tượng (2) 50 3.3 Khai báo khởi tạo

Ngày đăng: 11/11/2015, 16:33

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan