9/18/17
Lập trình Ứng dụng quản lý 1
Chương 03:
Đối tượng và lớp đối tượng
GV. Trương Phước Lộc
08/2017
Khoa CNTT-ĐH.KHTN
Nội dung
1.
2.
3.
4.
5.
6.
7.
Khái niệm đối tượng
Khái niệm lớp đối tượng
Ngôn ngữ C#
Con trỏ this
Chia sẻ dữ liệu & Phạm vi hoạt động
Hàm khởi tạo
Bài tập
GV. Trương Phước Lộc
2
1
9/18/17
Khoa CNTT-ĐH.KHTN
1. Phương pháp lập trình hướng đối tượng
• Phương pháp lập trình hướng đối tượng bao
bọc (encapsulate) dữ liệu (thuộc tính - attribute)
và các chức năng (phương thức – behavior) vào
bên trong lớp (class)
Data
Khoa CNTT-ĐH.KHTN
1. Đối tượng
• Chúng ta thấy các đối tượng xung quanh
như người, đồ vật,…
• Mỗi đối tượng có
▫ Các thuộc tính (thơng tin về nó)
▫ Các phương thức (các hành động nó có thể
thực hiện)
• Các đối tượng có thể tác động qua lại bằng
cách tạo, thay đổi, sử dụng các đối tượng
khác
2
9/18/17
Khoa CNTT-ĐH.KHTN
1. Đối tượng
• Cấu trúc đối tượng:
Hộp đen: thuộc tính trong, phương thức ngồi.
Bốn nhóm phương thức:
Nhóm tạo hủy.
Nhóm truy xuất thơng tin.
Nhóm xử lý nghiệp vụ.
Nhóm tốn tử.
Data
Khoa CNTT-ĐH.KHTN
1. Đối tượng
• Vì sao là hướng đối tượng?
Hướng thủ tục (procedural oriented).
Lấy hành động làm trung tâm.
Hàm là xương sống.
- Lặt (Rau)
- Luộc (Rau)
- Nấu (Cơm)
- Ướp (Cá)
- Kho (Cá)
Hướng đối tượng (object oriented).
Lấy dữ liệu làm trung tâm.
Đối tượng là xương sống.
- Rau.Lặt
- Rau.Luộc
- Cơm.Nấu
- Cá.Ướp
- Cá.Kho
Các bước nấu ăn
Verb
Object
Lặt
Rau
Ướp
Cá
Nấu
Cơm
Luộc
Rau
Kho
Cá
Thay đổi
tư duy
lập trình!!
3
9/18/17
Khoa CNTT-ĐH.KHTN
2. Lớp đối tượng
• Khái niệm lớp:
Tập hợp đối tượng có cùng
thuộc tính và phương thức
Person1:
Name: Peter.
Age: 25.
Hair Color: Brown.
Eye Color: Brown.
Job: Worker.
Human:
Name.
Age.
Hair Color.
Eye Color.
Job.
Person2:
Name: Thomas.
Age: 50.
Hair Color: White.
Eye Color: Blue.
Job: Teacher.
Bản mô tả đối tượng
Kiểu của đối tượng
Khoa CNTT-ĐH.KHTN
2. Lớp đối tượng
• Lớp (class) là một khn mẫu (template) của
một thực thể (entity) dùng để tạo ra các đối
tượng (object)
Data
8
4
9/18/17
Khoa CNTT-ĐH.KHTN
3. Khai báo lớp trong C#
Khoa CNTT-ĐH.KHTN
3. Khai báo đối tượng trong C#
5
9/18/17
Khoa CNTT-ĐH.KHTN
4. Con trỏ this
• Con trỏ this được sử dụng duy nhất trong phạm vi nội tại
của lớp (class)
• Miền giá trị của con trỏ this là địa chỉ của chính đối
tượng đang gọi thực hiện.
Khoa CNTT-ĐH.KHTN
4. Con trỏ this
This được sử dụng
để gọi thuộc tính
bên trong lớp
6
9/18/17
Khoa CNTT-ĐH.KHTN
4. Con trỏ this
This được sử dụng
để gọi phương
thức bên trong lớp
Khoa CNTT-ĐH.KHTN
4. VD1: Điểm Oxy
• Dữ liệu: x, y kiểu số thực
• Phương thức: nhập, xuất, khoảng cách 2 điểm
GV. Trương Phước Lộc
14
7
9/18/17
Khoa CNTT-ĐH.KHTN
4. VD2: Điểm trong Oxyz
• Dữ liêu: x, y, z kiểu số thực
• Phương thức: nhập, xuất, khoảng cách 2 điểm
GV. Trương Phước Lộc
15
Khoa CNTT-ĐH.KHTN
4. VD3: Phân số
• Dữ liệu: tử số, mẫu số kiểu số nguyên
• Phương thức: nhập, xuất
GV. Trương Phước Lộc
16
8
9/18/17
Khoa CNTT-ĐH.KHTN
4. VD4: Đơn thức
• Ví dụ đơn thức: 2x^3, x, x^5
• Dữ liệu: hệ số và số mũ kiểu số ngun
• Phương thức: nhập, xuất, tính giá trị
GV. Trương Phước Lộc
17
Khoa CNTT-ĐH.KHTN
4. VD5: một số ví dụ thực tế
• Moodle
• Facebook
• StackOverflow
• Dữ liệu: theo thực tế
• Phương thức: nhập, xuất
GV. Trương Phước Lộc
18
9
9/18/17
Khoa CNTT-ĐH.KHTN
4. VD6: TamGiac
• Dữ liệu: có 3 đỉnh kiểu DiemOxy
• Phương thức: nhập, xuất, chu vi, trọng tâm
GV. Trương Phước Lộc
19
Khoa CNTT-ĐH.KHTN
4. VD7: Danh sách số nguyên
• Dữ liệu: mảng số nguyên
• Phương thức: nhập, xuất, thêm tại i, xoá tại i,
sửa tại i
GV. Trương Phước Lộc
20
10
9/18/17
Khoa CNTT-ĐH.KHTN
4. VD8: Danh sách phân số
• Dữ liệu: mảng phân số
• Phương thức: nhập, xuất, thêm tại i, xố tại i,
sửa tại i
GV. Trương Phước Lộc
21
Khoa CNTT-ĐH.KHTN
5. Phạm vi hoạt động
• Có 3 phạm vi hoạt động cơ bản sau
▫ private
▫ protected
▫ public
22
11
9/18/17
Khoa CNTT-ĐH.KHTN
5. Phạm vi hoạt động
• Các thuộc tính và phương thức được khai báo
với phạm vi là Private thì chỉ được sử dụng nội
tại bên trong lớp.
• Các thuộc tính và phương thức được khai báo
với phạm vi là Protected thì chỉ được sử dụng
nội tại bên trong lớp và các lớp được dẫn xuất
từ lớp đó.
• Các thuộc tính và phương thức được khai báo
với phạm vi là Public thì được sử dụng cả bên
trong và bên ngồi lớp.
Khoa CNTT-ĐH.KHTN
5. Phạm vi hoạt động
• Phạm vi hoạt động càng hẹp, truy xuất càng hạn
chế.
• Phân loại phạm vi hoạt động
Phạm vi
Tầm ảnh hưởng
Phạm vi hoạt động
private
Hẹp
Bên trong lớp.
public
Rộng
Bên trong lẫn bên ngoài lớp.
protected
Vừa
Bên trong lớp và lớp kế thừa.
12
9/18/17
Khoa CNTT-ĐH.KHTN
5. Phạm vi hoạt động
• Dr. Guru khuyên:
▫ Các thành phần trong lớp nên có phạm vi hoạt
động như sau:
Thuộc tính có phạm vi private để hạn chế truy
xuất.
Phương thức có phạm vi public để cung cấp tính
năng.
Khoa CNTT-ĐH.KHTN
5. Chia sẻ dữ liệu
• Phương thức get/set của dữ liệu
• Properties trong ngơn ngữ C#
GV. Trương Phước Lộc
26
13
9/18/17
Khoa CNTT-ĐH.KHTN
5. Khoảng cách giữa 2 điểm
GV. Trương Phước Lộc
27
Khoa CNTT-ĐH.KHTN
5. Trung điểm của 2 điểm
GV. Trương Phước Lộc
28
14
9/18/17
Khoa CNTT-ĐH.KHTN
5. Trọng tâm của tam giác
GV. Trương Phước Lộc
29
Khoa CNTT-ĐH.KHTN
6. Hàm khởi tạo
• Mặc định
• Có tham số
• Sao chép
GV. Trương Phước Lộc
30
15
9/18/17
Khoa CNTT-ĐH.KHTN
6. Hàm khởi tạo
•
•
•
•
•
•
Điểm
Đơn thức
Tam giác
Danh sách số nguyên
Đa thức
Đa giác
GV. Trương Phước Lộc
31
Khoa CNTT-ĐH.KHTN
Bài tập
•
•
•
•
•
•
•
BT1: Xây dựng lại bài tập Điểm vừa minh họa ở trên
BT2: Tính khoảng cách 2 điểm, trung điểm trong OXYZ
BT3: Tính cộng, trừ, nhân, chia 2 phân số
BT4: Tính cộng trừ, nhân, chia 2 số phức
BT5: Học sinh (Tên, email, điểm)
BT6: Nhân viên (Tên, địa chỉ, ngày bắt đầu, hệ số)
BT7: Danh sách số ngun: nhập, xuất, tính tổng, tính
tích
• BT8: Danh sách phân số: nhập, xuất, tính tổng, tính tích
• BT9: Tính chu vi, diện tích của tam giác.
• BT10: Tính chu vi của đa giác
Tất cả các lớp đều phải xây dựng 3 hàm khởi tạo
16
9/18/17
Khoa CNTT-ĐH.KHTN
Tham khảo
• Bài giảng phương pháp lập trình HDT:
▫
▫
▫
▫
Thầy Nguyễn Tiến Huy:
Thầy Đinh Bá Tiến :
Thầy Nguyễn Minh Huy:
Thầy Nguyễn Hoàng Anh:
Khoa CNTT-ĐH.KHTN
Câu hỏi
GV. Trương Phước Lộc
34
17