ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ươ

Ch

ng 4

ố ượ

L p và đ i t

ng

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ng đ i t

ng

ướ ậ ố ượ ớ ớ i L p và Đ i t

ố ượ ng

ươ

ự ộ

vL p trình truy n th ng và l p trình h vCác khái ni m liên quan t ệ vCác m c truy xu t ấ ứ vCác thành ph n c a l p ầ ủ ớ vThu c tính, ph ứ ộ ng th c vOperator vService Method và Support Method vOverloading method vParameter list method vAlias và c  ch  gom rác t ơ ế

đ ng

ộ N i dung

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ố ề ậ L p trình truy n th ng

q Ph

ươ ế ậ ủ ậ ố ề ng pháp ti p c n c a l p trình truy n th ng

ü L p trình tuy n tính.

ế ậ

ü L p trình c u trúc

q

ậ ấ

Ư ể u đi m

ü Ch

ươ ễ ể ễ ng trình rõ ràng, d  hi u, d  theo dõi.

ü T  duy gi

ư ả ậ i thu t rõ ràng.

ể ế q Khuy t đi m

ü Không h  tr  vi c s  d ng l

ỗ ợ ệ ử ụ ạ ồ i mã ngu n.

ü Khi thay đ i c u trúc d  li u, ph i thay đ i gi

ổ ấ ữ ệ ả ổ ả ậ i thu t.

ả ữ ế ệ ầ ố ả ü Ph i gi i quy t các m i quan h  vĩ mô gi a các module ph n

ự ề ớ m m trong các d  án l n.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ậ ướ ố ượ L p trình h ng đ i t ng

ơ ả ặ ể q Đ c đi m c  b n

ậ ữ ệ ü T p trung vào d  li u thay cho các hàm.

ü Ch

ươ ượ ố ượ ng trình đ c chia thành các đ i t ộ ậ ng đ c l p.

ü C u trúc d  li u đ

ữ ệ ượ ấ ế ế ố ượ c thi t k  sao cho đ c t ặ ả ượ  đ c các đ i t ng.

ü D  li u đ

ữ ệ ượ ấ ọ c che gi u, bao b c.

ü Các đ i t

ố ượ ổ ớ ng trao đ i v i nhau thông qua các hàm.

ü Ch

ươ ượ ế ế ướ ế ậ ừ ướ ng trình đ c thi t k  theo h ng ti p c n t d i lên.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ậ ướ ố ượ L p trình h ng đ i t ng

ộ ố ư ể ổ ậ q M t s   u đi m n i b t

ü Không có nguy c  d  li u b  thay đ i t

ơ ữ ệ ổ ự ị ươ do trong ch ng trình.

ü Khi  thay  đ i  c u  trúc  d   li u  c a  m t  đ i  t

ộ ố ượ ổ ấ ữ ệ ủ ầ ng,  không  c n

ồ ủ ố ượ ổ thay đ i mã ngu n c a các đ i t ng khác.

ü Có th  s  d ng l

ể ử ụ ạ ồ ế ệ i mã ngu n, ti t ki m tài nguyên.

ü Phù h p v i các d  án ph n m m l n, ph c t p.

ứ ạ ự ề ầ ợ ớ ớ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ng

đ i  t

ậ  (object)  trong  l p  trình  ụ ể ư ộ ố ượ ng c  th

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

ố ượ ố ng gi ng nh  m t đ i t ự i th c. ng  có  các  thu c  tính  và  các  hành  vi

ả ặ

(attribute)  mô  t

đ c  đi m  c a  đ i

ượ

vKhái  ni m ệ ố ượ ướ ng đ i t h ế ớ trong th  gi vM i  đ i  t ố ượ ỗ riêng. § Thu c  tính ộ ng.

t

ọ ắ

ượ

§ Hành  vi  là  ph t là  ng, g i t

t

ng  th c  ho t  đ ng  c a  đ i  ứ  (method). ươ

ươ ph

ạ ng th c

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ố ượ ệ ớ ng

