Tổng hợp bài giảng môn Lập trình Hướng đối tượng | Trường Đại học Bách Khoa Hà Nội

Tổng hợp bài giảng môn Lập trình Hướng đối tượng| Bài giảng môn Lập trình Hướng đối tượng| Trường Đại học Bách Khoa Hà Nội. Tài liệu gồm 102 trang giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem.

8/24/2011
1
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
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
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):
4
1.1. Lịch sử phát triển của các NNLT (2)
b. NNLT cấu trúc/thủ
tục:
5
1.1. Lịch sử phát triển của các NNLT (3)
c. NNLT hướng đối tượng:
6
8/24/2011
2
1.2. Đối tượng là gì?
Đối tượng trong thế giới thực
7
Đố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.
8
Đối tượng phần mềm
9
Đối tượng
10
Đối tượng phần mềm Đối tượng phần mềm Xe Đạp
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
12
8/24/2011
3
Gọi hàm vs. Gửi thông điệp
Gọi hàm (Call function)
Gửi thông điệp
13
Thông điệp vs. Phương thức
Thông điệp
Phương thức
14
Hướng cấu trúc vs. Hướng ĐT?
Hướng cấu trúc:
Hướng đối tượng:
15
Lớp-Ví dụ Lớp Xe đạp
16
Khai báo cho lớp
XeDap
Đối tượng của lớp
XeDap
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
17
2. Công nghệ đối tượng (OT)
18
(Object Technology - A Manager’s Guide, Taylor, 1997)
8/24/2011
4
2.1. Lịch sử phát triển của OT
19
Simula
1967
C ++
Late 1980s
Smalltalk
1972
Java
1991
The UML
1996
UML 2
2004
2.2. OT được sử dụng ở đâu?
Các hệ thống Client/Server và phát triển
Web
20
2.2. OO được sử dụng ở đâu? (2)
Hệ nhúng (embedded system)
Hệ thống thời gian thực (real-time)
21
4
2.3. Các nguyên lý cơ bản của OO
22
Trừu
tượng
hóa
Phân cấp
Hướng đối tượng
Đóng gói
-
đun hóa
a. Trừu tượng hóa (Abstraction)
23
2323
b. Đóng gói (Encapsulation)
24
Tăng cường tính mềm dẻo
8/24/2011
5
c. Mô đun hóa (Modularity)
25
2525
d. Phân cấp (Hierarchy)
26
2626
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 khoán
Các loại giấy tờ có giá trị
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
27
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.
28
Green Team and James Gosling
(the leader)
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ẽ
29
3.2. Các ấn bản của Java
30
8/24/2011
6
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
31
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.
32
3.2. Nền tảng của Java (Java platform)
33
3.3. Mô hình dịch của Java
a. Mô hình biên dịch truyền thống:
34
3.3. Mô hình dịch của Java (2)
b. Mô hình dịch của Java:
35
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
36
8/24/2011
7
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++
37
3.4. Các tính năng của Java (2)
Mạnh mẽ
Hướng đối tượng
38
3.4. Các tính năng của Java (3)
Đơn giản
Network capable
39
3.4. Các tính năng của Java (3)
Java có 50 từ khóa
40
3.4. Các tính năng của Java (4)
Bảo mật
41
3.4. Các tính năng của Java (5)
Đa luồng (Multi-threaded)
Khả chuyển (Portable)
42
8/24/2011
8
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
Integrated Development Environments (IDEs):
43
3.5. Các kiểu chương trình Java
Ứng dụng (Application)
Applet
44
3.5. Các kiểu chương trình Java (2)
Ứng dụng Web (Web application)
45
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
46
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
47
Ví dụ 1 (tiếp)
Chú thích (Comment)
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.
48
8/24/2011
9
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
49
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
50
51
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);
}
}
52
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);
}
}
53
8/24/2011
1
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
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 02. Cú pháp Java cơ bản
Mục tiêu bài học
Nêu được các quy ước đặt tên trong các chương
trình Java, tạo ra các định danh hợp lệ
tả các kiểu dữ liệu bản trong Java
cách sử dụng
Các toán tử
Giải thích về phạm vi của biến
Sử dụng các câu lệnh điều khiển, cấu trúc điều
kiện, cấu trúc lặp và rẽ nhánh
Khai báo, khởi tạo các biến mảng trong Java
2
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
3
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
4
1. Định danh
Định danh:
5
1. Định danh (2)
Quy ước với định danh (naming convention):
6
8/24/2011
2
1. Định danh (3)
Literals
Từ khóa (keyword)
Từ dành riêng (reserved for future use)
7
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
8
2. Các kiểu dữ liệu
Hai loại:
9
2.1. Kiểu dữ liệu nguyên thủy
10
a. Số nguyên
11
b. Số thực
12
8/24/2011
3
c. Ký tự
13
d. Giá trị logic
14
2.2. Giá trị hằng (literal)
15
Literals
integer…..7
floating point…7.0f
boolean….true
character….'A'
string….."A"
a. Số nguyên
Hệ cơ số 8 (Octals)
Hệ cơ số 16 (Hexadecimals)
16
b. Số thực
float
double
e (hoặc E):
17
c. boolean, ký tự và xâu ký t
boolean:
Ký tự:
Xâu ký tự:
18
8/24/2011
4
d. Escape sequence
Các ký tự điều khiển nhấn phím
Hiển thị các ký tự đặc biệt trong xâu
19
2.3. Chuyển đổi kiểu dữ liệu (Casting)
hẹp rộng
Rộng hẹp
20
int a, b;
short c;
a = b + c;
int d;
short e;
e = (short)d;
double f;
long g;
f = g;
g = f;
2.4. Khai báo và khởi tạo biến
Các biến đơn (biến không phải là mảng) cần
phải được khởi tạo trước khi sử dụng trong
các biểu thức
21
Chú thích
Java hỗ trợ ba kiểu chú thích
22
Câu lệnh
23
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
24
8/24/2011
5
3. Toán tử (Operators)
Java cung cấp nhiều dạng
toán tử
25
Thứ tự ưu tiên của toán tử
Cho biết toán tử nào thực hiện trước được
xác định bởi các dấu ngoặc đơn hoặc theo
ngầm định
26
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
27
4.1. Lệnh if - else
Cú pháp
28
Ví dụ
class CheckNumber
{
public static void main(String args[])
{
int num =10;
if (num %2 == 0)
System.out.println (num+ “la so chan”);
else
System.out.println (num + “la so le”);
}
}
29
4.2. Lệnh switch - case
30
case a
action(s)
break
default
action(s)
[true]
case b
action(s)
break
case z
action(s)
break
.
.
.
[false]
case a
[true]
[true]
case b
case z
[false
]
[false
]
8/24/2011
6
Ví dụ
31
switch (day) {
case 0:
case 1:
rule = weekend;
break;
case 2:
case 6:
rule = weekday;
break;
default:
rule = error;
}
4.3. Vòng lặp while và do while
32
int x = 2;
while (x < 2) {
x++;
System.out.println(x);
}
int x = 2;
do {
x++;
System.out.println(x);
} while (x < 2);
action state
[true]
[false]
condition
4.4. Vòng lặp for
Ví dụ:
for (int index = 0; index < 10; index++) {
System.out.println(index);
}
33
Ví dụ - vòng lặp for
class ForDemo
{
public static void main(String args[])
{
int i=1, sum=0;
for (i=1;i<=10;i+=2)
sum+=i;
System.out.println (“Sum of first five
old numbers is “ + sum);
}
}
34
Vòng lặp for và while
35
int sum = 0;
for (int index = 1;index <= 10;index++)
{
sum += index;
}
int sum = 0;
int index = 1;
while (index <= 10) {
sum += index;
index++;
}
4.5. Các lệnh thay đổi cấu trúc điều khiển
break
Có hai dạng:
36
8/24/2011
7
4.5. Các lệnh thay đổi cấu trúc điều khiển (2)
continue
37
Ví dụ - break và continue
38
public int myMethod(int x) {
int sum = 0;
outer: for (int i=0; i<x; i++) {
inner: for (int j=i; j<x; j++){
sum++;
if (j==1) continue;
if (j==2) continue outer;
if (i==3) break;
if (j==4) break outer;
}
}
return sum;
}
4.6. Phạm vi biến
39
Nội dung
1. Định danh
2. Các kiểu dữ liệu
3. Toán tử
4. Cấu trúc điều khiển
5. Mảng
40
5. Mảng (array)
Ví dụ:
char c[] = new char[12];
41
reference
Array or Object
variableName
5.1. Khai báo và khởi tạo mảng
Khai báo, khởi tạo giá trị ban đầu:
Nếu không khởi tạo nhận giá trị mặc định
42
8/24/2011
8
43
Tên của mảng (tất
cả các thành phần
trong mảng có
cùng tên, c)
Chỉ số (truy nhập đến
các thành phần của
mảng thông qua chỉ
số)
c[ 0 ]
c[ 1 ]
c[ 2 ]
c[ 3 ]
c[ 4 ]
c[ 5 ]
c[ 6 ]
c[ 7 ]
c[ 8 ]
c[ 9 ]
c[ 10 ]
c[ 11 ]
-45
6
0
72
1543
-89
0
62
-3
1
6453
78
c.lengthc.length: cho biết
độ dài của mảng c
Ví dụ - mảng
5.1. Khai báo và khởi tạo mảng (2)
Ví dụ:
int MAX = 5;
boolean bit[] = new boolean[MAX];
float[] value = new float[2*3];
int[] number = {10, 9, 8, 7, 6};
System.out.println(bit[0]);
System.out.println(value[3]);
System.out.println(number[1]);
44
5.2. Mảng nhiều chiều
Bảng với các dòng và cột
Thường sử dụng mảng hai chiều
45
5.2. Mảng nhiều chiều (2)
46
b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ]
Row 0
Row 1
Row 2
Column 0 Column 1 Column 2 Column 3
Chỉ số hàng
Tên mảng
Chỉ số cột
b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]
b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ]
8/24/2011
1
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
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 03. Đóng gói và xây dựng lớp,
tạo và sử dụng đối tượng
Mục tiêu bài học
Nêu được bản chất, vai trò của trừu tượng hóa
Giải thích về đóng gói và che giấu thông tin
Xây dựng lớp
Định nghĩa lớp, thực hiện ẩn
Tạo các phương thức, các trường/thuộc tính
Tạo và sử dụng đối tượng
Phương thức khởi tạo
Khai báo và khởi tạo đối tượng
Sử dụng đối tượng
2
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và xây dựng lớp
3. Tạo và sử dụng đối tượng
3
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và xây dựng lớp
3. Tạo và sử dụng đối tượng
4
1.1. Trừu tượng hóa
2 loại trừu tượng hóa
1.1. Trừu tượng hóa (2)
Trừu tượng hóa điều khiển
Trừu tượng hóa dữ liệu
8/24/2011
2
1.2. Trừu tượng hóa dữ liệu trong OOP
Đối tượng trong thực tế phức tạp
7
8
1.2. Trừu tượng hóa dữ liệu (3)
Any model that includes the most important,
essential, or distinguishing aspects of
something while suppressing or ignoring less
important, immaterial, or diversionary details.
The result of removing distinctions so as to
emphasize commonalties (Dictionary of
Object Technology, Firesmith, Eykholt,
1995).
9
1.2. Trừu tượng hóa dữ liệu (2)
Tập hợp các thể hiện của
các thực thể thành các nhóm
có chung các thuộc tính
10
11
12
8/24/2011
3
13
1.3. Lớp vs. Đối tượng
14
Biểu diễn lớp trong UML
3 thành phần:
Professor
- name
- employeeID : UniqueId
- hireDate
- status
- discipline
- maxLoad
+ submitFinalGrade()
+ acceptCourseOffering()
+ setMaxLoad()
+ takeSabbatical()
+ teachClass()
Thuộc tính (attribute) là gì?
Student
- name
- address
- studentID
- dateOfBirth
Lớp và đối tượng trong UML
Student
- name
- address
- studentID
- dateOfBirth
:Student
- name = “M. Modano”
- address = “123 Main St.”
- studentID = 9
- dateOfBirth = “03/10/1967”
sv2:Student
- name = “D. Hatcher”
- address = “456 Oak Ln.”
- studentID = 2
- dateOfBirth = “12/11/1969”
Nội dung
1. Trừu trượng hóa dữ liệu
2. Đóng gói và xây dựng lớp
3. Tạo và sử dụng đối tượng
18
| 1/102

