oop 0
DESCRIPTION
slide java o lopTRANSCRIPT
![Page 1: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/1.jpg)
2009-2010OOP -
http://mim.hus.edu.vn/elearning 1
Lập trình hướng đối tượngObject-oriented Programming
Giảng viên: Nguyễn Thị Minh Huyền
Đỗ Thanh Hà
![Page 2: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/2.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 2
Môn học OOP
2 tín chỉ: 30 tiết
Nghe giảng lý thuyết trên lớp: 15t
Thực hành tại phòng máy: 12t x 2
Tự học: 3t
Đề cương môn học
![Page 3: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/3.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 3
Tổ chức học tập
Giờ lí thuyết + thực hành: Phòng máy B (502-T5)
Lịch học: Chiều thứ Hai hàng tuần, một số buổi sáng thứ Tư (xem lịch cụ thể kèm theo)
Ghép nhóm 2-3 người: lên danh sách (cuối giờ)
Bài tập thực hành: Chuẩn bị chương trình ở nhà
Phân tích, chữa bài tập, chạy chương trình tại phòng máy
Kiểm tra kiến thức: Kiểm tra thường xuyên (bài tập về nhà theo nhóm 2 người)
Kiểm tra giữa kì
Bài tập lớn (nhóm 4-5 người) + trả lời câu hỏi trên giấy
![Page 4: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/4.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 4
Nhập môn
Giới thiệu
Các khái niệm cơ bản của lập trình hướng đối tượng
Giới thiệu ngôn ngữ lập trình Java
![Page 5: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/5.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 5
Giới thiệu (1)
Công nghệ phần mềm (software engineering):
Đặc tả yêu cầu (requirements): làm gì?
Phân tích (analysis): làm thế nào?
Thiết kế (design): tổ chức ra sao?
Lập trình (coding): viết mã chương trình
Dò lỗi (debugging): sửa lỗi
Kiểm tra (testing): đảm bảo chương trình chạy đúng
Phân phối (deployment): đưa vào sử dụng
Bảo trì (maintenance): tiếp tục hoàn thiện, phát triển, giữ phần mềm hoạt động
![Page 6: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/6.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 6
Giới thiệu (2)
Phân loại ngôn ngữ lập trình:
Ngôn ngữ máy, hợp ngữ
Ngôn ngữ lập trình bậc cao
Lập trình thủ tục: Pascal, C, v.v.
Lập trình hàm: Lisp, CML, v.v.
Lập trình mô tả (lôgic): Prolog, v.v.
Lập trình hướng đối tượng: C++, Java, C# v.v.
![Page 7: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/7.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 7
Giới thiệu (3)
Lập trình hướng đối tượng: Ý tưởng: Mô hình hóa các thực thể thành các đối
tượng độc lập, có thể tương tác bằng cách trao đổi thông báo cho nhau
Lịch sử: 1967: ngôn ngữ Simula triển khai khái niệm lớp (class)
1976: ngôn ngữ Smalltalk triển khai khái niệm đóng gói, thừa kế, đa hình – các khái niệm cơ bản của lập trình hướng đối tượng
Các ngôn ngữ khác: C++, Objective-C, Eiffel, Java, C#, Visual Basic.NET, Python, Ruby, v.v.
![Page 8: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/8.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 8
Nhập môn
Giới thiệu
Các khái niệm cơ bản của lập trình hướng đối tượng
Giới thiệu ngôn ngữ lập trình Java
![Page 9: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/9.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 9
Đối tượng (object)
Biểu diễn trừu tượng của các thực thể (vật thể hay phi vật thể)
Mô tả đối tượng: Thuộc tính (attribute): mô tả đặc điểm đối tượng
Phương thức, còn gọi là hàm thành viên (method, member function): mô tả các hành vi có thể của đối tượng
Lập trình: thuộc tính – biến, phương thức – hàm
Tập hợp giá trị hiện thời của các thuộc tính: trạng thái của đối tượng
![Page 10: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/10.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 10
Chương trình hướng đối tượng
DATA
Function 1 Function 2
Function3
Function 4Function 5
Function6
Object 1
Object 2
Object 3
Message
Object Object communication
![Page 11: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/11.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 11
Đối tượng – Ví dụ (1)
Ô tô
Thuộc tính: Biển số
Loại xe
Màu sơn
...
Phương thức: Tăng tốc độ
Bóp còi
...
![Page 12: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/12.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 12
Đối tượng – Ví dụ (2)
Mô tả một điểm trong mặt phẳng tọa độ Oxy
Thuộc tính: x, y (tung độ, hoành độ)
Hành vi của các đối tượng điểm:
setX(m), setY(n)
getX(), getY()
printXY()
![Page 13: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/13.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 13
Đặc điểm LT hướng đối tượng
Chương trình hướng đối tượng:
Mô tả các đối tượng (thuộc tính, phương thức)
Chương trình chính: tạo các đối tượng, gửi thông báo yêu cầu thực hiện các hành vi nào đó (gọi hàm)
![Page 14: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/14.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 14
Đặc điểm LT hướng đối tượng
Trừu tượng dữ liệu (abstraction): chương trình chỉ quan tâm đến các đặc tính của đối tượng (gồm có gì, làm gì), bỏ qua các tiểu tiết (làm như thế nào).
Đóng gói dữ liệu (encapsulation): Cơ chế đảm bảo môi trường bên ngoài chỉ có thể tác động vào đối tượng thông qua các dịch vụ (phương thức) cho bởi người viết mã chương trình => tính toàn vẹn dữ liệu
Tính đa hình (polymorphism): cùng một thông báo, mỗi đối tượng “phản ứng” khác nhau
Kế thừa (inheritance): Cho phép đối tượng này lấy lại (kế thừa) những đặc tính sẵn có của đối tượng khác
![Page 15: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/15.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 15
Đặc điểm LT hướng đối tượng
Hệ quả: Người sử dụng chỉ cần biết đặc tả của đối
tượng
Thay đổi mã bên trong đối tượng không ảnh hưởng gì đến chương trình bên ngoài sử dụng đối tượng
Ưu điểm: tính tái sử dụng cao, tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì/mở rộng phần mềm
![Page 16: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/16.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 16
Lớp
Lớp (class): cấu trúc (“kiểu dữ liệu”) của đối tượng. Mỗi đối tượng sinh ra nhờ việc thực thể hóa (instanciation) một lớp.
Thuộc tính: dữ liệu biểu diễn trạng thái đối tượng
Phương thức (hàm): thao tác áp dụng được cho các đối tượng. Đặc biệt:
hàm dựng (constructor) – cài đặt giá trị ban đầu, đăng kí bộ nhớ, v.v.,
hàm hủy (destructor) – thực hiện các thao tác cần thiết khi hủy bỏ 1 đối tượng
![Page 17: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/17.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 17
Đóng gói dữ liệu
Định nghĩa các mức truy cập khác nhau tới các thuộc tính/phương thức của một đối tượng: Công khai (public): biến/hàm truy cập được
từ tất cả các lớp khác
Bảo vệ (protected): biến/hàm chỉ truy cập được trong nội bộ hoặc các lớp con của nó
Riêng (private): biến/hàm chỉ có thể truy cập được trong nội bộ lớp
![Page 18: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/18.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 18
Kế thừa
Tạo một lớp mới (lớp con - subclass) từ một lớp đã có (lớp cha – parent class) Lớp mới kế thừa tất cả các thuộc
tính/phương thức của lớp cha
Có thể bổ sung các thuộc tính/phương thức mới
Ví dụ: Lớp “xe tải” kế thừa từ lớp “ô tô”
Một số ngôn ngữ cho phép kế thừa bội (vd: C++)
![Page 19: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/19.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 19
Đa hình
Các loại đa hình: Tải bội (overloading): cùng một tên hàm, chức năng
tương tự nhưng bản chất thực hiện khác nhau (ví dụ: phép cộng - số, xâu).
Định nghĩa chồng (overriding): Cho phép định nghĩa lại hàm thuộc lớp cha thành hàm mới trong lớp con (ví dụ: định nghĩa hàm di chuyển cho các lớp con của lớp Quân Cờ)
Tham biến (template): cùng một tên hàm trong một lớp, nhưng số lượng tham biến khác nhau hoặc kiểu các tham biến khác nhau.
![Page 20: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/20.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 20
Nhập môn
Giới thiệu
Các khái niệm cơ bản của lập trình hướng đối tượng
Giới thiệu ngôn ngữ lập trình Java
![Page 21: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/21.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 21
Phân loại ngôn ngữ lập trình hướng đối tượng
Biên dịch hoàn toàn ra mã máy (C++, Eiffel, v.v.): hiệu năng cao hơn
Biên dịch ra mã byte chạy bởi máy ảo (Smalltalk, Java, v.v.): chương trình ổn định, chạy trong mọi môi trường
Thông dịch hoặc ngôn ngữ script (Ruby, Python, JavaScript, v.v.)
![Page 22: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/22.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 22
Ngôn ngữ thực hành: Java
Phiên bản: J2SE 5.0 (JDK 5.0)
http://java.sun.com
![Page 23: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/23.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 23
Java – tổng quan (1)
Lịch sử: Do hãng Sun Microsystems triển khai năm 1991
Dự án Green: chế tạo điều khiển từ xa vạn năng chứa hệ điều hành có thể điều khiển toàn bộ các đồ điện tử trong nhà
Cần một ngôn ngữ lập trình tích hợp trong các đồ điện tử gia dụng để điều khiển và cho phép chúng tương tác/trao đổi với nhau: ngôn ngữ hướng đối tượng
C++: phức tạp, kém tính mang được (portable)
James Gosling: định nghĩa ngôn ngữ lập trình mới mang tên Oak, sau đổi tên là Java: cơ bản dựa trên C++, chương trình đơn giản/gọn nhẹ hơn, có tính mang được
Java được đánh giá là thích hợp cho web: chương trình nhỏ gọn, chạy trên mọi máy
1994: Trình duyệt HotJava cho phép chạy Java applets. Từ cuối 1995: Java phát triển mạnh với sự hỗ trợ của Netscape
![Page 24: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/24.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 24
Java – tổng quan (2)
So sánh Java và C++: Cú pháp Java gần như C++ Java không có các đặc tính phức tạp (dễ gây lỗi lập
trình) của C++: Không dùng con trỏ Không dùng thừa kế bội Giải phóng bộ nhớ tự động Kiểu xâu kí tự và mảng được tích hợp trong ngôn ngữ
Java chạy chậm hơn C++ (đổi lại tính mang được)
Các phiên bản của Java: 1.0, 1.1, v.v., 1.5 (Java 5), 1.6 (Java 6)
![Page 25: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/25.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 25
Java – tổng quan (3)
Chương trình Java: Biên dịch: tệp mã nguồn ASCII (*.java) => tệp mã
bytecode (*.class) Chạy chương trình: máy ảo Java (JVM: Java Virtual
Machine)
Ứng dụng (application) và ứng dụng con (applet): Ứng dụng: chương trình thông thường chạy trên máy Ứng dụng con nhúng vào trình duyệt Internet: có
tính năng giới hạn (để đảm bảo tính an toàn) dùng cho ứng dụng web
![Page 26: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/26.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 26
Java – tổng quan (4)
Phát triển phần mềm bằng Java: Bộ công cụ hỗ trợ JDK (Java Development Kit), miễn
phí javac: trình biên dịch (*.java -> *.class) java: máy ảo thực hiện ứng dụng appletviewer: máy ảo thực hiện applet jdb: debugger javap: trình dịch ngược (*.class -> *.java) javadoc: bộ sinh tài liệu chương trình jar: trình nén các tệp bytecode
Các phiên bản của JDK: phiên bản Java + môi trường (Windows, Linux, Unix) – jdk1.6
![Page 27: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/27.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 27
Tài liệu tham khảo
Học liệu: BigJavahttp://www.horstmann.com/bigjava2.html
Giáo trình Lập trình Java (laptrinh_java.pdf)
![Page 28: Oop 0](https://reader034.vdocuments.pub/reader034/viewer/2022052622/55910de11a28ab25148b45f8/html5/thumbnails/28.jpg)
2009-2010 OOP - http://mim.hus.edu.vn/elearning 28
Phần tiếp theo...
Học liệu: BigJavahttp://www.horstmann.com/bigjava2.html
27 chương
Tự đọc các chương: 5, 10, 12, 14, 16, 18, 19, 24, 25, 26, 27