vThao tác

§ C ng, tr , nhân, chia ừ ộ § T i gi n ả ố § Ngh ch đ o ả ị

Khái ni m L p và Đ i t vVí d : Phân s ụ vĐ c đi m ể ặ § T  sử ố § M u sẫ ố

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ố ượ ệ ớ ng

Khái ni m L p và Đ i t vVí 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ừ § …

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ố ượ

ng:

ố ượ

vTên đ i t

ng

vThu c tính ộ

ươ

vPh

ứ ng th c

ố ượ ệ ớ ng

Khái ni m L p và Đ i t vĐ i t vXeHoi vHi u xe ệ vMàu xe vS  bánh xe ố vS  c a ố ử vCh y t ạ ớ i vCh y lui ạ vD ng xe ừ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ượ

ệ ớ

ộ ể ng  có  các  đ c  đi m  (thu c  tính  và  c  gom  nhóm  thành  ễ ố ượ ng khác và d

t v i các đ i t

ố ượ ng

ố ượ

ng

(cid:222) M t ộ l pớ  (class)  là  s   phân  lo i  c a  các  đ i  t ự

ủ ố ượ

hay là ki u (type) c a đ i t

ạ ủ ng.

vVí 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ó.

ệ ớ Khái ni m L p và Đ i t vCác  đ i  t ố ượ ứ ố ươ ph ng  th c)  gi ng  nhau  đ ể ộ ớ m t l p đ  phân bi ả qu n lý.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ừ ượ

v Nh   v y

ộ ư ậ L pớ  là  m t  khái  ni m  tr u  t

ệ ố ượ

ỉ ộ ậ

ng,  dùng  ệ ng có m t trong h

ể đ  ch  m t t p h p các đ i t th ng.ố

ng th c: ứ

ứ ớ

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

ộ v L pớ  có thu c tính và ph ủ ớ ươ § Thu c  tính  c a  l p  t

ươ ộ ng  ng  v i  thu c  tính  c a  đ i

ủ ố

ứ ủ ớ ươ ứ ủ ộ ớ ng th c c a l p t ng  ng v i các hành đ ng c a ượ t § Ph

ộ ng. ươ ố ượ đ i t ng.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ộ v M t ộ L pớ  có th  có m t trong các kh  năng sau:

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

ươ ứ

ỉ ỉ ứ

ả ng th c. ộ ng th c, không có thu c tính. ứ ng th c, tr

ươ ườ ả ợ ng h p này là

ươ

ể ộ § Ho c ch  có thu c tính, không có ph ươ § Ho c ch  có ph ộ § Ho c có c  thu c tính và ph ấ Ø L p không có thu c tính và ph

ố ượ

ừ ượ

ng.  Các  l p  này  không  có  đ i  t

ng th c nào là các  ng

ớ ớ l p  tr u  t ươ ứ ng  ng. t

ặ ặ ặ ổ ế ph  bi n nh t.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

v Không gian tên (namespace)

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

§ M t nhóm các l p (classes) và giao di n (interfaces) đ ị

ượ ệ ớ

ứ ứ ộ ơ ộ c  ả   ch c  thành  m t  đ n  v   qu n  lý  theo  hình  th c  không

ọ ủ ợ ế ạ ệ ố ổ t gian tên g i là namespace. § L i  ích  c a  namespace  là  t ch c  s p x p  l

ự ọ

ự ệ ấ ổ i  h  th ng  ớ thông tin các l p trong d  án m t cách khoa h c, giúp cho  ả vi c theo dõi b o trì d  án đ ứ ắ ộ ượ ố c t t nh t.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ừ ượ

ng:

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

ừ ượ ố ượ ng,  đ i  t ng  là

ộ § L p  (Class)  là  m t  khái  ni m  tr u  t ể ệ ụ ể ủ ớ ệ m t th  hi n c  th  c a l p.

ế ế ủ

v Tính tr u t ớ ộ Ø Ví d : ụ ả § B n thi § Chi c xe h i đ

