Tải bản đầy đủ (.ppt) (33 trang)

HƯỚNG ĐỐI TƯỢNG TRONG C# ppt

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 (290.28 KB, 33 trang )


1
HƯỚNG ĐỐI
TƯỢNG TRONG
C#
2

Nhắc lại về lập trình HĐT

Tiếp cận HĐT giúp khắc phục khuyết điểm của
lập trình cấu trúc:

Không sử dụng lại được mã nguồn.

Mọi thay đổi cấu trúc đòi hỏi phải thay đổi cả giải
thuật

Chỉ phát huy hiệu quả trong module chương trình
nhỏ.

Lập trình HĐT nhìn nhận và phân tích chương
trình là những hoạt động mà các đối tượng tham
gia vào chương trình đó.
3

ĐỐI TƯỢNG – LỚP

Một đối tượng là thực thể trong hệ thống.
 Mỗi đối tượng sẽ có một số thuộc tính và
một số hoạt động nhất định trong hệ
thống.



Lớp là khái niệm trừu tượng phản ánh tập
hợp các đối tượng có cùng tính chất.

Một đối tượng là một thể hiện của một lớp.
4

CẤU TRÚC CỦA LỚP
Class <tên lớp>
{
Các biến thành viên;
Hàm xây dựng;
Các thuộc tính;
Các phương thức;
}
5

BIẾN THÀNH VIÊN
Cú pháp:
<phạm vi truy cập> <kiểu> <tên biến>;
class ConNguoi()
{
public string hoTen;
protected string gioiTinh;
DateTime ngaySinh;
}
6

6
Phạm vi truy cập


private: Chỉ truy cập được từ trong lớp khai
báo.

protected: Truy cập được từ trong lớp khai
báo và các lớp con của lớp khai báo.

public: Truy cập được từ mọi nơi.

Mặc định là private
7

HÀM XÂY DỰNG

Cú pháp:
<phạm vi truy cập> <tên lớp>([danh sách
tham số])
{
Các phép toán gán giá trị cho các biến
thành viên;
}
8

HÀM XÂY DỰNG

Hàm xây dựng không
tham số:
public ConNguoi()
{
hoTen=“”;

gioiTinh=“Nam”;
}
Gọi hàm xây dựng:
ConNguoi cn;
cn=new ConNguoi()
Nếu một lớp không định nghĩa hàm xây dựng thì lớp sẽ có một
hàm xây dựng mặc nhiên là:
Public ConNguoi(){}
9

HÀM XÂY DỰNG

Hàm xây dựng có tham số:
public ConNguoi(string hoTen,string gioiTinh, DateTime NS)
{
this.hoTen=hoTen;
this.gioiTinh=gioiTinh;
ngaySinh=NS;
}
Gọi hàm:
ConNguoi cn=new ConNguoi(“NVA”,”Nam”,ns);
10

THUỘC TÍNH
Cú pháp:
<thuộc tính tr.cập> <kiểu> <tên
thuộc tính>
{
[get{}] // gán giá trị trả về cho
thuộc tính.

[set{}] // thiết lập giá trị cho
biến thành viên.
}
VD:
Public string HoTen
{
get{return hoTen;}
set{hoTen=value;}
}
Ví dụ:
ConNguoi cn=new
ConNguoi();
Cn.HoTen=“Nguyen Van
A”; // Hàm set trong
thuộc tính HoTen được
gọi.
String ht= cn.HoTen;
// Hàm get trong thuộc tính
HoTen được gọi.
11

THUỘC TÍNH CHỈ ĐỌC
Là thuộc tính chỉ có hàm get.
class UngCuVien()
{
String cmnd;
public string hoTen;
protected string gioiTinh;
DateTime ngaySinh;
int soPhieuBau;

public int SoPhieuBau
{
get
{return soPhieuBau;}
}
}
Cách sử dụng:
UngCuVien ucv=new UngCuVien();
int soPB=ucv.SoPhieuBau; //OK
ucv.SoPhieuBau=7; // Lỗi
12

PHƯƠNG THỨC

Phương thức của một lớp phản ánh các
hành động của các đối tượng trong lớp
đó.

Cú pháp:
<thuộc tính tr.cập> <kiểu trả về> <tên
phương thức>( [Danh sách các tham số])
{
nội dung phương thức;
}
13

PHƯƠNG THỨC
VD:
class NhanKhau()
{

String cmnd;
public string hoTen;
protected string gioiTinh;
DateTime ngaySinh;
int namKetHon;
String tinhTrangHonNhan;
String hoTenVoChong;
public void LapGiaDinh(int nam, string hoTen)
{
namKetHon=nam;
tinhTrangHonNhan=“Đã kết hôn”;
hoTenVoChong=hoTen;
}
}
14

