Bài giảng Ngôn ngữ lập trình ứng dụng Ngành Truyền thông đa phương tiện
46
Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và Truyền thông
Chương 3: Lập trình hướng đối tưng trong C#
3.1 Xây dng lp Đối tưng
3.1.1 Định nghĩa lớp
Trong thế gii thc, bạn thường thy nhiều đối tượng riêng l thuc cùng mt
loi. th hàng nghìn chiếc xe đạp cùng tn ti, tt c chúng đều ging nhau v
cách sn xut mu mã. Mi chiếc xe đạp đã đưc to ra t mt tp thiết kế chung,
thế chúng ging nhau v thành phn cu to. Trong thut ng ớng đối tượng,
chúng ta nói rng chiếc xe đạp mt th hin ca mt lp các đối tượng có tên gi
xe đạp. Mt lp là mt bn thiết kế mà t đó các đối tưng c th được to ra.
Trong C#, mi chuyện đều xy ra trong mt lớp. Như các d chúng ta đã
tìm hiểu trước, các hàm đều đưc đưa vào trong mt lp, k c hàm đầu vào ca
chương trình (hàm Main()):
public classTester
{
public static int Main()
{
//....
}
}
Để định nghĩa mt kiu d liu mi hay mt lp đầu tiên phi khai báo ri sau
đó mới định nghĩa các thuộc tính phương thức ca kiu d liệu đó. Khai báo một
lp bng cách s dng t khoá class. Cú pháp đầy đủ ca khai báo mt lớp như sau:
[Mc đ truy cp] class <Định danh lp> [: Lớp cơ sở]
{
[Ni dung lp th bao gm mt hoc nhiu thuộc tính phương
thc]
[Mc đ truy cp] <Định danh thuc tính>;
[Mc đ truy cp] <Định danh phương thức>()
{
[Ni dung phương thc]
}
}
Trong đó:
Bài giảng Ngôn ngữ lập trình ứng dụng Ngành Truyền thông đa phương tiện
47
Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và Truyền thông
Mc độ truy cp: Thông thưng, mức độ truy cp (access-modifiers) ca mt
lp public. Ngoài ra các thành phn ca lp cũng mức độ truy cp riêng cho biết
loại phương thức nào được phép truy cập đến nó, hay nói cách khác t phm vi
mà thành phần đó được nhìn thy.
Thuc tính
Gii hn truy cp
public
Không hn chế. Những thành viên được
đánh dấu public th được dùng bi
bất các phương thức ca lp bao gm
nhng lp khác.
private
Thành viên trong mt lớp A được đánh
du private thì ch được truy cp bi
các phương thức ca lp A.
protected
Thành viên trong lp A được đánh du
protected thì ch được các phương
thc bên trong lp A những phương
thc dn xut t lp A truy cp.
internal
Thành viên trong lp A được đánh du
internal tđược truy cp bi nhng
phương thc ca bt c lp nào trong
cùng khi hp ng vi A.
protected internal
Thành viên trong lp A được đánh du
protected internal đưc truy cp bi
các phương thức ca lp A, các phương
thc ca lp dn xut ca A, bt c
lp nào trong cùng khi hp ng ca A.
Định danh: Định danh lp chính tên ca lp do người xây dựng chương
trình to ra. Các định danh cn phải được đặt tên theo đúng quy tắc (Chth cha kí
t s, ch và “_”, phân bit ch hoa, ch thưng và không được bắt đu bng s).
Lớp cơ sở: Lớp cơ sở là lp mà đối ng s kế tha đ phát trin ta s bàn sau.
Thuc tính (trưng d liu): là biến d liu ca lớp đối tưng.
Ví d:
public class nguoi
{
public int tuoi;//Khai báo thuc tính tui cho lp nguoi vi kiu int
}
Phương thức (Methods): thành phn x ca lớp đối tượng. Khi khai báo
định nghĩa 1 phương thc cần xác định nhng thành phần sau đây:
Bài giảng Ngôn ngữ lập trình ứng dụng Ngành Truyền thông đa phương tiện
48
Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và Truyền thông
- Kiu tr v: một phương thức th tr v mt kiu d liu sn hoc do
người dùng định nghĩa hoặc không tr v gì c (void).
- Tên phương thức: mt đnh danh tuân th nguyên tc đt tên.
- Danh sách tham s: một phương thức có th có tham s truyn vào hoc không
o Truyn tham s theo kiu tham tr (mặc định): giá tr ca c biến trước khi
được truyền vào phương thức và sau khi ra khỏi phương thức không thay đổi.
Ví d:
//Khai báo phương thc
int ttong (int a, int b)
{
a=a+5;
b=b+1;
return a+b;
}
//Gi hàm truyn tham s
int so1=5, so2=10, tong;
tong=ttong(so1,so2);
Quan sát d trên ta thy ban đầu so1 giá tr 5, so2 giá tr 10 khi
được truyền vào trong phương thức ta thy so1 s được cng thêm 5 so2
được cộng thêm 1. Nhưng sau khi gi hàm xong giá tr ca so1 vn là 5 và so2
vn là 10.
o Truyn tham s theo kiu tham chiếu vi t khóa ref out : kiu truyn
tham s vào phương thức mà trong phương thức có thay đi giá tr ca biến thì
sau khi ra khỏi phương thức giá tr ca biến s thay đổi. Điu nay t ra rt hu
ích khi ta mun một phương thích trả v nhiều hơn một giá tr.
Ví d:
//Khai báo phương thc
int ttong (ref int a, ref int b)
{
a=a+5;
b=b+1;
return a+b;
}
//Gi hàm truyn tham s
int so1=5, so2=10, tong;
tong=ttong(so1,so2);
Bài giảng Ngôn ngữ lập trình ứng dụng Ngành Truyền thông đa phương tiện
49
Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và Truyền thông
Kết qu sau khi ra khỏi phương thức ttong so1 s giá tr bng 10, và so2
giá tr là 11. T khóa ref out đều có th đưc s dụng trong trường hp này,
s khác nhau cơ bn là nếu dùng out thì không cn khi to các biến trước khi
truyền vào phương thức.
o Truyn tham s kiu mng vi t khóa params : điều này rt hu ích khi ta
mun to ra một phương thc vi s ng tham s mt y s, vi s
ợng không có định, tùy thuc vào lúc gọi phương thức.
Ví d:
//Khai báo phương thc
public void DisplayVals( params int[] intVals)
foreach (int i inintVals)
{
Console.WriteLine(“DisplayVals: {0}”, i);
}
//Gọi phương thức
DisplayVals(1,2,6,5,4,7);
DisplayVals(2,2,1,3,4,3,5,6,6,8,9);
int[] mang = new int[5]{2,4,9,7,8};
DisplayVals(mang);
- Phn thc thi của phương thức: nội dung phương thức y vào mục đích sử
dng của phương thức.
Ví d.
public class nguoi
{
public void hello()// Phương thức không có tham s, không tr v gì c
{
Console.WriteLine(“Xin chao cac ban”);
}
public int tinhTuoi(int nam_sinh)// Phương thức tham s tr v
kiu int {
int tuoi=2014-nam_sinh;
return tuoi;//Với phương thc giá tr tr v cn câu lnh
return đ xác định xem phương thức s tr v cái gì.
}
}
3.1.2 Tạo đối tưng
Bài giảng Ngôn ngữ lập trình ứng dụng Ngành Truyền thông đa phương tiện
50
Bộ môn Truyền thông đa phương tiện – Trường Đại học Công nghệ thông tin và Truyền thông
Các đối tượng điểm cốt lõi đ hiu v công ngh hướng đối tượng. y gi
hãy nhìn xung quanh bn s thy được rt nhiu d v đối tượng ca thế gii
thc: con chó, cái bàn, ti vi, xe đp.
Đối tượng trong thế gii thực chung hai đặc điểm: Tt c đu trng
thái và hành vi. Chó trng thái (tên, màu sc, loi, tình trạng đói hay no) và hành vi
(sủa, tha đồ vật đến, vy đuôi). Xe đạp cũng trạng thái (bánh răng, nhịp bàn đạp
hin ti, tốc độ hin tại) và hành vi (thay đổi bánh răng, thay đi nhịp bàn đạp, s dng
phanh). Việc xác định trng thái hành vi của các đối ng trong thế gii thc
mt cách tuyt vời để bt đầu nghĩ đến các khái nim ca lập trình hướng đối tưng.
Bây gi ta hãy dành ra một vài phút để quan sát các đối ng ca thế gii thc
xung quanh bạn. Đối vi mỗi đối tượng bn nhìn thy, y t đt ra cho mình hai
câu hi: “Đối tượng này có th trong nhng trạng thái nào?“Đối tượng này
th thưc hiện những nh vi nào?” Hãy chc chn rng bạn đã ghi lại nhng quan sát
ca mình. Khi làm thế, bn s nhn thy rằng các đối tượng trong thế gii thc s
khác nhau v độ phc tp; chiếc đèn bàn thể ch 2 trạng thái (đang bật đang
tt) hai hành vi (bt tắt), nhưng chiếc radio th thêm c trng thái khác
(đang bật, đang tắt, âm ng hin ti, kênh hin ti) hành vi (bt, tắt, tăng âm
ng, gim âm lượng, m kiếm, kênh điều chnh). Bạn cũng sẽ nhn thy rng
mt s đối tượngy có th chứa các đối tượng khác. Nhng quan sát v thế gii thc
này đều được chuyn vào trong thế gii ca lp trình hướng đối tưng.
Mt đi tưng phn mm.
V mt khái nim thì các đối tượng phn mềm cũng tương tự như các đối tượng
trong thế gii thc: cũng bao gồm các trng thái hành vi liên quan. Một đối
ợng lưu trữ trng thái của nó trong các trường (có th được gi biến trong mt s
ngôn ng lp trình) th hin các hành vi ca mình ra bên ngoài thông qua các
phương thức (có th đưc gi m trong mt s ngôn ng lập trình). Các phương
thc thao tác trên các trng thái bên trong ca một đối tượng được dùng như