You are on page 1of 29

There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

CHƯƠNG 3
LỚP VÀ ĐỐI TƯỢNG

Nguyễn Văn Thọ – thonv@buh.edu.vn 1


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Nội dung

❖Định nghĩa Lớp, Đối tượng


❖Các mức truy xuất
❖Các thành phần của lớp
❖Tạo đối tượng
❖Gán trị cho thuộc tính khi tạo đối tượng
❖Truyền đối tượng vào phương thức
❖Mảng đối tượng

Nguyễn Văn Thọ – thonv@buh.edu.vn 2


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng

❖Khái niệm đối tượng (object) trong lập trình


hướng đối tượng giống như một đối tượng cụ thể
trong thế giới thực.
❖Mỗi đối tượng có các thuộc tính và các hành vi
riêng.
▪ Thuộc tính (attribute) mô tả đặc điểm của đối
tượng.
▪ Hành vi là phương thức hoạt động của đối
tượng, gọi tắt là phương thức (method).

Nguyễn Văn Thọ – thonv@buh.edu.vn 3


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng

❖Ví dụ: Phân số


❖Đặc điểm
▪ Tử số
▪ Mẫu số
❖Thao tác
▪ Cộng, trừ, nhân, chia
▪ Tối giản
▪ Nghịch đảo

Nguyễn Văn Thọ – thonv@buh.edu.vn 4


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng

❖Ví dụ: xe hơi


▪ Màu trắng
▪ 4 cửa
▪ 4 bánh
▪ Hiệu Toyota
▪ Chạy tới
▪ Chạy lui
▪ Xe dừng
▪…

Nguyễn Văn Thọ – thonv@buh.edu.vn 5


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng

Đối tượng:
▪ XeHoi ▪ Tên đối tượng
▪ Hiệu xe
▪ Màu xe ▪ Thuộc tính
▪ Số bánh xe
▪ Số cửa
▪ Chạy tới
▪ Chạy lui ▪ Phương thức
▪ Dừng xe

Nguyễn Văn Thọ – thonv@buh.edu.vn 6


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng


❖Các đối tượng có các đặc điểm (thuộc tính và
phương thức) giống nhau được gom nhóm thành
một lớp để phân biệt với các đối tượng khác và dễ
quản lý.
Một lớp (class) là sự phân loại của các đối tượng
hay là kiểu (type) của đối tượng.
❖Ví dụ:
− Các chiếc xe Toyota, Honda, Porsche thuộc lớp
xe hơi.
• Các con chó giữ nhà, chó săn, chó kiểng thuộc
lớp chó.

Nguyễn Văn Thọ – thonv@buh.edu.vn 7


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng


❖Như vậy Lớp là một khái niệm trừu tượng, dùng
để chỉ một tập hợp các đối tượng có mặt trong hệ
thống.
❖Lớp có thuộc tính và phương thức:
▪ Thuộc tính của lớp tương ứng với thuộc tính của đối
tượng.
▪ Phương thức của lớp tương ứng với các hành động của
đối tượng.

Nguyễn Văn Thọ – thonv@buh.edu.vn 8


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng


❖Một Lớp có thể có một trong các khả năng sau:
▪ Hoặc chỉ có thuộc tính, không có phương thức.
▪ Hoặc chỉ có phương thức, không có thuộc tính.
▪ Hoặc có cả thuộc tính và phương thức, trường hợp này
là phổ biến nhất.
➢ Lớp không có thuộc tính và phương thức nào là
các lớp trừu tượng (abstract). Các lớp này không
có đối tượng tương ứng.

Nguyễn Văn Thọ – thonv@buh.edu.vn 9


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khái niệm Lớp và Đối tượng

Ví dụ: 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

Nguyễn Văn Thọ – thonv@buh.edu.vn 10


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Định nghĩa Lớp


❖Quy tắc đặt tên Lớp trong C#
▪ Tên lớp nên là một danh từ
▪ Tên lớp có thể gồm nhiều từ, ký tự đầu tiên của
mỗi từ nên viết hoa
▪ Tên lớp nên đặt đơn giản, dễ nhớ, và có ý nghĩa
▪ Tên lớp không được trùng với từ khóa của C#
▪ Tên lớp không thể bắt đầu bằng số.

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Định nghĩa Lớp

Cú pháp:
class TenLop
{
<phạm vi truy cập> <các thành phần của lớp>;
}
class TenLop
{//khai báo biến lớp
kieubien tenBien1;
kieubien tenBien2;

//khai báo phương thức


PhuongThuc1();
PhuongThuc2();
}
Nguyễn Văn Thọ – thonv@buh.edu.vn
There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Định nghĩa Lớp


