32
Khái niệm cơ bản Khái niệm cơ bản C# C# Trần Anh Tuấn A Trần Anh Tuấn A

Bai 2 - Khai Niem Co Ban C#

Embed Size (px)

Citation preview

Page 1: Bai 2 - Khai Niem Co Ban C#

Khái niệm cơ bản C#Khái niệm cơ bản C#

Trần Anh Tuấn ATrần Anh Tuấn A

Page 2: Bai 2 - Khai Niem Co Ban C#

Nội dung Nội dung

Giới thiệu C#Giới thiệu C# Chủ đề nâng cao trong C#Chủ đề nâng cao trong C#

Những cơ sở ngôn ngữ C#Những cơ sở ngôn ngữ C# Lớp và đối tượngLớp và đối tượng Thừa kế và đa hìnhThừa kế và đa hình Cấu trúcCấu trúc Giao diệnGiao diện Array , Indexer , và CollectionArray , Indexer , và Collection ChuỗiChuỗi Xử lý lỗi & exception (biệt lệ)Xử lý lỗi & exception (biệt lệ) Delegate và EventDelegate và Event

Page 3: Bai 2 - Khai Niem Co Ban C#

Giới thiệu C#Giới thiệu C#

Được phát triển bởi đội ngũ kỹ sư của Được phát triển bởi đội ngũ kỹ sư của Microsoft. Dẫn đầu là : Anders Hejlsberg và Microsoft. Dẫn đầu là : Anders Hejlsberg và Scott WiltamuthScott Wiltamuth

C# là một ngôn ngữ :C# là một ngôn ngữ : Đơn giảnĐơn giản Hiện đạiHiện đại Hướng đối tượngHướng đối tượng Mạnh mẽ & Mềm dẻoMạnh mẽ & Mềm dẻo Ít từ khoáÍt từ khoá

Page 4: Bai 2 - Khai Niem Co Ban C#

Giới thiệu C#Giới thiệu C#

C# là một ngôn ngữ đơn giản : C# là một ngôn ngữ đơn giản : Loại bỏ những phức tạp có trong Java hay C++ như Loại bỏ những phức tạp có trong Java hay C++ như

macro , template , đa kế thừa , virtual base classmacro , template , đa kế thừa , virtual base class Giống về diện mạo cú pháp C và C++ nhưng được Giống về diện mạo cú pháp C và C++ nhưng được

