Bài giảng Kỹ thuật lập trình: Chương 4 Lớp và đối tượng do ThS Trần Duy Thanh biên soạn cung cấp cho người học các kiến thức: Lập trình truyền thống và lập trình hướng đối tượng, các khái niệm liên quan tới lớp và đối tượng, các mức truy xuất, các thành phần của lớp, thuộc tính, phương thức, operator, service method và support method,
Trang 1L p và đ i t ớp và đối tượng ống Thông Tin ượng ng
Trang 2L p trình truy n th ng và l p trình hập trình truyền thống và lập trình hướng đối ền thống và lập trình hướng đối ống và lập trình hướng đối ập trình truyền thống và lập trình hướng đối ướng đối ng đ i ống và lập trình hướng đối
Các khái ni m liên quan t i L p và Đ i tệm liên quan tới Lớp và Đối tượng ớng đối ớng đối ống và lập trình hướng đối ượngng
Thu c tính, phộc tính, phương thức ương thứcng th cức truy xuất
Alias và c ch gom rác t đ ngơng thức ế gom rác tự động ự động ộc tính, phương thức
Trang 3 Ph ương 4 ng pháp ti p c n c a l p trình truy n th ng ế Luật ật ủa lập trình truyền thống ật ền thống ống Thông Tin
L p trình tuy n tính ập trình truyền thống và lập trình hướng đối ế gom rác tự động
L p trình c u trúc ập trình truyền thống và lập trình hướng đối ất
Ưu điểm u đi m ểm
Ch ương thức ng trình rõ ràng, d hi u, d theo dõi ễ hiểu, dễ theo dõi ểu, dễ theo dõi ễ hiểu, dễ theo dõi.
T duy gi i thu t rõ ràng ư ải thuật rõ ràng ập trình truyền thống và lập trình hướng đối
Khuy t đi m ế Luật ểm
Không h tr vi c s d ng l i mã ngu n ỗ trợ việc sử dụng lại mã nguồn ợng ệm liên quan tới Lớp và Đối tượng ử dụng lại mã nguồn ụng lại mã nguồn ại mã nguồn ồn.
Khi thay đ i c u trúc d li u, ph i thay đ i gi i thu t ổi cấu trúc dữ liệu, phải thay đổi giải thuật ất ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng ải thuật rõ ràng ổi cấu trúc dữ liệu, phải thay đổi giải thuật ải thuật rõ ràng ập trình truyền thống và lập trình hướng đối
Ph i gi i quy t các m i quan h vĩ mô gi a các module ải thuật rõ ràng ải thuật rõ ràng ế gom rác tự động ống và lập trình hướng đối ệm liên quan tới Lớp và Đối tượng ữ liệu, phải thay đổi giải thuật
ph n m m trong các d án l n ần của lớp ền thống và lập trình hướng đối ự động ớng đối
Trang 4 Đ c đi m c b n ặc điểm cơ bản ểm ơng 4 ản
T p trung vào d li u thay cho các hàm ập trình truyền thống và lập trình hướng đối ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng
Ch ương thức ng trình đ ượng c chia thành các đ i t ống và lập trình hướng đối ượng ng đ c l p ộc tính, phương thức ập trình truyền thống và lập trình hướng đối
C u trúc d li u đ ất ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng ượng c thi t k sao cho đ c t đ ế gom rác tự động ế gom rác tự động ặc tả được các đối tượng ải thuật rõ ràng ượng c các đ i t ống và lập trình hướng đối ượng ng
D li u đ ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng ượng c che gi u, bao b c ất ọc
Các đ i t ống và lập trình hướng đối ượng ng trao đ i v i nhau thông qua các hàm ổi cấu trúc dữ liệu, phải thay đổi giải thuật ớng đối
Ch ương thức ng trình đ ượng c thi t k theo h ế gom rác tự động ế gom rác tự động ướng đối ng ti p c n t d ế gom rác tự động ập trình truyền thống và lập trình hướng đối ừ dưới lên ướng đối i lên
Trang 5M t s u đi m n i b t ội dung ống Thông Tin ư ểm ổi bật ật
Không có nguy c d li u b thay đ i t do trong ch ơng thức ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng ị thay đổi tự do trong chương ổi cấu trúc dữ liệu, phải thay đổi giải thuật ự động ương thức ng trình
Khi thay đ i c u trúc d li u c a m t đ i t ổi cấu trúc dữ liệu, phải thay đổi giải thuật ất ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng ủa lớp ộc tính, phương thức ống và lập trình hướng đối ượng ng, không c n ần của lớp thay đ i mã ngu n c a các đ i t ổi cấu trúc dữ liệu, phải thay đổi giải thuật ồn ủa lớp ống và lập trình hướng đối ượng ng khác.
Có th s d ng l i mã ngu n, ti t ki m tài nguyên ểu, dễ theo dõi ử dụng lại mã nguồn ụng lại mã nguồn ại mã nguồn ồn ế gom rác tự động ệm liên quan tới Lớp và Đối tượng
Phù h p v i các d án ph n m m l n, ph c t p ợng ớng đối ự động ần của lớp ền thống và lập trình hướng đối ớng đối ức truy xuất ại mã nguồn.
Trang 6Khái ni m ệm liên quan tới Lớp và Đối tượng đ i t ống Thông Tin ượng (object) trong l p trình ng ập trình truyền thống và lập trình hướng đối
hướng đối ng đ i tống và lập trình hướng đối ượngng gi ng nh m t đ i tống và lập trình hướng đối ư ộc tính, phương thức ống và lập trình hướng đối ượngng c th ụng lại mã nguồn ểu, dễ theo dõi.trong th gi i th c.ế gom rác tự động ớng đối ự động
M i đ i tỗ trợ việc sử dụng lại mã nguồn ống và lập trình hướng đối ượngng có các thu c tính và các hành vi ộc tính, phương thứcriêng
Thu c tính ội dung (attribute) mô t đ c đi m c a đ i ải thuật rõ ràng ặc tả được các đối tượng ểu, dễ theo dõi ủa lớp ống và lập trình hướng đối
Hành vi là phương thứcng th c ho t đ ng c a đ i ức truy xuất ại mã nguồn ộc tính, phương thức ủa lớp ống và lập trình hướng đối
Trang 7Ví d : Phân sụng lại mã nguồn ống và lập trình hướng đối
Đ c đi mặc tả được các đối tượng ểu, dễ theo dõi
T sử dụng lại mã nguồn ống và lập trình hướng đối
M u sẫu số ống và lập trình hướng đối
C ng, tr , nhân, chiaộc tính, phương thức ừ dưới lên
T i gi nống và lập trình hướng đối ải thuật rõ ràng
Ngh ch đ oị thay đổi tự do trong chương ải thuật rõ ràng
Trang 8Ví d : xe h iụng lại mã nguồn ơng thức
4 c aử dụng lại mã nguồn
Hi u Toyotaệm liên quan tới Lớp và Đối tượng
Ch y t iại mã nguồn ớng đối
Ch y luiại mã nguồn
…
Trang 9Đ i tống và lập trình hướng đối ượngng:
XeHoi
Hi u xeệm liên quan tới Lớp và Đối tượng
S bánh xeống và lập trình hướng đối
S c aống và lập trình hướng đối ử dụng lại mã nguồn
Ch y t iại mã nguồn ớng đối
Ch y luiại mã nguồn
Trang 10Các đ i tống và lập trình hướng đối ượngng có các đ c đi m (thu c tính và ặc tả được các đối tượng ểu, dễ theo dõi ộc tính, phương thức
m t l p đ phân bi t v i các đ i tộc tính, phương thức ớng đối ểu, dễ theo dõi ệm liên quan tới Lớp và Đối tượng ớng đối ống và lập trình hướng đối ượngng khác và d ễ hiểu, dễ theo dõi
Trang 11Nh v y ư ập trình truyền thống và lập trình hướng đối L p ớp và đối tượng là m t khái ni m tr u tộc tính, phương thức ệm liên quan tới Lớp và Đối tượng ừ dưới lên ượngng, dùng
đ ch m t t p h p các đ i tểu, dễ theo dõi ỉ một tập hợp các đối tượng có mặt trong hệ ộc tính, phương thức ập trình truyền thống và lập trình hướng đối ợng ống và lập trình hướng đối ượngng có m t trong h ặc tả được các đối tượng ệm liên quan tới Lớp và Đối tượng
th ng.ống và lập trình hướng đối
L p ớp và đối tượng có thu c tính và phộc tính, phương thức ương thứcng th c:ức truy xuất
Thu c tính c a l p t ộc tính, phương thức ủa lớp ớng đối ương thức ng ng v i thu c tính c a đ i ức truy xuất ớng đối ộc tính, phương thức ủa lớp ống và lập trình hướng đối
t ượng ng.
Ph ương thức ng th c c a l p t ức truy xuất ủa lớp ớng đối ương thức ng ng v i các hành đ ng c a ức truy xuất ớng đối ộc tính, phương thức ủa lớp
đ i t ống và lập trình hướng đối ượng ng.
Trang 12M t ộc tính, phương thức L p ớp và đối tượng có th có m t trong các kh năng sau:ểu, dễ theo dõi ộc tính, phương thức ải thuật rõ ràng.
Ho c ch có thu c tính, không có ph ặc tả được các đối tượng ỉ một tập hợp các đối tượng có mặt trong hệ ộc tính, phương thức ương thức ng th c ức truy xuất
Ho c ch có ph ặc tả được các đối tượng ỉ một tập hợp các đối tượng có mặt trong hệ ương thức ng th c, không có thu c tính ức truy xuất ộc tính, phương thức
Ho c có c thu c tính và ph ặc tả được các đối tượng ải thuật rõ ràng ộc tính, phương thức ương thức ng th c, tr ức truy xuất ường hợp này ng h p này ợng
là ph bi n nh t ổi cấu trúc dữ liệu, phải thay đổi giải thuật ế gom rác tự động ất
các l p tr u tớng đối ừ dưới lên ượngng Các l p này không có đ i ớng đối ống và lập trình hướng đối
tượngng tương thứcng ng.ức truy xuất
Trang 13Không gian tên (namespace)
M t nhóm các l p (classes) và giao di n (interfaces) ộc tính, phương thức ớng đối ệm liên quan tới Lớp và Đối tượng
đ ượng ổi cấu trúc dữ liệu, phải thay đổi giải thuật c t ch c thành m t đ n v qu n lý theo hình th c ức truy xuất ộc tính, phương thức ơng thức ị thay đổi tự do trong chương ải thuật rõ ràng ức truy xuất không gian tên g i là namespace ọc
L i ích c a namespace là t ch c s p x p l i h th ng ợng ủa lớp ổi cấu trúc dữ liệu, phải thay đổi giải thuật ức truy xuất ắt là ế gom rác tự động ại mã nguồn ệm liên quan tới Lớp và Đối tượng ống và lập trình hướng đối thông tin các l p trong d án m t cách khoa h c, giúp ớng đối ự động ộc tính, phương thức ọc cho vi c theo dõi b o trì d án đ ệm liên quan tới Lớp và Đối tượng ải thuật rõ ràng ự động ượng ống và lập trình hướng đối c t t nh t ất
Trang 14Tính tr u từ dưới lên ượngng:
L p (Class) là m t khái ni m tr u t ớng đối ộc tính, phương thức ệm liên quan tới Lớp và Đối tượng ừ dưới lên ượng ng, đ i t ống và lập trình hướng đối ượng ng là
m t th hi n c th c a l p ộc tính, phương thức ểu, dễ theo dõi ệm liên quan tới Lớp và Đối tượng ụng lại mã nguồn ểu, dễ theo dõi ủa lớp ớng đối
Ví d : ụng lại mã nguồn.
B n thi t k c a chi c xe h i là l p ải thuật rõ ràng ế gom rác tự động ế gom rác tự động ủa lớp ế gom rác tự động ơng thức ớng đối
Chi c xe h i đ ế gom rác tự động ơng thức ượng ại mã nguồn c t o ra t b n thi t k là đ i t ừ dưới lên ải thuật rõ ràng ế gom rác tự động ế gom rác tự động ống và lập trình hướng đối ượng ng.
Class
Object
Trang 15Tính tr u từ dưới lên ượngng:
T nh ng đ i t ừ dưới lên ữ liệu, phải thay đổi giải thuật ống và lập trình hướng đối ượng ng gi ng nhau: tr u t ống và lập trình hướng đối ừ dưới lên ượng ng hóa thành
m t l p: ộc tính, phương thức ớng đối
Ch đ a ra các thu c tính và ph ỉ một tập hợp các đối tượng có mặt trong hệ ư ộc tính, phương thức ương thức ng th c c n thi t c a ức truy xuất ần của lớp ế gom rác tự động ủa lớp
đ i t ống và lập trình hướng đối ượng ng trong l p trình ập trình truyền thống và lập trình hướng đối
Ví d : ụng lại mã nguồn
Class Objects
Trừu tượng hóa
Trang 16Tính đóng gói:
M i l p đ ỗ trợ việc sử dụng lại mã nguồn ớng đối ượng c xây d ng đ th c hi n m t nhóm ch c ự động ểu, dễ theo dõi ự động ệm liên quan tới Lớp và Đối tượng ộc tính, phương thức ức truy xuất năng đ c tr ng c a riêng l p đó ặc tả được các đối tượng ư ủa lớp ớng đối
T t c m i thao tác truy xu t vào thành ph n d li u ất ải thuật rõ ràng ọc ất ần của lớp ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng
t đ i t ừ dưới lên ống và lập trình hướng đối ượng ng này qua đ i t ống và lập trình hướng đối ượng ng khác ph i đ ải thuật rõ ràng ượng c th c ự động
hi n b i các ph ệm liên quan tới Lớp và Đối tượng ởi các phương thức (method) của chính đối ương thức ng th c (method) c a chính đ i ức truy xuất ủa lớp ống và lập trình hướng đối
t ượng ng ch a d li u ức truy xuất ữ liệu, phải thay đổi giải thuật ệm liên quan tới Lớp và Đối tượng
Tính đóng gói cho phép d u thông tin c a đ i t ất ủa lớp ống và lập trình hướng đối ượng ng
b ng cách k t h p thông tin và các ph ằng cách kết hợp thông tin và các phương thức liên ế gom rác tự động ợng ương thức ng th c liên ức truy xuất quan đ n thông tin trong đ i t ế gom rác tự động ống và lập trình hướng đối ượng ng.
Trang 17Tính đóng gói:
Ví d : ụng lại mã nguồn.
ngungXe() chayToi() chayLui() kiemTraXang()
Trang 18Tính k th a:ế gom rác tự động ừ dưới lên
đ nh nghĩa c a m t l p đã có ị thay đổi tự do trong chương ủa lớp ộc tính, phương thức ớng đối
L p con k th a t t c các thành ph n c a l p ớng đối ế gom rác tự động ừ dưới lên ất ải thuật rõ ràng ần của lớp ủa lớp ớng đối Cha, có th m r ng các thành ph n k th a và ểu, dễ theo dõi ởi các phương thức (method) của chính đối ộc tính, phương thức ần của lớp ế gom rác tự động ừ dưới lên
b sung thêm các thành ph n m i.ổi cấu trúc dữ liệu, phải thay đổi giải thuật ần của lớp ớng đối
Khái ni m này sẽ trình bày chi ti t chệm liên quan tới Lớp và Đối tượng ế gom rác tự động ởi các phương thức (method) của chính đối ương thứcng sau
Trang 19Tính k th a:ế gom rác tự động ừ dưới lên
Ví d : ụng lại mã nguồn.
Trang 20Quy t c đ t tên L p trong C#ắt là ặc tả được các đối tượng ớng đối
Tên l p nên là m t danh tớng đối ộc tính, phương thức ừ dưới lên
Tên l p có th g m nhi u t , ký t đ u tiên c a ớng đối ểu, dễ theo dõi ồn ền thống và lập trình hướng đối ừ dưới lên ự động ần của lớp ủa lớp
m i t nên vi t hoaỗ trợ việc sử dụng lại mã nguồn ừ dưới lên ế gom rác tự động
Tên l p nên đ t đ n gi n, d nh , và có ý nghĩaớng đối ặc tả được các đối tượng ơng thức ải thuật rõ ràng ễ hiểu, dễ theo dõi ớng đối
Tên l p không th b t đ u b ng s ớng đối ểu, dễ theo dõi ắt là ần của lớp ằng cách kết hợp thông tin và các phương thức liên ống và lập trình hướng đối
Trong m t d án th c t làm sao xác đ nh ộc tính, phương thức ự động ự động ế gom rác tự động ị thay đổi tự do trong chương
đ ượng c các L p, các đ i t ớng đối ống và lập trình hướng đối ượng ng, thu c tính và ộc tính, phương thức
ph ương thức ng th c c a đ i t ức truy xuất ủa lớp ống và lập trình hướng đối ượng ng???
Trang 22Đ nh nghĩa l p Phân S :ị thay đổi tự do trong chương ớng đối ống và lập trình hướng đối
{ //khai báo biến lớp int tuSo;
int mauSo;
thức
}
Trang 23public class PhanSo
{ public int TuSo {
get;
set;
} public int MauSo {
get;
set;
} public override string ToString()
{ return this.TuSo+ "/" +this.MauSo;
} }
Không c n khai báo thu c tính, s d ng tr c ti p ần của lớp ộc tính, phương thức ử dụng lại mã nguồn ụng lại mã nguồn ự động ế gom rác tự độngProperties:
Trang 24TenLop tenBien = new TenLop();
Ví d :ụng lại mã nguồn
PhanSo psA = new PhanSo();
XeHoi xeHoiB = new XeHoi();
T khóa ừ dưới lên new dùng đ c p phát b nh cho đ i ểu, dễ theo dõi ất ộc tính, phương thức ớng đối ống và lập trình hướng đối
tượngng psA và xeHoiB là 2 bi n đ i tế gom rác tự động ống và lập trình hướng đối ượngng tr t i ỏ tới ớng đối
2 vùng nh đớng đối ượng ấtc c p phát trong thanh RAM
psA
xeHoiB
RAM
Trang 26L u tr tình tr ng c a đ i tư ữ liệu, phải thay đổi giải thuật ại mã nguồn ủa lớp ống và lập trình hướng đối ượngng
S d ng cách khai báo bi n thông thử dụng lại mã nguồn ụng lại mã nguồn ế gom rác tự động ường hợp này ng
Ví dụng lại mã nguồn
public int tuSo;
private int mauSo
protected int soBanhXe;
Truy xu t bi n l p:ất ế gom rác tự động ớng đối
tenDoiTuong.bienLop
Trang 27Các hàm bên trong l pớng đối
Mô t ho t đ ng c a đ i tải thuật rõ ràng ại mã nguồn ộc tính, phương thức ủa lớp ống và lập trình hướng đối ượngng
Trang 28đ i t ống và lập trình hướng đối ượng ng c th ụng lại mã nguồn ểu, dễ theo dõi.
Có th truy c p trong b n thân l p ểu, dễ theo dõi ập trình truyền thống và lập trình hướng đối ải thuật rõ ràng ớng đối
Đ ượng c truy c p tr c ti p t tên l p ập trình truyền thống và lập trình hướng đối ự động ế gom rác tự động ừ dưới lên ớng đối
Ph ương thức ng th c static ch truy c p đ ức truy xuất ỉ một tập hợp các đối tượng có mặt trong hệ ập trình truyền thống và lập trình hướng đối ượng c nh ng thành ữ liệu, phải thay đổi giải thuật viên static c a l p ủa lớp ớng đối
Truy c p: ập trình truyền thống và lập trình hướng đối
Có th hi u static là ô nh chia s chung, khi bi n ểu, dễ theo dõi ểu, dễ theo dõi ớng đối ẻ chung, khi biến ế gom rác tự động
static thay đ i giá tr thì toàn b các đ i t ổi cấu trúc dữ liệu, phải thay đổi giải thuật ị thay đổi tự do trong chương ộc tính, phương thức ống và lập trình hướng đối ượng ng đ u ền thống và lập trình hướng đối
th y s thay đ i này ất ự động ổi cấu trúc dữ liệu, phải thay đổi giải thuật
Trang 29Kh i t o giá tr ban đ u cho đ i tởi các phương thức (method) của chính đối ại mã nguồn ị thay đổi tự do trong chương ần của lớp ống và lập trình hướng đối ượngng khi khai
báo
Không khai báo ki u tr vểu, dễ theo dõi ải thuật rõ ràng ền thống và lập trình hướng đối
{ public TenLop() {
.
} }