Tài liệu về C#

pdf 35 trang phuongnguyen 4830
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu về C#", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftai_lieu_ve_c.pdf

Nội dung text: Tài liệu về C#

  1. Tài liệu C# 1. Lập trình hướng đối tượng (OOP)  Object Oriented Programming (Lập trình hướng đối tượng)  Data Abstraction (Trừu tượng hóa dữ liệu )  Class and Object (Lớp và đối tượng) Objective (Mục tiêu)  Construction và Destruction (Phương thức thiết lập và hủy)  Persistence, Data encapsulation, Inheritance và Polymorphism (Tính bền vững, Bao bọc, kế thừa và đa hình)  Thuận lợi. Object Oriented  Phương pháp thiết kế và hiện thực các hệ thống phần mềm. Programming  Đặt trọng tâm vào đối tượng. (Lập trình hướng đối  Đối tượng bao hàm: hành vi và thuộc tính. tượng)  - Đối tượng giao tiếp thông qua thông điệp.  Cho phép quản lí tốt hơn các chương trình phức tạp . Functions & Procedures . Modules . Abstract Data Types . Class/Objects  Data Abstract cho phép . Mở rộng ngôn ngữ : Định nghĩa thêm kiểu . Chế tác các thể hiện dữ liệu khác nhau Các đặc trưng của Person Các đặc trưng của Customer Name Name Address Address Age Height Data Abstraction Hair color (Trừu tượng hóa dữ liệu ) Thuộc tính Hành động Tên khách hàng Chấp nhận tên khách hàng Địa chỉ khách hàng Chấp nhận địa chỉ khách hàng Kiểu xe mua Chấp nhận kiểu xe đặt hàng Người bán (saleman) Chấp nhận tên người bán Phát sinh hóa đơn  Data Abstraction là quá trình nhận diện và nhóm dữ liệu và hành động có liên quan tới một thực thể riêng biệt .  Thuận lợi: . Nhận diện các đặt trưng và hành động thiết yếu . Giúp lọai trừ những chi tiết không cần thiết. Class and Object  Class (Lớp và đối tượng) Một Class định nghĩa như là một bản mẫu hay một kiểu chung về một lọai đối tượng nào đó theo thuộc tính và hành vi. Class Customer Tên khách hàng Địa chỉ khách hàng Kiểu xe mua Tên người bán Chấp nhận tên Chấp nhận địa chỉ Chấp nhận lọai xe đặt mua Chấp nhận tên người bán Phát sinh hóa đơn  Class/Object . Message Passing . Generalization/Specialization . Polymorphism leonguyen.com 1
  2. Tài liệu C# . Relationships: Associations, Aggregations . Behaviors . Rules  Object Một Object là sự thể hiện của class. Ví dụ: Stephen Boston Opel Astra Robin Stephen là một Object của class Customer. . Attribute o Những đặc trưng mô tả đối tượng. . Operation o Là một dịch vụ hoặc một hàm đuợc cung cấp bởi mọi thể hiện của một lớp đối tượng. . Method o Diễn tả cách thức mà một đối tượng vận động, phản ứng . Message o Yêu cầu cho một operation . Event o Tác nhân được gởi từ một object to object khác.  So Sánh Class và Object . Class định nghĩa một thực thể, trong khi một object là một thực thể thực sự. . Class là một mô hình ý niệm,định nghĩa tất cả đặt trưng và hành động của một object, trong khi đối tượng là một mô hình thực. . Class là một prototype của một object. . Tất cả object thuộc về một class đều có đặt trưng và hành động giống nhau.  Construction (Phương thức thiết lập) A Constructor: . Cấp phát bộ nhớ. . Khởi tạo thuộc tính. Construction và . Cho phép truy xuất các thuộc tính và phương thức. Destruction (Phương Destruction (Phương thức hủy bỏ) thức thiết lập và hủy) . Quá trình xóa một đối tượng. . A Destructor: . Giải phóng không gian cấp phát. . Cấm truy xuất các thuộc tính và phương thức. Tính bền vững Tính bền vững là một khả năng của đối tượng để lưu trữ dữ liệu trong thời gian sống (Persistence) của đối tượng.  Quá trình che dấu sự hiện thực chi tiết của một đối tượng từ user được gọi là Encapsulation.  Nguyên tắc bao bọc dữ liệu ngăn cấm truy nhập trực tiếp gọi là sự che dấu thông tin Bao Bọc và Che Dấu  Thuận lợi: Thông tin . Tất cả thuộc tính và phương thức được yêu cầu thực hiện một công việc có (Encapsulation and thể được khởi tạo. information hiding) . Chỉ những thuộc tính và/hoặc phương thức được truy xuất bởi cái khác được hiện rõ.  Tất cả những gì thấy được của đối tượng đã được đóng gói là các phương thức giao tiếp (interface) của đối tượng. Tính thừa kế  Cách tổ chức các Classes (Inheritance) leonguyen.com 2
  3. Tài liệu C# Vehicle Automobile Motorcycle Bus Sedan Sports Car Luxury Bus School Bus  Inheritance . Cơ chế cho phép một lớp chia sẽ các thuộc tính và thao tác được định nghĩa trong một hay nhiều lớp.  Subclass . Là một class thừa kế từ một class khác.  Super class . Là một class mà từ đó một class khác thừa kế những hành vi của nó.  Multiple Inheritance . Là một class con thừa kế từ một hay nhiều lớp. Tính Đa Hình Tính đa hình là một thao tác có thể được cài đặt khác nhau trong cùng một lớp hay (Polymorphism) trong những lớp khác nhau. leonguyen.com 3
  4. Tài liệu C#  Thiết kế và coding  Thiết kế . Định nghĩa vấn đề. . Thiết kế các đối tượng . Phát triển các giải thuật cho các phương thức Các bước thiết kế của đối tượng. . Mô tả giải thuật, dùng pseudocode . Viết code . Kiểm tra code . Debug  Khả năng đối phó với những ứng dụng thuộc lọai khó.  Nâng cao tính nhất quán giữa phân tích, thiết kế và lập trình.  Nâng cao chia sẽ trong ứng dụng. Những thuận lợi  Tính dùng lại của những kết quả phân tích thiết kế và lập trình.  Giảm bớt các lỗi.  Sự thay đổi nhanh hơn.  Phương pháp Object-oriented cho phép giải quyết hầu hết các vấn đề.  Sự trừu tượng dữ liệu là quá trình nhận diện và nhóm các thuộc tính và hành động quan hệ tới một thực thể cụ thể. Tổng kết  Class định nghĩa một thực thể, trong khi một object là một thực thể thực sự.  Construction và Destruction  Persistence, Data encapsulation, Inheritance và Polymorphism  Các đối tượng trong thế giới thực chứa ___ và ___.  Một trạng thái của đối tượng được lưu trữ trong ___.  Một hành vi của đối tượng được phơi bày thông qua ___.  Các dữ liệu nội tại được che đậy từ thế giới bên ngòai và chỉ truy xuất qua phương Câu hỏi thức được biết như dữ liệu ___.  Bản thiết kế cho một đối tượng phần mềm được gọi là ___.  Hành vi chung, phổ biến có thể được định nghĩa trong ___ và được thừa kế vào ___  Một tập phương thức với không hiện thực được gọi là ___. 2. Giới thiệu (Introduction) 3. Cài đặt (Setup) 3.1. Visual Studio C# 4. Cửa sổ làm việc (Window) 4.1. Khởi động (Open),Thoát (Exit) Khởi động - Click chọn nút > chọn > chọn Microsoft Visual Studio 2005 > chọn Microsoft (Open) Visual Studio 2005 . leonguyen.com 4
  5. Tài liệu C# - Click menu > chọn Exit. Thoát (Exit) 4.2. Giao diện (Interface) Giao diện (Interface) 5. Ứng dụng (Solution) Tạo mới * Trang Start: (New) - Click chọn mục . * Nút công cụ: - Click chọn nút New Project > chọn New Project để tạo ứng dụng Desktop. * Menu: - Click chọn menu > chọn New > chọn Project để tạo ứng dụng Desktop. leonguyen.com 5
  6. Tài liệu C# Ấn phím Ctrl + Shift + N. - Khi đó xuất hiện Hộp thoại New Project: + Chọn loại ứng dụng: o Visual C# Windows Smart Device Database o Visual VB Windows Smart Device Database o Visual C++ + ATL + CLR + General + MFC + Smart Device + Win32 o Visual J# leonguyen.com 6
  7. Tài liệu C# + Chọn hộp để tạo một Project trong Solution mới. + Click chuột phải lên Solution trong khung bên phải để thêm một Project cho Solution này: + Chọn vị trí lưu trữ và đặt tên ứng dụng ở hộp . + Chọn ngôn ngữ lập trình ở hộp . - Sau đó ứng dụng được tạo ra như sau: Lưu trữ * Lưu ứng dụng: (Save) C1: Click chọn nút Save . leonguyen.com 7
  8. Tài liệu C# C2: Click chọn menu > chọn Save. Ấn phím Ctrl + S. * Cập nhật ứng dụng hiện tại: Giống lưu ứng dụng. * Cập nhật tất cả ứng dụng: C1: Click chọn nút Save All . C2: Click chọn menu > chọn Save All. Ấn phím Ctrl + Shift + S. * Lưu với 1 tên khác: Click chọn menu > chọn Save as. Đóng Click chọn menu > chọn Close Solution. (Close) leonguyen.com 8
  9. Tài liệu C# * Trang Start: - Click chọn mục . * Menu: - Click chọn menu > chọn Open > chọn: + Project/Solution để mở ứng dụng Desktop. Mở (Open) Ấn phím Ctrl + Shift + O. + Web Site để mở ứng dụng Web. * Nút công cụ: Click chọn nút Open File để mở 1 file mã nguồn. Ấn phím Ctrl + O. - Biên dịch kiểu debug có kèm thông tin debug: Run Ấn phím F5. (Chạy) - Biên dịch kiểu release không kèm thông tin debug: Ấn phím Ctrl + F5. - Chèn dấu break point: Ấn phím F9. - Đi vào phân tích 1 hàm (Chỉ phân tích những hàm ta viết, không phân tích hàm có sẵn): Ấn phím F10. Gỡ lỗi - Duyệt qua 1 hàm: (Debug) Ấn phím F11. - Dùng cửa sổ Watch để theo dõi giá trị mong muốn và thực tế. - Thôi không phân tích 1 hàm hay nhảy đến dấu break point: Ấn phím Shift + F11. leonguyen.com 9
  10. Tài liệu C# 5.1. Dự án (Project) * Trang Start: - Click chọn mục . * Nút công cụ: - Click chọn nút New Project > chọn New Project để tạo ứng dụng Desktop. * Menu: - Click chọn menu > chọn New > chọn Project để tạo ứng dụng Desktop. Ấn phím Ctrl + Shift + N. - Khi đó xuất hiện Hộp thoại New Project: New (Tạo mới) + Chọn hộp để tạo một Project trong Solution cũ. + Click chuột phải lên Solution trong khung bên phải để thêm một Project cho Solution này: Save (Lưu * Lưu ứng dụng: trữ) C1: Click chọn nút Save . C2: Click chọn menu > chọn Save. Ấn phím Ctrl + S. leonguyen.com 10
  11. Tài liệu C# * Cập nhật ứng dụng hiện tại: Giống lưu ứng dụng. * Cập nhật tất cả ứng dụng: C1: Click chọn nút Save All . C2: Click chọn menu > chọn Save All. Ấn phím Ctrl + Shift + S. * Lưu với 1 tên khác: Click chọn menu > chọn Save as. * Lưu với mã Unicode: - Chọn Apply to all documents > chọn nút Save with other encoding. leonguyen.com 11
  12. Tài liệu C# - Chọn Unicode (UTF-8). Click chuột phải lên Project rồi chọn Remove. Close (Đóng) Open (Mở) * Trang Start: - Click chọn mục . * Menu: - Click chọn menu > chọn Open > chọn: Project/Solution để mở ứng dụng Desktop. Ấn phím Ctrl + Shift + O. + Web Site để mở ứng dụng Web. leonguyen.com 12
  13. Tài liệu C# * Nút công cụ: Click chọn nút Open File để mở 1 file mã nguồn. Ấn phím Ctrl + O. - Click chuột phải lên Project > chọn Rename. Rename (Đổi tên) - Click chuột phải lên Project > chọn Build. Build (Biên dịch) Tham chiếu - Click chuột phải lên Project > chọn Add Reference. (Reference) leonguyen.com 13
  14. Tài liệu C# - Chọn thẻ > Double Click lên Project sẽ tham chiếu đến. 5.1.1. DTO, DAO, BUS Tạo mới (New) - Chọn mục . 5.1.2. Presentation Tạo mới (New) - Chọn mục . 5.1.3. Item (Thành phần) C1: Click chọn menu > chọn đối tượng thêm vào: Add C2: Click chuột phải lên Project bất kì rồi chọn đối tượng (Thêm) - Ấn phím Shift + Alt+ C để thêm Lớp. - Ấn phím Ctrl + Shift+ A để thêm Thành phần mới. - Ấn phím Shift + Alt+ A để thêm Thành phần có sẵn. leonguyen.com 14
  15. Tài liệu C# 5.1.4. File (Tập tin) Click chọn menu > chọn New > chọn File. Ấn phím Ctrl + N. - Khi đó sẽ xuất hiện hộp thoại New File: New (Tạo mới) Save (Lưu trữ) * Lưu ứng dụng: C1: Click chọn nút Save . C2: Click chọn menu > chọn Save. Ấn phím Ctrl + S. * Cập nhật ứng dụng hiện tại: Giống lưu ứng dụng. * Cập nhật tất cả ứng dụng: C1: Click chọn nút Save All . C2: Click chọn menu > chọn Save All. Ấn phím Ctrl + Shift + S. leonguyen.com 15
  16. Tài liệu C# * Lưu với 1 tên khác: Click chọn menu > chọn Save as. Click chuột phải lên Project rồi chọn Remove. Close (Đóng) Open (Mở) * Trang Start: - Click chọn mục . * Menu: - Click chọn menu > chọn Open > chọn: leonguyen.com 16
  17. Tài liệu C# * Nút công cụ: Click chọn nút Open File để mở 1 file mã nguồn. Ấn phím Ctrl + O. - Click chuột phải lên file > chọn Rename. Rename (Đổi tên) 6. Cấu trúc chương trình (Program Structure) - Bản chất của lập trình hướng đối tượng là tạo ra các kiểu mới và được gọi là lớp. Một lớp biểu diễn Giới thiệu một vật gì đó, thể hiện đó của lớp được gọi là đối tượng. (Intruduction) - Giống với các ngôn ngữ lập trình hướng đối tượng khác, một kiểu trong C# cũng định nghĩa bằng từ khoá class. using Bộ_khung; namespace Tên_Ứng_dụng { class Tên_lớp { Cú pháp (Syntax) static void Main(string[] args) { //Ghi chú; Câu_lệnh; } } } Ví dụ (Example) * Viết chương trình: using System; leonguyen.com 17
  18. Tài liệu C# using System.Collections.Generic; using System.Text; namespace appHello { class clsHello { static void Main(string[] args) { //Đây là chương trình đầu tiên của tôi Console.WriteLine("Hello the world!"); Console.ReadLine(); } } }  Hello the world 6.1. Phần ghi chú (Comment) - Là dòng văn bản được viết trong chương trình nhưng không ảnh hưởng đến chương trình. Định nghĩa - Thường được dùng giải thích ngắn gọn những gì chương trình đang làm. Ghi chú Phân loại Từng dòng Theo khối * Cú pháp: //Dòng ghi chú Ghi chú từng dòng * VD: //Day la chuong trinh dau tien cua toi * Cú pháp: /* Dòng ghi chú 1 Ghi chú theo khối Dòng ghi chú n */ * VD: /* Chuong trinh dau tien Tac gia: Nguyen Van A */ 6.2. Phần Khai báo các Tập tin Thư viện (Library) 6.3. Hàm main 7. Giao diện (Interface) 7.1. Nhập (Input), Xuất (Output) 7.1.1. Lệnh xuất ra màn hình Mục đích - Là lệnh cho phép in ra màn hình các giá trị thuộc các kiểu dữ liệu khác nhau. (Purpose) Mô hình (Model) Write - Cùng dòng: WriteLine Cú pháp Console.Write(Biểu_thức_1, ,Biểu_thức_n); (Syntax) - Xuống dòng: Console.WriteLine(Biểu_thức_1, ,Biểu_thức_n); Ví dụ Console.WriteLine("{0} + {1} = {2}", i, j, i + j); (Example) leonguyen.com 18
  19. Tài liệu C# Escape Sequence Character \' Single quote \" Double quote \\ Backslash \0 Null \a Alert Kí tự escape \b Backspace \f Form feed \n New line \r Carriage return \t Tab character \v Vertical tab 7.1.2. Lệnh nhập vào từ bàn phím - Là lệnh cho phép ghi nhận từ bàn phím các giá trị thuộc các kiểu dữ liệu khác nhau vào Mục đích cho biến. (Purpose) - Khi nhập xong thì ấn phím Enter để kết thúc việc nhập. Mô hình (Model) Read - Cùng dòng: ReadLine Cú pháp Biến_Số_nguyên=Console.Read(); (Syntax) - Xuống dòng: Biến_Chuỗi=Console.ReadLine(); Ví dụ string s=Console.ReadLine(); (Example) 7.2. Control (Điều khiển) 8. Dữ liệu (Data) 9. Giải thuật (Algorithm) 10. Mảng (Array) 11. Chuỗi (String) 12. Hàm (Function) 13. Cấu trúc (Structure) Khai báo - Struct là kiểu Value Type không phải là Reference Type => có thể không cần sử dụng từ khóa new. - Trong Struct có thể định nghĩa các phương thức (giống Mục đích Class). (Purpose) - Trong Struct, trình biên dịch luôn luôn cung cấp một constructor không tham số mặc định, và không cho phép thay thế. - Struct không hỗ trợ thừa kế. Mô hình (Model) Cú pháp (Syntax) Ví dụ struct StrHocSinh (Example) { public int MaSo; public string HoTen; leonguyen.com 19
  20. Tài liệu C# public double Toan; public double Van; public double DTB; public StrHocSinh(int ms, string ht, double t, double v) { MaSo = ms; HoTen = ht; Toan = t; Van = v; DTB = (t+ v)/2; } } leonguyen.com 20
  21. Tài liệu C# 14. Lớp (Class) 14.1. 3 Layer 14.1.1. DTO (Data Tranfer Object) using System; using System.Collections.Generic; using System.Text; namespace DTO { public class Tên_LớpDTO { //Biến private Kiểu_dữ_liệu Tên_Biến; //Thuộc tính public Kiểu_dữ_liệu Tên_Thuộc_tính Cú pháp { get { return Tên_Biến; } set { Tên_Biến = value; } } //Phương thức khởi tạo public Tên_LớpDTO() { Tên_Biến = Giá_trị_khởi_tạo; } } } Ví dụ using System; using System.Collections.Generic; using System.Text; namespace DTO { public class LopHocDTO { private int ma; leonguyen.com 21
  22. Tài liệu C# private string ten; public int Ma { get { return ma; } set { ma = value; } } public string Ten { get { return ten; } set { ten = value; } } public LopHocDTO() { ma = 0; ten = ""; } } } 14.1.1.1. CRT (Control) using System; using System.Collections.Generic; using System.Text; namespace DTO { public class Tên_LớpCRT { //Biến private Kiểu_dữ_liệu Tên_Biến; private bool Tên_Điều_kiện; //Thuộc tính public Kiểu_dữ_liệu Tên_Thuộc_tính { get { return Tên_Biến; } Cú pháp set { Tên_Biến = value; } } public bool Tên_Điều_kiện { get { return Tên_Biến; } set { Tên_Biến = value; } } //Phương thức khởi tạo public Tên_LớpCRT() { Tên_Biến = Giá_trị_khởi_tạo; Tên_Điều_kiện = false; } } } Ví dụ using System; using System.Collections.Generic; using System.Text; namespace DTO { class HocSinhCRT leonguyen.com 22
  23. Tài liệu C# { //Biến #region Attributes private int ma; private string ten; private DateTime ngaySinhTu; private DateTime ngaySinhDen; private string diaChi; private double toanTu; private double toanDen; private double lyTu; private double lyDen; private double hoaTu; private double hoaDen; private double dtbTu; private double dtbDen; private int maLop; private bool checkNgaySinh; private bool checkDiaChi; private bool checkToan; private bool checkLy; private bool checkHoa; private bool checkDTB; private bool checkLopHoc; #endregion Attributes //Thuộc tính #region Properties public int Ma { get { return ma; } set { ma = value; } } public string Ten { get { return ten; } set { ten = value; } } public DateTime NgaySinhTu { get { return ngaySinhTu; } set { ngaySinhTu = value; } } leonguyen.com 23
  24. Tài liệu C# public DateTime NgaySinhDen { get { return ngaySinhDen; } set { ngaySinhDen = value; } } public string DiaChi { get { return diaChi; } set { diaChi = value; } } public double ToanTu { get { return toanTu; } set { toanTu = value; } } public double ToanDen { get { return toanDen; } set { toanDen = value; } } public double LyTu { get { return lyTu; } set { lyTu = value; } } public double LyDen { get { return lyDen; } set { lyDen = value; } } public double HoaTu { get { return hoaTu; } set { hoaTu = value; } } public double HoaDen { get { return hoaDen; } set { hoaDen = value; } } public double DTBTu { get { return dtbTu; } set { dtbTu = value; } } public double DTBDen { get { return dtbDen; } set { dtbDen = value; } } public int MaLop { get { return maLop; } set { maLop = value; } leonguyen.com 24
  25. Tài liệu C# } public bool CheckNgaySinh { get { return checkNgaySinh; } set { checkNgaySinh = value; } } public bool CheckDiaChi { get { return checkDiaChi; } set { checkDiaChi = value; } } public bool CheckToan { get { return checkToan; } set { checkToan = value; } } public bool CheckLy { get { return checkLy; } set { checkLy = value; } } public bool CheckHoa { get { return checkHoa; } set { checkHoa = value; } } public bool CheckDTB { get { return checkDTB; } set { checkDTB = value; } } public bool CheckLopHoc { get { return checkLopHoc; } set { checkLopHoc = value; } } #endregion Properties //Phương thức khởi tạo #region Contructor public HocSinhCRT() { Ma = 0; Ten = ""; NgaySinhTu = new DateTime(1950, 1, 1); NgaySinhDen = new DateTime(1997, 1, 1); DiaChi = ""; ToanTu = 0; ToanDen = 10; LyTu = 0; LyDen = 10; HoaTu = 0; HoaDen = 10; DTBTu = 0; DTBDen = 10; MaLop = 0; CheckNgaySinh = false; CheckDiaChi = false; leonguyen.com 25
  26. Tài liệu C# CheckToan = false; CheckLy = false; CheckHoa = false; CheckDTB = false; CheckLopHoc = false; } #endregion Contructor } } 14.2. DAO (Data Access Object) Cú using System; pháp using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using DTO; namespace DAO { public class Tên_LớpDAO { //Phương thức Kết nối public OleDbConnection ConnectionData() { // Tạo chuỗi kết nối string Chuỗi_kết_nối = " "; // Tạo đối tượng kết nối OleDbConnection Đối_tượng_kết_nối = new OleDbConnection(Chuỗi_kết_nối); // Mở kết nối Đối_tượng_kết_nối.Open(); // Trả đối tượng kết nối return Đối_tượng_kết_nối; } //Phương thức Lấy danh sách điền vào ComboBox, DataGrid public IList LayDanhSach() { // Kết nối OleDbConnection Đối_tượng_kết_nối = ConnectionData(); // Tạo chuỗi SQL string Chuỗi_SQL = "SELECT * FROM Bảng"; // Lấy danh sách OleDbCommand Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối); OleDbDataReader Đối_tượng_DataReader = Đối_tượng_Command.ExecuteReader(); ArrayList Đối_tượng_Danh_sách = new ArrayList(); Lớp_DTO Đối_tượng_DTO = new Lớp_DTO(); while (Đối_tượng_DataReader.Read()) { Đối_tượng_DTO = new Lớp_DTO(); Đối_tượng_DTO.Thuộc_tính = (Kiểu_dữ_liệu)Đối_tượng_DataReader Reader["Tên_Cột"]; Đối_tượng_Danh_sách.Add(Đối_tượng_DTO); } // Đóng kết nối Đối_tượng_kết_nối.Close(); // Trả về đối tượng Danh sách leonguyen.com 26
  27. Tài liệu C# return Đối_tượng_danh_sách; } //Phương thức Lấy bảng public DataTable LayBang() { // Kết nối OleDbConnection Đối_tượng_kết_nối = ConnectionData(); // Tạo chuỗi SQL string Chuỗi_SQL = "SELECT * FROM Bảng"; // Lấy bảng OleDbDataAdapter Đối_tượng_DataAdapter = new OleDbDataAdapter(Chuỗi_SQL, Đối_tượng_kết_nối); DataTable Đối_tượng_Bảng = new DataTable(); Đối_tượng_DataAdapter.Fill(Đối_tượng_Bảng); // Đóng kết nối Đối_tượng_kết_nối.Close(); // Trả về đối tượng danh sách return Đối_tượng_Bảng; } //Phương thức Cập nhật bảng public void CapNhatBang(DataTable Đối_tượng_Bảng) { // Kết nối OleDbConnection Đối_tượng_kết_nối = ConnectionData(); // Tạo chuỗi SQL string Chuỗi_SQL = "SELECT * FROM Bảng"; // Cập nhật bảng OleDbDataAdapter Đối_tượng_DataAdapter = new OleDbDataAdapter(Chuỗi_SQL, Đối_tượng_kết_nối); OleDbCommandBuilder Đối_tượng_CommandBuilder = new OleDbCommandBuilder(Đối_tượng_DataAdapter); Đối_tượng_DataAdapter.Update(Đối_tượng_Bảng); // Đóng kết nối cn.Close(); } //Phương thức Tìm kiếm public Lớp_DTO TimKiem(Kiểu_dữ_liệu Mã) { // Kết nối OleDbConnection Đối_tượng_kết_nối = ConnectionData(); // Tạo chuỗi SQL string Chuỗi_SQL = "SELECT * FROM Bảng WHERE Cột_Mã = ?"; // Tìm kiếm OleDbCommand Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối); Đối_tượng_Command.Parameters.Add("@Cột_Mã", OleDbType.Kiểu_dữ_liệu); Đối_tượng_Command.Parameters["@Cột_Mã"].Value = Mã; OleDbDataReader Đối_tượng_DataReader = Đối_tượng_Command.ExecuteReader(); Lớp_DTO Đối_tượng_DTO = new Lớp_DTO(); while (Đối_tượng_DataReader.Read()) { Đối_tượng_DTO.Thuộc_tính_Mã = (Kiểu_dữ_liệu)Đối_tượng_DataReader["Cột_Mã"]; Đối_tượng_DTO.Thuộc_tính_Khác = (Kiểu_dữ_liệu)Đối_tượng_DataReader["Cột_Khác"]; } // Đóng kết nối Đối_tượng_DataReader.Close(); Đối_tượng_kết_nối.Close(); // Trả về đối tượng DTO leonguyen.com 27
  28. Tài liệu C# return Đối_tượng_DTO; } //Phương thức Thêm public void Them(Lớp_DTO Đối_tượng_DTO) { // Kết nối OleDbConnection Đối_tượng_kết_nối = ConnectionData(); // Tạo chuỗi SQL string Chuỗi_SQL = "INSERT INTO Bảng(Cột) VALUES(?)"; // Thêm OleDbCommand Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối); Đối_tượng_Command.Parameters.Add("@Cột", OleDbType.Kiễu_dữ_liệu); Đối_tượng_Command.ExecuteNonQuery(); Chuỗi_SQL = "SELECT @@IDENTITY"; Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối); Đối_tượng_DTO.Thuộc_tính_Mã = (Kiễu_dữ_liệu)Đối_tượng_Command.ExecuteScalar(); // Đóng kết nối Đối_tượng_kết_nối.Close(); } // Phương thức Xóa public void Xoa(Kiễu_dữ_liệu Mã) { // Kết nối OleDbConnection Đối_tượng_kết_nối = ConnectionData(); // Tạo chuỗi SQL string strSQL = "DELETE FROM LopHoc WHERE Cột_Mã = ?"; // Xóa OleDbCommand Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối); Đối_tượng_Command.Parameters.Add("@Cột_Mã", OleDbType.Kiễu_dữ_liệu); Đối_tượng_Command.Parameters["@Cột_Mã"].Value = Mã; Đối_tượng_Command.ExecuteNonQuery(); // Đóng kết nối Đối_tượng_kết_nối.Close(); } //Phương thức Sửa public void Sua(Lớp_DTO Đối_tượng_DTO) { // Kết nối OleDbConnection Đối_tượng_kết_nối = ConnectionData(); // Tạo chuỗi SQL string strSQL = "UPDATE LopHoc SET Cột_Khác = ? WHERE Cột_Mã = ?"; // Sửa OleDbCommand Đối_tượng_Command = new OleDbCommand(Chuỗi_SQL, Đối_tượng_kết_nối); Đối_tượng_Command.Parameters.Add("@Cột_Khác", OleDbType.WChar); Đối_tượng_Command.Parameters.Add("@Cột_Mã", OleDbType.Integer); Đối_tượng_Command.Parameters["@Cột_Khác"].Value = Đối_tượng_DTO.Thuộc_tính_Khác; Đối_tượng_Command.Parameters["@Cột_Mã "].Value = Đối_tượng_DTO. Thuộc_tính_Mã; Đối_tượng_Command.ExecuteNonQuery(); // Đóng kết nối Đối_tượng_kết_nối.Close(); } } } Ví dụ using System; using System.Collections.Generic; leonguyen.com 28
  29. Tài liệu C# using System.Text; using System.Data; using System.Data.OleDb; using DTO; namespace DAO { public class LopHocDAO { //Phương thức Kết nối public OleDbConnection ConnectionData() { // Tạo chuỗi kết nối string cnStr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = TruongHoc.mdb"; // Tạo đối tượng kết nối và mở kết nối OleDbConnection cn = new OleDbConnection(cnStr); // Kết nối cn.Open(); // Trả đối tượng kết nối return cn; } //Phương thức Lấy danh sách điền vào ComboBox, DataGrid public IList LayDanhSach() { // Kết nối OleDbConnection cn = ConnectionData(); // Tạo chuỗi SQL string strSQL = "SELECT * FROM LopHoc"; // Lấy danh sách OleDbCommand cmd = new OleDbCommand(strSQL, cn); OleDbDataReader dr = cmd.ExecuteReader(); LopHocDTO lh = new LopHocDTO(); ArrayList ds = new ArrayList(); while (dr.Read()) { lh = new LopHocDTO(); lh.Ma = (int)dr["Ma"]; lh.Ten = (string)dr["Ten"]; ds.Add(lh); } // Đóng kết nối cn.Close(); // Trả về đối tượng Danh sách return ds; } //Phương thức Lấy bảng public DataTable LayBang() { // Kết nối OleDbConnection cn = ConnectionData(); // Tạo chuỗi SQL string strSQL = "SELECT * FROM LopHoc"; // Lấy bảng OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn); DataTable dt = new DataTable(); da.Fill(dt); // Dong ket noi CSDL cn.Close(); // Trả về đối tượng Bảng return dt; } leonguyen.com 29
  30. Tài liệu C# //Phương thức Cập nhật bảng public void CapNhatBang(DataTable dt) { // Kết nối OleDbConnection cn = ConnectionData(); // Tạo chuỗi SQL string strSQL = "SELECT * FROM LopHoc"; // Cập nhật bảng OleDbDataAdapter da = new OleDbDataAdapter(strSQL, cn); OleDbCommandBuilder cb = new OleDbCommandBuilder(da); da.Update(dt); // Đóng kết nối cn.Close(); } //Phương thức Tìm kiếm public LopHocDto TimKiem(int maLop) { // Kết nối OleDbConnection cn = ConnectionData(); // Tạo chuỗi SQL string strSQL = "SELECT * FROM LopHoc WHERE Ma = ?"; // Tìm kiếm OleDbCommand cmd = new OleDbCommand(strSQL, cn); cmd.Parameters.Add("@Ma", OleDbType.Integer); cmd.Parameters["@Ma"].Value = maLop; OleDbDataReader dr = cmd.ExecuteReader(); LopHocDto lhDto = new LopHocDto(); while (dr.Read()) { lhDto.Ma = (int)dr["Ma"]; lhDto.Ten = (string)dr["Ten"]; } // Đóng kết nối dr.Close(); cn.Close(); // Trả về đối tượng DTO return lhDto; } //Phương thức Thêm public void Them(LopHocDto lhDto) { // Kết nối OleDbConnection cn = ConnectionData(); // Tạo chuỗi SQL string strSQL = "INSERT INTO LopHoc(Ten) VALUES(?)"; // Thêm OleDbCommand cmd = new OleDbCommand(strSQL, cn); cmd.Parameters.Add("@Ten", OleDbType.WChar); cmd.ExecuteNonQuery(); strSQL = "Select @@IDENTITY"; cmd = new OleDbCommand(strSQL, cn); lhDto.Ma = (int)cmd.ExecuteScalar(); // Đóng kết nối cn.Close(); } // Phương thức Xóa public void Xoa(int maLop) { // Kết nối OleDbConnection cn = ConnectionData(); // Tạo chuỗi SQL leonguyen.com 30
  31. Tài liệu C# string strSQL = "DELETE FROM LopHoc WHERE Ma = ?"; // Xóa OleDbCommand cmd = new OleDbCommand(strSQL, cn); cmd.Parameters.Add("@Ma", OleDbType.Integer); cmd.Parameters["@Ma"].Value = maLop; cmd.ExecuteNonQuery(); // Đóng kết nối cn.Close(); } //Phương thức Sửa public void Sua(LopHocDto lhDto) { // Kết nối OleDbConnection cn = ConnectionData(); // Tạo chuỗi SQL string strSQL = "UPDATE LopHoc SET Ten = ? WHERE Ma = ?"; // Sửa OleDbCommand cmd = new OleDbCommand(strSQL, cn); cmd.Parameters.Add("@Ten", OleDbType.WChar); cmd.Parameters.Add("@Ma", OleDbType.Integer); cmd.Parameters["@Ten"].Value = lhDto.Ten; cmd.Parameters["@Ma"].Value = lhDto.Ma; cmd.ExecuteNonQuery(); // Đóng kết nối cn.Close(); } } } 14.3. BUS (Business Logic) Cú pháp using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; using DTO; namespace BUS { public class Tên_Lớp BUS { //Phương thức Lấy danh sách public IList LayDanhSach() { // Khai báo Đối tượng lớp DAO LớpDAO Đối_tượng_DAO = new LớpDAO(); // Lấy danh sách IList Đối_tượng_Danh_sách = Đối_tượng_DAO.LayDanhSach(); // Trả về đối tượng Danh sách return Đối_tượng_danh_sách; } //Phương thức Lấy bảng public DataTable LayBang() { // Khai báo Đối tượng lớp DAO LớpDAO Đối_tượng_DAO = new LớpDAO(); // Lấy Bảng DataTable Đối_tượng_Bảng = Đối_tượng_DAO.LayBang(); // Trả về đối tượng Bảng leonguyen.com 31
  32. Tài liệu C# return Đối_tượng_Bảng; } //Phương thức Cập nhật Bảng public void CapNhatBang(DataTable Đối_tượng_Bảng) { // Khai báo Đối tượng lớp DAO LớpDAO Đối_tượng_DAO = new LớpDAO(); // Cập nhật Bảng hsDAO.CapNhatBang(dt); } //Phương thức Tìm kiếm public Lớp_DTO TimKiem(Kiểu_dữ_liệu Mã) { // Khai báo Đối tượng lớp DAO LớpDAO Đối_tượng_DAO = new LớpDAO(); // Tìm kiếm LớpDTO Đối_tượng_DTO = Đối_tượng_DAO.TimKiem(Mã); // Trả về Đối tượng DTO return Đối_tượng_DTO; } //Phương thức Thêm public void Them(Lớp_DTO Đối_tượng_DTO) { // Kiểm tra Đối tượng DTO if ((Đối_tượng_DTO.Thuộc_tính So_sánh Giá_trị)) { throw new Exception("Lỗi"); } // Khai báo Đối tượng lớp DAO LớpDAO Đối_tượng_DAO = new LớpDAO(); // Thêm Đối_tượng_DAO.Them(Đối_tượng_DTO); } //Phương thức Xóa public void Xoa(Kiễu_dữ_liệu Mã) { // Khai báo Đối tượng lớp DAO LớpDAO Đối_tượng_DAO = new LớpDAO(); // Xóa Đối_tượng_DAO.Xoa(Mã); } //Phương thức Sửa public void Sua(Lớp_DTO Đối_tượng_DTO) { // Khai báo Đối tượng lớp DAO LớpDAO Đối_tượng_DAO = new LớpDAO(); // Sửa Đối_tượng_DAO.Sua(Lớp_DTO Đối_tượng_DTO); } } } Ví dụ using System; using System.Collections.Generic; using System.Text; using DAO; using DTO; namespace BUS { leonguyen.com 32
  33. Tài liệu C# class HocSinhBUS { //Phương thức Lấy danh sách public IList LayDanhSach() { // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Lấy danh sách IList ds = hsDAO.LayDanhSach(); // Trả về đối tượng Danh sách return ds; } //Phương thức Lấy Bảng public DataTable LayBang() { // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Lấy Bảng DataTable dt = hsDAO.LayBang(); // Trả về đối tượng Bảng return dt; } //Phương thức Cập nhật Bảng public void CapNhatBang(DataTable dt) { // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Cập nhật Bảng hsDAO.CapNhatBang(dt); } //Phương thức Tìm kiếm public HocSinhDTO TimKiem(int maHS) { // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Tìm kiếm HocSinhDTO hsDTO = hsDAO.TimKiem(maHS); // Trả về Đối tượng DTO return hsDTO; } //Phương thức Tìm kiếm public DataTable TimKiem(HocSinhCRT hsCRT) { // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Tìm kiếm DataTable dt = hsDAO.TimKiem(hsCRT); // Trả về Đối tượng Bảng return dt; } //Phương thức Thêm public void Them(HocSinhDTO hsDTO) { // Kiểm tra Đối tượng DTO if ((hsDTO.Toan > 10)) { throw new Exception("Diem toan khong lon hon 10"); } else if ((hsDTO.Ly > 10)) leonguyen.com 33
  34. Tài liệu C# { throw new Exception("Diem ly khong lon hon 10"); } else if ((hsDTO.Hoa > 10)) { throw new Exception("Diem Hoa khong lon hon 10"); } // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Thêm hsDAO.Them(hsDTO); } //Phương thức Xóa public void Xoa(int maHocSinh) { // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Xóa hsDAO.Xoa(maHocSinh); } //Phương thức Sửa public void Sua(HocSinhDTO hsDTO) { // Khai báo Đối tượng lớp DAO HocSinhDAO hsDAO = new HocSinhDAO(); // Sửa hsDAO.Sua(hsDTO); } } } leonguyen.com 34
  35. Tài liệu C# 15. ADO.NET leonguyen.com 35