Bài giảng Tổng quan .NET ngôn ngữ C#
Tóm tắt Bài giảng Tổng quan .NET ngôn ngữ C#: ...ánh xung đột tênCho phép nestTruy cập đầy đủ qua tênTất cả data type có tiếp đầu ngữ là tên namespace18Namespace CS1Class AClass BClass CNamespace CS2Class AClass BClass CCS1.ACS2.ANamespaceHầu hết các lớp cơ sở chung của .NET đều thuộc namespace SystemLớp CS Array thuộc System → System.Array.NET đề... thành phần nhỏ độc lập nhauMỗ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ớpBổ sung khái niệm "property" cho các lớpKhái niệm delegate & event28C# - mạnh mẽ & bền vữngGarbage CollectorTự động thu hồi vùng nhớ không dùngKiểm soát và xử lý ...Line(); } }}Câu lệnhCá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 (;)40namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Các câu lệnhPh...
TỔNG QUAN .NET NGÔN NGỮ C#Nội dungGiới thiệu .NET FrameworkCLR, CTS, CLS, MSILGarbage collectionNamespaceTổng quan ngôn ngữ C#Đặc điểm ngôn ngữQuá trình biên dịch CT C#Các loại CT C#Cấu trúc chương trình C#Chương trình C# đơn giản2.NET FrameworkChương trình nền tảng cho cho công nghệ .NETCung cấp tập hợp class library thường dùngQuản lý sự thực thi của các chương trình .NET3Common Language RuntimeBase Framework ClassesData and XML ClassesCustom ClassesC# VB.NET J# C++ XML Web ServiceWeb FormsWindows FormsASP.NET.NET Framework - ArchitechtureCommon Language Infrastructure (CLI)provide a language-neutral platform for application development and execution 4.NET Framework5.NET 1.1 (Apr-2003)VS .NET 2003Default: Server 2003.NET 3.5 (Nov-2007)VS.NET 2008Default: Windows 7.NET 3.0 (Nov-2006)Default: Windows Vista, Server 2008.NET 2.0 (Nov-2005)VS.NET 2005 .NET 1.0 (Feb-2002)Đặc điểm của ứng dụng .NETChạy trên nền (.NET framework)Mã nguồn được biên dịch qua MSILMSIL được thông dịch qua mã máy lúc thực thi nhờ vào CLRĐộc lập nền tảngVề 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.6Đặc điểm của ứng dụng .NET7MS ILCLRC++ CompilerC# CompilerJ# .NET CompilerCT C#.NETCT VB.NETCT C++.NET.NET FrameworkCT J#.NETVB .NET Compiler101101010110101011010Programmer.NET Framework - CLRTheo 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 - CLRVai trò chính CLR: locate, load, manage .NET typesCLR còn quản lý những phần ở mức thấp như: memory management, security check8.NET Framework - CTSCommon 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ày9IntegerInt32intVB.NETILC#. NET Framework - CLSCommon Language Specification:Đảm bảo sự thực thi chéoTất cả compiler hướng .NET đều phải tuân thủ theo CLSCó thể viết mã non-CLS nhưng sẽ ko đảm bảo thực thi chéoIL 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 CLS10C#VB.NET. NET Framework - CLS11CLR/CTS/ILC++C#Visual BasicCLSCLS is the smallest common denominator of various OO-languages. FCL only uses CLS features.MS Intermediate Language IL Abstracted assembly language Ý tưởng tương tự mã Java bytecodeMã cấp thấp cú pháp đơn giản quá trình dịch sang mã máy nhanh hơnCLR chuyển IL thành mã máy lúc runtimeSự chuyển này gọi là Just – In – Time Compilation hay JIT compiling12Common Language Runtime - compilation13C++, C#, VB or any .NET languagecsc.exe or vbc.exeCompilerAssemblyDLL or EXESource CodeAssemblyManaged ModulesChứa IL code để thực thiChứa resource, metadataPortable Executable (PE)Process assembly (EXE)Library assembly (DLL)14.NET AssemblyDLLEXEManaged CodePhần mềm được viết để sử dụng trong .NET FrameworkPM 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)15Windows(OS khác)Legacy Software(unmanaged code)Common Language RuntimeManaged ExecutableGarbage collection16class myClass{ void Method(){ variable v1; variable v2; do{ . }}BECADManaged HeapA và D sẽ bị xoá do ko còn tham chiếu hay truy cập tớiGarbage collectionGC 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 minh17NamespaceTránh xung đột tênCho phép nestTruy cập đầy đủ qua tênTất cả data type có tiếp đầu ngữ là tên namespace18Namespace CS1Class AClass BClass CNamespace CS2Class AClass BClass CCS1.ACS2.ANamespaceHầu hết các lớp cơ sở chung của .NET đều thuộc namespace SystemLớ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 namespace19CustomerPersonelCompanyNameTên lớpTên namespaceCác lớp .NET FrameworkThư viện lớp cơ sở .NET là managed codeKhá đa dạng & đầy đủ:Cho phép kế thừa để phát triển UDBao bọc tất cả các hàm APIDễ sử dụng (khác với VC++ trước đây)20Các lớp .NET FrameworkCác lớp .NET bao gồm:Đặc tính lõi: IL, kiểu dữ liệu trong CTSHỗ trợ Win GUI và controlWebForm (ASP.NET)Data Access (ADO.NET)Directory AccessFile System, registry accessNetworking and web browsing.NET attributes and reflectionWinOS accessCOM interoperability21Framework (Base) Class LibraryThư viện nền tảng cho .NET FrameworkCác namespace cơ bản của FCL/BCL22NamespaceDescriptionSystemChứa lớp toán học, chuyển đổi dữ liệuSystem.IOCác lớp cho thao tác Input và OutputSystem.NetCác lớp liên quan đến network protocolSystem.CollectionsChức các lớp liên quan đến xử lý tập hợpSystem.DataCác lớp của ADO.NETSystem.DrawingCác lớp thực thi chức năng GUISystem.ThreadingCác lớp lập trình MultiThreadSystem.WebCác lớp liên quan đến HTTP protocolSystem.XmlCác lớp liên quan XMLFCLBCLRun .NET App from ClientRequired MS .NET Framework compatibleMS .NET Framework 2.0, 3.5Install .NET 3.5 Full Redistributable package (dotnetfx35.exe, 197MB)Windows Vista comes with .NET Framework 3.023.NET Framework X.Y.NET App.NET App.NET AppTóm tắt.NET Framework: nền tảng cho ứng dụng mới của MSTấ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 MSILCho phép thực thi chéo giữa các ngôn ngữKhái niệm Managed CodeCơ chế thu gom vùng nhớ tự độngCác lớp thư viện .NET phong phú & mạnh mẽ.Namespace giúp tổ chức tốt mã nguồn2425C# LanguageNgôn ngữ C#Ngôn ngữ ra đời cùng với .NETKết hợp C++ và JavaHướng đối tượngHướng thành phầnMạnh mẽ (robust) và bền vững (durable)Anders Hejlsberg và MS team xây dựng C#26Ngôn ngữ C#Mọi thứ trong C# đều Object orientedKể cả kiểu dữ liệu cơ bảnChỉ cho phép đơn kế thừaDùng interface để khắc phụcLớp Object là cha của tất cả các lớpMọi lớp đều dẫn xuất từ Object27Ngôn ngữ C#Cho phép chia chương trình thành các thành phần nhỏ độc lập nhauMỗ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ớpBổ sung khái niệm "property" cho các lớpKhái niệm delegate & event28C# - mạnh mẽ & bền vữngGarbage CollectorTự động thu hồi vùng nhớ không dùngKiểm soát và xử lý ngoại lệ exceptionĐoạn mã bị lỗi sẽ không được thực thiType – safeKhông cho gán các kiểu dữ liệu khác nhauVersioningĐảm bảo sự tương thích giữa lớp con và lớp cha29Vai trò C# trong .NET Framework.NET runtime sẽ phổ biến và được cài trong máy clientViệc cài đặt App C# như là tái phân phối các thành phần .NETNhiề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, Oracle30Vai trò C# trong .NET FrameworkCách tổ chức .NET cho phép hạn chế những vấn đề phiên bảnLoại bỏ “DLL Hell”ASP.NET viết bằng C#Chạy nhanh hơn (đặc tính của .NET)Mã ASP.NET ko còn là mớ hỗn độnKhả năng bẫy lỗi tốt, hỗ trợ mạnh trong quá trình xây dựng App Web.31Quá trình dịch CT C#Mã nguồn C# (tập tin *.cs) được biên dịch qua MSILMSIL: tập tin .exe hoặc .dllMSIL được CLR thông dịch qua mã máyDùng kỹ thuật JIT (just-in-time) để tăng tốc độ32Quá trình dịch CT C#33Hello.csC# CompilerHello.exehoặcHello.dllCLR trên WindowsThực thi trên WindowsCLR trên LinuxThực thi trên LinuxThực thi trên MacOSCLR trên MacOSMSILCác loại ứng dụng C#Chương trình Console (TUI)Giao tiếp với người dùng bằng bàn phímKhông có giao diện đồ họa (GUI)Chương trình Windows FormGiao tiếp với người dùng bằng bàn phím và mouseCó giao diện đồ họa và xử lý sự kiệnChương trình Web FormKế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ện34Ứng dụng Console35UD WinForm và Web Form36Tạo UD Console37UD C# đầu tiên38// Chương trình C# đầu tiênusing System;using System.Collections.Generic;using System.Text;namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Cấu trúc chương trình C#Phần chú thích (option)Phần khai báo dùng namespace (option)Phần định nghĩa namespace và lớp39// Chương trình C# đầu tiênusing System;using System.Collections.Generic;using System.Text;namespace HelloWorld { class Program { static void Main(string[] args){ { Console.Write("Hello World!"); Console.ReadLine(); } }}Câu lệnhCá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 (;)40namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Các câu lệnhPhương thức MainKhoảng trắngBao gồmKý tự trắng, ký tự xuống dòng, ký tự tabDòng trốngSử dụng hợp lý chương trình dễ đọc41namespace HelloWorld{class Program {static void Main(string[] args){ Console.Write("Hello World!"); Console.ReadLine();}}}namespace HelloWorld{ class Program { static void Main(string[] args) { Console.Write("Hello World!"); Console.ReadLine(); } }}Chú thíchChú thích (comment) được dùng để giải thích về chương trình và các câu lệnhGiúp cho chương trình dễ hiểu hơnĐược bỏ qua khi biên dịchKhông ảnh hưởng tới kết quả thực thi của chương trìnhCó thể phát sinh ra documentation của chương trình qua chú thích XML42Hai cách tạo chú thích cơ bảnGõ phần chú thích sau cặp ký tự //Gõ phần chú thích giữa cặp ký tự /* và */43/* 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 } }}XML CommentCho phép phát sinh ra sưu liệu dạng XMLThích hợp cho việc viết sưu liệu của dự án lớnChú thích XML bắt đầu với triple slash (“///”) và các tag của XMLChú thích XML dùng choUser defined typesClass, delegate, enum and structMember of user defined types44XML Comment45using 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))); } }} C# Code without XML CommentXML CommentComment for classComment for method46 /// /// 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)XML Comment47using 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))); } }}C# Code with XML CommentTóm tắtC# là một ngôn ngữ lập trình của .NETLà ngôn ngữ hiện đạiHướng đối tượng, hướng thành phầnAn toàn kiểu, mạnh mẽ, bền bỉCó ba loại chương trình C# Console, Windows Form, Web FormTạo ra một chương trình C# đơn giảnTạo một ứng dụng ConsoleViết các câu lệnh trong thân của phương thức Main48Tài liệu tham khảoProfessional C#, 2nd Edition, Wrox Press Ltd.A programmer’s Introduction to C#, Eric Gunnerson, Apress, 2000Programming C#, Jesse Liberty, O’Reilly, First Edition, 2001C# bible, Jeff Ferguson et al, Wiley Publishing, 2002Thinking in C#, Larry O’Brien, Bruce Eckel, Prentice Hall.Presenting C#, Sams Publishing, 2002C# Language Reference, Anders Hejlsberg and Scott Wiltamuth, Microsoft Corp.49Demo50
File đính kèm:
- bai_giang_tong_quan_net_ngon_ngu_c.ppt