Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 179 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
179
Dung lượng
6,66 MB
Nội dung
MÃ SỐ: LỜI NÓI ĐẦU NET tảng lập trình ứng dụng tiện lợi, cung cấp cho người lập trình mơi trường làm việc trực quan, dễ dàng việc phát triển ứng dụng, thuận lợi việc kết nối làm việc với sở liệu Winform kiểu ứng dụng xây dựng mơi trường NET, lập trình viên nhà nghiên cứu ứng dụng rộng rãi vào công việc Hiện Lập trình Windows Form với C#.NET học phần quan trọng bạn sinh viên chuyên ngành Công nghệ thông tin trường đại học cao đẳng Với mục đích cung cấp cho bạn sinh viên kiến thức tồn diện lập trình ứng dụng Windows Form với C# 5.0, phiên tảng C# lập trình sở, lập trình hướng đối tượng, cần thiết cho lập trình ứng dụng Windows Form C#; nhóm tác giả giảng viên, Trường Đại học Duy Tân phối hợp với Nhà xuất Thông tin Truyền thơng xuất giáo trình “Lập trình Windows Form với C#.NET – Tập 1” Nội dung giáo trình gồm chương, cụ thể sau: Chương Microsoft Net C# Chương Cơ C# Chương Lập trình hướng đối tượng với C# Cuốn giáo trình mang lại cho bạn sinh viên, người u thích lập trình kiến thức tảng dịch vụ ADO.NET truy cập nhiều nguồn liệu thông dụng Microsoft SQL, Microsoft Access, Oracle, MySQL, DB2 XML; Kiến thức dự án Excel Workbook mở rộng chức cho bảng tính Microsoft Excel sử dụng dịch vụ Excel Interop Ngoài ra, giáo trình cịn cung cấp kiến thức lập trình song song sử dụng tuyến đoạn, lập trình ứng dụng sử dụng mơ hình đối tượng thành phần COM thành phần phân tán Microsoft Web service, WCF Mặc dù cố gắng công tác biên soạn, tham khảo nhiều tài liệu diễn đạt sáng để giúp người đọc dễ tiếp cận hơn, giáo trình xuất lần đầu khó tránh khỏi thiết sót Vì mong nhận đóng góp ý kiến bạn đọc để giáo trình hồn thiện lần xuất Mọi ý kiến góp ý xin gửi địa Email: thimtnguyen2005@yahoo.com Xin trân trọng giới thiệu bạn đọc./ Đà Nẵng, tháng năm 2012 NHÓM BIÊN SOẠN MỤC LỤC Lời nói đầu Chương 1: MICROSOFT NET VÀ C# 1.1 Tổng quan Microsoft Net 1.1.1 Lịch sử phát triển Microsoft NET 1.1.2 Đặc điểm kiến trúc NET framework 10 1.2 Ngôn ngữ c# 13 1.2.1 Giới thiệu C# .13 1.2.2 Đặc trưng ngôn ngữ C# .14 1.2.3 Biên dịch thực ứng dụng Console C#.NET đơn giản 18 1.3 Câu hỏi chương 21 Chương 2: CƠ BẢN VỀ C# 23 2.1 Các thành phần ngôn ngữ C# 24 2.1.1 Bộ ký tự dùng C# (Character set) 24 2.1.2 Từ khoá (Keyword) .24 2.1.3 Định danh (Identifier) 25 2.1.3 Lời thích (Comment) 25 2.2 Kiểu liệu, biến, .33 2.2.1 Kiểu liệu (Data type) 33 2.2.2 Biến (Variable) 62 2.2.3 Hằng (Constant literal) 63 2.3 Biểu thức toán tử .64 2.3.1 Biểu thức (Expression) 64 2.3.2 Toán tử (Operator) .65 2.3.3 Các quy tắc thực phép toán chuyển kiểu 71 2.4 Lệnh (Statement) 73 2.4.1 Lệnh đơn (Simple statement) .73 2.4.2 Khối lệnh (Compound statement hay block) .74 2.4.3 Cấu trúc rẽ nhánh có điều kiện (Conditional structure) 74 2.4.4 Cấu trúc lặp (Repeat structure hay loop) .79 2.4.5 Các lệnh điều khiển rẻ nhánh không điều kiện 85 2.5 Ngoại lệ (Exception) xử lý ngoại lệ 85 2.5.1 Lệnh try…catch…finally 86 2.5.2 Lệnh throw 88 2.5.3 Các lớp ngoại lệ 89 2.6 Lớp System.Console 92 2.6.1 Định dạng kết xuất .92 2.6.2 Nhập xuất với lớp Console .93 2.6.3 Định dạng thiết lập vị trí kết xuất cho phương thức Write 94 Câu hỏi chương 97 Bài tập chương 98 Chương 3: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C# 101 3.1 Lớp đối tượng .104 3.1.1 Xây dựng lớp .104 3.1.2 Tạo đối tượng 106 3.1.3 Truy xuất thành viên lớp .107 3.2 Phương thức .111 3.2.1 Định nghĩa phương thức (Method definition) 111 3.2.2 Phạm vi truy xuất thành phần lớp .116 3.2.3 Phương thức Main() 118 3.2.4 Phương thức khởi tạo (Constructor) 118 3.2.5 Phương thức hủy (Destructor) 122 3.2.6 Từ khoá this .123 3.2.7 Nạp chồng phương thức (Overloading method) 126 3.2.8 Truyền tham đối cho phương thức 127 3.2.9 Nạp chồng toán tử (Overloading operator) 132 3.3 Thuộc tính (Properties) 135 3.4 Tham chiếu phương thức (Delegate) 138 3.5 Sự kiện (Event) 142 3.6 Chỉ mục (Indexer) 145 3.7 Kiểu cấu trúc (Struct) 147 3.8 Kiểu tổng quát (Generic type) 149 3.8.1 Lớp (generic class), giao tiếp (generic interface) cấu trúc tổng quát (generic struct) 149 3.8.2 Phương thức tổng quát (generic method) 150 3.9 Cây biểu thức (Expression Tree) .151 3.9.1 Tạo biểu thức từ biểu thức lambda .151 3.9.2 Tạo biểu thức sử dụng API (application programming interface) 151 3.10 Kế thừa lớp (Classical Inheritance) .153 3.10.1 Định nghĩa lớp kế thừa 153 3.10.2 Viết chồng phương thức (Overriding method) hay che khuất phương thức (Hiding method) 154 3.10.3 Từ khóa base 157 3.11 Không gian tên (NameSpace) câu lệnhUsing 159 3.11.1 Khái niệm namespace 159 3.11.2 Định nghĩa namespace 159 3.11.3 Sử dụng namespace 161 3.11.4 Lệnh using .161 3.12 Lớp, phương thức trừu tượng (Abstract class, method) 162 3.13 Lớp phương thức (Sealed class, sealed method) 164 3.14 Giao tiếp (Interface) 165 3.14.1 Khai báo giao tiếp 165 3.14.2 Hiện thực (cài đặt) giao tiếp 165 Câu hỏi chương 168 Bài tập chương .169 Tài liệu tham khảo .176 Chương MICROSOFT NET VÀ C# Chương giới thiệu tổng quan Microsoft NET, ngôn ngữ C#, ý nghĩa sức mạnh Microsoft NET ưu điểm ngôn ngữ C# so với ngơn ngữ khác Ngồi chương cịn trình bày cách thức bắt đầu lập trình với C# môi trường Visual Studio NET cách thức biên dịch thực ứng dụng Console C# đơn giản Tổng quan Microsoft NET Lịch sử phát triển Microsoft NET Đặc điểm kiến trúc NET framework: Common language runtime Thư viện NET framework Microsoft Visual C# Giới thiệu ngôn ngữ C# Các đặc trưng C# Biên dịch thực chương trình C# đơn giản 1.1 TỔNG QUAN VỀ MICROSOFT NET 1.1.1 Lịch sử phát triển Microsoft NET Vào đầu năm 1998, sau hoàn thành phiên Version IIS (Internet Information Server), công ty Microsoft bắt đầu xây dựng kiến trúc tảng IIS đặt tên NGWS (Next Generation Windows Services) Sau Visual Basic đời vào cuối 1998, dự án Visual Studio xác nhập vào NGWS Đến tháng 11/2000 Microsoft phát hành phiên Beta NET 1.0 Giáo trình Lập trình Windows Form C#.Net 164 public override void HienThi() { base.HienThi(); Console.WriteLine("He so luong la:{0}", HeSoLuong); } public double Luong() { return HeSoLuong * LuongCB; } public static void Main() { NhanVien NV; NV = new NhanVien("Nguyen Thi Hoa", 1980); NV.HienThi(); NV = new NVBienChe("Nguyen Thi Hoa", 1980, 1.96F); NV.HienThi(); } } 3.13 LỚP, PHƯƠNG THỨC HẰNG (SEALED CLASS, SEALED METHOD) C# cho phép lớp phương thức khai báo sealed Nếu lớp có nghĩa bạn khơng quyền thừa kế lớp đó, phương thức tức bạn khơng phép viết chồng phương thức Ví dụ: sealed class FinalClass { } class DerivedClass : FinalClass { } // Biên dịch lỗi class MyClass { public sealed void FinalMethod() { } } class DerivedClass : MyClass { public override void FinalMethod() { } } // Biên dịch lỗi Chương 3: Lập trình hướng đối tượng với C# 165 3.14 GIAO TIẾP (INTERFACE) 3.14.1 Khai báo giao tiếp Với từ khố interface, trừu tượng hồn tồn giao tiếp lớp khỏi thực Interface giao tiếp lớp Bạn biết cách định nghĩa lớp, khai báo lớp với đặc tả thuộc tính, phương thức, mục kiện cài đặt cụ thể nội dung cho phương thức Giao tiếp lớp phần đặc tả lớp (không bao gồm phần cài đặt cụ thể) Khai báo giao tiếp có cú pháp tương tự lớp, bao gồm thuộc tính, phương thức, mục kiện, phương thức chúng phương thức trừu tượng (dù abstract) khơng có thân, chúng khơng thực giao tiếp Giao tiếp chứa khai báo thuộc tính, phương thức, kiện tham chiếu phương thức Giao tiếp không chứa biến thành viên, hằng, phương thức khởi tạo, phương thức hủy thành viên static Các thành phần giao tiếp tự động ngầm hiểu public, khơng có điều khiển truy cập Giao tiếp khai báo sử dụng từ khóa interface, sau: [public/internal] [partial] interface TênGiaoTiếp { Kiểu TênThuộcTính { get; set; } Kiểu TênPhươngThức(DanhSáchThamĐối); } 3.14.2 Hiện thực (cài đặt) giao tiếp Giao tiếp thiết kế để hỗ trợ định phương thức động lúc thời gian chạy Phương thức giao tiếp cài đặt lớp hay struct thực giao tiếp Thông thường, để gọi phương thức lớp, phương thức cần diện lúc thời gian dịch, gọi liên kết sớm Điều làm cho môi trường lớp trở nên tĩnh khơng có khả mở rộng Trong hệ thống phân cấp ngày bị đẩy lên cao 166 Giáo trình Lập trình Windows Form C#.Net Vì vậy, giao tiếp định nghĩa để hạn chế việc ngày nhiều lớp Nó tách định nghĩa phương thức khỏi phân cấp kế thừa Do lớp khơng có quan hệ phân cấp thực giao tiếp Ta thấy thực mạnh giao tiếp Giao tiếp giải tính phức tạp đa kế thừa, lớp thực nhiều giao tiếp Và nhiều lớp thực giao tiếp, có cài đặt phương thức khác nhau, thể đặc điểm “một giao tiếp, nhiều phương thức” tính đa hình Chỉ chạy chương trình, tùy thuộc vào đối tượng gọi phương thức, biết phương thức lớp thực giao tiếp tương ứng gọi, liên kết muộn Các lớp hay struct thực giao tiếp, phải cài đặt đầy đủ phương thức giao tiếp Nếu cài đặt số phương thức, lớp hay struct phải khai báo trừu tượng (abstract) Những phương thức thực giao tiếp phải khai báo public non-static Hình thức khai báo phương thức thực phải giống hệt đặc tả khai báo giao tiếp Khai báo lớp struct thực giao tiếp tương tự khai báo lớp kế thừa lớp sở: [public/internal] [abstract] class TênLớp : TênGiaoDiện1,… TênGiaoDiệnn { public Kiểu TênThuộcTính { get { } set { } } public Kiểu TênPhươngThức1(DanhSáchThamĐối) { //Thân phương thức } } Chương 3: Lập trình hướng đối tượng với C# 167 Một giao tiếp khai báo thuộc tính với phương thức get, lớp cài đặt giao tiếp khai báo thuộc tính với hai phương thức get set Một lớp A kế thừa lớp B thực giao tiếp C D, khai báo sau: class A : B, C, D { } Chú ý rằng, lớp B đặt trước giao tiếp C, D danh sách Giao tiếp kế thừa giao tiếp khác Cú pháp khai báo kế thừa tương tự lớp Ví dụ: Hình chữ nhật, hình tam giác, hình vng… hình phẳng có thuộc tính cạnh, phương thức diện tích, chu vi… Vì vậy, cần xây dựng giao tiếp IHình phẳng, lớp HinhChuNhat, HinhVuong… thực phương thức khai báo giao tiếp using System; interface IHinhPhang { int Canh1 { get; set; } int DienTich(); int ChuVi(); } class HinhChuNhat : IHinhPhang { public int Canh1 { get; set; } public int Canh2 { get; set; } public HinhChuNhat(int ChieuDai, int ChieuRong) { this.Canh1 = ChieuDai; this.Canh2 = ChieuRong; } public int DienTich() { return Canh1 * Canh2; Giáo trình Lập trình Windows Form C#.Net 168 } public int ChuVi() { return (Canh1 + Canh2) * 2; } } class MainClass { public static void Main() { IHinhPhang HCN = new HinhChuNhat(2, 3); Console.WriteLine("Hinh chu nhat co chieu dai la {0} va chieu rong la {1}", HCN.Canh1, ((HinhChuNhat)HCN).Canh2); Console.WriteLine("Dien tich la {0}", HCN.DienTich()); Console.WriteLine("Chu vi la {0}", HCN.ChuVi()); } } CÂU HỎI CHƯƠNG Câu Mối liên quan đối tượng lớp? Câu Sự khác biến tĩnh biến đối tượng, phương thức tĩnh phương thức đối tượng? Câu Sự khác biến cục biến thành viên? Câu Phương thức tĩnh truy cập thành viên không truy cập thành viên lớp? Câu Các điều khiển truy cập biến thành viên phương thức C# Câu Thế thuộc tính (property)? Câu So sánh delegate event? Câu Các chức C# thể tính đóng gói? Câu Phương thức khởi tạo gì? Có thể gọi phương thức khởi tạo gọi phương thức khác? Chương 3: Lập trình hướng đối tượng với C# 169 Câu 10 Nạp chồng phương thức gì? Có thể nạp chồng phương thức khởi tạo? Câu 11 Sự khác tham đối thực tham đối hình thức phương thức? Câu 12 Các kiểu truyền tham đối C#? Câu 13 Sự khác từ khóa base từ khóa this? Câu 14 Khái niệm, định nghĩa sử dụng không gian tên? Câu 15 Ý nghĩa lệnh using? Câu 16 So sánh lớp trừu tượng giao tiếp? Câu 17 Từ khóa sealed sử dụng cho khai báo thành phần nào? Câu 18 Từ khóa abstract sử dụng cho khai báo thành phần nào? Câu 19 Viết chồng phương thức gì? Câu 20 Tham đối kiểu tổng quát sử dụng trường hợp nào? Câu 21 Khai báo giao tiếp gồm thành viên nào? Câu 22 So sánh khai báo lớp kế thừa lớp cha, khai báo lớp cài đặt giao tiếp? Câu 23 Các tính C# thể tính đa hình? BÀI TẬP CHƯƠNG Bài Xây dựng phương thức cho lớp ngân hàng Ngân hàng chấp nhận tiền lẻ tờ 500 đồng Thuộc tính lớp ngân hàng: số tờ 500 đồng có ngân hàng Phương thức trả số tờ 500 đồng có ngân hàng Phương thức thay đổi số tờ 500 đồng ngân hàng với giá trị tham đối phương thức 170 Giáo trình Lập trình Windows Form C#.Net Phương thức trả true có đủ tiền ngân hàng để mua mặt hàng Giá tiền mặt hàng tham đối truyền vào phương thức, tính ngàn đồng Phương thức trả false không đủ tiền trả cho mặt hàng Ví dụ, giá 50 ngàn đồng, tham đối 50 Phương thức xóa tất tiền ngân hàng trả số tiền ngân hàng tính ngàn đồng Ví dụ, ngân hàng chứa tờ 500 đồng, phương thức trả 3.5 Phương thức xóa đủ số tiền để trả cho mặt hàng có giá tính ngàn đồng Ví dụ, mặt hàng có giá 12.3 ngàn đồng, phương thức xóa 24 tờ 500 đồng ngân hàng Nếu khơng có đủ số tiền để trả cho mặt hàng, khơng xóa số tiền từ ngân hàng hiển thị thông báo lỗi Cho trước đối tượng ngân hàng khác số tờ 500 đồng đó, phương thức chuyển số tờ 500 đồng từ ngân hàng khác đến ngân hàng Nếu không đủ số tờ 500 đồng ngân hàng khác để chuyển, phương thức chuyển tất số tờ ngân hàng khác đến ngân hàng Bài Xây dựng lớp Tam giác gồm: Thuộc tính độ dài cạnh thứ nhất, độ dài cạnh thứ hai, độ dài cạnh thứ ba Phương thức nhập độ dài cạnh Phương thức tính chu vi tam giác Phương thức tính diện tích tam giác Phương thức kiểm tra ba cạnh tam giác không Phương thức xác định loại tam giác Bài Tạo lớp số phức bao gồm: Thuộc tính: phần thực, phần ảo Chương 3: Lập trình hướng đối tượng với C# 171 Phương thức khởi tạo số phức Phương thức in số phức Phương thức nạp chồng phép cộng số phức Phương thức nạp chồng phép trừ số phức Phương thức nạp chồng phép nhân số phức Phương thức nạp chồng phép chia số phức Hướng dẫn: Viết lớp SoPhuc gồm thuộc tính phần thực r, phần ảo i phương thức theo yêu cầu, với cách tính sau: Cộng, trừ số phức: r = r1 r2 i = i1 i2 Nhân số phức: r = r1*r2 – i1*i2 i = r1*i2 + r2*i1 Chia số phức: r = (r1*r2 + i1*i2) / (r2*r2 + i2*i2) i = (i1*r2 – r1*i2) / (r2*r2 + i2*i2) Bài Tạo lớp phân số bao gồm: Thuộc tính: tử số, mẫu số Phương thức khởi tạo phân số Phương thức in phân số Phương thức tính ước số chung lớn Phương thức rút gọn phân số Phương thức nạp chồng phép cộng phân số Phương thức nạp chồng phép trừ phân số Phương thức nạp chồng phép nhân phân số Giáo trình Lập trình Windows Form C#.Net 172 Phương thức nạp chồng phép chia phân số Phương thức nạp chồng phép so sánh hai phân số Phương thức nạp chồng phép chuyển kiểu phân số thành số thực Bài Xây dựng ứng dụng quản lý sinh viên Lớp SinhVien gồm: Thuộc tính: mã sinh viên, họ tên sinh viên, năm sinh, lớp, địa chỉ, điểm tổng kết Phương thức khởi tạo thuộc tính lớp SinhVien Các phương thức get set để nhận thiết lập giá trị thuộc tính cần thiết Phương thức trả xếp loại sinh viên, biết sinh viên xếp loại Điểm tổng kết Xếp loại - 10 Xuất sắc -