ế ế ế ố ượ ế t k  c a chi c xe h i là l p. ơ ượ ạ c t o ra t ơ ớ ừ ả  b n thi t k  là đ i t ng.

Object

Class

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ừ ượ

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

ừ ượ ố ng  gi ng  nhau:  tr u  t ng  hóa  thành

§ Ch   đ a ra các thu c tính và ph

ộ ươ ế ủ ứ ầ ng th c c n thi t c a

ng: v Tính tr u t ố ượ ữ ừ § T   nh ng  đ i  t ộ ớ m t l p:  ỉ ư ố ượ đ i t v Ví d : ụ

ậ ng trong l p trình.

Trừu tượng hóa

Class

Objects

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

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

ự ứ ệ ộ c  xây  d ng  đ   th c  hi n  m t  nhóm  ch c

ủ ể ự năng đ c tr ng c a riêng l p đó.

ố ượ ấ ng  khác ph i  đ ng này qua đ i t

v Tính đóng gói: ượ ỗ ớ § M i  l p  đ ư ặ ấ ả ọ ố ượ đ i  t ở b i các ph ữ ệ d  li u.

ươ ố ượ ứ ủ ớ ữ ệ ừ   § T t c  m i thao tác truy xu t vào thành ph n d  li u t ệ ự c th c hi n  ứ ng ch a ầ ả ượ ng th c (method) c a chính đ i t

§ Tính đóng gói cho phép d u thông tin c a đ i t

ấ ủ ố ượ

ươ ứ ằ ng b ng  ế ng th c liên quan đ n

ố ượ ế ợ cách k t h p thông tin và các ph thông tin trong đ i t ng.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

v Tính đóng gói: v Ví d :ụ

ngungXe()

chayToi()

chayLui()

mucXang

ngungXe() chayToi() chayLui() kiemTraXang()

Yes, I can drive !

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

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ế ừ

v Tính k  th a:

ớ ự

§ Cho  phép  xây  d ng  m t  l p  m i  d a  trên  các

ự ộ ớ ớ

ủ ọ

§ L p đã có g i là l p Cha, l p m i phát sinh g i là

ộ ớ ị đ nh nghĩa c a m t l p đã có.  ớ ớ l p Con  ớ

ủ ớ

ế ừ ấ ả § L p  con  k   th a  t ể ở ộ

ế ừ

t  c   các  thành  ph n  c a  l p  ầ Cha, có th  m  r ng các thành ph n k  th a và  ổ b  sung thêm các thành ph n m i.

Ø Khái ni m này s  trình bày chi ti

ế ở ươ  ch

t

ng sau

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

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ế ừ

v Tính k  th a: v Ví d :ụ

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

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ự ầ

, ký t

đ u tiên c a

nên vi

ắ ặ ớ ớ ỗ ừ m i t ớ ớ ớ

ớ ị Đ nh nghĩa L p

ự ế ố ượ

ượ

ươ

v 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 ế t hoa ặ ơ ớ ả ễ § Tên l p nên đ t đ n gi n, d  nh , và có ý nghĩa ượ ủ ớ ừ c trùng v i t § Tên l p không đ  khóa c a Java ố ằ ể ắ ầ § Tên l p không th  b t đ u b ng s . ộ ự   làm  sao  xác  đ nh  v Trong  m t  d   án  th c  t ộ ớ ng,  thu c  tính  và  c  các  L p,  các  đ i  t ứ ủ ố ượ ng th c c a đ i t

ng???

đ ph

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ớ ị Đ nh nghĩ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(); }

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ị ớ

ế

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

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

Đ nh nghĩa L p vĐ nh nghĩa l p Phân S : ố

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ử ụ

ế

vKhông  c n  khai  báo  thu c  tính,  s   d ng  tr c  ti p  ộ

ầ Properties:

public class PhanSo { public int TuSo { get; set; } public int MauSo { get; set; } public override string ToString() { return this.TuSo+"/"+this.MauSo; } }