OVERLOAD TRONG PHƯƠNG THỨC
Ta có thể định nghĩa nhiều phương thức của một lớp với cùng một tên nhưng
phải khác nhau về danh sách tham số.
class NhanKhau()
{

public void LapGiaDinh(int nam, string hoTen)
{
namKetHon=nam;
tinhTrangHonNhan=“Đã kết hôn”;
hoTenVoChong=hoTen;
}
public void LapGiaDinh(string hoTen)
{

namKetHon=DateTime.Now.Year;
tinhTrangHonNhan=“Đã kết hôn”;
hoTenVoChong=hoTen;
}
}
15

BIẾN THÀNH VIÊN TĨNH (STATIC)
Cách khai báo:
public Class CuTri{
String cmnd;
public string hoTen;
protected string
gioiTinh;
DateTime ngaySinh;
static int
soNguoiDiBau;
}
Mô hình bộ nhớ:
CuTri ct1=new CuTri();
CuTri ct2=new CuTri();
ct2
ct1
cmndcmnd
cmnd
soNguoiDiBau
16

THUỘC TÍNH TĨNH (STATIC)
Các thuộc tính tĩnh chỉ được quyền truy cập vào biến

thành viên tĩnh (không có điều ngược lại).
public Class CuTri
{

static int soNguoiDiBau;
public static int SoNguoiDiBau
{
get {
return soNguoiDiBau;
}
}
}
17

PHƯƠNG THỨC TĨNH (STATIC)
Các phương thức tĩnh chỉ được quyền truy cập vào
biến thành viên tĩnh (không có điều ngược lại) và
thuộc tính tĩnh.
public Class CuTri
{

static int soNguoiDiBau;
public static void DiBau()
{

soNguoiDiBau++;
}
}
18


GỌI CÁC YẾU TỐ TĨNH
Đối với các yếu tố thông thường của một lớp, chúng
ta phải gọi chúng thông qua một đối tượng cụ thể.
Ví dụ:
CuTri ct=new CuTri();
ct.hoTen=“NVA”;
Đối với các yếu tố tĩnh của một lớp ta phải gọi chúng
thông qua tên của lớp đó.
Ví dụ:
int soNguoiDiBau=CuTri.SoNguoiDiBau;
int so=ct. SoNguoiDiBau; //Lỗi cú pháp
19

TÍNH THỪA KẾ
Tính thừa kế giúp có thể tái sử dụng lại mã
nguồn.
Một lớp được thừa kế từ một lớp khác được
gọi là lớp con, lớp còn lại gọi là lớp cha.
Lớp con có thể sử dụng và truy cập những
biến thành viên, thuộc tính và phương thức
có thuộc tính truy cập là protected hoặc public
của lớp cha.
20

TÍNH THỪA KẾ
Lớp con:
Class CuTri:ConNguoi
{
String cmnd;
}

Lớp cha:
class ConNguoi()
{
public string hoTen;
protected string
gioiTinh;
DateTime ngaySinh;
}
21

HÀM XÂY DỰNG TRONG LỚP CON
Ta có thể xây dựng một hàm xây dựng trong
lớp con và thừa kế từ các hàm xây dựng
trong lớp cha thông qua từ khóa base.
Ví dụ:
public CuTri():base()
{
cmnd=“”;
}
public ConNguoi()
{
hoTen=“”;
gioiTinh=“Nam”;
}
22

HÀM HỦY TRONG LỚP CON
Hàm hủy được gọi một cách tự động khi đối
tượng được thu hồi.
Cú pháp:

~<Tên lớp>()
{
thu hồi vùng nhớ các biến thành viên;
}
23

TÁI ĐỊNH NGHĨA HÀM (OVERRIDES)
Một đối tượng trong lớp con hoàn toàn có thể sử
dụng lại các phương thức đã được định nghĩa trong
lớp cha. Tuy nhiên, ta có thể sửa đổi phương thức
đó, hoặc viết lại hoàn toàn mới trong lớp con.
Lớp CuTri (Con)
public int Tuoi()
{
int
tuoi=base.Tuoi();
return tuoi ;
}
Lớp ConNguoi (Cha)
public int Tuoi()
{
int tuoi=DateTime.Now.Year-
ngaySinh.Year+1;
return tuoi;
}
24

TƯƠNG QUAN GIỮA ĐỐI TƯỢNG
LỚP CON VÀ ĐỐI TƯỢNG LỚP CHA
Tất cả các đối tượng của lớp con và đối

tượng của lớp cha đều sử dụng chung một
vùng nhớ đối với các biến thành viên tĩnh của
lớp cha.
DTLopCha1
DTLopCon2
DTLopCha2
DTLopCon1
Biến tĩnh
25

TƯƠNG QUAN GIỮA ĐỐI TƯỢNG
LỚP CON VÀ ĐỐI TƯỢNG LỚP CHA
Ta có thể gán một đối tượng của lớp cha
bằng một đối tượng của lớp con (Không có
điều ngược lại)
ConNguoi cn=new ConNguoi();
CuTri ct=new CuTri();
cn=ct; // Hợp lệ
ct=cn; //Hỗn

×