Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
122,97 KB
Nội dung
Lớp đối tượng NET Framework Lớp đối tượng NET Framework Bởi: Khuyet Danh Trong chương tìm hiểu lớp sở mà NET cung cấp, lớp đơn giản giúp thực tốt thao tác nhập xuất, thao tác truy cập hệ thống, thực thi phép toán học, NET Framework chứa số lượng nhiều kiểu lớp, kiểu liệt kê, cấu trúc, giao diện nhiều kiểu liệu khác Thật vậy, có hàng ngàn số lượng kiểu Những lớp điều cho phép sử dụng chương trình C# Chúng ta tìm hiểu vài kiểu liệu thường sử dụng chương Các lớp trình bày thông qua ví dụ minh họa đơn giản Từ ví dụ minh họa cách sử dụng lớp sở mở rộng để tạo chương trình phức tạp Common Language Specification (CLR) Những lớp bên Framework viết với ngôn ngữ xác nhận chung (CLR) CLR đề cập vào phần đầu sách thảo luận MS.NET đầu CLS tập hợp luật hay quy tắc mà tất ngôn ngữ thực bên NET platform phải tuân thủ theo Tập hợp luật bao gồm kiểu liệu hệ thống chung, kiểu liệu mà tìm hiểu chương - Nền tảng ngôn ngữ C# Bằng cách đưa vào tập luật này, môi trường thực thi chung thực thi chương trình mà không quan tâm đến cú pháp ngôn ngữ sử dụng Lợi ích theo sau CLS mã nguồn viết ngôn ngữ gọi sử dụng ngôn ngữ khác Bởi thông thường bên Framework với CLS, chúng sử dụng không ngôn ngữ C# mà ngôn ngữ tương thích với CLS Visual Basic.NET JScript.NET 1/15 Lớp đối tượng NET Framework Kiểu liệu namespace Mã nguồn bên Framework tổ chức bên namespace Có hàng trăm namespace bên Framework sử dụng để tổ chức hàng ngàn lớp đối tượng kiểu liệu khác Một vài namespace lưu trữ bên namespace khác Ví dụ sử dụng kiểu liệu DateTime chứa namespace System Kiểu Random chứa namespace System Nhiều kiểu liệu phục vụ cho thao tác nhập xuất lưu trữ namespace chức namespace System namespace System.IO Nhiều kiểu liệu thường dùng để làm việc với liệu XML đặt bên namespace System.XML Chúng ta tìm hiểu namespace tài liệu trực tuyến Microsoft MSDN Online chẳng hạn Tiêu chuẩn ECMA Không phải tất kiểu liệu bên namespace cần thiết phải tương thích với tất ngôn ngữ khác Hơn nữa, công cụ phát triển tạo công ty khác cho ngôn ngữ C# không bao hàm phải tương thích với mã nguồn thông thường Khi ngôn ngữ C# hình thành Microsoft xác nhận đưa số lượng lớn kiểu liệu cho bảng tiêu chuẩn cho C# để chuẩn hóa Bằng cách xác nhận kiểu liệu theo tiêu chuẩn, điều xem việc mở cánh cửa cho nhà phát triển khác tạo công cụ trình biên dịch C# sử dụng namespace kiểu liệu Khi mã nguồn bên công cụ Microsoft tương thích với công cụ công ty khác Những lớp đối tượng chuẩn hóa định vị bên namespace System Những namespace khác chứa lớp không chuẩn hóa Nếu lớp phần tiêu chuẩn, không hỗ trợ tất hệ điều hành môi trường thực thi mà chúng viết để hỗ trợ C# Ví dụ, Microsoft thêm vào vài namespace với SDK Microsoft.VisualBasic, Microsoft.CSharp, Microsoft.Jscript Microsoft.Win32 Những namespace phần tiêu chuẩn ECMA Do chúng giá trị tất môi trường phát triển Tìm hiểu lớp Framework Như biết có hàng ngàn lớp kiểu liệu khác bên thư viện sở Có thể tốn vài sách có kích thước giáo trình để nói toàn chúng Trước tìm hiểu lớp bản, bạn xem tổng quan tài liệu trực tuyến để biết thêm lớp cở Tất lớp kiểu liệu khác 2/15 Lớp đối tượng NET Framework trình bày chương điều phần tiêu chuẩn xác nhận ECMA Không sử dụng kiểu liệu bên lớp thư viện mà mở rộng kiểu liệu Lớp Timer Chúng ta bắt đầu với ví dụ sau Ví dụ minh họa đơn giản thiết kế không tốt Hiển thị thời gian // Timer01.cs: Hiển thị ngày thời gian // nhấn Ctrl+C để thoát namespace Programming_CSharp { using System; public class Tester { public static void Main() { while (true) { Console.WriteLine("\n {0}", DateTime.Now); } } 3/15 Lớp đối tượng NET Framework } } Kết quả: 12/24/2001 3:21:20 PM Như thấy, kết chương trình thực thi vào lúc 3:21 vào ngày 24 tháng 12 Danh sách thể đồng hồ xuất dòng lệnh, chúng dường cập nhật giây đồng hồ Thật vậy, thông thường cập nhật nhiều lần, lưu ý giây đồng hồ thay đổi giá trị xuất thật khác Chương trình chạy đến ta nhấn thoát Ctrl + C Trong chương trình ta sử dụng kiểu liệu DateTime, cấu trúc chứa namespace System bên thư viện sở Cấu trúc có thuộc tính tĩnh Now trả thời gian hành Có nhiều liệu thành viên phương thức thêm vào cấu trúc DateTime Chúng ta tìm hiểu thêm DateTime thư viện trực tuyến lớp sở NET Framework Cách tốt để thị ngày hình sử dụng Timer Một Timer cho phép xử lý (hình thức delegate) gọi thời gian xác định hay sau chu kỳ trôi qua Framework chứa lớp Timer bên namespace System.Timers Lớp sử dụng ví dụ sau: Sử dụng Timer -// Timer02.cs: hiểu thị ngày sử dụng Timer // nhấn Ctrl+C hay ‘q’ Enter để thoát namespace Programming_CSharp 4/15 Lớp đối tượng NET Framework { using System; using System.Timers; public class Tester { public static void Main() { Timer myTimer = new Timer(); // khai báo hàm xử lý myTimer.Elapsed DisplayTimeEvent); += new ElapsedEventHandler( // khoảng thời gian delay myTimer.Interval = 1000; myTimer.Start(); // thực vòng lặp để chờ thoát while ( Console.Read() != ‘q’) {; // không làm hết! } } public static void ElapsedEventArgs t) DisplayTimeEvent( object source, { Console.Write("\n{0}", DateTime.Now); 5/15 Lớp đối tượng NET Framework } } } -Kết quả: 12/24/2001 3:45:20 PM -Kết thực giống ví dụ trước Tuy nhiên, chương trình thực tốt nhiều so với chương trình ban đầu Thay cập nhật không ngừng ngày hiển thị, chương trình cập nhật sau khoảng giây Chúng ta xem kỹ cách mà Timer làm việc Một đối tượng Timer tạo ra, thuộc tính Interval thiết lập Tiếp theo phương thức thực sau khoảng thời gian interval gắn với Timer Trong trường hợp phương thức DisplayTimeEvent đựơc thực thi, phương thức định nghĩa bên Khi Timer thực phương thức Start bắt đầu tính interval Một thuộc tính thành viên khác Timer AutoReset mà cần biết là: thay đổi giá trị mặc định từ true sang false, kiện Timer thực lần Khi AutoReset có giá trị true hay ta thiết lập giá trị true Timer kích hoạt kiện thực thi phương thức thời gian đưa (interval) Trong chương trình chứa vòng lặp thực đến người dùng nhấn ký tự ‘q’ Enter Nếu không chương trình thực tiếp tục vòng lặp Không có thực vòng lặp này, muốn thêm vào vòng lặp xứ lý khác Chúng ta không cần thiết phải gọi phương thức DisplayTimeEvent vòng lặp gọi tự động vào khoảng thời gian xác định interval Timer chương trình dùng để thể ngày hình Timer kiện Timer sử dụng cho nhiều chương trình khác Như tạo Timer để tắt chương trình khác vào thời điểm đưa Chúng ta 6/15 Lớp đối tượng NET Framework tạo chương trình backup thường xuyên để chép liệu quan trọng theo định kỳ thời gian Hay tạo chương trình tự động log off người sử dụng hay kết thúc chương trình sau khoảng thời gian mà hoạt động xảy Nói chung có nhiều cách sử dụng Timer này, lớp Timer hữa ích Lớp thư mục hệ thống Đôi cần biết thông tin hệ thống máy mà chương trình thực hiện, điều không khó khăn gì, NET hỗ trợ số lớp để thực việc Trong ví dụ minh họa bên trình bày cách lấy thông tin máy tính môi trường Việc thực thông qua sử dụng lớp Environment, lớp chứa số liệu thành viên tĩnh thú vị với thông tin chúng Sử dụng lớp Environment // env01.cs: hiển thị thông tin lớp Environment namespace Programming_CSharp { using System; class Tester { public static void Main() { // thuộc tính Console.WriteLine("**************************"); Console.WriteLine("Command: {0}", Environment.CommandLine); Console.WriteLine("Curr Dir: {0}", Environment.CurrentDirectory); Console.WriteLine("Sys Dir: {0}", Environment.SystemDirectory); Console.WriteLine("Version: {0}", Environment.Version); 7/15 Lớp đối tượng NET Framework Console.WriteLine("OS Environment.OSVersion); Version: Console.WriteLine("Machine: Environment.MachineName); {0}", {0}", Console.WriteLine("Memory: {0}", Environment.WorkingSet); // dùng vài phương thức Console.WriteLine("**************************"); string [] args = Environment.GetCommandLineArgs(); for( int i = 0; i < args.Length; i++) { Console.WriteLine("Arg {0}: {1}", i, args[i]); } Console.WriteLine(“**************************”); string [] drivers = Environment.GetLogicalDrives(); for( int i = 0; i < drivers.Length; i++) { Console.WriteLine(“Drive {0}: {1}”, i, drivers[i]); } Console.WriteLine(“**************************”); Console.WriteLine("Path: {0}",Environment.GetEnvironmentVariable("Path")); Console.WriteLine("**************************"); } 8/15 Lớp đối tượng NET Framework } } Kết thực với máy tính tác giả (kết khác với máy tính bạn:) ************************** Command: D:\Working\ConsoleApplication1\bin\Debug\Env01.exe Curr Dir: D:\Working\ConsoleApplication1\bin\Debug Sys Dir: C:\WINDOWS\System32 Version: 1.0.3705.0 OS Version: Microsoft Windows NT 5.1.2600.0 Machine: MUN Memory: 4575232 ************************** Arg 0: D:\Working\ConsoleApplication1\bin\Debug\Env01.exe ************************** Drive 0: A:\ Drive 1: C:\ Drive 2: D:\ Drive 3: E:\ ************************** Path: C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\ Wbem;C:\WINDOWS;C:\WINDO WS\COMMAND;C:\NC ************************** Như thấy thành viên tĩnh lớp Environment cung cấp cho ta thông tin hệ thống môi trường Đầu tiên lệnh thực đưa chương trình thực thi tức chương trình Env01.exe, thuộc tính dùng để lấy Command- Line Thư mục hành thư mục chứa chương trình thực thi 9/15 Lớp đối tượng NET Framework thông qua thuộc tính CurrentDirectory Tương tự thuộc tính hệ thống như: thư mục hệ thống, phiên OS, tên máy tính, nhớ lấy Tiếp theo hai phương thức lớp Environment trả mảng chuỗi ký tự, bao gồm phương thức lấy đối mục dòng lệnh GetCommandLineArgs phương thức nhận thông tin đĩa logic máy tính GetLogicalDrives Hai vòng lặp đơn giản để xuất giá trị thành phần mảng ra.Cuối phương thức GetEnvironmentVariable nhận biến môi trường giá trị chúng hệ thống thời Lớp Math Từ đầu tới thực phép toán cộng, trừ, nhân, chia, chia dư Còn nhiều phép toán mạnh thường sử dụng mà chúng chưa đề cập tới C# cung cấp tập hợp phép toán toán học bên lớp sở Chúng chứa bên namespace System.Math Bảng 12.1 sau liệt kê hàm toán học Lớp Math lớp sealed, xây dựng lớp mà kế thừa từ lớp Thêm vào tất lớp liệu thành viên tĩnh, tạo đối tượng có kiểu Math Thay vào sử dụng thành viên phương thức với tên lớp Phương thức Math Lớp Math Phương thức Mô tả Abs Trả trị tuyệt đối số Ceiling Trả giá trị nhỏ hay giá trị đưa Exp Trả giá trị e với mũ đưa Floor Trả giá trị lớn hay giá trị đưa IEEERemainder Trả phần dư phép chia hai hai số thực Phép chia theo tiêu chuẩn IEEE cho phép toán dấuchấm động nhị phân Log Trả giá trị logarit giá trị đưa Log10 Trả giá trị logarit số 10 số đưa Max Trả số lớn hai số Min Trả số nhỏ hai số Pow Trả kết xy 10/15 Lớp đối tượng NET Framework Round Trả giá trị làm tròn Sign Trả giá trị dấu số -1 số âm nếusố dương Sqrt Trả bậc hai số Acos Trả giá trị góc mà cosin với giá trị đưa Asin Trả giá trị góc mà sin với giá trị đưa Atan Trả giá trị góc mà tang với góc đưara Atan2 Trả giá trị góc mà tang với tang củađiểm (x,y) đưa Cos Trả giá trị cosin góc đưa Cosh Trả giá trị hyperbolic cosin góc đưa Sin Trả giá trị sin góc đưa Sinh Trả giá trị hyperbolic góc đưa Tan Trả giá trị tang góc Tanh Trả giá trị hyperbolic tang góc Ngoài lớp Math đưa vào hai số: PI số E, PI trả giá trị pi toán học 3.14159265358979323846 Giá trị E trả giá trị 2.7182818284590452354 Hầu hết hàm toán học bảng dễ hiểu dễ sử dụng Ví dụ sau minh họa việc sử dụng số hàm toán học sau: Sử dụng vài hàm toán học using System; namespace Programming_CSharp { public class Tester { public static void Main() 11/15 Lớp đối tượng NET Framework { int val2; char ch; for(double ctr = 0.0; ctr [...]... Main() 11/15 Lớp đối tượng trong NET Framework { int val2; char ch; for(double ctr = 0.0; ctr .. .Lớp đối tượng NET Framework Kiểu liệu namespace Mã nguồn bên Framework tổ chức bên namespace Có hàng trăm namespace bên Framework sử dụng để tổ chức hàng ngàn lớp đối tượng kiểu liệu... Kết quả: x x 12/15 Lớp đối tượng NET Framework xx x x x x x x x x x x x x x x x x x x x x x 13/15 Lớp đối tượng NET Framework x x x xx x xx x xx x x x x xx xx x x... học Lớp Math lớp sealed, xây dựng lớp mà kế thừa từ lớp Thêm vào tất lớp liệu thành viên tĩnh, tạo đối tượng có kiểu Math Thay vào sử dụng thành viên phương thức với tên lớp Phương thức Math Lớp