Bài giảng Tổng quan .NET ngôn ngữ C# - Nguyễn Hà Giang

ppt 52 trang hapham 40
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tổng quan .NET ngôn ngữ C# - Nguyễn Hà Giang", để 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:

  • pptbai_giang_tong_quan_net_ngon_ngu_c_nguyen_ha_giang.ppt

Nội dung text: Bài giảng Tổng quan .NET ngôn ngữ C# - Nguyễn Hà Giang

  1. TỔNG QUAN .NET NGÔN NGỮ C# ThS. Nguyễn Hà Giang
  2. Nội dung 2 1. Giới thiệu .NET Framework 1. CLR, CTS, CLS, MSIL 2. Garbage collection 3. Namespace 2. Tổng quan ngôn ngữ C# 1. Đặc điểm ngôn ngữ 2. Quá trình biên dịch CT C# 3. Các loại CT C# 4. Cấu trúc chương trình C# 5. Chương trình C# đơn giản Nguyen Ha Giang - 2009
  3. .NET Framework 3  Chương trình nền tảng cho cho công nghệ .NET XML Web Web Windows  Cung cấp tập hợp class Service Forms Forms ASP.NET library thường dùng C# VB.NET J# C++  Quản lý sự thực thi của các Custom Classes chương trình .NET Data and XML Classes Base Framework Classes Common Language Runtime Nguyen Ha Giang - 2009
  4. .NET Framework - Architechture 4  Common Language Infrastructure (CLI)  provide a language- neutral platform for application development and execution Nguyen Ha Giang - 2009
  5. .NET Framework 5 .NET 3.5 (Nov-2007) VS.NET 2008 Default: Windows 7 .NET 2.0 (Nov-2005) VS.NET 2005 .NET 3.0 (Nov-2006) Default: Windows Vista, Server 2008 .NET 1.1 (Apr-2003) VS .NET 2003 Default: Server 2003 .NET 1.0 (Feb-2002) Nguyen Ha Giang - 2009
  6. Đặc điểm của ứng dụng .NET 6  Chạy trên nền (.NET framework)  Mã nguồn được biên dịch qua MSIL  MSIL được thông dịch qua mã máy lúc thực thi nhờ vào CLR  Độc lập nền tảng  Về lý thuyết có thể chạy trên mọi nền!  Install .NET Framework redistribute packadge (dotnetfx.exe) để chạy ứng dụng .NET trên máy client. Nguyen Ha Giang - 2009
  7. Đặc điểm của ứng dụng .NET 7 CT C# C#.NET Compiler Programmer CT VB .NET VB.NET Compiler MS IL CLR CT J# .NET J#.NET Compiler C++ CT Compiler C++.NET Nguyen Ha Giang - 2009
  8. .NET Framework - CLR 8  Theo quan điểm của người lập trình, .NET có thể hiểu như môi trường thực thi mới và thư viện lớp cơ sở cải tiến.  Môi trường thực thi là: Common Language Runtime - CLR  Vai trò chính CLR: locate, load, manage .NET types  CLR còn quản lý những phần ở mức thấp như: memory management, security check Nguyen Ha Giang - 2009
  9. .NET Framework - CTS 9  Common Type System (CTS):  Mục đích hỗ trợ thực thi chéo ngôn ngữ  Định nghĩa kiểu dữ liệu tiền định và có sẵn trong IL: ◼ Tất cả ngôn ngữ .NET sẽ được sinh ra mã cuối trên cơ sở kiểu dữ liệu này VB.NET IL C# Integer Int32 int Nguyen Ha Giang - 2009
  10. . NET Framework - CLS 10 C++ C# CLS CLS is the smallest common CLR/ Visual Basic CTS/IL denominator of various OO- languages. FCL only uses CLS features. Nguyen Ha Giang - 2009
  11. . NET Framework - CLS 11  Common Language Specification:  Đảm bảo sự thực thi chéo  Tất cả compiler hướng .NET đều phải tuân thủ theo CLS ◼ Có thể viết mã non-CLS nhưng sẽ ko đảm bảo thực thi chéo ◼ IL phân biệt loại ký tự, VB.NET ko phân biệt, CLS báo rằng ko cho phép 2 định danh chỉ khác nhau về kiểu ký tự, do đó VB.NET có thể hoạt động trong CLS VB.NET C# Nguyen Ha Giang - 2009
  12. MS Intermediate Language 12  IL  Abstracted assembly language  Ý tưởng về mã Java byte  Mã cấp thấp cú pháp đơn giản quá trình dịch sang mã máy nhanh hơn  CLR chuyển IL thành mã máy lúc runtime  Sự chuyển này gọi là Just – In – Time Compilation hay JIT compiling Nguyen Ha Giang - 2009
  13. Common Language Runtime - compilation 13 Source Assembly Code Compiler csc.exe or vbc.exe C++, C#, VB or DLL or EXE any .NET language Nguyen Ha Giang - 2009
  14. Assembly 14  Managed Modules  Chứa IL code để thực thi  Chứa resource, metadata  Portable Executable (PE)  Process assembly (EXE)  Library assembly (DLL) Nguyen Ha Giang - 2009
  15. Managed Code 15  Phần mềm được viết để sử dụng trong .NET Framework  PM khác thì gọi là Unmanaged code  “Managed”: do chạy dưới sự giám sát của cơ chế thực thi (CLR) Managed Executable Legacy Software (unmanaged code) Common Language Runtime Nguyen Ha Giang - 2009
  16. Garbage collection 16 class myClass{ Managed Heap void Method(){ variable v1; variable v2; B A do{ . C E } } D A và D sẽ bị xoá do ko còn tham chiếu hay truy cập tới Nguyen Ha Giang - 2009
  17. Garbage collection 17  GC xuất hiện (ko định trước) khi ko đủ bộ nhớ để cung cấp cho ứng dụng.  GC thực hiện việc tìm kiếm những đối tượng trong managed heap, xoá nếu ko còn tham chiếu tới.  Có thể gọi GC một cách tường minh Nguyen Ha Giang - 2009
  18. Namespace 18  Tránh xung đột tên Namespace CS1  Cho phép nest  Truy cập đầy đủ qua tên Class A  Tất cả data type có tiếp đầu ngữ là Class B tên namespace Namespace CS2 Class C Class A Class B CS1.A Class C CS2.A Nguyen Ha Giang - 2009
  19. Namespace 19  Hầu hết các lớp cơ sở chung của .NET đều thuộc namespace System  Lớp CS Array thuộc System → System.Array  .NET đề nghị tất cả kiểu do user định nghĩa phải nằm trong 1 namespace Tên namespace CompanyName Customer Tên lớp Personel Nguyen Ha Giang - 2009
  20. Namespace 20  Nên phân thành 2 cấp:  Công nghệ  Gói phần mềm chức năng CompanyName SaleServices Customer Tên namespace Tên lớp ManagingServices Personel Nguyen Ha Giang - 2009
  21. Các lớp .NET Framework 21  Thư viện lớp cơ sở .NET là managed code  Khá đa dạng & đầy đủ:  Cho phép kế thừa để phát triển UD  Bao bọc tất cả các hàm API  Dễ sử dụng (khác với VC++ trước đây) Nguyen Ha Giang - 2009
  22. Các lớp .NET Framework 22  Các lớp .NET bao gồm các vấn đề  Đặc tính lõi cung cấp IL, kiểu dữ liệu trong CTS  Hỗ trợ Win GUI và control  WebForm (ASP.NET)  Data Access (ADO.NET)  Directory Access  File System, registry access  Networking and web browsing  .NET attributes and reflection  WinOS access  COM interoperability Nguyen Ha Giang - 2009
  23. Framework (Base) Class Library 23  Thư viện nền tảng cho .NET Framework  Các namespace cơ bản của FCL/BCL Namespace Description System Chứa lớp toán học, chuyển đổi dữ liệu System.IO Các lớp cho thao tác Input và Output System.Net Các lớp liên quan đến network protocol System.Collections Chức các lớp liên quan đến xử lý tập hợp System.Data Các lớp của ADO.NET System.Drawing Các lớp thực thi chức năng GUI System.Threading Các lớp lập trình MultiThread System.Web Các lớp liên quan đến HTTP protocol System.Xml Các lớp liên quan XML Nguyen Ha Giang - 2009
  24. Run .NET App from Client 24  Required MS .NET Framework compatible  MS .NET Framework 2.0, 3.5  Install .NET 3.5 Full Redistributable package  (dotnetfx35.exe, 197MB)  Windows Vista comes with .NET Framework 3.0 .NET Framework X.Y .NET .NET .NET App App App Nguyen Ha Giang - 2009
  25. Tóm tắt 25  .NET Framework: nền tảng cho ứng dụng mới của MS  Tất cả các chương trình viết bằng ngôn ngữ khác nhau (trên .NET) sẽ được chuyển về mã thống nhất MSIL  Cho phép thực thi chéo giữa các ngôn ngữ  Khái niệm Managed Code  Cơ chế thu gom vùng nhớ tự động  Các lớp thư viện .NET phong phú & mạnh mẽ.  Namespace giúp tổ chức tốt mã nguồn Nguyen Ha Giang - 2009
  26. 26 Nguyen Ha Giang - 2009
  27. Ngôn ngữ C# 27  Ngôn ngữ ra đời cùng với .NET  Kết hợp C++ và Java  Hướng đối tượng  Hướng thành phần  Mạnh mẽ (robust) và bền vững (durable)  Anders Hejlsberg và MS team xây dựng C# Nguyen Ha Giang - 2009
  28. Ngôn ngữ C# 28  Mọi thứ trong C# đều Object oriented  Kể cả kiểu dữ liệu cơ bản  Chỉ cho phép đơn kế thừa  Dùng interface để khắc phục  Lớp Object là cha của tất cả các lớp  Mọi lớp đều dẫn xuất từ Object (System.Object) Nguyen Ha Giang - 2009
  29. Ngôn ngữ C# 29  Cho phép chia chương trình thành các thành phần nhỏ độc lập nhau  Mỗi lớp gói gọn trong một file, không cần file header như C/C++  Bổ sung khái niệm namespace để gom nhóm các lớp  Bổ sung khái niệm "property" cho các lớp  Khái niệm delegate & event Nguyen Ha Giang - 2009
  30. C# - mạnh mẽ & bền vững 30  Garbage Collector  Tự động thu hồi vùng nhớ không dùng  Kiểm soát và xử lý ngoại lệ exception  Đoạn mã bị lỗi sẽ không được thực thi  Type – safe  Không cho gán các kiểu dữ liệu khác nhau  Versioning  Đảm bảo sự tương thích giữa lớp con và lớp cha Nguyen Ha Giang - 2009
  31. Vai trò C# trong .NET Framework 31  .NET runtime sẽ phổ biến và được cài trong máy client  Việc cài đặt App C# như là tái phân phối các thành phần .NET  Nhiều App thương mại sẽ được cài đặt bằng C#  C# tạo cơ hội cho tổ chức xây dựng các App Client/Server n-tier.  Kết nối ADO.NET cho phép truy cập nhanh chóng & dễ dàng với SQL Server, Oracle Nguyen Ha Giang - 2009
  32. Vai trò C# trong .NET Framework 32  Cách tổ chức .NET cho phép hạn chế những vấn đề phiên bản  Loại bỏ “DLL Hell”  ASP.NET viết bằng C#  GUI thông minh  Chạy nhanh hơn (đặc tính của .NET)  Mã ASP.NET ko còn là mới hỗn độn  Khả năng bẫy lỗi tốt, hỗ trợ mạnh trong quá trình xây dựng App Web. Nguyen Ha Giang - 2009
  33. Quá trình dịch CT C# 33  Mã nguồn C# (tập tin *.cs) được biên dịch qua MSIL  MSIL: tập tin .exe hoặc .dll  MSIL được CLR thông dịch qua mã máy  Dùng kỹ thuật JIT (just-in-time) để tăng tốc độ Nguyen Ha Giang - 2009
  34. Quá trình dịch CT C# 34 CLR trên Thực thi trên Linux Linux Hello.exe CLR trên Thực thi trên Hello.cs C# Compiler hoặc Windows Windows Hello.dll MSIL Nguyen Ha Giang - 2009
  35. Các loại ứng dụng C# 35  Chương trình Console (TUI)  Giao tiếp với người dùng bằng bàn phím  Không có giao diện đồ họa (GUI)  Chương trình Windows Form  Giao tiếp với người dùng bằng bàn phím và mouse  Có giao diện đồ họa và xử lý sự kiện  Chương trình Web Form  Kết hợp với ASP .NET, C# đóng vài trò xử lý bên dưới (underlying code)  Có giao diện đồ họa và xử lý sự kiện Nguyen Ha Giang - 2009
  36. Ứng dụng Console 36 Nguyen Ha Giang - 2009
  37. UD WinForm và Web Form 37 Nguyen Ha Giang - 2009
  38. Tạo UD Console 38 Nguyen Ha Giang - 2009
  39. UD C# đầu tiên 39 // Chương trình C# đầu tiên using System; using System.Collections.Generic; using System.Text; namespace HelloWorld { class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } } } Nguyen Ha Giang - 2009
  40. Cấu trúc chương trình C# 40  Phần chú thích (option) // Chương trình C# đầu tiên  Phần khai báo dùng namespace (option) using System; using System.Collections.Generic; using System.Text;  Phần định nghĩa namespace và lớp namespace HelloWorld { class Program { static void Main(string[] args){ { Console.Write("Hello World!"); Console.ReadLine(); } } } Nguyen Ha Giang - 2009
  41. Câu lệnh 41  Các câu lệnh được viết trong thân của phương thức (ở đây là phương thức Main)  Thực hiện một công việc nào đó  Kết thúc bởi dấu chấm phẩy (;) namespace HelloWorld { class Program { Phương thức Main static void Main(string[] args) { Console.Write("Hello World!"); Các câu lệnh Console.ReadLine(); } } } Nguyen Ha Giang - 2009
  42. Khoảng trắng 42  Bao gồm  Ký tự trắng, ký tự xuống dòng, ký tự tab  Dòng trống  Sử dụng hợp lý  chương trình dễ đọc namespace HelloWorld namespace HelloWorld {class Program { { class Program static void Main(string[] args) { { static void Main(string[] args) Console.Write("Hello World!"); { Console.ReadLine();} Console.Write("Hello World!"); } Console.ReadLine(); } } } } Nguyen Ha Giang - 2009
  43. Chú thích 43  Chú thích (comment) được dùng để giải thích về chương trình và các câu lệnh  Giúp cho chương trình dễ hiểu hơn  Được bỏ qua khi biên dịch  Không ảnh hưởng tới kết quả thực thi của chương trình  Có thể phát sinh ra documentation của chương trình qua chú thích XML Nguyen Ha Giang - 2009
  44. Hai cách tạo chú thích cơ bản 44  Gõ phần chú thích sau cặp ký tự //  Gõ phần chú thích giữa cặp ký tự /* và */ /* Chương trình C# đầu tiên In ra câu chào "Hello World" */ using System; namespace HelloWorld { class Program { static void Main(string[] args) { Console.Write("Hello World!"); // Xuất ra câu chào Console.ReadLine(); // Chờ nhấn Enter } } } Nguyen Ha Giang - 2009
  45. XML Comment 45  Cho phép phát sinh ra sưu liệu dạng XML  Thích hợp cho việc viết sưu liệu của dự án lớn  Chú thích XML bắt đầu với triple slash (“///”) và các tag của XML  Chú thích XML dùng cho  User defined types  Class, delegate, enum and struct  Member of user defined types Nguyen Ha Giang - 2009
  46. XML Comment 46 using System; namespace XMLCommentDemo { public class Temperature { public static int CelsiusToFahrenheit(int degreesCelsius) { return ((int)((9/5)*degreesCelsius) + 32); } public static int FahrenheitToCelsius(int degressFahrenheit) { return ((int)((5/9)*(degressFahrenheit - 32))); } } } Nguyen Ha Giang - 2009
  47. XML Comment 47  Comment for class /// /// Class temperature provides functions which convert /// among various temperature scales. /// public class Temperature  Comment for method /// /// Converts degrees Celsius to degrees Fahrenheit /// /// Degrees Celsius /// Returns degrees Fahrenheit public static int CelsiusToFahrenheit(int degreesCelsius) Nguyen Ha Giang - 2009
  48. XML Comment 48 using System; namespace XMLCommentDemo{ /// /// Class temperature provides functions which convert among various /// temperature scales. /// public class Temperature { /// /// Converts degrees Celsius to degrees Fahrenheit /// /// Degrees Celsius /// Returns degrees Fahrenheit public static int CelsiusToFahrenheit(int degreesCelsius) { return ((int)((9/5)*degreesCelsius) + 32); } /// /// Converts degrees Fahrenheit to degrees Celsius /// /// Degrees Fahrenheit /// Returns degrees Celsius public static int FahrenheitToCelsius(int degressFahrenheit) { return ((int)((5/9)*(degressFahrenheit - 32))); } } } Nguyen Ha Giang - 2009
  49. Phiên bản C# & .NET 49 C#/.NET Version Description C# 1.0 with .NET Framework 1.0/1.1 The initial release of C#. (Visual Studio 2002 and 2003) C# 2.0 with .NET Framework 2.0 (Visual Generics were added. Studio 2005) .NET Framework 3.0 Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), Windows Workflow (WF), and CardSpace (web authentication). C# 3.0 with .NET Framework 3.5 (Visual Added support for LINQ. Studio 2008) C# 4.0 with .NET Framework 4.0 (Visual Added support for dynamic typing. Studio 2010) Nguyen Ha Giang - 2009
  50. Tóm tắt 50  C# là một ngôn ngữ lập trình của .NET  Là ngôn ngữ hiện đại  Hướng đối tượng, hướng thành phần  An toàn kiểu, mạnh mẽ, bền bỉ  Có ba loại chương trình C#  Console, Windows Form, Web Form  Tạo ra một chương trình C# đơn giản  Tạo một ứng dụng Console  Viết các câu lệnh trong thân của phương thức Main Nguyen Ha Giang - 2009
  51. Tài liệu tham khảo 51 1. Professional C#, 2nd Edition, Wrox Press Ltd. 2. A programmer’s Introduction to C#, Eric Gunnerson, Apress, 2000 3. Programming C#, Jesse Liberty, O’Reilly, First Edition, 2001 4. C# bible, Jeff Ferguson et al, Wiley Publishing, 2002 5. Thinking in C#, Larry O’Brien, Bruce Eckel, Prentice Hall. 6. Presenting C#, Sams Publishing, 2002 7. C# Language Reference, Anders Hejlsberg and Scott Wiltamuth, Microsoft Corp. Nguyen Ha Giang - 2009
  52. Demo 52 Nguyen Ha Giang - 2009