oop 0

28
2009-2010 OOP - http://mim.hus.edu.vn/elearning 1 Lập trình hướng đối tượng Object-oriented Programming Giảng viên: Nguyễn Thị Minh Huyền [email protected] Đỗ Thanh Hà [email protected]

Upload: thai-hoc-vu

Post on 29-Jun-2015

2.157 views

Category:

Education


2 download

DESCRIPTION

slide java o lop

TRANSCRIPT

Page 1: Oop 0

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

[email protected]

Đỗ Thanh Hà

[email protected]

Page 2: Oop 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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