Preview text:

8/24/2011 Nội dung
Bộ môn Công nghệ Phần mềm 1.
Lập trình hướng đối tượng Viện CNTT & TT 2.
Công nghệ hướng đối tượng
Trường Đại học Bách Khoa Hà Nội 3. Ngôn ngữ lập trình Java 4. Ví dụ và bài tập
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Bài 01. Tổng quan về OOP 2 Nội dung
1.1. Lịch sử phát triển của các NNLT
1. Lập trình hướng đối tượng
 a. Hợp ngữ (Assembly language): 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 4
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)  b. NNLT cấu trúc/thủ
 c. NNLT hướng đối tượng: tục: 5 6 1 8/24/2011 1.2. Đối tượng là gì?
Đối tượng thế giới thực
 Đối tượng trong 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. 7 8 Đối tượng phần mềm Đối tượng Đối tượng phần mềm
Đối tượng phần mềm Xe Đạp 9 10 Mô hình hóa đối tượng
Tương tác giữa các đối tượng House Tom Car Reality Tree
Object-oriented modeling Model drives House Car lives in Tree Tom 11 12 2 8/24/2011
Gọi hàm vs. Gửi thông điệp
Thông điệp vs. Phương thức  Gọi hàm (Cal function)  Thông điệp  Phương thức  Gửi thông điệp 13 14
Hướng cấu trúc vs. Hướng ĐT? Lớp-Ví dụ Lớp Xe đạp Khai báo cho lớp  Hướng cấu trúc: XeDap Đối tượng của lớp  Hướng đối tượng: XeDap 15 16 Nội dung
2. Công nghệ đối tượng (OT) 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
(Object Technology - A Manager’s Guide, Taylor, 1997) 17 18 3 8/24/2011
2.1. Lịch sử phát triển của OT
2.2. OT được sử dụng ở đâu?
 Các hệ thống Client/Server và phát triển Web Simula C ++ The UML 1967 Late 1980s 1996 1972 1991 2004 Smalltalk Java UML 2 19 20