ể ị ớ Đ nh nghĩa L p ki u POCO

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ở ạ ố ượ

ể ấ

ỏ ớ

ộ ố ượ ng. psA và xeHoiB là 2 bi n đ i t

ố new  dùng  đ   c p  phát  b   nh   cho  đ i  ế i 2

ớ ng tr  t

ớ ượ ấ

§ PhanSo psA = new PhanSo(); § XeHoi xeHoiB = new XeHoi(); ừ T   khóa  ượ t vùng nh  đ

c c p phát trong thanh RAM

xeHoiB

RAM

YY Y

XX X

psA

Kh i t o đ i t ng vTenLop tenBien = new TenLop(); vVí d :ụ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ấ ở ọ ơ

§ Có th  truy xu t

m i n i khác

ấ ứ M c truy su t vpublic

vprivate

ấ ở

§ Ch  có th  truy xu t  ể

trong class

vprotected

ấ ở

§ Ch  có th  truy xu t  ể

ế  trong class ho c class k

ỉ th aừ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ng

ư ử ụ

ườ

ng

ế ớ

§ public int tuSo; § private int mauSo § protected int soBanhXe;

ế ớ

vTruy xu t bi n l p: ấ

§ tenDoiTuong.bienLop

Bi n L p vL u tr  tình tr ng c a đ i t ủ ố ượ vS  d ng cách khai báo bi n thông th ế vThêm m c truy xu t ấ ứ vVí dụ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ạ ộ ứ ấ

ủ ố ượ ấ ứ ng th c

ứ ươ

• PhanSo a = new PhanSo(); • a.ToiGian(); • PhanSo b = a.NhanMotSo(2);

Ph ng th c (Method) vCác hàm bên trong l pớ vMô t ng  ho t đ ng c a đ i t vThêm m c truy xu t khi khai báo vTruy xu t ph ươ § tenBien.TenPhuongThuc(); § Ví d :ụ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ượ t

ng c  th

ự ế ừ ỉ

ượ ươ

ượ

c nh ng thành viên

ụ ể v Có th  truy c p trong b n thân l p ớ ả ậ v Đ c truy c p tr c ti p t ớ ậ  tên l p v Ph ậ ứ ng th c static ch  truy c p đ ủ ớ static c a l p

v Truy c p: ậ

§ TenLop.TenBien § TenLop.TenPhuongThuc() ớ

ể ể

ố ượ

ế ề

v Có  th   hi u  static  là  ô  nh   chia  s   chung,  khi  bi n  ng  đ u

ấ ự

ị static  thay  đ i  giá  tr   thì  toàn  b   các  đ i  t th y s  thay đ i này.

static v Dùng cho các thành ph n l p không ph  thu c vào đ i  ố ầ ớ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ở ạ

ố ượ

ng khi khai báo

ả ề

ở ạ

class TenLop { public TenLop() { ... } }

Hàm kh i t o (Constructor) vKh i t o giá tr  ban đ u cho đ i t ị vCùng tên v i tên l p ớ ớ vKhông khai báo ki u tr  v ể vKhai báo:

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ệ ở ạ

vN u không khai báo constructor thì trình biên d ch s   ẽ ặ ị

ặ ị

t

Constructor m c đ nh vLà constructor không có tham s  và không th c hi n  ố ộ ố ệ ệ ự ệ l nh  gì  c   (ho c  th c  hi n  m t  s   l nh  kh i  t o  ặ ị ậ m c đ nh theo ch  ý c a L p trình viên) ế ự  thêm constructor m c đ nh

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ộ ớ

ở ạ

ươ

ng đ

ng

vĐ i t ứ

§ S  tham s ố ố § Ki u tham s ố ể ượ ố ượ c kh i t o theo constructor t ng khi khai báo

vChú ý: Khi khai báo constructor khác, constructor

ố ử ụ

ế ặ ị m c đ nh s  không có. N u mu n s  d ng thì ph i  khai báo l

ẽ i.ạ

Constructor vM t l p có th  có nhi u constructor vCác constructor khác nhau v  tham s

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ế

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

