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

Bài giảng Lập trình nâng cao: Bài 3 - Lý Anh Tuấn

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 (641.48 KB, 48 trang )

Object-Oriented Programming Using C#

NGÔN NGỮ LẬP TRÌNH NÂNG CAO

Ver. 1.0

Slide 1 of 25


Object-Oriented Programming Using C#
Nội dung

Khái niệm về lớp và đối tượng
Thiết kế các thuộc tính và hành động của
lớp
Cài đặt các phương thức
-

Ver. 1.0

Truy xuất và cập nhật dữ liệu (get-set)
Nạp chồng phương thức (overload)
Hàm tạo (constructor)
Nạp chồng toán tử (operator)
Ghi đè phương thức có sẵn (override)

Slide 2 of 25


Object-Oriented Programming Using C#
Khái niệm



• Lớp đối tượng: Định nghĩa các đặc điểm/thông
tin (thuộc tính) và hành động/chức năng
(phương thức) chung cho tất cả các đối tượng
của cùng một loại
• Đối tượng: Thể hiện (instance) cụ thể của một
lớp đối tượng

Ver. 1.0

Slide 3 of 25


Object-Oriented Programming Using C#
Khái niệm

VD: Lớp SINHVIEN gồm
• Thuộc tính: Họ tên, giới tính, ngày tháng năm
sinh, điểm tb, đối tượng ưu tiên, ...
• Phương thức: Học bài, làm bài thi, bài tập, ...

Sinh viên Nguyễn Văn A, Lê Thị B là đối tượng
thuộc lớp SINHVIEN

Ver. 1.0

Slide 4 of 25


Object-Oriented Programming Using C#

Đối tượng trong lập trình hướng đối tượng

Tách biệt giữa giao tiếp và cài đặt cụ thể

Làm cái gì?

Làm bằng cách
nào?

Ver. 1.0

interface

Implementation

Slide 5 of 25


Object-Oriented Programming Using C#
Một cách thể hiện điển hình

Che giấu dữ liệu và các “giải thuật” cụ thể ở bên
trong lớp (class)

Ver. 1.0

Slide 6 of 25


Object-Oriented Programming Using C#

Cú pháp định nghĩa lớp

<từ khóa truy xuất> class <TênLớp>
{
<từ khóa truy xuất> các thuộc tính;
<từ khóa truy xuất> phương thức ()
{
Cài đặt

}
}
Ver. 1.0

Slide 7 of 25


Object-Oriented Programming Using C#
Từ khóa truy xuất

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

Ver. 1.0


Slide 8 of 25


Object-Oriented Programming Using C#
VD: Định nghĩa lớp CHocSinh

public class CHocSinh
{
private string hoten;
private int toan, van;
private float dtb;
public void Nhap()
{}
public void Xuat()
{}
}

Ver. 1.0

Slide 9 of 25


Object-Oriented Programming Using C#
Tạo và sử dụng đối tượng

 Tạo đối tượng
<TênLớp> TênĐốiTượng = new <TênLớp>();
VD: HOCSINH hsA = new HOCSINH();
 Sử dụng đối tượng
TênĐốiTượng.TênPhươngThức([tham số]);

VD:

Ver. 1.0

hsA.Nhap();
hsA.Xuat();
Slide 10 of 25


Object-Oriented Programming Using C#
Ví dụ
Nhập họ tên, điểm văn và điểm toán của 1 học sinh. Tính điểm TB và in kết quả:
public class HOCSINH
{
private string hoten;
private int toan, van;
private float dtb;
public void Nhap()
{
Console.Write("Nhap ho ten: "); hoten = Console.ReadLine();
Console.Write("Nhap diem van: "); van = int.Parse(Console.ReadLine());
Console.Write("Nhap diem toan: "); toan = int.Parse(Console.ReadLine());
dtb = (float)(toan + van) / 2;
}
public void Xuat()
{
Console.WriteLine("Diem trung binh: {0:0.00}", dtb);
}
} Ver. 1.0
Slide 11 of 25



Object-Oriented Programming Using C#
Ví dụ
class Program
{
static void Main(string[] args)
{
HOCSINH hsA = new HOCSINH();
hsA.Nhap();
hsA.Xuat();
}
}
Kết quả:

Ver. 1.0

Slide 12 of 25


Object-Oriented Programming Using C#
Ràng buộc

Ràng buộc trên lớp là các quy định, quy tắc áp đặt trên
các giá trị thuộc tính của đối tượng trong lớp, sao cho
đối tượng này thể hiện đúng với thực tế.
 Ràng buộc tĩnh: ràng buộc trên giá trị thuộc tính.
 Ràng buộc động: ràng buộc trên biến đổi giá trị thuộc
tính.
VD:

 “Lương của nhân viên ít nhất là 1.500.000 đồng” 
Ràng buộc tĩnh.
 “Lương của nhân viên chỉ có thể tăng”  Ràng buộc
động.
Ver. 1.0

Slide 13 of 25


Object-Oriented Programming Using C#
Ràng buộc tĩnh

