Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
143,5 KB
Nội dung
Chương 02 CÁC KHÁI NIỆM CƠ BẢN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Basic Concepts in OOP Slide 1/ Mục tiêu • Nắm vững số định nghĩa OOP bao gồm: – Trừu tượng hóa liệu – Lớp, đối tượng, thể – Thông điệp gửi thông điệp – Tính bao đóng – Tính kế thừa – Tính đa hình Slide 2/ Nội dung • • • • • • • Kiểu liệu trừu tượng (abstract data type) Lớp-thể hiện- biến đối tượng Thông điệp (message) Tính bao đóng (encapsulation) Tính kế thừa (inheritance) Tính tương ứng bội-đa hình (polymorphism) Lớp đối tượng Java Slide 3/ 2.1- Kiểu liệu trừu tượng • Abstract Data Type • Kết qủa việc khái qt hóa thực thể -3 Khái quát hóa Số nguyên ( int ) int, NGUOI, PERSON ADT Khái quát hóa attributes Danh từ chung ngôn ngữ tự nhiên Người ( PERSON ) Slide 4/ 2.2- Lớp, Thể hiện, Biến đối tượng • POP: ADT dạng struct + functions • OOP : class = • class: Hiện thực tập đối tượng (object) loại Cùng mô tả, hành vi • Thể – instance: Một thông tin đối tượng có nhớ chương trình • Biến đối tượng (gọi tắt đối tượng): Tham chiếu đến thực thể lớp 1000 S 300 “Hello” 1000 String S=“Hello”; Slide 5/ 2.3- Thông điệp, thông báo - Message • Send a message: Yêu cầu đối tượng thực thi hành vi • Thí dụ: x HOCSINH < Name, Age> x.VietLyLich(); String S= x.getName(); int n= x.getAge(); Slide 6/ 2.4- Bao đóng - Encapsulation • Che dấu liệu • Bên tương tác với đối tượng qua số hành vi • Hành vi giao tiếp (public, interface methods): Hành vi giúp đối tượng giao tiếp với mơi trường • Hành vi riêng/nội (private, internal): hành vi xử lý liệu nội đối tượng) getTen() getNamSinh() getTenNguoiYeu() class NGƯỜI Tên NămSinh TênNgườiYêu TiêuHóa() Nuốt() Đi() Đứng() Chạy() Nhẩy() Slide 7/ Bao đóng class CIRLCE Với khai báo này, bên ngồi truy cập thuộc tính mầu hay khơng? public int getX() public void setX(int xx) public int getY() public void setY(int yy) public int getR() int x, y, r; int BorderColor; int BkColor; public void setR(int r) public double getPerimeter() public double getArea() Slide 8/ Gợi ý thiết kế lớp • Ta cần biết thơng tin đối tượng thuộc lớp Dữ liệu mơ tả • Ta (bên ngồi) thực cần xử lý (động từ) đối tượng Hành vi giao tiếp • Để có hành vi giao tiếp, có cần xử lý thêm mà bên ngồi khơng cần biết hay khơng? Hành vi nội Slide 9/ Bài tập chỗ • Thiết kế lớp mô tả xử lý học sinh, biết học sinh phải học môn học Slide 10/ 2.5- Tính kế thừa- Inheritance • Kỹ thuật cho phép tái sử dụng code Tiết kiệm cơng sức xây dựng + test • Một lớp thừa hưởng (data +code) từ lớp có • Quan hệ lớp cha-lớp • Thừa kế đơn (single inheritance): Một lớp có tối đa lớp cha • Thừa kế bội (đa thừa kế, multi-inheritance): Một lớp có nhiều lớp cha • Mỗi ngôn ngữ hỗ trợ khả thừa kế khác nhau: C++: đa thừa kế, Java, C#: đơn thừa kế Slide 11/ Thừa kế quan hệ “là 1” Chỉ phải thực Để tương đương class PERSON class STUDENT ID_Num Name YearOfBirth Address getID_Num() setID_Num(newID) ID_Num Name YearOfBirth Address getID_Num() setID_Num(newID) RollNum Score getScore() setSore(newScore) class STUDENT RollNum Score getScore() setSore(newScore) thừa kế tính chất riêng Con = Cha + tí Slide 12/ Kỹ thuật phân cấp thừa kế (1) Liệt kê đặc điểm đối tượng cần quan tâm (2) Tìm tập giao tính chất lớp, tách tập giao để xây dựng lớp cha (3) Đặt tên gọi có ý nghĩa cho lớp cha (4) Phần lại sau tách tập giao lớp Slide 13/ Thừa kế - Bài tập làm chỗ Phân tích phân cấp thừa kế cho lớp: • Hàng điện máy • Hàng sành sứ < mã hàng, tên hàng, nhà sản xuất, giá, loại nguyên liệu> • Hàng thực phẩm Slide 14/ Thừa kế- Bài tập nhà Phân tích phân cấp thừa kế cho đối tượng học viện: • Nhân viên quản lý • Nhân viên nghiên cứu • Nhân viên phục vụ Slide 15/ 2.6- Tính đa hình-Polymorphism • Kỹ thuật cho phép thay đổi nội dung hành vi lớp cha –con • Bản chất: Sửa code hành vi lớp cha để code khác • Thí dụ: Lớp SHAPE có hành vi Draw() ba lớp RECTANGLE, TRIANGLE, CIRCLE han2h vi phải thể khác Slide 16/