2.2. OO được sử dụng ở đâu? (2)
2.3. Các nguyên lý cơ bản của OO
 Hệ nhúng (embedded system)
 Hệ thống thời gian thực (real-time) Hướng đối tượng i a ó p 4 ó u g h n a g n cấ rừ ợ ó g u n T h n â tư ó -đ h Đ ô P M 21 22
a. Trừu tượng hóa (Abstraction) b. Đóng gói (Encapsulation) 23
Tăng cường tính mềm dẻo 24 23 2 4 8/24/2011 c. Mô đun hóa (Modularity) d. Phân cấp (Hierarchy) Gia tăng mức độ Tài sản trừu tượng hóa
Tài khoản ngân hàng Chứng khoán Bất động sản Giảm mức độ Tiết kiệm Tiên gửi Cổ phiếu
Các loại giấy tờ có giá trị trừu tượng hóa 25 26 25 2 26 2 Nội dung 3.1. Java là gì? 1.
Lập trình hướng đối tượng
 Java là một ngôn ngữ lập trình HĐT được phát triển bởi Sun Microsystems. 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 Green Team and James Gosling (the leader) 27 28 3.1. Java là gì?
3.2. Các ấn bản của Java
 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ẽ 29 30 5 8/24/2011
Lịch sử phát triển của J2SE
Lịch sử phát triển của J2SE (2)
 JDK 1.1.4 (Sparkler): 12 tháng 9, 1997
 J2SE 1.4.0 (Merlin) 13 tháng 2, 2002
 JDK 1.1.5 (Pumpkin): 3 tháng 12, 1997
 J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
 JDK 1.1.6 (Abigail): 24 tháng 4, 1998
 J2SE 1.4.2 (Mantis) 26 tháng 6, 2003
 JDK 1.1.7 (Brutus): 28 tháng 9, 1998
 J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
 JDK 1.1.8 (Chelsea): 8 tháng 4, 1999
