Tải bản đầy đủ (.pdf) (19 trang)

Bài giảng lập trình hướng đối tượng chương 4 nguyễn minh thành

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (281.37 KB, 19 trang )

1

Sự Đóng Gói
Môn Lập Trình Hướng Đối Tượng – Chương 4
Nguyễn Minh Thành
[Mail] :


2

Nhắc Lại
 Lập trình hướng đối tượng là phương pháp lập
trình dựa trên kiến trúc lớp (class) và đối
tượng (object).
 Chương trình là một hệ thống các đối tượng. Xây
dựng một chương trình là định nghĩa các lớp đối
tượng, sau đó khai báo các đối tượng và tổ
chức để các đối tượng thực thi nhiệm vụ của
mình.


3

Nội Dung
1. Khái niệm về Tính Đóng Gói
2. Phạm vi truy xuất trên Lớp
3. Thiết kế thuộc tính cho Lớp


4


1. Khái niệm
 Sự đóng gói là cơ chế ràng buộc dữ liệu và thao
tác trên dữ liệu để thành một thể thống nhất,
tránh được các tác động bất ngờ từ bên ngoài.
Thể thống nhất này gọi là đối tượng.


5

Khái niệm (tt)
class <Tên lớp>
{
<từ khóa truy xuất> thuộc tính;
<từ khóa truy xuất> phương thức();
}
• Chỉ có các phương thức nằm trong class mới được
quyền truy cập thuộc tính (hay dữ liệu).
• Thuộc tính (hay dữ liệu) mà phương thức truy cập
sẽ tương ứng với đối tượng được tạo từ class đó.


6

Ví dụ : lập trình thủ tục
• Nhập vào 2 sinh viên với các thông tin như sau :
họ tên, năm sinh, giới tính và xuất ra màn hình.
• Giải quyết :
▫ Tạo 6 biến cho 2 sinh viên
▫ Viết 2 hàm nhập và xuất với tham số truyền vào
là thông tin về sinh viên cần xuất



7

Ví dụ : lập trình thủ tục (tt)
void NhapSinhVien(out string ht,out int ns,out string gt)
{
Console.Write("Nhap ho ten :");
ht = Console.ReadLine();
Console.Write("Nhap nam sinh :");
ns = int.Parse(Console.ReadLine());
Console.Write("Nhap gioi tinh :");
gt = Console.ReadLine();
}
void XuatSinhVien(string ht, int ns, string gt)
{
Console.WriteLine("Sinh vien : {0}, sinh nam {1},
phai {2}",ht,ns,gt);
}


8

Ví dụ : lập trình thủ tục (tt)
void main()
{
string hoten1, hoten2;
int namsinh1, namsinh2;
string gioitinh1, gioitinh2;
NhapSinhVien(out hoten1,out namsinh1, out gioitinh1);

NhapSinhVien(out hoten2,out namsinh2, out gioitinh2);
XuatSinhVien(hoten1,namsinh1,gioitinh1);
XuatSinhVien(hoten2,namsinh2,gioitinh2);
}


9

Ví dụ : lập trình hướng đối tượng
• Giải quyết :
▫ Định nghĩa một class SinhVien chứa các thông
tin và hành động nhập xuất tương ứng.
▫ Tạo 2 đối tượng sinh viên từ class SinhVien và
gọi hành động nhập của đối tượng cụ thể.


10

Ví dụ : lập trình hướng đối tượng
class HOCSINH
{
private string hoten, gioitinh;
private int namsinh;
public void Nhap()
{
Console.Write("Nhap ho ten :");
hoten = Console.ReadLine();
Console.Write("Nhap nam sinh :");
namssinh = int.Parse(Console.ReadLine());
Console.Write("Nhap gioi tinh :");

gioitinh = Console.ReadLine();
}
public void Xuat()
{
Console.WriteLine("Sinh vien : {0}, sinh nam {1}, phai
{2}",hoten,namsinh,gioitinh);
}
}


11

Ví dụ : lập trình hướng đối tượng
void main()
{
SinhVien sv1 = new SinhVien();
SinhVien sv2 = new SinhVien();
sv1.Nhap();
sv2.Nhap();
sv1.Xuat();
sv2.Xuat();
}
 Nhận xét
 sv1 và sv2 là 2 đối tượng thuộc class SinhVien, nên sv1, sv2 sẽ có
các dữ liệu : hoten, namsinh, gioitinh và 2 phương thức nhập, xuất
riêng.
 Khi ta gọi s1.Nhap(), phương thức Nhap của sv1 được gọi và sẽ
thao tác lên chính dữ liệu của sv1, không ảnh hưởng đến sv2
 Đó là tính đóng gói



12

2. Phạm vi truy xuất
• Các từ khoá truy xuất :
▫ private (mặc định): Chỉ được truy xuất trong nội bộ lớp (thuộc
tính thường sử dụng).

▫ protected: Truy xuất trong nội bộ lớp hoặc trong các lớp
con, được sử dụng cho lớp cơ sở (lớp cha)
▫ public: Truy xuất mọi nơi (phương thức thường sử
dụng).
▫ static : truy xuất không cần khởi tạo đối tượng của lớp.


13

Phạm vi truy xuất (tt)
• Ví dụ :
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………


14

3. Thiết kế thuộc tính
Chọn kiểu thích hợp biểu diễn của thuộc tính của lớp.
Lập bảng như sau:
STT

Thuộc tính Kiểu/ lớp

Ràng buộc

Ghi chú

Ví dụ 1: Xét lớp điểm ký tự trên cửa sổ Console
STT

Thuộc
tính

Kiểu/ lớp

Ràng buộc

Ghi chú

1


x

Số nguyên

0 ≤ x < Kích thước
ngang

Hoành độ

2

y

Số nguyên

0 ≤ y < Kích thước dọc

Tung độ

3

c

Ký tự

Ký tự


15


Thiết kế thuộc tính
Ví dụ 2: Xét lớp hình chữ nhật trên cửa sổ Console
• Cách 1:
STT

Thuộc tính

Kiểu/ lớp

Ràng buộc

Ghi chú

1

Goc

CDIEM

2

m

Số
nguyên

m>0 và m+hoành độ
góc

Chiều
ngang

3

n

Số
nguyên

n>0 và n+tung độ góc thước dọc

Chiều đứng

Toạ độ góc

• Cách 2:
STT

Thuộc tính Kiểu/ lớp

Ràng buộc

Ghi chú

1

M1


CDIEM

H/độ M1< H/độ M2

Góc trên bên trái

2

M2

CDIEM

T/độ M1 < T/độ M2

Góc dưới bên phải


16

Thiết kế thuộc tính
Ví dụ 2: Xét lớp hình chữ nhật trên cửa sổ Console
• Cách 3:
STT

Thuộc
tính

Kiểu/ lớp

Ràng buộc


Ghi chú

1

x

Số nguyên

0≤xngang

thước Hoành độ

2

y

Số nguyên

0≤ ydọc

Tung độ

3

m

Số nguyên


m>0 và m+xthước ngang

Chiều ngang

4

n

Số nguyên

n>0 và n+ythước dọc

Chiều đứng


17

Bài tập
• Thiết kế thuộc tính các lớp sau
▫ Lớp CPHANSO
▫ Lớp CDATHUC (Đa thức 1 ẩn)
Pn(x) = a0 + a1x + a2x2+ a3x3 + ... + anxn
▫ Lớp CDUONG (Đường thẳng trong mặt phẳng)


18


FAQs


19

Hết chương 4
Môn Lập Trình Hướng Đối Tượng



×