public PhanSo() { tuSo = 0; mauSo = 1; }

public PhanSo(int ts, int ms) { tuSo = ts; mauSo = ms; } }

Constructor

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ố ượ

ử ố

ẫ ố

ng phân s  có t

s  = 0, m u s  =

ố ượ

ử ố

ẫ ố

1: § PhanSo a = new PhanSo(); § PhanSo b = new PhanSo(0, 1); ng phân s  có t

vKh i t o đ i t ở ạ

s  = 1, m u s  =

2: § PhanSo c = new PhanSo(1, 2)

Constructor vKh i t o đ i t ở ạ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ế

ệ ng hi n hành

ế

ế

class PhanSo { private int tuSo; private int mauSo;

public PhanSo(int tuSo, int mauSo) { this.tuSo = tuSo; this.mauSo = mauSo; } }

Tham chi u this vTham kh o đ n đ i t ố ượ ả vTrong tr ố ặ ườ ng h p đ t tên tham s  trùng v i tên bi n  ể ỉ ế ớ ử ụ this đ  ch  bi n l p ớ l p, s  d ng

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ế ng là ki u tham chi u ế

ế ớ

ố ượ

ng th c

ươ

ươ ề ố ượ ứ ng th c ng vào ph

ị ứ  đ i t ứ ng th c.

Truy n đ i t vĐ i t ố ượ vN u có câu l nh tác đ ng đ n giá tr  các bi n l p  ộ ế ệ ủ ố ượ ươ ị ng trong ph c a đ i t ng b   ấ ổ t ph thay đ i sau khi hoàn t

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ậ ả ệ ế ớ

ế   thay  đ i  code

ỗ   nh ng  ch

ị ế

ổ i dùng thay đ i giá tr  bi n?

ợ ệ

ị ế

khi gán giá tr  bi n?

ạ ể ế

ỉ ọ

ệ ử

ả ủ

ế

ế

dùng bi n?ế vH n ch  ng ế ườ vKi m tra h p l vBi n ch  đ c (read only)? vTruy c p giá tr  là k t qu  c a vi c x  lý các bi n

l p?ớ

B o v  truy c p bi n l p vThay  đ i  tên  bi n  ổ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ế ớ

ậ ả ệ

public int LayTuSo() { return tuSo; } public void GanTuSo(int gt) { tuSo = gt; } }

ế ớ B o v  truy c p bi n l p v Không cho phép truy c p bi n l p  ậ v dùng hàm đ  truy c p  class PhanSo { private int tuSo; public int mauSo;

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ể ả

ưở

ng

ỉ ươ

ế

nhi u đ n ch

ộ Thu c tính vDùng đ  b o v  vi c truy c p bi n l p ế ớ ệ ệ vCho  phép  ch nh  s a  code  không  làm  nh  h ử ng trình

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ộ 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; } }

}

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

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;

}

}

}

ợ ệ ể Ki m tra h p l

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ị ế i dùng s a giá tr  bi n

ỉ 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; } }

ỉ ọ Thu c tính ch  đ c vKhông cho ng ườ vCh  có get, không có set

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

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; } } }

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

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ụ d ng đ

i dùng t o cũng c n toán t

ự ể ử ượ c toán t . v Các ki u do ng ườ ể § Ví d : ụ

• Phân số • S  La Mã ố

Toán tử vCác phép tính +, ­, *, / vPhép so sánh >, <, >=, <= vCác  ki u  xây  d ng  s n  (int,  string,  double…)  s   ử ẵ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ể ự

ằ ệ ự

class PhanSo { private int tuSo; private int mauSo; public PhanSo Cong(PhanSo b) { PhanSo c = new PhanSo(); c.TuSo = this.MauSo * b.TuSo + this.TuSo * b.MauSo; c.MauSo = this.MauSo * b.MauSo; return c; } }

Th c hi n b ng Hàm vXây d ng hàm đ  th c hi n tính toán

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