Java SE 6 (Mustang), 11 tháng 12, 2006
 J2SE 1.2 (Playground): 4 tháng 12, 1998
 Các bản cập nhật 2 và 3 được đưa ra vào năm 2007
 J2SE 1.2.1 (none): 30 tháng 3, 1999
 Bản cập nhật 4 đưa ra tháng 1 năm 2008.
 J2SE 1.2.2 (Cricket): 8 tháng 7, 1999
Java SE 7 (Dolphin), 4/2008.
 J2SE 1.3 (Kestrel): 8 tháng 5, 2000
 J2SE 1.3.1 (Ladybird): 17 tháng 5, 2001 31 32
3.2. Nền tảng của Java (Java platform)
3.3. Mô hình dịch của Java
 a. Mô hình biên dịch truyền thống: 33 34
3.3. Mô hình dịch của Java (2)
3.3. Mô hình dịch của Java (3)
 b. Mô hình dịch của Java:
 Máy ảo Java (Java Virtual Machine):
 Máy ảo Java là trái tim của ngôn ngữ Java 35 36 6 8/24/2011
3.4. Các tính năng của Java
3.4. Các tính năng của Java (2)
 Java được thiết kế:  Mạnh mẽ
 Ngôn ngữ lập trình mạnh, đầy đủ tính năng và
