VIỆN ĐẠI HỌC MỞ HÀ NỘI
HA NOI OPEN UNIVERSITY
Bài giảng Kỹ thuật lập trình hướng đối tượng
1
Chương 3
LẬP TRÌNH LỚP VÀ ĐỐI TƯỢNG
18/10/2013
Mục tiêu và yêu cầu
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
2
• Cung cấp các khái niệm, kỹ thuật xây dựng lớp (class)
trong lập trình hướng đối tượng.
Mục tiêu
• Nắm được khai báo và định nghĩa lớp, khai báo các
biến, mảng đối tượng (kiểu lớp), các kỹ thuật lập trình
xử lý trong lớp đối tượng, phương thức, dùng con trỏ
this trong phương thức, phạm vi truy xuất của các
thành phần.
Yêu cầu
Tài liệu tham khảo
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
3
Chương 3: Giáo trình Kỹ thuật lập trình hướng đối tượng –
Khoa CNTT – Viện Đại học Mở Hà Nội.
Lập trình Hướng đối tượng với Java, Đoàn Văn Ban, NXB
Khoa học kỹ thuật, 2003.
Nội dung bài học
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
4
• Khai báo và định nghĩa lớp.
• Khai báo các biến, mảng đối tượng (kiểu lớp).
• Các kỹ thuật lập trình xử lý trong lớp đối tượng, phương thức.
• Con trỏ this trong phương thức.
• Phạm vi truy xuất của các thành phần.
Khái niệm
3.1. Phân tích đối tượng và thiết kế lớp
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
5
Lớp và đối tượng
• Lớp là tập hợp các đối tượng có cùng bản chất.
• Lớp như một khuôn mẫu (template) của đối tượng (Object).
• Lớp là trừu tượng, đối tượng là thực thể xác định.
Lớp(class)
Đối tượng 1 Đối tượng 2 Đối tượng k
Lớp (class) và đối tượng (object)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
6
Ví dụ:
class object
sinh viên Nguyễn Văn A
Trần Văn B
Ô tô xe tải
xe con
3.1.1. Phân tích đối tượng
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
7
Phân tích và phát triển một hệ thống phần mềm hướng đối
tượng:
• Phân tích yêu cầu (Requirement analysis)
• Phân tích hệ thống (System analysis)
• Thiết kế hệ thống (System design)
• Lập trình (Programming)
• Kiểm tra (Testing)
3.1.1. Phân tích đối tượng (tiếp)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
8
Mô hình hóa đối tượng phần mềm:
Đối tượng
Thuộc tính
Hành động
Xe máy
Nhãn hiệu
Màu sắc
Nước sản xuất
Dung tích xi lanh
Năm sản xuất
Giá thành
Khởi động
Di chuyển
Chuyển số
Phanh
Nhập thông tin
Sửa màu sắc
Sửa giá thành
3.1.2. Phân tích tương tác
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
9
- Gửi/nhận thông điệp giữa các đối tượng.
- Thông điệp có thể chỉ là yêu cầu đơn giản (hàm không tham số)
hoặc phức tạp (hàm có tham số - parameters)
Giá?
Khách
hàng
400
Xe
máy
3.1.3. Thiết kế lớp
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
10
- Thiết kế lớp => thiết kế mẫu => tạo ra các đối tượng có cùng
bản chất (cùng thuộc tính và phương thức).
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
11
- Trong java, một lớp được định nghĩa theo cú pháp:
[public] [final] [abstract] class <tên_lớp>
{
// khai báo các thuộc tính của lớp
kiểu_dữ_liệu <tên_biến>;
// khai báo các phương thức của lớp
kiểu_dữ_liệu <tên_hàm(kiểu_dữ_liệu tên_biến_tham_số)>
{
//Các lệnh trong thân phương thức.
}
}
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
12
- Trong đó:
• public: xác định gói (package) khác có thể sử dụng được
lớp này.
• abstract: Lớp trừu tượng
• final: Lớp hằng – không thể kế thừa
• extends: Lớp này được kế thừa từ lớp khác
• implements: tạo giao diện (kế thừa bội)
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
13
- Ví dụ:
public class SINHVIEN
{ String masv,hoten;
Calendar Ngaysinh;
Boolean gt;
public void nhap()
{ //Các lệnh nhập thông tin sinh viên
}
public int tuoi()
{ //Các lệnh tính và trả về tuổi của sinh viên
}
}
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
14
Khai báo thuộc tính:
public class <Tên_lớp>
{
[Phạm_vi] <kiểu_dữ_liệu> <tên_biến>;
}
- Thuộc tính của lớp là một biến có kiểu dữ liệu bất kỳ, nó có
thể lại là một biến có kiểu là chính lớp đó.
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
15
Phạm vi:
• private: Các thành phần private chỉ có thể được truy nhập từ
bên trong thân các phương thức của lớp đó.
• protected: Các thành phần protected cũng giống với private
nhưng có thể truy nhập từ bất cứ lớp con nào kế thừa từ nó.
• public: Các thành phần public có thể được truy nhập từ bên
trong lẫn bên ngoài lớp.
*) Mặc định (không sử dụng các từ khóa trên): sự truy nhập là
bạn bè, tức là thành phần này có thể được truy nhập từ bất cứ
lớp nào trong cùng gói với lớp đó.
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
16
mô hình cơ chế phạm vi:
Lớp A
Tệp chương trình (*.java)
private
protected
public
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
17
mô hình cơ chế phạm vi:
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
18
Khai báo phương thức:
public class <Tên_lớp>
{
[<Phạm vi>]<Kiểu trả về> <Tên hàm >
([<DS tham biến>]) [<Mệnh đề throws>]
{
//Các lệnh trong thân phương thức
}
}
3.2. Cài đặt lớp (class)
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
19
Khai báo phương thức:
<Kiểu trả về> có thể là kiểu nguyên thủy, kiểu lớp hoặc
không có giá trị trả lại (kiểu void).
<DS tham biến> bao gồm dãy các tham biến (kiểu và tên)
phân cách với nhau bởi dấu phẩy.
<Phạm vi> chỉ tính chất của phương thức, có thể có các từ
khóa thể hiện như sau: public, protected, private, mặc định
(không chỉ rõ tính chất nào), static, abstract, final, native,
synchoronized.
<Mệnh đề throws>: là một đối tượng đặc biệt được tạo ra khi
chương trình gặp lỗi.
Một số chú ý
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
20
Nếu trong lớp có ít nhất một phương thức trừu tượng thì lớp đó
phải là lớp trừu tượng.
Không có thuộc tính trừu tượng.
Ta không thể tạo đối tượng của lớp trừu tượng.
Phải khai báo giá trị trả về cho phương thức, nếu phương thức
không trả về dữ liệu thì dùng từ khóa void.
3.3. Khai báo và sử dụng đối tượng
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
21
Khai báo đối tượng:
- Sau khi định nghĩa một lớp ta có thể xem lớp như là một
kiểu dữ liệu, vì vậy ta có thể khai báo và tạo các biến, mảng
đối tượng:
<Tên lớp> <Tên biến đối tượng>;
<Tên lớp> [] <Tên biến mảng>;
Ví dụ:
SINHVIEN a;
SINHVIEN [] b;
3.3. Khai báo và sử dụng đối tượng
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
22
Sử dụng đối tượng:
- Tạo đối tượng:
<Tên biến đối tượng> = new <Tên lớp>();
<Tên mảng đối tượng> = new <Tên lớp>[số lượng phần tử];
Ví dụ:
a = new SINHVIEN;
b = new SINHVIEN[10];
3.3. Khai báo và sử dụng đối tượng
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
23
Truy xuất đến các thành phần của đối tượng:
<biến_đối_tượng>.<tên_thuộc_tính>
<biến đối tượng>.tên_phương_thức ([danh sách đối số]);
- Với mảng đối tượng, sau khi tạo mảng ta cần thêm bước tạo
các phần tử của mảng đó:
int i,n;
b = new SINHVIEN[n];
for(i=0;i<n;i++)
b[i]= new SINHVIEN();
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
24
Ví dụ 01:
Xây dựng lớp hình tròn (HINHTRON) với:
• Thuộc tính: bán kính
• Phương thức: nhập, tính chu vi, diện tích
Tạo một đối tượng hình tròn, gọi phương thức nhập hình tròn
và hiện chu vi, diện tích của hình tròn.
Các ví dụ
18/10/2013
Bài giảng Kỹ thuật lập trình hướng đối tượng
25
Ví dụ 02:
Xây dựng lớp sinh viên (SINHVIEN) với các thành phần sau:
• Thuộc tính: mã sinh viên, họ tên, ngày sinh, giới tính.
• Phương thức: Nhập, hiện.
Sử dụng lớp trên:
• Tạo và nhập một đối tượng sinh viên.
• Hiện thông tin sinh viên.
Các ví dụ