Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan về OOP

9/10/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  
Bộ môn Công nghệ Phần mềm  
Viện CNTT & TT  
Trường Đại học Bách Khoa Hà Nội  
LP TRÌNH HƯỚNG ĐỐI TƯỢNG  
Bài 01. Tổng quan về OOP  
2
1
Nội dung  
1.1. Lịch sử phát triển của các NNLT  
n a. Hợp ngữ (Assembly language):  
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  
n
n
n
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 toán  
phức tạp.  
Khó sửa lỗi, bảo trì.  
3
4
1
9/10/18  
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)  
n b. NNLT cấu trúc/thủ  
n c. NNLT hướng đối tượng:  
tục:  
n
Thể hiện các thành phần của bài toá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.  
n
Xây dựng chương trình  
dựa trên các hàm/thủ  
tục/chương trình con  
n
n
n
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  
5
6
1.2. Đối tượng là gì?  
Đối tượng thế giới thực  
n Đối tượng trong thế giới thực  
n 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.  
n
Ví dụ một chiếc ô tô  
n Liên quan đến chiếc ô tô:  
n
Các thông tin về chiếc xe như: màu sắc, tốc độ, số km đã  
đi được,...  
n Tất cả có  
trạng thái  
(state) và  
hành động  
(behaviour)  
n
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,...  
7
8
2
9/10/18  
Đối tượng phần mềm  
Đối tượng  
n 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.  
n Cũng có trạng thái và hành động  
Đối tượng phần mềm  
Đối tượng phần mềm Xe Đạp  
n
Trạng thái: thuộc tính (attribute; property)  
n
Hành động: phương thức (method)  
Thuộc tính được xác định  
bởi giá trị cụ thể gọi là  
thuộc tính thể hiện.  
Đố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.  
Một đối tượng cụ thể  
được gọi là một thể hiện.  
9
10  
Mô hình hóa đối tượng  
Tương tác giữa các đối tượng  
Car  
Tom  
House  
n Sự giao tiếp giữa các đối tượng trong thế giới thực:  
Reality  
Tree  
Object-oriented modeling  
n Các đối tượng và sự tương tác giữa chúng trong lập  
Model  
House  
trình  
drives  
n
Các đối tượng giao tiếp với nhau bằng cách gửi thông điệp  
Car  
(message)  
lives in  
Tree  
Tom  
11  
12  
3
9/10/18  
Gọi hàm vs. Gửi thông điệp  
Thông điệp vs. Phương thức  
n Thông điệp  
n Gọi hàm (Call function)  
n
Được gửi từ đối tượng này đến đối tượng kia, không bao gồm đoạn  
mã thực sự sẽ được thực thi  
n
Chỉ ra chính xác đoạn mã nào sẽ được thực hiện.  
n Phương thức  
n
Chỉ có duy nhất một sự thực thi của một hàm với  
một tên nào đó.  
Không có hai hàm trùng tên  
n
n
n
Thủ tục/hàm trong ngôn ngữ lập trình cấu trúc  
Là sự thực thi dịch vụ được yêu cầu bởi thông điệp  
Là đoạn mã sẽ được thực thi để đáp ứng thông điệp được gửi đến  
cho đối tượng  
n
n Gửi thông điệp  
n
Yêu cầu một dịch vụ từ một đối tượng và đối  
tượng sẽ quyết định cần phải làm gì  
n
Các đối tượng khác nhau sẽ có các cách thực thi  
các thông điệp theo cách khác nhau.  
13  
14  
1.3. Lớp đối tượng  
Hướng cấu trúc vs. Hướng ĐT?  
n Hướng cấu trúc:  
n Trong thế giới thực có nhiều đối tượng cùng  
n
data structures + algorithms = Program  
loại.  
n
(cấu trúc dữ liệu + giải thuật = Chương trình)  
n 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.  
n Hướng đối tượng:  
n
objects + messages = Program  
n
(đối tượng + thông điệp = Chương trình)  
n Ví dụ  
15  
16  
4
9/10/18  
Lớp  
Ví dụ Lớp Xe đạp  
Khai báo cho lớp  
XeDap  
n 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  
n
Ví dụ: lớp XeDap là một thiết kế chung cho nhiều đối  
Đối tượng của lớp  
XeDap  
tượng xe đạp được tạo ra  
n 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  
đó  
n Một đối tượng là một thể hiện cụ thể của một lớp.  
n
Ví dụ: mỗi đối tượng xe đạp là một thể hiện của lớp  
XeDap  
n Mỗi thể hiện có thể có những thuộc tính thể hiện  
khác nhau  
n
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  
18  
Nội dung  
2. Công nghệ đối tượng (OT)  
n Công nghệ đối tượng là  
một tập các quy tắc  
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  
(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)  
19  
20  
5
9/10/18  
Đặc tính của LT HĐT  
2.1. Lịch sử phát triển của OT  
n Alan Kay đã tổng hợp các đặc tính của LT HĐT:  
n Các mốc chính của công nghệ đối tượng  
n
1. Tất cả đều là đối tượng.  
n
2. Chương trình phần mềm có thể coi là một tập hợp  
các đối tượng tương tác với nhau  
3. Mỗi đối tượng trong chương trình có các dữ liệu  
độc lập của mình và chiếm bộ nhớ riêng của mình.  
4. Mỗi đối tượng đều có dạng đặc trưng của lớp các  
đối tượng đó.  
5. Tất cả các đối tượng thuộc về cùng một lớp đều  
có các hành vi giống nhau  
Simula  
1967  
C ++  
The UML  
1996  
Late 1980s  
n
n
n
1991  
2004  
1972  
Smalltalk  
Java  
UML 2  
21  
22  
2.2. OT được sử dụng ở đâu?  
2.2. OO được sử dụng ở đâu? (2)  
n Các hệ thống Client/Server và phát triển  
n Hệ nhúng (embedded system)  
Web  
n Hệ thống thời gian thực (real-time)  
n
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  
n
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.  
4
n
Hệ thống vệ tinh  
Các hệ thống quốc phòng  
và hàng không vũ trụ  
n
n
23  
24  
6
9/10/18  
a. Trừu tượng hóa (Abstraction)  
2.3. Các nguyên lý cơ bản của OO  
n Là quá trình loại bỏ đi các thông tin/tính chất cụ thể  
và giữ lại những thông tin/tính chất chung.  
Hướng đối tượng  
n 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.  
n Phụ thuộc vào góc nhìn  
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  
b. Đóng gói (Encapsulation)  
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  
28  
7
9/10/18  
b. Đóng gói (Encapsulation)  
b. Đóng gói (Encapsulation)  
n Che giấu, ẩn đi chi tiết thực hiện bên trong  
n
Cung cấp cho thế giới bên ngoài một giao diện  
n Lợi ích: Người dùng không phụ thuộc vào  
Class: Professor  
việc sửa đổi sự thực thi bên trong  
Attribute: hireDate  
Attribute: name  
Method: getName()  
Method: setHireDate (Date hireDate)  
Tăng cường tính mềm dẻo  
29  
30  
Minh họa việc đóng gói  
c. Thừa kế (Inheritance)  
Gia tăng mức độ  
trừu tượng hóa  
n Giáo sư Clark có thể  
Giáo sư Clark  
dạy 4 lớp trong học  
Vehicle  
kỳ tới (thay vì tối  
đa 3 lớp như các  
học kỳ trước)  
Automobile  
Motorcycle  
Bus  
Name: J Clark  
Employee ID: 567138  
HireDate: 07/25/1991  
Status: Tenured  
SetMaxLoad(4)  
Discipline: Finance  
MaxLoad:4  
Sedan  
Sports Car  
School Bus  
Luxury Bus  
Giảm mức độ  
trừu tượng hóa  
TakeSabbatical()  
31  
35  
35  
8
9/10/18  
d. Đa hình (polymorphism)  
Nội dung  
n Đa hình: “one name, many forms”  
n Nạp chồng phương thức (Method overloading)  
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  
n
n
n
Add(int x, int y)  
Add(float x, float y)  
Add(float x, float y, float z)  
n Ghi đè phương thức (Method Overriding)  
n
Một Intern (thực tập sinh) là một Intern, đồng thời  
cũng có thể được xem là một Staff (nhân viên)  
n
Phương thức quẹt thẻ của Intern khác với phương  
thức quẹt thẻ của Staff  
36  
37  
3.1. Java là gì?  
3.1. Java là gì?  
n Java là một ngôn ngữ lập trình HĐT được phát triển  
n 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.  
bởi Sun Microsystems.  
n Java là một ngôn ngữ lập  
trình khá trẻ  
n Java có một cộng đồng phát triển mạnh mẽ  
n
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…  
n
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)  
n
Bắt đầu được sử dụng từ năm  
1995  
Green Team and James Gosling  
(the leader)  
38  
39  
9
9/10/18  
J2SE: Cung cp các thành phn  
va  
n  
J2SE (Java 2 Platform Standard Edition)  
ct lõi nht để xây các ng  
dng desktop, server.  
Card: Cung cp môi  
n Java 2 Runtime Environment, Standard Edition (J2RE):  
trường an toàn chy trên  
d
các ththông minh  
c
th
(smart card) và các thiết  
n
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.  
bgii hn vbnhvà  
khnăng xlý.  
n Java 2 Software Development Kit, Standard Edition (J2SDK)  
n
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.  
40  
41  
Lịch sử phát triển của J2SE  
J2EE (Java 2 Platform Enterprise Edition)  
n JDK 1.1.4 (Sparkler): 12 tháng 9, 1997  
n JDK 1.1.5 (Pumpkin): 3 tháng 12, 1997  
n JDK 1.1.6 (Abigail): 24 tháng 4, 1998  
n JDK 1.1.7 (Brutus): 28 tháng 9, 1998  
n JDK 1.1.8 (Chelsea): 8 tháng 4, 1999  
n J2SE 1.2 (Playground): 4 tháng 12, 1998  
n J2SE 1.2.1 (none): 30 tháng 3, 1999  
n J2SE 1.2.2 (Cricket): 8 tháng 7, 1999  
n J2SE 1.3 (Kestrel): 8 tháng 5, 2000  
n J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001  
n Service-Oriented Architecture (SOA) và Web  
services  
n Các ứng dụng Web  
n
Servlet/JSP  
JSF…  
n
n Các ứng dụng doanh nghiệp  
n
EJB  
n
JavaMail…  
n …  
43  
44  
10  
9/10/18  
Lịch sử phát triển của J2SE (2)  
3.2. Nền tảng của Java (Java platform)  
n Platform là môi trường  
n J2SE 1.4.0 (Merlin) 13 tháng 2, 2002  
n J2SE 1.4.1 (Hopper) 16 tháng 9, 2002  
n J2SE 1.4.2 (Mantis) 26 tháng 6, 2003  
n J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004  
n Java SE 6 (Mustang), 11 tháng 12, 2006  
phát triển hoặc triển khai.  
n Java platform có thể chạy  
trên mọi hệ điều hành  
n
Các platform khác phụ thuộc  
vào phần cứng  
n
Java platform cung cấp:  
n
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.  
n
Máy ảo Java - Java Virtual  
Machine (JVM).  
n
n
Giao diện lập trình ứng dụng -  
Application Programming  
Interface (API).  
n Java SE 7 (Dolphin), 4/2008.  
45  
46  
3.3. Mô hình dịch của Java  
3.3. Mô hình dịch của Java (2)  
n a. Mô hình biên dịch truyền thống:  
n b. Mô hình dịch của Java:  
n
Mã nguồn được biên dịch thành mã nhị phân.  
n
Mã nguồn được  
biên dịch thành  
bytecode rồi được  
thông dịch bởi JVM.  
%javac Hello.java  
Hello.class created  
%cc Hello.c –o Hello  
% Hello  
% java Hello  
Byte Code  
Run  
JVM  
Binary Code  
Run  
47  
48  
11  
9/10/18  
3.3. Mô hình dịch của Java (3)  
3.4. Các tính năng của Java  
n Máy ảo Java (Java Virtual Machine):  
n Java được thiết kế:  
n
Máy ảo Java là trái tim của ngôn ngữ Java  
n
Ngôn ngữ lập trình mạnh, đầy đủ tính năng và  
thuần hướng đối tượng.  
n
Đ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  
n
n
n
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  
n
Tạo ra môi trường bên trong để thực thi lệnh:  
n
n
n
Nạp các file .class  
Quản lý bộ nhớ  
Dọn “rác”  
n
Trình thông dịch “Just In Time - JIT”  
n
Lý tưởng cho các ứng dụng Web  
n
Chuyển tập lệnh bytecode thành mã máy cụ thể cho từng loại  
CPU.  
49  
50  
3.4. Các tính năng của Java (2)  
3.4. Các tính năng của Java (3)  
n Mạnh mẽ  
n Đơn giản  
n
Thư viện lớp: Hàng trăm lớp được viết trước với nhiều  
n
Từ khóa  
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 đè.  
n
Java có 50 từ khóa  
n
So với Cobol hay VB có tới hàng trăm từ khóa  
n
n
n
Có ý nghĩa đặc biệt trong ngôn ngữ  
Được sử dụng để viết các câu lệnh  
n Hướng đối tượng  
n Network capable  
n
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”  
n
Java hỗ trợ phát triển các ứng dụng phân tán  
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.  
n
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  
51  
52  
12  
9/10/18  
3.4. Các tính năng của Java (3)  
3.4. Các tính năng của Java (4)  
n Java có 50 từ khóa  
n Bảo mật  
n
assert (New in 1.5) enum (New in 1.5)  
n
Java authentication dựa vào các phương  
pháp mã hóa khóa công khai  
n
Mô hình con trỏ Java bảo vệ dữ liệu riêng tư  
trong các đối tượng và ngăn các ứng dụng  
chưa được authorized không được phép truy  
cập cấu trúc dữ liệu  
53  
54  
3.4. Các tính năng của Java (5)  
3.4. Các tính năng của Java (6)  
n Đa luồng (Multi-threaded)  
n Các môi trường phát triển  
n
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.  
n
Java Development Kit  
n
Miễn phí trên Sun Website: java.sun.com  
n Khả chuyển (Portable)  
n
Bao gồm: Trình biên dịch, JVM và các lớp đã có  
n
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  
n
Integrated Development Environments (IDEs):  
Cung cấp:  
n
n
n
n
Nhờ mô hình biên dịch/thông dịch  
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  
(WORE – Write Once, Run Everywhere)  
55  
56  
13  
9/10/18  
3.5. Các kiểu chương trình Java  
3.5. Các kiểu chương trình Java (2)  
n Ứng dụng (Application)  
n Ứng dụng Web (Web application)  
n
Không cần chạy trên các trình duyệt  
n
Tạo ra các nội dung động trên server thay cho  
trên trình duyệt.  
n
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)  
n
n
Chạy trong các ứng dụng server  
Servlet: Kiểm soá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.  
n
Phương thức main() là điểm bắt đầu thực hiện ứng dụng  
n Applet  
n
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.  
n
n
57  
58  
Nội dung  
Ví dụ 1 - HelloWorld  
// HelloWorld.java  
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  
// 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  
59  
60  
14  
9/10/18  
Ví dụ 1 (tiếp)  
Cài đặt và chạy thử chương trình Java  
n Bước 1: Cài đặt j2sdk1.5/6/7, cài đặt các biến môi trường  
n Chú thích (Comment)  
(nếu dùng cmd)  
n
Trên 1 dòng: Bắt đầu bằng: //  
n Bước 2: Cài trình soạn thảo  
n
Nhiều dòng: /* ... */  
TextPad/JCreator/NetBean/Eclipse…  
n Bước 3: Lập trình/Viết mã nguồn  
n Bước 4: Dịch  
n Java phân biệt chữ hoa chữ thường  
n Từ khóa có sẵn của Java:  
n
n
n
cmd: javac HelloWorld.java  
Textpad: Ctrl + 1  
JCreator: F7 hoặc Build à Build Project/File  
n
class: Khai báo lớp  
n
public: Quy định phạm vi truy cập  
n Bước 5: Chạy chương trình  
n Tên lớp chứa hàm main phải trùng với tên  
n
n
n
cmd: java HelloWorld.class  
Textpad: Ctrl + 2  
JCreator: F5 hoặc Run à Run Project/File  
file .java.  
61  
62  
Biến môi trường  
n PATH = …;C:\Program Files\Java\jdk1.6\bin  
n CLASSPATH = C:\Program  
Files\Java\jdk1.6\lib;.;C:\Program  
Files\Java\jdk1.6\include  
63  
64  
15  
9/10/18  
Ví dụ 2 - GUI  
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;  
import javax.swing.JOptionPane;  
public class FirstDialog{  
public static void main(String[] args){  
JOptionPane.showMessageDialog(null,  
result = JOptionPane.showInputDialog(“Hay nhap  
ten ban:”);  
”Xin chao ban!”);  
JOptionPane.showMessageDialog(null,  
System.exit(0);  
”Xin chao “+ result + “!”);  
}
}
System.exit(0);  
}
}
65  
66  
Ví dụ 4  
Bài tập:  
import java.util.Scanner;  
public class Demo {  
n 1. Viết chương trình nhập hai số nguyên và  
hiển thị tổng, hiệu, tích và thương của 2 số  
nguyên vừa nhập  
public static void main(String[] args) {  
Scanner s = new Scanner(System.in);  
System.out.print("Nhap i = ");  
int i = s.nextInt();  
System.out.println(i);  
System.out.print("Nhap l = ");  
long l = s.nextLong();  
System.out.println(l);  
s.close();  
}
}
67  
68  
16  
pdf 16 trang yennguyen 09/04/2022 7960
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan về OOP", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_bai_1_tong_quan_ve_oop.pdf