thuần hướng đối tượng.  Hướng đối tượng
 Dễ học, cú pháp tương tự như C++  … 37 38
3.4. Các tính năng của Java (3)
3.4. Các tính năng của Java (3)  Đơn giản  Java có 50 từ khóa  Network capable 39 40
3.4. Các tính năng của Java (4)
3.4. Các tính năng của Java (5)  Bảo mật
 Đa luồng (Multi-threaded)  Khả chuyển (Portable) 41 42 7 8/24/2011
3.4. Các tính năng của Java (6)
3.5. Các kiểu chương trình Java
 Các môi trường phát triển  Ứng dụng (Application)  Java Development Kit  Applet
 Integrated Development Environments (IDEs): 43 44
3.5. Các kiểu chương trình Java (2) Nội dung
 Ứng dụng Web (Web application) 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 45 46 Ví dụ 1 - Hel oWorld Ví dụ 1 (tiếp) // HelloWorld.java  Chú thích (Comment)
// Chuong trinh hien thi dong chu “Hello World”
 Java phân biệt chữ hoa chữ thường
public class HelloWorld {
/* Phuong thuc main se duoc goi dau tien
 Từ khóa có sẵn của Java:
trong bat cu ung dung Java nao*/  class: Khai báo lớp
public static void main(String args[]){
 public: Quy định phạm vi truy cập
System.out.println( “Hello World!" );
 Tên lớp chứa hàm main phải trùng với tên
} // ket thuc phuong thuc main file .java.
} // ket thuc lop HelloWorld 47 48 8 8/24/2011
Cài đặt và chạy thử chương trình Java Biến môi trường 
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)
 PATH = …;C:\Program Files\Java\jdk1.6\bin 
Bước 2: Cài trình soạn thảo  CLASSPATH = C:\Program
TextPad/JCreator/NetBean/Eclipse…
Files\Java\jdk1.6\lib;.;C:\Program 
Bước 3: Lập trình/Viết mã nguồn Files\Java\jdk1.6\include  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 49 50 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); } } 51 52
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); } } 53 9 8/24/2011 Mục tiêu bài học
Bộ môn Công nghệ Phần mềm
 Nêu được các quy ước đặt tên trong các chương
trình Java, tạo ra các định danh hợp lệ Viện CNTT & TT
Trường Đại học Bách Khoa Hà Nội
 Mô tả các kiểu dữ liệu cơ bản trong Java và cách sử dụng  Các toán tử
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 Giải thích về phạm vi của biến
Bài 02. Cú pháp Java cơ bản
 Sử dụng các câu lệnh điều khiển, cấu trúc điều
kiện, cấu trúc lặp và rẽ nhánh
 Khai báo, khởi tạo các biến và mảng trong Java 2 Nội dung Nội dung 1. Định danh 1. Định danh 2. Các kiểu dữ liệu 2. Các kiểu dữ liệu 3. Toán tử 3. Toán tử 4. Cấu trúc điều khiển 4. Cấu trúc điều khiển 5. Mảng 5. Mảng 3 4 1. Định danh 1. Định danh (2)  Định danh:
 Quy ước với định danh (naming convention): 5 6 1 8/24/2011 1. Định danh (3) Nội dung  Literals 1. Định danh  Từ khóa (keyword)
