1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình hướng đối tượng OOP bai03

101 300 4

Đ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

Thông tin cơ bản

Định dạng
Số trang 101
Dung lượng 2,27 MB

Nội dung

Bộ mơn Cơng nghệ phần mềm VIỆN CƠNG NGHỆ THƠNG TIN TRUYỀN THÔNG TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 03 Đóng gói xây dựng lớp, tạo sử dụng đối tượng Cao Tuấn Dũng Nguyễn Thị Thu Trang Mục tiêu học • Nêu chất, vai trị trừu tượng hóa • Giải thích đóng gói che giấu thơng tin • Xây dựng lớp ▫ Định nghĩa lớp, thực ẩn ▫ Tạo phương thức, trường/thuộc tính • 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 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 • Giảm thiểu tinh lọc chi tiết nhằm tập trung vào số khái niệm/vấn đề quan tâm thời điểm ▫ “abstraction – a concept or idea not associated with any specific instance” ▫ Ví dụ: Các định nghĩa tốn học • loại trừu tượng hóa ▫ Trừu tượng hóa điều khiển (control abstraction) ▫ Trừu tượng hóa liệu (data abstraction) 1.1 Trừu tượng hóa (2) • 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 liệu: Xử lý liệu theo cách khác ▫ Ví dụ: Kiểu liệu  Sự tách biệt rõ ràng thuộc tính trừu tượng kiểu liệu chi tiết thực thi cụ thể kiểu liệu 1.2 Trừu tượng hóa liệu OOP • Đối tượng thực tế phức tạp • Cần đơn giản hóa, bỏ qua chi tiết khơng cần thiết • Chỉ “trích rút” lấy thông tin liên quan, thông tin quan tâm, quan trọng với tốn Ví dụ: Trừu tượng hóa từ chi tiết sau • Các thực thể có điểm chung – đặc thù nào? ▫ ▫ ▫ ▫ ▫ Đều điện thoại Nokia Dạng trượt, gập, phổ thông Điện thoại cho doanh nhân, Music, 3G Bàn phím QWERTY , Dạng khơng phím Màu sắc, kích thước, … Phân loại mobile – tim hiểu đặc tính riêng Từ chi tiết quay lại khái quát 10 87 class Person { public: Person(const char *name0="", int age0=0); Person(const Person &p); void print(); private: char name[30]; int age; }; Sử dụng tường minh hàm thiết lập chép: Person person("Matti", 20); Person twinBrother(person); Person::Person(const Person &p) { strcpy(name, p.name); age = p.age; } Sử dụng không tường minh: void f(Person p); void main(void) { Person person(“Matti”, 20); f(person); } 88 Hàm thiết lập chép • Chú ý vấn đề rị rỉ nhớ viết code cho hàm tạo chép • Trong Java, khơng có khái niệm copy constructor 89 3.4 Sử dụng đối tượng • Đối tượng cung cấp hoạt động phức tạp kiểu liệu nguyên thủy • Đối tượng đáp ứng lại thơng điệp ▫ Tốn tử "." sử dụng để gửi thông điệp đến đối tượng 90 3.4 Sử dụng đối tượng (2) • Để gọi thành viên (dữ liệu thuộc tính) lớp đối tượng, sử dụng tốn tử “.” • Nếu gọi phương thức lớp tốn tử “.” khơng cần thiết 91 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()); } 92 Hàm hủy: Destructor (C++) • Ngược lại với q trình khởi tạo đối tượng, giải phóng đối tượng phải giải phóng tồn bộ nhớ cấp phát cho đối tượng Chức hàm huỷ thực vai trị này: • Ví dụ: class A { int n; public: A(); //constructor ~A(); // destructor }; • Java: khơng dùng hàm hủy 93 Hàm hủy • Trước HDH giải phóng nhớ cấp phát để lưu trữ liệu thành phần đối tượng, thực hàm huỷ Vì lưu ý xây dựng lớp, hàm huỷ cần giải phóng mà HDH khơng tự động giải phóng cho • Ngun tắc cần lưu ý là: ▫ Cần đặc biệt lưu ý tới lớp có liệu thành phần trỏ ▫ Khơng bỏ sót (khơng hiệu sử dụng nhớ) khơng giải phóng nhớ cấp phát hai lần (sẽ báo lỗi) 94 Quá trình hủy DT: hàm hủy #include #include #include class A { int NA; float *FA; public: A(int m); void display(); }; A::A(int m) { NA=m; FA = new float [m]; for (int i=0; i

Ngày đăng: 12/01/2016, 21:20

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

w