public static PhanSo operator +(PhanSo trai, PhanSo phai)

{

PhanSo c = new PhanSo(); c.TuSo = trai.MauSo * phai.TuSo + trai.TuSo * phai.MauSo;

c.MauSo = trai.MauSo * phai.MauSo; return c;

}

ử ụ ử S  d ng toán t

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

logic ph i đi đôi v i nhau

ử ử ụ

S  d ng toán t vCác toán t § > và < § >= và <= § == và !=

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ỗ ợ

ử ụ

ử ụ

(toán t

+ thì nên

ử ụ

ử ể ự

ệ ơ

là phép c ng)ộ vS  d ng toán t

đ  th c hi n công vi c đ n gi n

L u ýư vS  d ng toán t ử  đúng ch , h p lý vNên s  d ng đúng ý nghĩa toán t ử

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ươ

ươ

ng  th c,  có  nh ng  ph

ữ ố ượ

ươ

ỉ ử ụ

ộ ớ ng  ử ứ ng  khác  s   th c  cung  c p  ra  ngoài  cho  các  đ i  t ụ d ng  (public,  g i  là  Service  method),  có  ph ng  ớ ph c ch  s  d ng trong l p (private, g i là Support  Method).

ẽ ổ ợ

vCác support method s  b  tr  cho Service method

Service Method và Support Method vM t  l p  có  nhi u  ph

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

public class TamGiac     {         public int CanhA { get; set; }         public int CanhB { get; set; }         public int CanhC { get; set; }         private bool laHopLe()        {             if (CanhA > 0 && CanhB > 0 && CanhC > 0 &&                 (CanhA + CanhB) > CanhC &&                 (CanhB + CanhC) > CanhA &&                 (CanhA + CanhC) > CanhB)                 return true;             return false;         }         public int ChuVi()        {             if (laHopLe() == false)                 return ­1;             return CanhA + CanhB + CanhC;         }     }

Service Method và Support Method

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ươ

ng th c

ư ü Signature bao g m: S  l

ớ ề ng các đ i s  ho c ki u

ố ượ ặ

ả ề

ử ụ

i

ồ ố ố ữ ệ d  li u các đ i s  ho c th  t ü Ki u d  li u tr  v  không đ ể ữ ệ ü L i ích c a Overloading là  ợ ươ ph

ệ ọ ườ

ố ố ứ ự ố ố  các đ i s . ượ c tính vào signature ạ ả kh  năng tái s  d ng l ể . ể ng th c và giúp vi c g i hàm “uy n chuy n” ủ ặ t  c a

ng  h p  đ c  bi

ứ ü Các  Constructor  là  tr Overloading Method

Overloading Method vOverloading Method: ü Là đ c đi m trong cùng 1 l p có nhi u ph ể cùng tên nh ng khác nhau v  Signature.

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

Overloading Method

Invocation

result = tryMe(25, 4.32)

float tryMe(int x) { return x + .375; }

float tryMe(int x, float y) { return x*y; }

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ng  th c  đ c  bi ợ

ệ ặ ng h p đ c bi

t  đó  là  ệ ủ t c a

ươ ộ ườ Parameter List, cũng là m t tr Overloading Method.

Sum(1, 2, 4) Sum() Sum(1, 5, -8,2)

public int Sum(params int []arr) { int s = 0; foreach(int x in arr) { s += x; } return s; }

ố ố ể

vTa có th  truy n bao nhiêu đ i s  ki u int vào cho  ượ

ươ

ề ng th c Sum cũng đ

ph

c.

Parameter List Method vC#  cung  c p  m t  lo i  ph ấ

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ế

ự ộ

ỏ ớ

i.

ng cùng tr  t

ớ ấ ế

ố ượ

ố ượ

ở c qu n lý b i 2 bi n đ i t

ng phân s  đ

ố ượ đ i t vVí d :ụ PhanSo psA=new PhanSo(1,5); PhanSo psB=new PhanSo(3,7); ẽ Lúc này trên thanh RAM s  có 2 ô nh  c p phát cho 2  ả ố ượ đ i t ng  psA và psB

