Tài liệu Bài giảng Tổng quan về OOP: LÝ THUYẾT NGƠN NGỮ HĐT
Bé m«n C«ng nghƯ phÇn mỊm
KHOA CƠNG NGHỆ THƠNG TIN
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Bài 01. Tổng quan về OOP
Nội dung
1. Lập trình hướng đối tượng
2. Cơng nghệ hướng đối tượng
3. Ngơn ngữ lập trình Java
4. Ví dụ và bài tập
2
Nội dung
1. Lập trình hướng đối tượng
2. Cơng nghệ hướng đối tượng
3. Ngơn ngữ lập trình Java
4. Ví dụ và bài tập
3
1.1. Lịch sử phát triển của các NNLT
• a. Hợp ngữ (Assembly language):
▫ Là một ngơn ngữ lập trình tuần tự, gần với tập các
lệnh mã máy của CPU.
▫ Khĩ nhớ, khĩ viết, nhất là với những bài tốn
phức tạp.
▫ Khĩ sửa lỗi, bảo trì.
4
• b. NNLT cấu trúc/thủ tục:
5
Xây dựng chương trình
dựa trên các hàm/thủ
tục/chương trình con
Dữ liệu và xử lý (hàm) tách
rời nhau
Các hàm khơng bắt buộc
phải tuân theo một cách
thức chung truy cập vào
dữ liệu
1.1. Lịch sử phát triển của các NNLT (2)
1.1. Lịch sử phát triển của các NNLT (3)
• c. NNLT hướng đối tượng:
▫ Thể hiện các thành phần của bài tốn là cá...
57 trang |
Chia sẻ: hunglv | Lượt xem: 1559 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Tổng quan về OOP, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LÝ THUYẾT NGƠN NGỮ HĐT
Bé m«n C«ng nghƯ phÇn mỊm
KHOA CƠNG NGHỆ THƠNG TIN
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Bài 01. Tổng quan về OOP
Nội dung
1. Lập trình hướng đối tượng
2. Cơng nghệ hướng đối tượng
3. Ngơn ngữ lập trình Java
4. Ví dụ và bài tập
2
Nội dung
1. Lập trình hướng đối tượng
2. Cơng nghệ hướng đối tượng
3. Ngơn ngữ lập trình Java
4. Ví dụ và bài tập
3
1.1. Lịch sử phát triển của các NNLT
• a. Hợp ngữ (Assembly language):
▫ Là một ngơn ngữ lập trình tuần tự, gần với tập các
lệnh mã máy của CPU.
▫ Khĩ nhớ, khĩ viết, nhất là với những bài tốn
phức tạp.
▫ Khĩ sửa lỗi, bảo trì.
4
• b. NNLT cấu trúc/thủ tục:
5
Xây dựng chương trình
dựa trên các hàm/thủ
tục/chương trình con
Dữ liệu và xử lý (hàm) tách
rời nhau
Các hàm khơng bắt buộc
phải tuân theo một cách
thức chung truy cập vào
dữ liệu
1.1. Lịch sử phát triển của các NNLT (2)
1.1. Lịch sử phát triển của các NNLT (3)
• c. NNLT hướng đối tượng:
▫ Thể hiện các thành phần của bài tốn là các “đối
tượng” (object).
▫ Hướng đối tượng là một kỹ thuật đểmơ hình hĩa
hệ thống thành nhiều đối tượng.
6
7• Đối tượng trong thế giới thực
▫ Ví dụmột chiếc ơ tơ
• Liên quan đến chiếc ơ tơ:
▫ Các thơng tin về chiếc xe như: màu sắc, tốc độ, số km
đã đi được,...
▫ Các hoạt động của chiếc xe như: tăng tốc khi nhấn
ga, giảm tốc khi đạp phanh,...
1.2. Đối tượng là gì?
Đối tượng thế giới thực
Một đối tượng thế giới thực là một thực
thể cụ thể mà thơng thường chúng ta cĩ thể
sờ, nhìn thấy hay cảm nhận được.
Tất cả cĩ
trạng thái
(state) và
hành động
(behaviour)
8
Đối tượng phần mềm
Các đối tượng phần mềm cĩ thể được
dùng để biểu diễn các đối tượng thế giới
thực.
Cũng cĩ trạng thái và
hành động
Trạng thái: thuộc tính
(attribute; property)
Hành động: phương thức
(method)
9
10
Đối tượng
Đối tượng (object) là một
thực thể phần mềm bao
bọc các thuộc tính và các
phương thức liên quan.
Đối tượng phần mềm Đối tượng phần mềm Xe Đạp
Thuộc tính được xác định
bởi giá trị cụ thể gọi là
thuộc tính thể hiện.
Một đối tượng cụ thể
được gọi là một thể hiện.
Mơ hình hĩa đối tượng
11
Object-oriented modeling
House Tom
Car
Tree
House
Tom
Car
Tree
lives in
drives
Model
Reality
Tương tác giữa các đối tượng
• Sự giao tiếp giữa các đối tượng trong thế giới thực:
• Các đối tượng và sự tương tác giữa chúng trong lập
trình
▫ Các đối tượng giao tiếp với nhau bằng cách gửi thơng điệp
(message)
12
Hướng cấu trúc vs. Hướng ĐT?
• Hướng cấu trúc:
▫ data structures + algorithms = Program
▫ (cấu trúc dữ liệu + giải thuật = Chương trình)
• Hướng đối tượng:
▫ objects + messages = Program
▫ (đối tượng + thơng điệp = Chương trình)
15
1.3. Lớp đối tượng
Trong thế giới thực cĩ nhiều đối tượng cùng loại.
Chương trình hướng đối tượng cĩ nhiều đối
tượng cùng loại chia sẻ những đặc điểm chung.
Ví dụ
16
Lớp
• Một lớp là một thiết kế (blueprint) hay mẫu (prototype)
cho các đối tượng cùng kiểu
▫ Ví dụ: lớp XeDap là một thiết kế chung cho nhiều đối tượng xe đạp
được tạo ra
• Lớp định nghĩa các thuộc tính và các phương thức chung
cho tất cả các đối tượng của cùng một loại nào đĩ
• Một đối tượng là một thể hiện cụ thể của một lớp.
▫ Ví dụ: mỗi đối tượng xe đạp là một thể hiện của lớp XeDap
• Mỗi thể hiện cĩ thể cĩ những thuộc tính thể hiện khác
nhau
▫ Ví dụ: một xe đạp cĩ thể đang ở bánh răng thứ 5 trong khi một xe
khác cĩ thể là đang ở bánh răng thứ 3.
17
Ví dụ Lớp Xe đạp
Khai báo cho lớp
XeDap
Đối tượng của lớp
XeDap
18
Nội dung
1. Lập trình hướng đối tượng
2. Cơng nghệ hướng đối tượng
3. Ngơn ngữ lập trình Java
4. Ví dụ và bài tập
19
20
2. Cơng nghệ đối tượng (OT)
• Cơng nghệ đối tượng là một
tập các quy tắc (trừu tượng
hĩa, đĩng gĩi, đa hình), các
hướng dẫn để xây dựng phần
mềm, cùng với ngơn ngữ, cơ
sở dữ liệu và các cơng cụ
khác hỗ trợ các quy tắc này.
(Object Technology - A Manager’s Guide, Taylor, 1997)
21
• Các mốc chính của cơng nghệ đối tượng
2.1. Lịch sử phát triển của OT
Simula
1967
C ++
Late 1980s
Smalltalk
1972
Java
1991
The UML
1996
UML 2
2004
22
2.2. OT được sử dụng ở đâu?
• Các hệ thống Client/Server và phát triển Web
Cơng nghệ đối tượng cho
phép các cơng ty đĩng gĩi
thơng tin doanh nghiệp trong
các đối tượng và giúp phân
phối quá trình xử lý qua
mạng Internet hoặc một
mạng máy tính.
23
2.2. OO được sử dụng ở đâu? (2)
• Hệ nhúng (embedded system)
• Hệ thống thời gian thực (real-time)
▫ Cơng nghệ đối tượng cho phép các hệ thống
thời gian thực cĩ thể phát triển với chất lượng
cao hơn và linh hoạt hơn
Hệ thống vệ tinh
Các hệ thống quốc phịng
và hàng khơng vũ trụ
…
4
24
2.3. Các nguyên lý cơ bản của OO
T
rừ
u
tư
ợ
ng
h
ĩa
P
hâ
n
cấ
p
Hướng đối tượng
Đ
ĩn
g
gĩ
i
M
ơ-
đu
n
hĩ
a
25
a. Trừu tượng hĩa (Abstraction)
• Là quá trình loại bỏ đi các thơng tin
cụ thể và giữ lại những thơng tin
chung.
• Tập trung vào các đặc điểm cơ bản
của thực thể, các đặc điểm phân
biệt nĩ với các loại thực thể khác.
• Phụ thuộc vào gĩc nhìn
▫ Quan trọng trong ngữ cảnh này nhưng
lại khơng cĩ ý nghĩa nhiều trong ngữ
cảnh khác.
25
26
Ví dụ: Trừu tượng hĩa
Sinh viên Giáo viên
Khĩa học diễn ra lúc 9:00 sáng các ngày thứ 3, 5, 7
Khĩa học (ví dụ đại số)
27
b. Đĩng gĩi (Encapsulation)
Tăng cường tính mềm dẻo
• Che giấu, ẩn đi chi tiết thực hiện bên trong
Cung cấp cho thế giới bên ngồi một giao diện
Người dùng khơng phụ thuộc vào việc sửa đổi
sự thực thi bên trong
28
Minh họa việc đĩng gĩi
• Giao diện thơng điệp
(phương thức) của đối
tượng
• Giáo sư Clark được yêu
cầu dạy 4 lớp tháng tới
TakeSabbatical()
Giáo sư Clark
Name: J Clark
Employee ID: 567138
HireDate: 07/25/1991
Status: Tenured
Discipline: Finance
MaxLoad:4
SetMaxLoad(4)
29
c. Mơ đun hĩa (Modularity)
• Chia nhỏ hệ thống phức tạp
thành những thành phần nhỏ
cĩ thể quản lý được.
• Cho phép người dùng hiểu
biết về hệ thống.
29
30
Ví dụ: Mơ đun hĩa
• Ví dụ, chia nhỏmột hệ thống
phức tạp thành các mơ đun
nhỏ hơn. Hệ thống
quản lý xuất
nhập sách
Hệ thống quản lý
siêu thị sách
Hệ thống
kế tốn
Hệ thống
quản lý
nhân viên
31
d. Phân cấp (Hierarchy)
31
Giảm mức độ
trừu tượng hĩa
Gia tăng mức độ
trừu tượng hĩa
Tài sản
Bất động sản
Tiết kiệm
Tài khoản ngân hàng
Tiên gửi Cổ phiếu
Chứng khốn
Các loại giấy tờ cĩ giá trị
Các phần tử ở cùng cấp trong sơ đồ phân cấp
thì cĩ cùng mức trừu tượng hĩa
Nội dung
1. Lập trình hướng đối tượng
2. Cơng nghệ hướng đối tượng
3. Ngơn ngữ lập trình Java
4. Ví dụ và bài tập
32
3.1. Java là gì?
• Java là một ngơn ngữ lập trình HĐT được phát triển
bởi Sun Microsystems.
33
Green Team and James Gosling
(the leader)
Java là một ngơn ngữ lập
trình khá trẻ
Ban đầu được sử dụng để
xây dựng ứng dụng điều
khiển các bộ xử lý bên trong
các thiết bị điện tử dân dụng
như máy điện thoại cầm tay,
lị vi sĩng…
Bắt đầu được sử dụng từ
năm 1995
3.1. Java là gì?
• Ngày nay, nhắc đến Java, khơng cịn nhắc đến
nhưmột ngơn ngữmà cịn là một cơng nghệ, một
nền tảng phát triển.
• Java cĩ một cộng đồng phát triển mạnh mẽ
▫ Một tập hợp các thư viện với số lượng lớn (từ Sun
và các nguồn khác)
34
3.2. Các ấn bản của Java
35
J2EE: Xây dựng dựa trên nền
tảng của J2SE, cung cấp các
tính năng để xây dựng một
nền tảng đầy đủ, ổn định, an
tồn và nhanh để xây dựng
các ứng dụng doanh nghiệp
J2ME: Cung cấp ột mơi trường
mạnh mẽ, linh hoạt cho các ứng
dụng chạy trên di động và các
thiết bị nhúng khác (PDAs, bộ giải
mã cáp truyền hình, máy in…)
Java Card: Cung cấp mơi
trường an tồn chạy trên
các thẻ thơng minh
(smart card) và các thiết
bị giới hạn về bộ nhớ và
khả năng xử lý.
J2SE: Cung cấp các thành phần
cốt lõi nhất để xây các ứng
dụng desktop, server.
J2SE (Java 2 Platform Standard Edition)
•
• Java 2 Runtime Environment, Standard Edition (J2RE):
▫ Mơi trường thực thi hay JRE cung cấp các Java API,
máy ảo Java (JVM) và các thành phần cần thiết khác để
chạy các applet và các ứng dụng viết bằng Java.
• Java 2 Software Development Kit, Standard Edition
(J2SDK)
▫ Tập mẹ của JRE, và chứa mọi thứ nằm trong JRE, bổ
sung thêm các cơng cụ như là trình biên dịch và các
trình gỡ lỗi cần để phát triển applet và các ứng dụng.
36
J2EE (Java 2 Platform Enterprise Edition)
•
• Service-Oriented Architecture (SOA) và Web
services
• Các ứng dụng Web
▫ Servlet/JSP
▫ JSF…
• Các ứng dụng doanh nghiệp
▫ EJB
▫ JavaMail…
• …
38
Lịch sử phát triển của J2SE
• JDK 1.1.4 (Sparkler): 12 tháng 9, 1997
• JDK 1.1.5 (Pumpkin): 3 tháng 12, 1997
• JDK 1.1.6 (Abigail): 24 tháng 4, 1998
• JDK 1.1.7 (Brutus): 28 tháng 9, 1998
• JDK 1.1.8 (Chelsea): 8 tháng 4, 1999
• J2SE 1.2 (Playground): 4 tháng 12, 1998
• J2SE 1.2.1 (none): 30 tháng 3, 1999
• J2SE 1.2.2 (Cricket): 8 tháng 7, 1999
• J2SE 1.3 (Kestrel): 8 tháng 5, 2000
• J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001
39
Lịch sử phát triển của J2SE (2)
• J2SE 1.4.0 (Merlin) 13 tháng 2, 2002
• J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
• J2SE 1.4.2 (Mantis) 26 tháng 6, 2003
• J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
• Java SE 6 (Mustang), 11 tháng 12, 2006
▫ Các bản cập nhật 2 và 3 được đưa ra vào năm 2007
▫ Bản cập nhật 4 đưa ra tháng 1 năm 2008.
• Java SE 7 (Dolphin), 4/2008.
40
3.2. Nền tảng của Java (Java platform)
• Platform là mơi trường phát
triển hoặc triển khai.
• Java platform cĩ thể chạy trên
mọi hệ điều hành
▫ Các platform khác phụ thuộc vào
phần cứng
▫ Java platform cung cấp:
Máy ảo Java - Java Virtual
Machine (JVM).
Giao diện lập trình ứng dụng -
Application Programming
Interface (API).
41
3.3. Mơ hình dịch của Java
• a. Mơ hình biên dịch truyền thống:
▫ Mã nguồn được biên dịch thành mã nhị phân.
42
%cc Hello.c –o Hello
% Hello
Binary CodeRun
3.3. Mơ hình dịch của Java (2)
• b. Mơ hình dịch của Java:
▫ Mã nguồn được
biên dịch thành
bytecode rồi được
thơng dịch bởi JVM.
43
%javac Hello.java
Hello.class created
% java Hello
Byte CodeRun JVM
3.3. Mơ hình dịch của Java (3)
• Máy ảo Java (Java Virtual Machine):
▫ Máy ảo Java là trái tim của ngơn ngữ Java
Đem đến cho các chương trình Java khả năng viết một lần
nhưng chạy được ởmọi nơi
▫ Tạo ra mơi trường bên trong để thực thi lệnh:
Nạp các file .class
Quản lý bộ nhớ
Dọn “rác”
▫ Trình thơng dịch “Just In Time - JIT”
Chuyển tập lệnh bytecode thành mã máy cụ thể cho từng loại
CPU.
44
3.4. Các tính năng của Java
• Java được thiết kế:
▫ Ngơn ngữ lập trình mạnh, đầy đủ tính năng và
thuần hướng đối tượng.
▫ Dễ học, cú pháp tương tự như C++
▫ Độc lập nền tảng
▫ Hỗ trợ phát triển các ứng dụng trong mơi trường
mạng
▫ Lý tưởng cho các ứng dụng Web
45
3.4. Các tính năng của Java (2)
• Mạnh mẽ
▫ Thư viện lớp: Hàng trăm lớp được viết trước với nhiều
các phương thức tiện ích.
▫ Java sử dụng mơ hình con trỏ khơng cho phép truy cập
trực tiếp vào bộ nhớ; bộ nhớ khơng thể ghi đè.
• Hướng đối tượng
▫ Java hỗ trợ phát triển phần mềm bằng cách sử dụng
khái niệm “đối tượng”
▫ Phần mềm được phát triển sử dụng Java bao gồm các
lớp và các đối tượng
46
3.4. Các tính năng của Java (3)
• Đơn giản
▫ Từ khĩa
Java cĩ 50 từ khĩa
So với Cobol hay VB cĩ tới hàng trăm từ khĩa
Cĩ ý nghĩa đặc biệt trong ngơn ngữ
Được sử dụng để viết các câu lệnh
• Network capable
▫ Java hỗ trợ phát triển các ứng dụng phân tán
▫ Một số loại ứng dụng của Java được thiết kế để được
truy cập thơng qua trình duyệt Web.
47
3.4. Các tính năng của Java (3)
• Java cĩ 50 từ khĩa
▫ assert (New in 1.5) enum (New in 1.5)
48
3.4. Các tính năng của Java (5)
• Đa luồng (Multi-threaded)
▫ Cho phép chương trình của bạn chạy nhiều hơn một tác
vụ tại cùng một thời điểm.
• Khả chuyển (Portable)
▫ Các chương trình cĩ thể viết và biên dịch một lần, rồi
chạy trên các nền tảng khác
▫ Nhờmơ hình biên dịch/thơng dịch
(WORE – Write Once, Run Everywhere)
50
3.4. Các tính năng của Java (6)
• Các mơi trường phát triển
▫ Java Development Kit
Miễn phí trên Sun Website: java.sun.com
Bao gồm: Trình biên dịch, JVM và các lớp đã cĩ
▫ Integrated Development Environments (IDEs):
Cung cấp:
Các trình soạn thảo phức tạp
Các cơng cụ gỡ lỗi
Các cơng cụ phát triển đồ họa
51
3.5. Các kiểu chương trình Java
• Ứng dụng (Application)
▫ Khơng cần chạy trên các trình duyệt
▫ Cĩ thể gọi các chức năng thơng qua dịng lệnh hoặc
menu lựa chọn (đồ họa)
▫ Phương thức main() là điểm bắt đầu thực hiện ứng
dụng
• Applet
▫ Chương trình đồ họa chạy trên trình duyệt tại máy trạm
(client).
▫ Cĩ thể được xem bằng appletviewer hoặc nhúng trong
trình duyệt Web cĩ cài JVM.
52
3.5. Các kiểu chương trình Java (2)
• Ứng dụng Web (Web application)
▫ Tạo ra các nội dung động trên server thay cho trên
trình duyệt.
▫ Chạy trong các ứng dụng server
▫ Servlet: Kiểm sốt các yêu cầu từ trình duyệt và trả
lại các phản hồi
▫ JavaServer Page (JSP): Các trang HTML được
nhúng với mã Java.
53
Nội dung
1. Cơng nghệ hướng đối tượng
2. Các nguyên lý cơ bản của OO
3. Ngơn ngữ lập trình Java
4. Ví dụ và bài tập
54
Ví dụ 1 - HelloWorld
// HelloWorld.java
// Chuong trinh hien thi dong chu “Hello World”
public class HelloWorld {
/* Phuong thuc main se duoc goi dau tien
trong bat cu ung dung Java nao*/
public static void main(String args[]){
System.out.println( “Hello World!" );
} // ket thuc phuong thuc main
} // ket thuc lop HelloWorld
55
Ví dụ 1 (tiếp)
• Chú thích (Comment)
▫ Trên 1 dịng: Bắt đầu bằng: //
▫ Nhiều dịng: /* ... */
• Java phân biệt chữ hoa chữ thường
• Từ khĩa cĩ sẵn của Java:
▫ class: Khai báo lớp
▫ public: Quy định phạm vi truy cập
• Tên lớp chứa hàm main phải trùng với tên file
.java.
56
Cài đặt và chạy thử chương trình Java
• Bước 1: Cài đặt j2sdk1.5/6/7, cài đặt các biến mơi trường
(nếu dùng cmd)
• Bước 2: Cài trình soạn thảo
TextPad/JCreator/NetBean/Eclipse…
• Bước 3: Lập trình/Viết mã nguồn
• Bước 4: Dịch
▫ cmd: javac HelloWorld.java
▫ Textpad: Ctrl + 1
▫ JCreator: F7 hoặc Build Build Project/File
• Bước 5: Chạy chương trình
▫ cmd: java HelloWorld.class
▫ Textpad: Ctrl + 2
▫ JCreator: F5 hoặc Run Run Project/File
57
Biến mơi trường
• PATH = …;C:\Program Files\Java\jdk1.6\bin
• CLASSPATH = C:\Program
Files\Java\jdk1.6\lib;.;C:\Program
Files\Java\jdk1.6\include
58
59
Ví dụ 2 - GUI
import javax.swing.JOptionPane;
public class FirstDialog{
public static void main(String[] args){
JOptionPane.showMessageDialog(null,
”Xin chao ban!”);
System.exit(0);
}
}
60
Ví dụ 3 – Nhập, xuất dữ liệu
import javax.swing.JOptionPane;
public class HelloNameDialog{
public static void main(String[] args){
String result;
result = JOptionPane.showInputDialog(“Hay nhap
ten ban:”);
JOptionPane.showMessageDialog(null,
”Xin chao “+ result + “!”);
System.exit(0);
}
}
61
Các file đính kèm theo tài liệu này:
- bai_01_tong_quan_ve_oop_107.pdf