Ví dụ:
class Animal
{
public double Weight; // thuộc tính
public double Height;
public void Run() // phương thức
{ Console.WriteLine(" Animal is running. . . ");}

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Định nghĩa Lớp

❖Định nghĩa lớp Phân Số:


class PhanSo
{
//khai báo biến lớp
int tuSo;
int mauSo;

//khai báo phương thức


public void Cong()
public void Tru()
}

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Sử dụng thuộc tính - Properties

Các thuộc tính:


Chỉ đọc (read only): chỉ có phương thức get (chỉ
đọc giá trị của thuộc tính)
Chỉ ghi (write only): chỉ có phương thức set (chỉ
ghi giá trị cho thuộc tính)
Vừa đọc vừa ghi (read/write): có cả 2 phương
thức get và set. Được phép đọc và ghi giá trị

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Sử dụng thuộc tính - Properties


• Cú pháp
public <Kiểu trả về> <Tên thuộc tính>
{ //Phương thức lấy giá trị
get
{ //các lệnh
return <Biểu thức>;
}
set
{ //các lệnh
<Biến thành viên> = value;
}
}
• Chú ý
– value: từ khoá chỉ giá trị dùng để gán

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Khởi tạo đối tượng

❖TenLop tenBien = new TenLop();


❖Ví dụ:
▪ PhanSo psA = new PhanSo();
▪ Animal Dog = new Animal();
▪ XeHoi xeHoiB = new XeHoi();
Từ khóa new dùng để cấp phát bộ nhớ cho đối
tượng. psA và xeHoiB là 2 biến đối tượng trỏ tới 2
vùng nhớ được cấp phát trong thanh RAM
RAM XXX YYY

psA xeHoiB

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Mức truy xuất

❖public
▪ Có thể truy xuất ở mọi nơi khác
❖private
▪ Chỉ có thể truy xuất ở trong class
❖protected
▪ Chỉ có thể truy xuất ở trong class hoặc class kế
thừa

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Biến Lớp

❖Lưu trữ tình trạng của đối tượng


❖Sử dụng cách khai báo biến thông thường
❖Thêm mức truy xuất
❖Ví dụ
▪ public int tuSo;
▪ private int mauSo
▪ protected int soBanhXe;
❖Truy xuất biến lớp:
▪ tenDoiTuong.bienLop

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Phương thức (Method)

❖Các hàm bên trong lớp


❖Mô tả hoạt động của đối tượng
❖Thêm mức truy xuất khi khai báo
❖Truy xuất phương thức
▪ tenBien.TenPhuongThuc();
▪ Ví dụ:
• PhanSo a = new PhanSo();
• a.ToiGian();
• PhanSo b = a.NhanMotSo(2);

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Tham chiếu this


❖Tham khảo đến đối tượng hiện hành
❖Trong trường hợp đặt tên tham số trùng với tên
biến lớp, sử dụng this để chỉ biến lớp
class PhanSo
{
private int tuSo;
private int mauSo;

public PhanSo(int tuSo, int mauSo)


{
this.tuSo = tuSo;
this.mauSo = mauSo;
}
}
Nguyễn Văn Thọ – thonv@buh.edu.vn
There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Truyền đối tượng vào phương thức

❖Đối tượng là kiểu tham chiếu


❖Nếu có câu lệnh tác động đến giá trị các biến lớp
của đối tượng trong phương thức → đối tượng bị
thay đổi sau khi hoàn tất phương thức.

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Bảo vệ truy cập biến lớp


❖→ Không cho phép truy cập biến lớp
❖→ Dùng hàm để truy cập
class PhanSo
{ private int tuSo;
public int mauSo;
public int LayTuSo()
{
return tuSo;
}
public void GanTuSo(int gt)
{
tuSo = gt;
}
}
Nguyễn Văn Thọ – thonv@buh.edu.vn
There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Thuộc tính

❖Dùng để bảo vệ việc truy cập biến lớp


❖Cho phép chỉnh sửa code không làm ảnh hưởng
nhiều đến chương trình

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Thuộc tính
class PhanSo
{
private int tuSo;
private int mauSo;
public int TuSo
{
get { return tuSo; }
set { tuSo = value; }
}
public int MauSo
{
get { return mauSo; }
set { mauSo = value; }
}
}
Nguyễn Văn Thọ – thonv@buh.edu.vn
There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Kiểm tra hợp lệ


class PhanSo
{
private int tuSo;
private int mauSo;
public int TuSo { … }
public int MauSo
{
get { return mauSo; }
set
{
if(value == 0)
mauSo = 1;
else
mauSo = value;
}
}
}
Nguyễn Văn Thọ – thonv@buh.edu.vn
There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Thuộc tính chỉ đọc


❖Không cho người dùng sửa giá trị biến
❖Chỉ có get, không có set
class PhanSo
{
private int tuSo;
private int mauSo;
private double giaTri;
public double GiaTri
{
get { return giaTri; }
}
public double LayGiaTri()
{
giaTri = (double)tuSo / (double)mauSo;
return giaTri;
}
}

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

Thuộc tính là kết quả xử lý


class PhanSo
{
private int tuSo;
private int mauSo;
private double giaTri;
public int TuSo{…}
public int MauSo{…}

public double GiaTri


{
get { return (double)tuSo / (double)mauSo; }
}
}

Nguyễn Văn Thọ – thonv@buh.edu.vn


There are no footmarks of the lazy man on the journey to success Lập trình HĐT với C#

FAQs

Nguyễn Văn Thọ – thonv@buh.edu.vn 29

You might also like