2. Các kiểu dữ liệu
 Từ dành riêng (reserved for future use) 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng 7 8 2. Các kiểu dữ liệu
2.1. Kiểu dữ liệu nguyên thủy  Hai loại: 9 10 a. Số nguyên b. Số thực 11 12 2 8/24/2011 c. Ký tự d. Giá trị logic 13 14
2.2. Giá trị hằng (literal) a. Số nguyên  Hệ cơ số 8 (Octals)
 Hệ cơ số 16 (Hexadecimals) Literals integer…………..7 floating point…7.0f boolean……….true character……….'A' string………….."A" 15 16 b. Số thực
c. boolean, ký tự và xâu ký tự  float  boolean:  double  Ký tự:
e (hoặc E):  Xâu ký tự: 17 18 3 8/24/2011 d. Escape sequence
2.3. Chuyển đổi kiểu dữ liệu (Casting)
 Các ký tự điều khiển nhấn phím  hẹp  rộng
 Hiển thị các ký tự đặc biệt trong xâu  Rộng  hẹp double f; int a, b; int d; long g; short c; short e; f = g; a = b + c; e = (short)d; g = f; 19 20
2.4. Khai báo và khởi tạo biến Chú thích
 Các biến đơn (biến không phải là mảng) cần
 Java hỗ trợ ba kiểu chú thích
phải được khởi tạo trước khi sử dụng trong các biểu thức 21 22 Câu lệnh Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng 23 24 4 8/24/2011 3. Toán tử (Operators)
Thứ tự ưu tiên của toán tử
 Java cung cấp nhiều dạng
 Cho biết toán tử nào thực hiện trước – được toán tử
xác định bởi các dấu ngoặc đơn hoặc theo ngầm định 25 26 Nội dung 4.1. Lệnh if - else 1. Định danh  Cú pháp 2. Các kiểu dữ liệu 3. Toán tử
4. Cấu trúc điều khiển 5. Mảng 27 28 Ví dụ 4.2. Lệnh switch - case class CheckNumber { [true] case a
public static void main(String args[]) case a break [false] action(s) { [true] case b int num =10; case b break [false action(s) ] if (num %2 == 0) . .
System.out.println (num+ “la so chan”); . [true] else case z case z break [false action(s) ]
System.out.println (num + “la so le”); default action(s) } } 29 30 5 8/24/2011 Ví dụ
4.3. Vòng lặp while và do while switch (day) { case 0: case 1: rule = “weekend”; action state break; case 2: int x = 2; [true] condition while (x < 2) { x++; case 6: [false] System.out.println(x); rule = “weekday”; } break; default: int x = 2; do { rule = “error”; x++; } System.out.println(x); } while (x < 2); 31 32 4.4. Vòng lặp for Ví dụ - vòng lặp for class ForDemo  Ví dụ: {
 for (int index = 0; index < 10; index++) {
public static void main(String args[]) {  System.out.println(index); int i=1, sum=0;  } for (i=1;i<=10;i+=2) sum+=i;
System.out.println (“Sum of first five
old numbers is “ + sum); } } 33 34 Vòng lặp for và while
4.5. Các lệnh thay đổi cấu trúc điều khiển  break  Có hai dạng: int sum = 0; int sum = 0; int index = 1;
for (int index = 1;index <= 10;index++)
while (index <= 10) { { sum += index; sum += index; index++; } } 35 36 6 8/24/2011
4.5. Các lệnh thay đổi cấu trúc điều khiển (2) Ví dụ - break và continue  continue
public int myMethod(int x) { int sum = 0; outer: for (int i=0; i inner: for (int j=i; j sum++; if (j==1) continue;
if (j==2) continue outer; if (i==3) break; if (j==4) break outer; } } return sum; } 37 38 4.6. Phạm vi biến Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng 39 40 5. Mảng (array)
5.1. Khai báo và khởi tạo mảng  Ví dụ:
 Khai báo, khởi tạo giá trị ban đầu:  char c[] = new char[12];
 Nếu không khởi tạo  nhận giá trị mặc định variableName reference Array or Object 41 42 7 8/24/2011 Ví dụ - mảng