cải tiến đơn giản hơn (Ví dụ : “:: , . , cải tiến đơn giản hơn (Ví dụ : “:: , . , ” chỉ còn “.”” chỉ còn “.” C# là một ngôn ngữ hiện đại :C# là một ngôn ngữ hiện đại :

Có đầy đủ các tính năng : Xử lý ngoại lệ , thu gom Có đầy đủ các tính năng : Xử lý ngoại lệ , thu gom bộ nhớ tự động , kiểu dữ liệu an toàn, bảo mật mã bộ nhớ tự động , kiểu dữ liệu an toàn, bảo mật mã nguồn…nguồn…

Page 5: Bai 2 - Khai Niem Co Ban C#

Giới thiệu C#Giới thiệu C#

C# là ngôn ngữ hướng đối tượng :C# là ngôn ngữ hướng đối tượng : Đóng gói (encapsulation)Đóng gói (encapsulation) Kế thừa (inheritance)Kế thừa (inheritance) Đa hình (polymorphism)Đa hình (polymorphism)

C# là một ngôn ngữ mạnh mẽ và mềm dẻo :C# là một ngôn ngữ mạnh mẽ và mềm dẻo : Tuỳ thuộc vào bản thân người dùng. Không có giới Tuỳ thuộc vào bản thân người dùng. Không có giới

hạn ở bản chất ngôn ngữ.hạn ở bản chất ngôn ngữ. Tạo các ứng dụng đồ hoạ, bàn tính, xử lý văn bản, Tạo các ứng dụng đồ hoạ, bàn tính, xử lý văn bản,

trình biên dịch cho các ngôn ngữ khác v.v…trình biên dịch cho các ngôn ngữ khác v.v…

Page 6: Bai 2 - Khai Niem Co Ban C#

Giới thiệu C#Giới thiệu C#

C# có ít từ khoá :C# có ít từ khoá :

Page 7: Bai 2 - Khai Niem Co Ban C#

Những cơ sở ngôn ngữ C#Những cơ sở ngôn ngữ C#

Các ghi chú : // (1 dòng) , /* (nhiều dòng) */Các ghi chú : // (1 dòng) , /* (nhiều dòng) */ #region :#region :

Từ khoá using : giúp sử dụng lớp có sẵn của không gian Từ khoá using : giúp sử dụng lớp có sẵn của không gian tên nào đó tiện lợi hơntên nào đó tiện lợi hơn VD : using System.IO; VD : using System.IO; Từ đó sử dụng được các lớp làm Từ đó sử dụng được các lớp làm

việc với luồng dữ liệu , tập tin , thư mục ổ đĩa v.v…việc với luồng dữ liệu , tập tin , thư mục ổ đĩa v.v… Ứng dụng dạng console:Ứng dụng dạng console:

Nhập : string sInput ;Nhập : string sInput ; sInput = System.Console.ReadLine();sInput = System.Console.ReadLine();

(chuyển kiểu : System.Convert.To????(sInput) )(chuyển kiểu : System.Convert.To????(sInput) ) Xuất :Xuất :

System.Console.WriteLine(“KQ = {0}”, sInput);System.Console.WriteLine(“KQ = {0}”, sInput);

Page 8: Bai 2 - Khai Niem Co Ban C#

Những cơ sở ngôn ngữ C#Những cơ sở ngôn ngữ C#

Phân biệt chữ hoa chữ thườngPhân biệt chữ hoa chữ thường Có các kiểu :Có các kiểu :

Dựng sẵn : byte , char , sbyte , int , float , double…Dựng sẵn : byte , char , sbyte , int , float , double… Hằng : const int PI = 3.1416;Hằng : const int PI = 3.1416; Liệt kê : enum Ngay {Hai,Ba,Tu,Nam,Sau,Bay,CN};Liệt kê : enum Ngay {Hai,Ba,Tu,Nam,Sau,Bay,CN};

Câu lệnh : if else , switch , for , while , gotoCâu lệnh : if else , switch , for , while , goto foreach : vòng lặp để duyệt tất cả các phần tử của mảng , tập foreach : vòng lặp để duyệt tất cả các phần tử của mảng , tập

hợphợpVD : int[] intarray; intarray = new int[5];VD : int[] intarray; intarray = new int[5];

foreach(int i in intarray) foreach(int i in intarray)

Console.WriteLine(i.ToString());Console.WriteLine(i.ToString());

Page 9: Bai 2 - Khai Niem Co Ban C#

Những cơ sở ngôn ngữ C#Những cơ sở ngôn ngữ C#

Tạo vùng tênTạo vùng tên

(namespace)(namespace)

Page 10: Bai 2 - Khai Niem Co Ban C#

Lớp và đối tượngLớp và đối tượng

Khai báo , tạo dựng và sử dụng lớp Khai báo , tạo dựng và sử dụng lớp

Page 11: Bai 2 - Khai Niem Co Ban C#

Lớp và đối tượngLớp và đối tượng

Phương thức thiết lập (Constructor)Phương thức thiết lập (Constructor) Phương thức thiết lập sao chépPhương thức thiết lập sao chép Phương thức huỷPhương thức huỷ Sử dụng using Sử dụng using

( hàm huỷ tự đông ( hàm huỷ tự đông

gọi trong thời gian gọi trong thời gian

sớm nhất)sớm nhất)

Page 12: Bai 2 - Khai Niem Co Ban C#

Lớp và đối tượngLớp và đối tượng

Tham chiếuTham chiếu Trong lớp TimeTrong lớp Time

Sử dụngSử dụng

Page 13: Bai 2 - Khai Niem Co Ban C#

Lớp và đối tượngLớp và đối tượng

Đóng gói dữ liệu với PropertyĐóng gói dữ liệu với Property Lớp người có chuỗi m_sHotenLớp người có chuỗi m_sHoten Cài đặt Property HoTenCài đặt Property HoTen

Sử dụng PropertySử dụng PropertyNguoi A = new Nguoi();Nguoi A = new Nguoi();

A.HoTen = “Tran Anh Tuan”;A.HoTen = “Tran Anh Tuan”;

string tentoi = A.HoTen;string tentoi = A.HoTen;

Page 14: Bai 2 - Khai Niem Co Ban C#

Thừa Kế & Đa HìnhThừa Kế & Đa Hình

Thừa kế : “:” Đa Hình : “virtual”Thừa kế : “:” Đa Hình : “virtual” Boxing & UnBoxingBoxing & UnBoxing

Boxing : chuyển đổi kiểu giá trị thành kiểu ObjectBoxing : chuyển đổi kiểu giá trị thành kiểu Object UnBoxing : Trả kết quả một đối tượng về giá trịUnBoxing : Trả kết quả một đối tượng về giá trị

Page 15: Bai 2 - Khai Niem Co Ban C#

Cấu TrúcCấu Trúc

Cách dùng :

Location loc

= new Location(200,300);

Console.WriteLine(“KQ = {0}”, loc );

Page 16: Bai 2 - Khai Niem Co Ban C#

Giao diệnGiao diện

Tạo một giao diện Tạo một giao diện

Mở rông giao diện & Kết hợp giao diệnMở rông giao diện & Kết hợp giao diện

Page 17: Bai 2 - Khai Niem Co Ban C#

Giao diệnGiao diện

Cách sử dụng :Cách sử dụng :

Toán tử is : kiểm tra xem đối tượng có được Toán tử is : kiểm tra xem đối tượng có được hỗ trợ giao diện hay không (VD doc is hỗ trợ giao diện hay không (VD doc is IStorable)IStorable)

Toán tử as : Kiểm tra và gán Toán tử as : Kiểm tra và gán

Page 18: Bai 2 - Khai Niem Co Ban C#

Array , Indexer , và CollectionArray , Indexer , và Collection

Array : Array :

Sử dụng lớp System.Array Sử dụng lớp System.Array (sẽ được hỗ trợ rất (sẽ được hỗ trợ rất nhiều các tính năng khác như :copy , sort , inverse…)nhiều các tính năng khác như :copy , sort , inverse…)

Page 19: Bai 2 - Khai Niem Co Ban C#

Indexer : Indexer : tương tự như Property nhưng là lấy theo index tương tự như Property nhưng là lấy theo index

Cách dùng :

Page 20: Bai 2 - Khai Niem Co Ban C#

Array , Indexer , và CollectionArray , Indexer , và Collection

.Net Framework cung cấp một số giao diện .Net Framework cung cấp một số giao diện chuẩn sau :chuẩn sau :

Page 21: Bai 2 - Khai Niem Co Ban C#

ChuỗiChuỗi

Khai báo :Khai báo :

ToString() : chuyển mọi kiểu về string (Object)ToString() : chuyển mọi kiểu về string (Object) Ghép chuỗi : “+” (VD : string s = b + “,” +c;)Ghép chuỗi : “+” (VD : string s = b + “,” +c;) Lấy ký tự thứ i: s[i]; Lấy ký tự thứ i: s[i]; Lấy chiều dài : s.lengthLấy chiều dài : s.length Chuỗi con : s.Substring(begin,end);Chuỗi con : s.Substring(begin,end); Thay thế : s.Replace( chuoi1 , chuoi2 )Thay thế : s.Replace( chuoi1 , chuoi2 )

Page 22: Bai 2 - Khai Niem Co Ban C#

ChuỗiChuỗi

Định dạng chuỗiĐịnh dạng chuỗi

Các thành viên lớp stringCác thành viên lớp string Compare() so sánh hai chuỗiCompare() so sánh hai chuỗi Copy() tạo bản saoCopy() tạo bản sao Insert() chèn chuỗiInsert() chèn chuỗi Split() cắt chuỗi v.v….Split() cắt chuỗi v.v…. Trim(), TrimEnd(),TrimStart() Trim(), TrimEnd(),TrimStart() ToUpper() , ToLower() v.v….ToUpper() , ToLower() v.v….

Page 23: Bai 2 - Khai Niem Co Ban C#

Xử lý lỗi & exception (biệt lệ)Xử lý lỗi & exception (biệt lệ)

Exception chứa các thông tin về sự cố bất Exception chứa các thông tin về sự cố bất thường của chương trìnhthường của chương trình

Phân biệt bug , error , và exceptionPhân biệt bug , error , và exception Chương trình dù đã không còn bug hay error Chương trình dù đã không còn bug hay error

vẫn có thể cho ra các exception ( truy cập , bộ vẫn có thể cho ra các exception ( truy cập , bộ nhớ )nhớ )

Có thể dùng các đối tượng exception có sẵn , Có thể dùng các đối tượng exception có sẵn , tự tạo exception , hay bắt exception trong tự tạo exception , hay bắt exception trong exception (trong trường hợp sửa lỗi )exception (trong trường hợp sửa lỗi )

Page 24: Bai 2 - Khai Niem Co Ban C#

Xử lý lỗi & exception (biệt lệ)Xử lý lỗi & exception (biệt lệ)

Cấu trúc xử lý lỗiCấu trúc xử lý lỗi

Page 25: Bai 2 - Khai Niem Co Ban C#

Xử lý lỗi & exception (biệt lệ)Xử lý lỗi & exception (biệt lệ)

Đối tượng Exception :Đối tượng Exception :

Tạo biệt lệ :Tạo biệt lệ :

Page 26: Bai 2 - Khai Niem Co Ban C#

Delegate và EventDelegate và Event

Delegate ( ủy thác , ủy quyền ) : giúp giải Delegate ( ủy thác , ủy quyền ) : giúp giải quyết vấn đề muốn thực thi một phương thức quyết vấn đề muốn thực thi một phương thức nào đó của một đối tượng nào đó nhưng người nào đó của một đối tượng nào đó nhưng người lập trình có thể chưa rõ lúc thiết kế. lập trình có thể chưa rõ lúc thiết kế.

Một delegate chứa tham chiếu tới hàmMột delegate chứa tham chiếu tới hàm Cách khai báoCách khai báo

Access Modifier delegate [void] DelegateName(…)

Page 27: Bai 2 - Khai Niem Co Ban C#
Page 28: Bai 2 - Khai Niem Co Ban C#

Event : Ứng với mỗi thao tác người dùng sẽ có một Event : Ứng với mỗi thao tác người dùng sẽ có một sự kiện phát sinh , và chương trình sẽ phải đáp trả cho sự kiện phát sinh , và chương trình sẽ phải đáp trả cho mỗi sự kiện này.mỗi sự kiện này.

Khái niệm Publishing và SubcribingKhái niệm Publishing và Subcribing Publishing : Một lớp phát sinh sự kiệnPublishing : Một lớp phát sinh sự kiện Subscribing : Các lớp được subscribe sẽ nhận thông báo về Subscribing : Các lớp được subscribe sẽ nhận thông báo về

sự kiện phát sinh , và thực thisự kiện phát sinh , và thực thi Event trong C# sẽ được cài đặt bằng delegate. Lớp Event trong C# sẽ được cài đặt bằng delegate. Lớp

publish định nghĩa một delegate. Khi một sự kiện publish định nghĩa một delegate. Khi một sự kiện phát sinh phương thức của lớp subscribe sẽ được gọi phát sinh phương thức của lớp subscribe sẽ được gọi thông qua delegatethông qua delegate

Delegate và EventDelegate và Event

Page 29: Bai 2 - Khai Niem Co Ban C#
Page 30: Bai 2 - Khai Niem Co Ban C#
Page 31: Bai 2 - Khai Niem Co Ban C#

Delegate và EventDelegate và Event

Page 32: Bai 2 - Khai Niem Co Ban C#

Bài sauBài sau

Window FormWindow Form Giới thiệu về Window FormGiới thiệu về Window Form Giới thiệu về các control , hộp thoại menu , Giới thiệu về các control , hộp thoại menu ,

custom controlcustom control Tác vụ FileTác vụ File

Quản lý thư mục ,tìm kiếm file , folderQuản lý thư mục ,tìm kiếm file , folder Di chuyển, sao chép, huỷ các file và folder Di chuyển, sao chép, huỷ các file và folder Đọc và ghi văn bản trong các file Đọc và ghi văn bản trong các file