



















Preview text:
lOMoARcPSD|50730876
Lập trình Hướng đối tượng MỤC LỤC
Chương 1. Tổng quan về lập trình hướng đối tượng ......................................................... 7
Phương pháp tiếp cận của lập trình truyền thống ....................................... 7
Lập trình tuyến tính .................................................................................... 7
Lập trình cấu trúc ....................................................................................... 8
Phương pháp tiếp cận lập trình hướng đối tượng ....................................... 9
Các ặc trưng của lập trình hướng đối tượng ........................................... 10
Tính óng gói dữ liệu ............................................................................... 10
Tính kế thừa .............................................................................................. 10
Tính a hình ............................................................................................. 11
Trừu tượng hóa ............................................................................................. 11
Tổ chức trừu tượng theo sự phân cấp lớp ................................................ 11
Trừu tượng hóa – cơ sở của phát triển phần mềm ................................... 13
Xu hướng phát triển của lập trình hướng đối tượng ................................. 14
Lập trình hướng thành phần .................................................................... 14
Lập trình hướng tác nhân ......................................................................... 14
Lập trình hướng khía cạnh ....................................................................... 15
Chương 2. Ngôn ngữ lập trình C# ..................................................................................... 17
Tổng quan Ngôn ngữ C# .............................................................................. 17
Ngôn ngữ ra đời cùng với .NET ............................................................... 17
C# – mạnh mẽ & bền vững ....................................................................... 17
Vai trò C# trong .NET Framework .......................................................... 18
Quá trình dịch CT C# ............................................................................... 18 Trang 1 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
Quá trình dịch chương trình C# ............................................................... 18
Các loại ứng dụng C#.................................................................................... 19
Ứng dụng Console .................................................................................... 19
Ứng dụng Windows Form ........................................................................ 20
Ứng dụng Web .......................................................................................... 20
Cấu trúc một chương trình C# .................................................................... 21
Cú pháp C# cơ bản ....................................................................................... 24
Kiểu dữ liệu của C# ....................................................................................... 27
Kiểu giá trị – value type ........................................................................... 27
Kiểu tham chiếu – reference type ............................................................. 28
Kiểu con trỏ – pointer type ....................................................................... 29
Cách chuyển kiểu dữ liệu (Type Conversion) trong C# ........................... 30
Một số phương thức chuyển kiểu được xây dựng sẵn .............................. 31
Biến trong C# ................................................................................................. 31
Khai báo biến ........................................................................................... 32
Khởi tạo biến ............................................................................................ 33
Nhận giá trị dữ liệu từ việc nhập liệu của user: ...................................... 34
Hằng trong C# ............................................................................................... 34
Định nghĩa hằng trong C# ....................................................................... 35
Hằng số nguyên trong C# ........................................................................ 36 Trang 2 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
Hằng số thực trong C# ............................................................................. 36
Hằng ký tự trong C# ................................................................................. 37
Hằng chuỗi trong C# ................................................................................ 38
Toán tử trong C# ........................................................................................... 38
Toán tử số học .......................................................................................... 38
Toán tử quan hệ ........................................................................................ 39
Toán tử logic ............................................................................................ 41
Toán tử trên bit ......................................................................................... 42
Toán tử gán .............................................................................................. 43
Toán tử hỗn hợp ....................................................................................... 45
Độ ưu tiên của toán tử .............................................................................. 46
Các câu lệnh iều kiện trong C# .................................................................. 47
Cấu trúc rẽ nhánh .................................................................................... 48
Vòng lặp ................................................................................................... 53
Lệnh iều khiển break và continue ........................................................... 60
Chương 3. Lớp và đối tượng .............................................................................................. 62
Class, trừu tượng hóa, lập trình hướng đối tượng ..................................... 62
Class và trừu tượng hóa ........................................................................... 62
Object và cụ thể hóa ................................................................................. 62
Class trong lập trình hướng đối tượng và C# ............................................. 63 Trang 3 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
Khai báo lớp ............................................................................................. 63
Biến thành viên ......................................................................................... 66
Một số vấn ề khi sử dụng biến thành viên .............................................. 70
Phương thức thành viên ........................................................................... 72
Tham số của phương thức trong C#: value type và reference type ......... 75
Tham số out .............................................................................................. 78
Tham số tùy chọn...................................................................................... 81
Tham số params ....................................................................................... 83
Nạp chồng phương thức (method overloading) trong C# ......................... 85
Nạp chồng phương thức trong C# là gì? ................................................. 85
Signature của phương thức trong C# ....................................................... 86
Một số vấn ề khác của phương thức trong C# ......................................... 87
Phương thức với Expression body ........................................................... 87
Named Arguments .................................................................................... 88
Properties ....................................................................................................... 89
Property trong C# là gì? .......................................................................... 89
Auto property trong C# ............................................................................ 93
Full property trong C# ............................................................................. 96
Hàm dựng trong C# và khởi tạo đối tượng ................................................ 99
Xây dựng hàm dựng cho class C# .......................................................... 100 Trang 4 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
Khởi tạo object với constructor.............................................................. 102
Khởi tạo object với property .................................................................. 102
Một số vấn ề khác với constructor trong C# .......................................... 104
Default constructor trong class C# ........................................................ 104
Chuỗi constructor trong class C#, constructor initializer ..................... 104
Vấn ề khởi tạo và sử dụng object ............................................................ 106
Quan hệ class và object .......................................................................... 106
Khai báo và khởi tạo object ................................................................... 106
Truy xuất các thành viên của object ...................................................... 107
Từ khóa this ............................................................................................ 108
Lớp lồng nhau.............................................................................................. 109
Nested types ................................................................................................. 112
Thành viên Static ........................................................................................ 114
Biến tĩnh (static field) .................................................................................. 114
Phương thức tĩnh (static method) .............................................................. 117
Hàm dựng tĩnh (static constructor) ........................................................... 120
Đặc tính tĩnh (static property) ................................................................... 121
Lớp tĩnh (static class) .................................................................................. 122
Extension method ........................................................................................ 124
Chương 4. Kế thừa và a hình trong C# ........................................................................ 127
Kế thừa ......................................................................................................... 127
Đặc iểm của kế thừa ............................................................................. 129 Trang 5 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
Lớp Object và kế thừa ............................................................................ 131
Quan hệ giữa kế thừa và a hình ........................................................... 132
Che giấu phương thức ................................................................................ 134
Ghi è phương thức .................................................................................... 136
Lớp trừu tượng và kế thừa ......................................................................... 138
Lớp và trừu tượng hóa ........................................................................... 138
Lớp trừu tượng ....................................................................................... 139
Phương thức trừu tượng ......................................................................... 140
Interface trong C# ....................................................................................... 141
Quan hệ phụ thuộc giữa các class ......................................................... 141
Khái niệm interface ................................................................................ 142
Kỹ thuật lập trình với Interface .............................................................. 145
Thực thi interface ................................................................................... 146
Sử dụng interface ................................................................................... 148
Partial class trong C# .................................................................................. 151
Khái niệm partial class .......................................................................... 151
Sử dụng partial class trong C# project .................................................. 152
Một số vấn ề khi sử dụng partial class trong C# ................................. 153
Partial method trong C# ............................................................................. 154
Khái niệm partial method ....................................................................... 154 Trang 6 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
Sử dụng partial method .......................................................................... 155
Các lưu ý khi sử dụng partial method .................................................... 157
Chương 5. Nạp chồng toán tử .......................................................................................... 159
Khái niệm nạp chồng toán tử ................................................................. 159
Cách nạp chồng toán tử ......................................................................... 159
Một số lưu ý khi nạp thực hiện chồng toán tử ........................................ 162
Nạp chồng phép toán indexer ................................................................ 163
Cú pháp nạp chồng indexer ................................................................... 164
Nạp chồng toán tử indexer cho lớp Vector ............................................ 165
Chương 6. Xử lý ngoại lệ .................................................................................................. 168
Khái niệm exception ................................................................................... 168
Cơ chế xử lý exception trong C# ............................................................ 168
Kỹ thuật xử lý ngoại lệ (Exception Handling) trong C# ........................ 169
Exception và chế ộ Debug trong C# .................................................... 169
Xử lý ngoại lệ ở chế ộ Release ............................................................. 171
Cấu trúc try – catch - finally ...................................................................... 171 Trang 7 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ CHƯƠNG 1.
TỔNG QUAN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Nội dung chương này nhằm giới thiệu một cách tổng quan về cách tiếp cận hướng
đối tượng. Nội dung trình bày bao gồm:
• Giới thiệu về cách tiếp cận của lập trình truyền thống.
• Giới thiệu cách tiếp cận của lập trình hướng đối tượng.
• Sự trừu tượng hóa là cơ sở của phát triển phần mềm hướng đối tượng.
• Nêu các ặc trưng của lập trình hướng đối tượng.
• Xu hướng hiện nay của lập trình hướng đối tượng. Phương pháp tiếp
cận của lập trình truyền thống
Lập trình truyền thống ã trải qua hai giai oạn:
• Giai oạn sơ khai, khi khái niệm lập trình mới ra ời, là lập trình tuyến tính.
• Giai oạn tiếp theo, là lập trình hướng cấu trúc.
Lập trình tuyến tính
Đặc trưng cơ bản của lập trình tuyến tính là tư duy theo lối tuần tự. Chương trình
sẽ được thực hiện tuần tự từ ầu ến cuối, lệnh này kế tiếp lệnh kia cho ến khi kết thúc chương trình. Đặc trưng
Lập trình tuyến tính có hai ặc trưng:
• Đơn giản: chương trình được tiến hành ơn giản theo lối tuần tự, không phức tạp. Trang 8 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
• Đơn luồng: chỉ có một luồng (thread) công việc duy nhất, và các công việc được
thực hiện tuần tự trong luồng ó. Tính chất
• Ưu iểm: Do tính ơn giản, lập trình tuyến tính có ưu iểm là chương trình ơn giản,
dễ hiểu. Lập trình tuyến tính được ứng dụng cho các chương trình ơn giản.
• Nhược iểm: Với các ứng dụng phức tạp, người ta không thể dùng lập trình tuyến tính ể giải quyết.
• Ngày nay, lập trình tuyến tính chỉ tồn tại trong phạm vi các mô un nhỏ nhất của
các phương pháp lập trình khác. Ví dụ trong một chương trình con của lập trình
cấu trúc, các lệnh cũng được thực hiện theo tuần tự từ ầu ến cuối chương trình con.
Lập trình cấu trúc
Trong lập trình hướng cấu trúc, chương trình chính được chia nhỏ thành các
chương trình con và mỗi chương trình con thực hiện một công việc xác ịnh. Chương
trình chính sẽ gọi ến chương trình con theo một giải thuật, hoặc một cấu trúc được xác
ịnh trong chương trình chính.
Các ngôn ngữ lập trình cấu trúc phổ biến là Pascal, C và C++. Riêng C++ ngoài
việc có ặc trưng của lập trình cấu trúc do kế thừa từ C, còn có ặc trưng của lập trình
hướng đối tượng. Cho nên C++ còn được gọi là ngôn ngữ lập trình nửa cấu trúc, nửa hướng đối tượng. Trang 9 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ Đặc trưng
Đặc trưng cơ bản nhất của lập trình cấu trúc thể hiện ở mối quan hệ:
Chương trình = CTDL + Giải thuật Trong ó:
• CTDL là cách tổ chức dữ liệu, cách mô tả bài toán dưới dạng ngôn ngữ lập trình
• Giải thuật là một quy trình ể thực hiện một công việc xác ịnh Trong chương
trình, giải thuật có quan hệ phụ thuộc vào CTDL:
• Một CTDL chỉ phù hợp với một số hạn chế các giải thuật.
• Nếu thay ổi CTDL thì phải thay ổi giải thuật cho phù hợp.
• Một giải thuật thường phải i kèm với một CTDL nhất ịnh. Tính chất
• Mỗi chương trình con có thể được gọi thực hiện nhiều lần trong một chương trình chính.
• Các chương trình con có thể được gọi ến ể thực hiện theo một thứ tự bất kỳ, tuỳ
thuộc vào giải thuật trong chương trình chính mà không phụ thuộc vào thứ tự
khai báo của các chương trình con.
• Các ngôn ngữ lập trình cấu trúc cung cấp một số cấu trúc lệnh iều khiển chương trình. Ưu iểm
• Chương trình sáng sủa, dễ hiểu, dễ theo dõi. Trang 10 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
• Tư duy giải thuật rõ ràng. Nhược iểm
• Lập trình cấu trúc không hỗ trợ việc sử dụng lại mã nguồn: Giải thuật luôn phụ
thuộc chặt chẽ vào CTDL, do ó, khi thay ổi CTDL, phải thay ổi giải thuật, nghĩa
là phải viết lại chương trình.
• Không phù hợp với các phần mềm lớn: tư duy cấu trúc với các giải thuật chỉ
phù hợp với các bài toán nhỏ, nằm trong phạm vi một mô un của chương trình.
Với dự án phần mềm lớn, lập trình cấu trúc tỏ ra không hiệu quả trong việc giải
quyết mối quan hệ vĩ mô giữa các mô un của phần mềm. Vấn ề
Vấn ề cơ bản của lập trình cấu trúc là bằng cách nào ể phân chia chương trình
chính thành các chương trình con cho phù hợp với yêu cầu, chức năng và mục ích của mỗi bài toán.
Phương pháp tiếp cận lập trình hướng đối tượng
Xuất phát từ hai hạn chế chính của phương pháp lập trình cấu trúc:
• Không quản lý được sự thay ổi dữ liệu khi có nhiều chương trình cùng thay ổi
một biến chung. Vấn ề này ặc biệt nghiêm trọng khi các ứng dụng ngày càng
lớn, người ta không thể kiểm soát được sự truy nhập ến các biến dữ liệu chung.
• Không tiết kiệm được tài nguyên con người: Giải thuật gắn liền với CTDL, nếu
thay ổi CTDL, sẽ phải thay ổi giải thuật, và do ó, phải viết lại mã chương trình từ ầu. Trang 11 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
Để khắc phục được hai hạn chế này khi giải quyết các bài toán lớn, người ta xây
dựng một phương pháp tiếp cận mới, là phương pháp lập trình hướng đối tượng, với hai mục ích chính:
• Đóng gói dữ liệu ể hạn chế sự truy nhập tự do vào dữ liệu, không quản lý ược.
• Cho phép sử dụng lại mã nguồn, hạn chế việc phải viết lại mã từ ầu cho các chương trình.
Ngôn ngữ lập trình hướng đối tượng phổ biến hiện nay là Java và C++. Tuy nhiên,
C++ mặc dù cũng có những ặc trưng cơ bản của lập trình hướng đối tượng nhưng vẫn
không phải là ngôn ngữ lập trình thuần hướng đối tượng. Java thật sự là một ngôn ngữ
lập trình thuần hướng đối tượng.
Các ặc trưng của lập trình hướng đối tượng
Tính óng gói dữ liệu
Dữ liệu luôn được tổ chức thành các thuộc tính của lớp đối tượng. Việc truy nhập
ến dữ liệu phải thông qua các phương thức của đối tượng lớp.
Trong một đối tượng, dữ liệu hay thao tác hay cả hai có thể là riêng (private) hoặc
chung (public) của đối tượng ó. Thao tác hay dữ liệu riêng là thuộc về đối tượng ó chỉ
được truy cập bởi các thành phần của đối tượng, iều này nghĩa là thao tác hay dữ liệu
riêng không thể truy cập bởi các phần khác của chương trình tồn tại ngoài đối tượng.
Khi thao tác hay dữ liệu là chung, các phần khác của chương trình có thể truy cập nó
mặc dù nó được ịnh nghĩa trong một đối tượng. Các thành phần chung của một đối Trang 12 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
tượng dùng ể cung cấp một giao tiếp có iều khiển cho các thành thành riêng của đối tượng.
Cơ chế óng gói (encapsulation) là phương thức tốt ể thực hiện cơ chế che dấu
thông tin so với các ngôn ngữ lập trình cấu trúc. Tính kế thừa
Một thế mạnh khác của lập trình hướng đối tượng là cho phép sử dụng lại mã
nguồn. Việc cho phép sử dụng lại mã nguồn được thực hiện thông qua cơ chế kế thừa
trong lập trình hướng đối tượng. Theo ó, các lớp có thể được kế thừa nhau ể tận dụng
các thuộc tính, các phương thức của nhau. Trong lớp dẫn xuất (lớp kế thừa) có thể sử
dụng lại các phương thức của lớp cơ sở (lớp bị lớp khác kế thừa) mà không cần thiết
phải cài ặt lại mã nguồn. Ngay cả khi lớp dẫn xuất ịnh nghĩa lại các phương thức cho
mình, lớp cơ sở cũng không bị ảnh hưởng và không phải sửa lại bất kỳ một oạn mã nguồn nào. Tính a hình
Khả năng ể cho một thông iệp có thể thay ổi cách thực hiện của nó theo lớp cụ thể
của đối tượng nhận thông iệp. Khi một lớp dẫn xuất được tạo ra, nó có thể thay ổi cách
thực hiện các phương thức nào ó mà nó thừa hưởng từ lớp cơ sở của nó. Một thông iệp
khi được gởi ến một đối tượng của lớp cơ sở, sẽ dùng phương thức ã ịnh nghĩa cho nó
trong lớp cơ sở. Nếu một lớp dẫn xuất ịnh nghĩa lại một phương thức thừa hưởng từ lớp
cơ sở của nó thì một thông iệp có cùng tên với phương thức này, khi được gởi tới một
đối tượng của lớp dẫn xuất sẽ gọi phương thức ã ịnh nghĩa cho lớp dẫn xuất. Trang 13 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
Như vậy a hình (polymorphism) là khả năng cho phép gởi cùng một thông iệp ến
những đối tượng khác nhau có cùng chung một ặc iểm, nói cách khác thông iệp được
gởi i không cần biết thực thể nhận thuộc lớp nào, chỉ biết rằng tập hợp các thực thể nhận
có chung một tính chất nào ó. Chẳng hạn, thông iệp vẽ hình được gởi ến cả hai đối tượng
hình hộp và hình tròn. Trong hai đối tượng này ều có chung phương thức vẽ hình, tuy
nhiên tuỳ theo thời iểm mà đối tượng nhận thông iệp, hình tương ứng sẽ được vẽ lên. Trừu tượng hóa
Tổ chức trừu tượng theo sự phân cấp lớp
Thậm chí mặc dù con người giỏi ở sự trừu tượng các khái niệm như bản ồ ường i
và cảnh quan, vẫn còn số lượng rất lớn các công việc trừu tượng hoá riêng lẻ mà chúng
ta thường gặp trong cuộc sống. Để đối phó sự phức tạp này con người phải sắp xếp
thông tin một cách có hệ thống theo các tiêu chuẩn nào ó; Xử lý này gọi là sự phân lớp (classification).
Ví dụ như khoa học ã phân cấp theo lớp tất cả đối tượng tự nhiên thuộc về ộng vật,
hoặc cây, hoặc khoáng sản. Để được phân là ộng vật, nó phải thoả iều kiện sau: • Vật thể sống. • Tự di chuyển.
• Phản ứng khi bị kích thích.
Qui luật cho một đối tượng là cây thì hơi khác:
• Vật thể sống (như ộng vật). Trang 14 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
• Không có hệ thần kinh. • Có màn cellulose.
Sau khi phân lớp ơn giản như trên ta có thể thêm vài qui luật ể có các loại ộng vật
cụ thể hơn cho ến khi có một sự phân cấp theo sự trừu tượng từ cao ( ỉnh) xuống thấp (
áy). Sơ ồ phân cấp trừu tượng của các đối tượng tự nhiên được thể hiện như hình 1.1.
Hình 1-1. Sơ ồ phân cấp trừu tượng các đối tượng tự nhiên Trang 15 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
Trừu tượng hóa – cơ sở của phát triển phần mềm
Khi ghi nhận các yêu cầu cho một dự án phần mềm, chúng ta thường bắt ầu bằng
cách thu thập thông tin chi tiết về tình hình thực tế mà trên ó hệ thống sẽ hoạt ộng.
Những chi tiết này thường là một sự tổng hợp của
• Thông tin từ những người sử dụng hệ thống được chúng ta phỏng vấn.
• Những hoạt ộng mà chúng ta quan sát từ nghiệp vụ hàng ngày của người sử dụng hệ thống.
Kế ến chúng ta phải chọn lọc ra những chi tiết nào liên quan tới mục ích sử dụng
hệ thống. Việc này là cần thiết vì chúng ta không thể tự ộng hoá tất cả hệ thống nghiệp
vụ bằng phần mềm! Việc bao gồm quá nhiều chi tiết sẽ làm hệ thống phức tạp và khó
khăn hơn trong việc thiết kế, kiểm tra chương trình, dò lỗi, tạo sưu liệu, bảo trì và mở
rộng chương trình sau này.
Sự trừu tưởng hoá sẽ giúp người phân tích hệ thống có được các nét ặc trưng của
hệ thống trong miền (domain) bài toán, tập trung vào vấn ề của hệ thống dự ịnh phát
triển. Như khi thể hiện một người trong chương trình, màu mắt của họ có quan trọng
không? Về gen ? Lương ? Sở thích ? Câu trả lời là bất kỳ ặc tính nào của người có thể
liên quan hay không liên quan tuỳ thuộc vào hệ thống mà ta ịnh phát triển là:
• Chương trình tính lương
• Chương trình tiếp thị theo tuổi tác
• CSDL bệnh nhân nhãn khoa
• Hệ thống theo dõi những kẻ bị truy nã Trang 16 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
Một khi ã xác ịnh các ặc trưng quan trọng của một tình huống, ta cần chuẩn bị một
mô hình hoá cho nó. Mô hình hoá là xử lý nhằm phát triển một khuôn mẫu ể tạo ra một
thứ gì ó; ví dụ như bản thiết kế ngôi nhà, sơ ồ mạch iện, một khuôn bánh. Một mô hình
đối tượng của hệ thống phần mềm là một mẫu như vậy. Mô hình hoá và trừu tượng hoá
luôn i với nhau vì một mô hình là sự mô tả ồ hoạ hay vật lý của trừu tượng; Trước khi
mô hình vật gì ó một cách có hiệu quả, ta phải xác ịnh các chi tiết cần thiết của chủ thể
cần được mô hình.
Xu hướng phát triển của lập trình hướng đối tượng
Lập trình hướng thành phần
Lập trình hướng thành phần (Component-oriented programming-COP) xuất phát
từ lập trình hướng đối tượng, tư duy lập trình hướng thành phần theo ý tưởng:
• Giải quyết bài toán bằng cách xây dựng một tập các thành phần (component)
có tính ộc lập tương đối với nhau. Mỗi thành phần ảm nhiệm một phần công việc nhất ịnh.
• Sau ó, người ta ghép các thành phần với nhau ể thu được một phần mềm thoả
mãn một tập các yêu cầu xác ịnh.
Với lập trình hướng thành phần, người ta có thể tiến hành lập trình theo phương pháp sau:
• Xây dựng một thư viện các thành phần, mỗi thành phần thực hiện một công việc xác ịnh. Trang 17 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
• Khi cần phát triển một phần mềm cụ thể, người ta chỉ cần chọn những thành
phần có sẵn trong thư viện ể ghép lại với nhau. Người lập trình chỉ phải phát
triển thêm các thành phần mình cần mà chưa có trong thư viện.
Phương pháp này có những ưu iểm rất lớn:
• Lập trình viên có thể chia sẻ với nhau những thành phần mình ã xây dựng cho
nhiều người khác dùng chung.
• Khi cần, lập trình viên có thể lắp ghép các thành phần có sẵn khác nhau ể tạo
thành các chương trình có chức năng khác nhau. Tất cả chỉ cần dựa trên công
nghệ lắp ghép thành phần, tiết kiệm được rất nhiều công sức lập trình.
Trong xu hướng lập trình hướng thành phần, một số phương pháp lập trình khác ã
nảy sinh và ang phát triển mạnh mẽ:
• Lập trình hướng tác nhân (Agent-Oriented Programming)
• Lập trình hướng khía cạnh (Aspect-Oriented Programming-AOP) Lập
trình hướng tác nhân
Lập trình hướng agent có thể xem là một mức trừu tượng cao hơn của lập trình hướng thành phần.
Trong ó, các agent là các thành phần có khả năng hoạt ộng ộc lập, tự chủ ể hoàn
thành công việc của mình. Hơn nữa, các agent có khả năng chủ ộng liên lạc với các
agent khác ể có thể phối hợp, cộng tác hay cạnh tranh nhau ể hoàn thành nhiệm vụ.
Lập trình hướng agent có hai ặc trưng cơ bản: Trang 18 lOMoARcPSD|50730876
Lập trình Hướng đối tượng
• Thứ nhất là khả năng tự chủ của mỗi agent ể hoàn thành nhiệm vụ riêng của nó.
• Thứ hai là tính tổ chức xã hội giữa các agent, cho phép các agent phối hợp,
cộng tác, cạnh tranh nhau ể hoàn thành nhiệm vụ chung của toàn hệ thống.
Lập trình hướng khía cạnh
Phương pháp lập trình hướng khía cạnh là phương pháp lập trình phát triển tư duy
tách biệt các mối quan tâm khác nhau thành các mô un khác nhau. Ở ây, một mối quan
tâm thường không phải một chức năng nghiệp vụ cụ thể và có thể óng gói mà là một
khía cạnh (thuộc tính) chung mà nhiều mô un phần mềm trong cùng hệ thống nên có, ví
dụ lưu vết thao tác và lỗi (error logging).
Với AOP, chúng ta có thể cài ặt các mối quan tâm chung cắt ngang hệ thống bằng
các mô un ặc biệt gọi là aspect thay vì dàn trải chúng trên các mô un nghiệp vụ liên
quan. Các aspect sau ó được tự kết hợp với các mô un nghiệp vụ khác bằng quá trình
gọi là an (weaving) bằng bộ biên dịch ặc biệt.
AspectJ là một công cụ AOP cho ngôn ngữ lập trình Java. Trình biên dịch AspectJ
sẽ an xen chương trình Java chính với các aspect thành các tập tin bytecode chạy trên máy ảo Java.
TỔNG KẾT CHƯƠNG 1
Nội dung chương 1 ã trình bày các vấn ề tổng quan liên quan ến phương pháp tiếp
cận hướng đối tượng trong lập trình: Trang 19 lOMoARcPSD|50730876
Trung tâm Tin học – Ngoại ngữ
• Các phương pháp tiếp cận truyền thống: lập trình tuyến tính và lập trình cấu trúc.
• Phương pháp tiếp cận hướng đối tượng với các ặc trưng cơ bản: óng gói dữ liệu,
tính a hình và sử dụng lại mã nguồn.
• Lập trình hướng đối tượng trên nền tảng là trừu tượng hoá là cơ sở lập trình hiện ại.
• Hiện nay, lập trình hướng thành phần, lập trình hướng agent và lập trình hướng
aspect tiến hoá từ lập trình hướng đối tượng ang là xu hướng phát triển mạnh mẽ.
❖ BÀI TẬP
1. Vẽ một sơ ồ phân cấp lớp cho các lớp sau ây: táo, chuối, thịt bò, nước giải khát, phó
mát, thứ có thể ăn uống, sản phẩm bơ sửa, ồ ăn, trái cây, ậu xanh, thịt, sửa, thịt heo, rau muống, rau.
2. Những ặc iểm nào của tivi mà chúng cần thiết ể được trừu tượng từ góc nhìn của • Một khách hàng?
• Một kỹ sư thiết kế? • Người bán? • Nhà sản xuất? CHƯƠNG 2.
NGÔN NGỮ LẬP TRÌNH C#
Tổng quan Ngôn ngữ C#
C # là một ngôn ngữ lập trình hiện ại được phát triển bởi Microsoft và được phê
duyệt bởi European Computer Manufacturers Association (ECMA) và International Trang 20