Gồm 2 loại:
 Ràng buộc trên thuộc tính (Ràng buộc miền giá trị)
 Ràng buộc liên thuộc tính
VD:
 Điểm toán của sinh viên phải nằm trong miền giá trị từ
0 đến 10: 0 ≤ toan ≤ 10  Ràng buộc trên thuộc tính
 Nếu là tháng 2 và là năm nhuận thì tháng có 29 ngày,
nếu là tháng 2 và không phải năm nhuận thì tháng có
28 ngày  Ràng buộc liên thuộc tính

Ver. 1.0

Slide 14 of 25


Object-Oriented Programming Using C#
Các hành động của lớp


1. Nhóm kiểm tra ràng buộc: Kiểm tra tính hợp lệ giá
trị thuộc tính của đối tượng
2. Nhóm khởi tạo: Cung cấp giá trị ban đầu cho đối
tượng
3. Nhóm cập nhật: Thay đổi giá trị thuộc tính của đối
tượng
4. Nhóm xử lý tính toán: Xử lý tính toán các yêu cầu từ
thông tin của đối tượng
5. Nhóm cung cấp thông tin: Cung cấp thuộc tính nội
bộ của đối tượng

Ver. 1.0

Slide 15 of 25


Object-Oriented Programming Using C#
Các hành động của lớp

2. Khởi tạo
1. Kiểm tra ràng buộc
3. Cập nhật
4. Xử lý, tính toán
5. Cung cấp thông tin

Ver. 1.0

Slide 16 of 25



Object-Oriented Programming Using C#
Thiết kế phương thức ràng buộc

Mẫu: public bool KiemTra... ( tham số )

• Giá trị trả về
– true: Thoả ràng buộc.
– false: Không thoả ràng buộc.

• Tham số
– Ràng buộc miền giá trị: Chỉ có 1 tham số ứng với
tham số cần kiểm tra.
– Ràng buộc liên thuộc tính: Có tham số là các thuộc
tính liên quan.

Ver. 1.0

Slide 17 of 25


Object-Oriented Programming Using C#
Thiết kế phương thức ràng buộc

• Tên phương thức
Bắt đầu bằng chữ KiemTra
– Ràng buộc miền giá trị: Ghép thêm tên thuộc tính
– Ràng buộc liên thuộc tính: Ghép thêm số thứ tự
ràng buộc

Ver. 1.0


Slide 18 of 25


Object-Oriented Programming Using C#
VD: Phương thức kiểm tra ràng buộc cho lớp CHocSinh

public class CHocSinh
{
private string hoten;
private int toan, van;
private float dtb;
public bool KiemTraDiem (int d);
public void Nhap()
{}
public void Xuat()
{}
}
Ver. 1.0

Slide 19 of 25


Object-Oriented Programming Using C#
Cài đặt phương thức khởi tạo và cập nhật

• Các phương thức thuộc nhóm khởi tạo và cập
nhật có liên quan đến ràng buộc phải được bổ
sung thêm kiểm tra ràng buộc
• Kiểm tra tham số thỏa hoặc không thỏa ràng

buộc bằng cách gọi phương thức kiểm tra
ràng buộc tương ứng

Ver. 1.0

Slide 20 of 25


Object-Oriented Programming Using C#
public bool Tên hàm ( Tham số )
{
//Trả về true: thực hiện được
//Trả về false: không thực hiện được
bool kq = false;
if(Tham số thoả ràng buộc)
{
gán giá trị tương ứng cho thuộc tính của lớp
kq=true;
}
return kq;
}
Ver. 1.0

Slide 21 of 25


Object-Oriented Programming Using C#
hoặc
public bool Tên hàm ( Tham số )
{

//Trả về true: thực hiện được, false: không thực hiện
được
if(Tham số không thoả ràng buộc)
return false;
gán giá trị tương ứng cho thuộc tính của lớp
return true;
}

Ver. 1.0

Slide 22 of 25


Object-Oriented Programming Using C#
public bool CapNhatToan(int dt)
{
bool kq=false;
if(KiemTraDiem(dt)){
toan=dt;
return true;
}
return kq;
}
public bool CapNhatVan(int dv)
{
if(!KiemTraDiem(dv))
return false;
van=dv;
return true;
}

Ver. 1.0

Slide 23 of 25


Object-Oriented Programming Using C#
Cài đặt phương thức

• Truy xuất và cập nhật dữ liệu (get-set)

• Nạp chồng phương thức (overload)
• Hàm tạo (constructor)
• Nạp chồng toán tử (operator)
• Ghi đè phương thức có sẵn (override)

Ver. 1.0

Slide 24 of 25


Object-Oriented Programming Using C#
Truy xuất và cập nhật dữ liệu

class CViDu
{
private int a, b;
public void Nhap()
{
}
public void Xuat()

{
}
}
Ver. 1.0

class Program
{
static void Main(string[] args)
{
CViDu vd = new CViDu();
vd.a = 5; // Lỗi
vd.b = 4; //Lỗi
vd.Xuat();
}
}
Slide 25 of 25


×