psB

psA

Vùng  nh  Bớ

Vùng  nh  Aớ

ơ ế Alias và c  ch  gom rác t  đ ng vAlias là đ c đi m mà trên m t ô nh  có nhi u bi n

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ệ ệ

s  ta th c hi n l nh:

ư ố

ố ơ ế ả

ố ượ

ế  có 2 bi n đ i t

ỏ ớ

ớ ả

ự ộ đ ng

i(cùng qu n lý)

psB

psA

Vùng  nh  Bớ

Vùng  nh  Aớ

ơ ế Alias và c  ch  gom rác t vGi ả ử psA=psB;  Ngôn ng  nói “Phân s  A b ng Phân s  B”, nh ng  ệ ệ ố h  th ng máy tính s  làm vi c theo c  ch  “Phân s  A  ố ớ ỏ ớ i vùng nh  mà phân s  B đang qu n lý”. Hay nói  tr  t cách khác “Vùng nh  B” bây gi ng  cùng tr  t

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ư ậ

ự ộ đ ng

ớ   “vùng  nh   B”.  Lúc

ở ư ng nh  sau:

ẽ ả ạ

ơ ế Alias và c  ch  gom rác t vNh   v y  đã  xu t  hi n  Alias

ệ ệ ượ này s  x y ra 2 hi n t ẽ ế v T i “vùng nh  B”, n u psA thay đ i thông tin s  làm cho  ả ng này cùng qu n

ả ổ

ộ ổ ố ượ psB thay đ i thông tin (vì c  2 đ i t ớ lý m t vùng nh )

v “Vùng nh  A” không còn đ i t

ố ượ ế ớ ng nào tham chi u t

ướ ớ ủ ơ ế ế ơ i,  ồ ộ ẽ ự ộ   đ ng  thu  h i  b   nh   (h y  vùng  ọ c  đó),  c   ch   này  g i  là  c   ch   gom

psB

psA

Vùng  nh  Bớ

Vùng  nh  Aớ

ự ộ ớ ệ ố lúc  này  h   th ng  s   t ấ ớ nh   A  đã  c p  tr  đ ng rác t

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

ằ ở

ạ ư ng cũ nh ng n m

ng gi ng y xì đ i t ể ự

ổ ả

ng  t

ự v Đôi  khi  trong  quá  trình  th c  hi n  ph n  m m  ta  có  ộ ố ố ượ ng  ra  (t o  thêm  m t  đ i  ớ ố ượ  ô nh   ố  do thay đ i thông tin trên đ i  ớ ố i  đ i  ta  hàm

ng  sao  chép  mà  không  làm  nh  h ỗ ng  g c).  C#  h

ợ tr

nhu  c u  sao  chép  đ i  t ố ượ t khác, đ  ta có th  t ượ t ượ t MemberwiseClone đ  sao chép đ i t

ưở chúng  ố ượ . ng

public PhanSo copy() { return this.MemberwiseClone() as PhanSo; }

ự ộ ơ ế Alias và c  ch  gom rác t đ ng

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

v Ví d :ụ

PhanSo psB = new PhanSo(1,4);

psB

Vùng  nh  Bớ

PhanSo psA = psB.copy();

psA

Sao chép toàn b  thông tin trong Vùng  ớ T c là ta có  ớ ứ nh  B vào vùng nh  A  ố ố ượ ng có thông tin gi ng nhau y  2 đ i t ớ ư xì  nh ng  n m  trên  2  ô  nh   hoàn  toàn  khác nhau

Vùng  nh  Aớ

ự ộ ơ ế Alias và c  ch  gom rác t đ ng

ả ổ ưở psA thay đ i không  nh h ng gì t ớ psB và ng i ượ ạ c l i

ố Khoa H  Th ng Thông Tin

ạ ọ

ế

ạ ọ Đ i H c Qu c Gia TP.HCM ậ Đ i H c Kinh T  Lu t

END