5.1. Khai báo và khởi tạo mảng (2) c[ 0 ] -45 Tên của mảng (tất  Ví dụ: cả các thành phần c[ 1 ] 6 trong mảng có int MAX = 5; cùng tên, c) c[ 2 ] 0
boolean bit[] = new boolean[MAX]; c[ 3 ] 72
float[] value = new float[2*3]; c[ 4 ] 1543 c.l . e l ngth: cho biết
int[] number = {10, 9, 8, 7, 6}; c[ 5 ] -89 độ dài của mảng c
System.out.println(bit[0]); c[ 6 ] 0 c[ 7 ] 62
System.out.println(value[3]); c[ 8 ] -3
System.out.println(number[1]); c[ 9 ] 1 Chỉ số (truy nhập đến các thành phần của c[ 10 ] 6453 mảng thông qua chỉ số) c[ 11 ] 78 43 44 5.2. Mảng nhiều chiều
5.2. Mảng nhiều chiều (2) Column 0 Column 1 Column 2 Column 3
 Bảng với các dòng và cột Row 0
b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]
 Thường sử dụng mảng hai chiều Row 1
b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ] Row 2
b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ] Chỉ số cột Chỉ số hàng Tên mảng 45 46 8 8/24/2011 Mục tiêu bài học
Bộ môn Công nghệ Phần mềm
 Nêu được bản chất, vai trò của trừu tượng hóa Viện CNTT & TT
 Giải thích về đóng gói và che giấu thông tin
Trường Đại học Bách Khoa Hà Nội  Xây dựng lớp
 Định nghĩa lớp, thực hiện ẩn
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 Tạo các phương thức, các trường/thuộc tính
Bài 03. Đóng gói và xây dựng lớp,
 Tạo và sử dụng đối tượng
 Phương thức khởi tạo
tạo và sử dụng đối tượng
 Khai báo và khởi tạo đối tượng
 Sử dụng đối tượng 2 Nội dung Nội dung 1.
Trừu trượng hóa dữ liệu 1.
Trừu trượng hóa dữ liệu 2.
Đóng gói và xây dựng lớp 2.
Đóng gói và xây dựng lớp 3.
Tạo và sử dụng đối tượng 3.
Tạo và sử dụng đối tượng 3 4 1.1. Trừu tượng hóa 1.1. Trừu tượng hóa (2)
 2 loại trừu tượng hóa
 Trừu tượng hóa điều khiển
 Trừu tượng hóa dữ liệu 1 8/24/2011
1.2. Trừu tượng hóa dữ liệu trong OOP
 Đối tượng trong thực tế phức tạp 7 8
1.2. Trừu tượng hóa dữ liệu (3)
1.2. Trừu tượng hóa dữ liệu (2)
 Any model that includes the most important,
 Tập hợp các thể hiện của
essential, or distinguishing aspects of
các thực thể thành các nhóm có chung các thuộc tính
something while suppressing or ignoring less
important, immaterial, or diversionary details.
The result of removing distinctions so as to
emphasize commonalties (Dictionary of
Object Technology
, Firesmith, Eykholt, 1995). 9 10 11 12 2 8/24/2011 1.3. Lớp vs. Đối tượng 13 14 Biểu diễn lớp trong UML
Thuộc tính (attribute) là gì?  3 thành phần: Professor - name - employeeID : UniqueId - hireDate - status - discipline - maxLoad Student + submitFinalGrade() - name + acceptCourseOffering() + setMaxLoad() - address + takeSabbatical() - studentID + teachClass() - dateOfBirth
Lớp và đối tượng trong UML Nội dung :Student 1.
Trừu trượng hóa dữ liệu - name = “M. Modano” - address = “123 Main St.” Student 2.
Đóng gói và xây dựng lớp - studentID = 9 - name
- dateOfBirth = “03/10/1967” - address 3.
Tạo và sử dụng đối tượng - studentID - dateOfBirth sv2:Student - name = “D. Hatcher” - address = “456 Oak Ln.” - studentID = 2
- dateOfBirth = “12/11/1969” 18 3