Bài 1 C Sharp và kiến trúc .NET .C# cơ bảnBài 2: Lập trình hướng đối tượng trong C#
C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 1 1 C# and .NET Framework C# and .NET Framework B B à à i 1: i 1: C Sharp C Sharp v v à à k k i i ế ế n n tr tr ú ú c c .NET. .NET. C# C# cơ cơ b b ả ả n n Đo Đo à à n Quang Minh n Quang Minh minhdqtt@gmail.com minhdqtt@gmail.com http http ://www.VTPortal.net ://www.VTPortal.net Last update: Last update: 30. 30. December December 2006 2006 C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 2 2 M M ụ ụ c l c l ụ ụ c c M M ố ố i i quan quan h h ệ ệ gi gi ữ ữ a a C# C# v v à à .NET .NET The Common Language Runtime The Common Language Runtime Assemblies Assemblies C C á á c c ứ ứ ng ng d d ụ ụ ng ng s s ử ử d d ụ ụ ng ng C# C# Nh Nh ắ ắ c c l l ạ ạ i i ki ki ế ế n n th th ứ ứ c c C# ( C# ( c c ú ú ph ph á á p p C++) C++) căn căn b b ả ả n n C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 3 3 M M ố ố i i quan quan h h ệ ệ gi gi ữ ữ a a C# C# v v à à .NET .NET C# l C# l à à m m ộ ộ t ngôn ng t ngôn ng ữ ữ l l ậ ậ p tr p tr ì ì nh m nh m ớ ớ i nh i nh ấ ấ t, hi t, hi ệ ệ n đ n đ ạ ạ i i nh nh ấ ấ t, t, đư đư ợ ợ c thi c thi ế ế t k t k ế ế nh nh ằ ằ m m m m ụ ụ c tiêu: c tiêu: – – Ph Ph á á t tri t tri ể ể n, tri n, tri ể ể n khai c n khai c á á c c ứ ứ ng d ng d ụ ụ ng trên n ng trên n ề ề n .NET n .NET – – Ph Ph á á t tri t tri ể ể n c n c á á c c ứ ứ ng d ng d ụ ụ ng d ng d ự ự a trên c a trên c á á ch ti ch ti ế ế p c p c ậ ậ n n hư hư ớ ớ ng đ ng đ ố ố i tư i tư ợ ợ ng. ng. Ch Ch ú ú ý ý : C# l : C# l à à m m ộ ộ t ngôn ng t ngôn ng ữ ữ l l ậ ậ p tr p tr ì ì nh, không ph nh, không ph ả ả i i l l à à m m ộ ộ t th t th à à nh ph nh ph ầ ầ n c n c ủ ủ a .NET. Tuy nhiên, hi a .NET. Tuy nhiên, hi ệ ệ u u qu qu ả ả trong l trong l ậ ậ p tr p tr ì ì nh v nh v ớ ớ i .NET ph i .NET ph ụ ụ thu thu ộ ộ c v c v à à o hi o hi ệ ệ u u qu qu ả ả l l ậ ậ p tr p tr ì ì nh C# nh C# C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 4 4 The Common Language Runtime The Common Language Runtime H H ạ ạ t t nhân nhân c c ủ ủ a a .NET .NET l l à à môi môi trư trư ờ ờ ng ng th th ự ự c c thi thi mã mã l l ệ ệ nh nh , , g g ọ ọ i i l l à à Common Language Runtime Common Language Runtime ( ( CLR CLR ) hay ) hay .NET runtime .NET runtime . . Trư Trư ớ ớ c c khi khi th th ự ự c c thi thi b b ở ở i i CLR, CLR, mã mã ngu ngu ồ ồ n n c c ầ ầ n n đư đư ợ ợ c c biên biên d d ị ị ch ch ra ra ngôn ngôn ng ng ữ ữ trung trung gian gian g g ọ ọ i i l l à à Microsoft Microsoft Intermediate Language Intermediate Language ( ( MS MS - - IL IL ) ) Ưu Ưu đi đi ể ể m m : : – – Không Không ph ph ụ ụ thu thu ộ ộ c c v v à à o o n n ề ề n n (platform): .NET (platform): .NET c c ó ó th th ể ể ch ch ạ ạ y y trên trên Windows Windows ho ho ặ ặ c c trên trên Linux; Linux; – – Tăng Tăng hi hi ệ ệ u u su su ấ ấ t t th th ự ự c c thi thi : : kh kh á á c c v v ớ ớ i i Java, CLR Java, CLR l l à à b b ộ ộ biên biên d d ị ị ch ch Just Just - - In In - - Time Time : : mã mã IL IL đư đư ợ ợ c c biên biên d d ị ị ch ch t t ứ ứ c c th th ờ ờ i i sang sang mã mã m m á á y y khi khi th th ự ự c c thi thi chương chương tr tr ì ì nh nh ; ; – – Kh Kh ả ả năng n ăng biên biên d d ị ị ch ch nhi nhi ề ề u u ngôn ngôn ng ng ữ ữ kh kh á á c c nhau nhau : C#, VB.NET, : C#, VB.NET, C++ .NET, J# C++ .NET, J# Xem Xem thêm thêm http://www.thanglongonline.net/forum/cmd/0/thread/28ddc5f6 http://www.thanglongonline.net/forum/cmd/0/thread/28ddc5f6 - - acea acea - - 4190 4190 - - a75f a75f - - 076cb24e13e6/tab.aspx 076cb24e13e6/tab.aspx C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 5 5 Intermediate Language Intermediate Language Ki Ki ể ể u u d d ữ ữ li li ệ ệ u u d d ù ù ng ng chung chung ( ( Common Type System Common Type System – – CTS CTS ): ): – – L L à à t t ậ ậ p p c c á á c c ki ki ể ể u u d d ữ ữ li li ệ ệ u u đư đư ợ ợ c c đ đ ị ị nh nh ngh ngh ĩ ĩ a a s s ẵ ẵ n n trong trong IL, IL, d d ù ù ng ng chung chung gi gi ữ ữ a a c c á á c c ngôn ngôn ng ng ữ ữ (C#, VB.NET, (C#, VB.NET, … … ). ). – – Chia Chia l l à à m m hai hai t t ậ ậ p p : : d d ữ ữ li li ệ ệ u u ki ki ể ể u u tham tham tr tr ị ị v v à à d d ữ ữ li li ệ ệ u u ki ki ể ể u u tham tham chi chi ế ế u u ( ( value value type type v v à à reference type reference type ) ) Đ Đ ặ ặ c c t t ả ả ngôn ngôn ng ng ữ ữ chung chung ( ( Common Language Specification Common Language Specification – – CLS CLS ) ) – – T T ậ ậ p p con con c c ủ ủ a a CTS CTS m m à à t t ấ ấ t t c c ả ả c c á á c c ngôn ngôn ng ng ữ ữ đ đ ề ề u u ph ph ả ả i i h h ỗ ỗ tr tr ợ ợ Đ Đ ặ ặ c c t t í í nh nh c c ủ ủ a a IL: IL: – – H H ỗ ỗ tr tr ợ ợ hư hư ớ ớ ng ng đ đ ố ố i i tư tư ợ ợ ng ng v v à à giao giao ti ti ế ế p p : : b b ả ả n n thân thân IL IL l l à à ngôn ngôn ng ng ữ ữ hư hư ớ ớ ng ng đ đ ố ố i i tư tư ợ ợ ng ng ho ho à à n n to to à à n n . . C C ó ó h h ỗ ỗ tr tr ợ ợ giao giao ti ti ế ế p p (interface) (interface) – – X X ử ử lý lý t t ự ự đ đ ộ ộ ng ng tham tham bi bi ế ế n n v v à à tham tham tr tr ị ị ( ( t t í í nh nh năng năng c c ủ ủ a a CTS). CTS). – – É É p p ki ki ể ể u u t t ự ự đ đ ộ ộ ng ng v v à à an an to to à à n n C C á á c c t t í í nh nh năng năng đ đ ặ ặ c c bi bi ệ ệ t t : : – – B B ộ ộ thu thu gom gom r r á á c c : : t t ự ự đ đ ộ ộ ng ng qu qu ả ả n n lý lý b b ộ ộ nh nh ớ ớ – – An An to to à à n n : : qu qu ả ả n n lý lý ti ti ế ế n n tr tr ì ì nh nh d d ự ự a a trên trên t t à à i i kho kho ả ả n n C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 6 6 Assemblies Assemblies L L à à m m ộ ộ t t đơn đơn v v ị ị logic logic ch ch ứ ứ a a c c á á c c mã mã đã đã đư đư ợ ợ c c biên biên d d ị ị ch ch b b ở ở i i .NET. .NET. Ch Ch ứ ứ a a m m ộ ộ t t metadata metadata t t ự ự mô mô t t ả ả : : – – Type metadata: Type metadata: ch ch ứ ứ a a c c á á c c mô mô t t ả ả v v ề ề ki ki ể ể u u d d ữ ữ li li ệ ệ u u v v à à c c á á c c phương phương th th ứ ứ c c c c ó ó trong trong assembly assembly – – Manifest: Manifest: ch ch ứ ứ a a c c á á c c assembly metadata assembly metadata l l à à thông thông tin tin v v ề ề assembly assembly đ đ ó ó (version, copyright, (version, copyright, … … ) ) Private Assemblies: Private Assemblies: g g ó ó i i n n à à y y ch ch ỉ ỉ đư đư ợ ợ c c th th ự ự c c thi thi b b ở ở i i ph ph ầ ầ n n m m ề ề m m s s ở ở h h ữ ữ u u n n ó ó , , thu thu ộ ộ c c thư thư m m ụ ụ c c hi hi ệ ệ n n th th ờ ờ i i ho ho ặ ặ c c thư thư m m ụ ụ c c con. con. Shared Assemblies: Shared Assemblies: chia chia s s ẻ ẻ gi gi ữ ữ a a c c á á c c ph ph ầ ầ n n m m ề ề m m – – C C ó ó th th ể ể gây gây nh nh ậ ậ p p nh nh ằ ằ ng ng v v ề ề tên tên g g ó ó i i – – C C ó ó th th ể ể b b ị ị ghi ghi đ đ è è b b ở ở i i phiên phiên b b ả ả n n m m ớ ớ i i hơn hơn C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 7 7 .NET Framework Classes .NET Framework Classes C C á á c c l l ớ ớ p p cơ cơ b b ả ả n n đư đư ợ ợ c c cung cung c c ấ ấ p p b b ở ở i i Microsoft, Microsoft, cho cho ph ph é é p p th th ự ự c c thi thi h h ầ ầ u u h h ế ế t t c c á á c c t t á á c c v v ụ ụ thư thư ờ ờ ng ng g g ặ ặ p p – – C C á á c c th th ủ ủ t t ụ ụ c c tri tri ệ ệ u u g g ọ ọ i i đơn đơn gi gi ả ả n n . . – – Cho Cho ph ph é é p p truy truy xu xu ấ ấ t t đ đ ế ế n n c c á á c c h h à à m m Windows Windows API API m m ộ ộ t t c c á á ch ch đơn đơn gi gi ả ả n n Namespaces: Namespaces: không không gian gian tên tên , , ch ch ứ ứ a a m m ộ ộ t t nh nh ó ó m m c c á á c c ki ki ể ể u u d d ữ ữ li li ệ ệ u u ho ho ặ ặ c c l l ớ ớ p p c c ó ó m m ố ố i i liên liên quan quan qua qua l l ạ ạ i i v v ớ ớ i i nhau nhau . . C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 8 8 C C á á c c ứ ứ ng ng d d ụ ụ ng ng s s ử ử d d ụ ụ ng ng C# C# ASP.NET: ASP.NET: l l à à m m ộ ộ t t công công ngh ngh ệ ệ c c ủ ủ a a Microsoft Microsoft d d ù ù ng ng đ đ ể ể xây xây d d ự ự ng ng website. website. – – L L à à m m ộ ộ t t h h ệ ệ th th ố ố ng ng c c ó ó c c ấ ấ u u tr tr ú ú c c ; ; – – T T ố ố c c đ đ ộ ộ th th ự ự c c thi thi nhanh nhanh ; ; – – D D ễ ễ d d à à ng ng b b ả ả o o tr tr ì ì mã mã l l ệ ệ nh nh . . Web Forms: Web Forms: c c á á ch ch ti ti ế ế p p c c ậ ậ n n design design c c á á c c trang trang web web tương tương t t ự ự như như design design c c á á c c ứ ứ ng ng d d ụ ụ ng ng trên trên windows windows Web Services: Web Services: cung cung c c ấ ấ p p c c á á c c d d ị ị ch ch v v ụ ụ cho cho website website C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 9 9 C C á á c c ứ ứ ng ng d d ụ ụ ng ng s s ử ử d d ụ ụ ng ng C# C# Windows Forms: Windows Forms: hư hư ớ ớ ng ng ti ti ế ế p p c c ậ ậ n n d d à à nh nh cho cho vi vi ệ ệ c c l l ậ ậ p p tr tr ì ì nh nh c c á á c c ứ ứ ng ng d d ụ ụ ng ng trên trên n n ề ề n n Windows. Windows. C C ó ó c c ấ ấ u u tr tr ú ú c c tương tương t t ự ự Visual Visual C++ hay VB 6 C++ hay VB 6 Windows Services: Windows Services: ch ch ạ ạ y y n n ề ề n n dư dư ớ ớ i i d d ạ ạ ng ng d d ị ị ch ch v v ụ ụ , , đ đ á á p p ứ ứ ng ng c c á á c c s s ự ự ki ki ệ ệ n n không không đư đư ợ ợ c c k k í í ch ch ho ho ạ ạ t t tr tr ự ự c c ti ti ế ế p p b b ở ở i i ngư ngư ờ ờ i i d d ù ù ng ng . . C C á á c c d d ị ị ch ch v v ụ ụ n n à à y y c c ó ó th th ể ể đư đư ợ ợ c c xây xây d d ự ự ng ng đơn đơn gi gi ả ả n n d d ự ự a a v v à à o o .NET .NET C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 10 10 C# C# cơ cơ b b ả ả n n C# C# c c ó ó nhi nhi ề ề u u n n é é t t tương tương đ đ ồ ồ ng ng v v ớ ớ i i C++, C++, bao bao g g ồ ồ m m c c á á c c t t ừ ừ kh kh ó ó a a , , ki ki ể ể u u d d ữ ữ li li ệ ệ u u , , c c ú ú ph ph á á p p , , … … C C ú ú ph ph á á p p cơ cơ b b ả ả n n – – Bi Bi ế ế n n : : khai khai b b á á o o v v à à s s ử ử d d ụ ụ ng ng – – if if … … else, switch else, switch – – for for – – while, do while, do … … while while – – foreach foreach – – goto goto , break, continue, return , break, continue, return [...].. .C# cơ bản Lớp (class) – Biến thành viên – Thuộc tính – Phương thức Phương thức – – – – – Cú pháp Phạm vi Cách triệu gọi Truyền tham số Từ khóa out C# và kiến trúc NET C# cơ bản và kiế trú NET bả Editor: Đoàn Quang Minh Đoà 11 C# cơ bản Mảng: khai báo và sử dụng Toán tử Ép kiểu an toàn Kiểu liệt kê Không gian tên: từ khóa using Vào ra dữ liệu dựa trên console Chú thích mã lệnh C# và kiến trúc NET C#. .. bản và kiế trú NET bả Editor: Đoàn Quang Minh Đoà 12 Tài liệu tham khảo Professional C#, Second Edition http://www.asp .net http://www.microsoft.com /net/ default.mspx http://www.codeproject.com Địa chỉ download tài liệu http://www.thanglong.edu.vn/giang-day/tab.aspx Diễn đàn C# & NET http://www.thanglong.edu.vn/forum/cmd/0/categ ory/hoc-tap-nghien-cuu/dot -net/ tab.aspx C# và kiến trúc NET C# cơ bản và. .. bản và kiế trú NET bả Editor: Đoàn Quang Minh Đoà 13 C# and NET Framework Bài 2: Hướng đối tượng trong C# Đoàn Quang Minh minhdqtt@gmail.com http://www.VTPortal .net Last update: 30 December 20 06 Hướng đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh Đoà 1 Mục lục Kế thừa, hàm ảo Quá tải hàm Hàm tạo, hàm hủy Cấu trúc Quá tải toán tử Chỉ số Giao tiếp Hướng đối tượng trong C# - Editor: Hướ... đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh Đoà 12 Quá tải toán tử (Operator Overloading) Định nghĩa: như C++ Cú pháp Ví dụ Hướng đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh Đoà 13 Chỉ mục (Indexers) Mô tả: – Toán tử [ ] trong C# không thể quá tải được – Chỉ mục là cách làm giống như việc quá tải toán tử [ ] trong C++, giúp cho việc truy cập vào một class hoặc... nhận được một thành phần số Nếu dùng 1 chỉ số truy cập, ví dụ, a[i] sẽ nhận được một vector struct Matrix { public double[][] x; public double this [uint i, uint j]; public Vector this [uint i]; } Hướng đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh Đoà 15 Tài liệu tham khảo Professional C#, Second Edition http://www.asp .net http://www.microsoft.com /net/ default.mspx http://www.codeproject.com... một struct giống như truy cập vào một array – Giống như thuộc tính, chỉ mục cũng gồm cặp phương thức get và set type this [formal-index-parameter-list] – type: kiểu trả về – formal-index-parameter-list: danh sách các chỉ mục Hướng đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh Đoà 14 Chỉ mục (Indexers) Ví dụ: – Giả sử có lớp Matrix (ma trận) – Khi dùng 2 chỉ số truy cập, ví dụ, a[i][j]... dùng khi giải phóng các tài nguyên khác bộ nhớ (kết nối CSDL, tập tin,…) Hướng đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh Đoà 11 Cấu trúc (Structs) Cấu trúc (struct) – Chỉ chứa các biến, không chứa phương thức – Khai báo và sử dụng cấu trúc: có thể dùng hoặc không dùng toán tử new struct và kế thừa – struct không thể kế thừa được – Ngoại lệ: một struct coi như được kế thừa từ lớp... http://www.microsoft.com /net/ default.mspx http://www.codeproject.com Địa chỉ download tài liệu http://www.thanglong.edu.vn/giang-day/tab.aspx Diễn đàn C# & NET http://www.thanglong.edu.vn/forum/cmd/0/categ ory/hoc-tap-nghien-cuu/dot -net/ tab.aspx Hướng đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh Đoà 16 ... Đoà 2 Lớp và kế thừa (class & inherit) Định nghĩa một lớp: từ khóa class Kế thừa đơn giản: cú pháp – – – Không hỗ trợ đa kế thừa Không hỗ trợ phạm kế thừa (giảm phức tạp) Bắt buộc phải kế thừa: lớp System.Object Quá tải hàm: cú pháp – Không hỗ trợ tham số mặc định – Hàm ảo: từ khóa virtual và override Hàm bị che – Lý do ra đời: cùng tên hàm nhưng khác ý nghĩa – Từ khóa new Hướng đối tượng trong C# -... năng Tìm kiếm cho hai loại đối tượng là văn bản và hình ảnh Rõ ràng hai loại đối tượng này khác nhau, nên không thể có chung phương thức Tìm kiếm – Sẽ đơn giản hơn nếu cả hai đối tượng này đều kế thừa interface ISearch: chúng ta có thể ép kiểu đối tượng về interface, việc gọi hàm Search() sẽ không phụ thuộc vào đối tượng ban đầu Hướng đối tượng trong C# - Editor: Hướ đố tượ Editor: Đoàn Quang Minh . C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 1 1 C# and .NET Framework C# and .NET Framework B B à à i. C C á á c c d d ị ị ch ch v v ụ ụ n n à à y y c c ó ó th th ể ể đư đư ợ ợ c c xây xây d d ự ự ng ng đơn đơn gi gi ả ả n n d d ự ự a a v v à à o o .NET .NET C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 10 10 C# C# cơ cơ b b ả ả n n C#. chia chia s s ẻ ẻ gi gi ữ ữ a a c c á á c c ph ph ầ ầ n n m m ề ề m m – – C C ó ó th th ể ể gây gây nh nh ậ ậ p p nh nh ằ ằ ng ng v v ề ề tên tên g g ó ó i i – – C C ó ó th th ể ể b b ị ị ghi ghi đ đ è è b b ở ở i i phiên phiên b b ả ả n n m m ớ ớ i i hơn hơn C# v C# v à à ki ki ế ế n tr n tr ú ú c . c . NET. C# NET. C# cơ b cơ b ả ả n n - - Editor: Editor: Đo Đo à à n Quang Minh n Quang Minh 7 7 .NET Framework Classes .NET Framework