Nghiên cứu & thực hành với phần mềm LabView tại trung tâm nghiên cứu MICA
MụC lụcGiới thiệu đề tài .6Phần I: Giới thiệu sơ bộ về nền .NET và ngôn ngữ C# 8I. Giới thiệu sơ bộ về .NET 8I.1. Giới thiệu chung về nền .NET (.NET platform) .8I.2. Kiến trúc phân lớp nền .NET .8I.3. Những đặc trng của nền .NET 9I.3.1. Phát triển đa ngôn ngữ 9I.3.2. Chơng trình ứng dụng độc lập với hệ điều hành và bộ vi xử lí 10I.3.3. Quản lí bộ nhớ tự động 10I.3.4. Hỗ trợ phiên bản 10I.4. Những thành phần của nền .NET .10Nh chúng ta đã xem ở phần trớc, có nhiều thành phần trong nền .NET. Trong phần này chúng ta sẽ trình bày các thành phần nổi bật về tính chất và vai trò của chúng trong cả hệ thống .11I.4.1. CLR .11I.4.2. Mã quản lí và mã không quản lí ( Managed/Unmanaged Code ) .11I.4.3. Ngôn ngữ trung gian , hệ thống kiểu thông thờng và CLS 12I.4.4. Th viện lớp cơ sở của .NET .12I.4.5. Assembly và metadata .12I.4.6. Chơng trình dịch Just in time .13I.4.7. Quản lí bộ nhớ ( Garbage Collection ) 13I.4.8. Vòng đời của mã 14II. Giới thiệu sơ bộ ngôn ngữ lập trình C# .14II.1. Lập trình hớng đối tợng trong C# .14II.2. Những đặc điểm của ngôn ngữ C# .15II.2.1. Các toán tử 15II.2.2. Các kiểu dữ liệu: .15II.2.3. Các câu lệnh .16II.2.4. Cấu tạo của một chơng trình C# .16II.3. C# và những vấn đề nâng cao .18II.3.1. C# với cơ sở dữ liệu 18II.3.2. C# với Internet 18Phần II: Đồ họa trong C# 19I. Giới thiệu về GDI+ .19II. Kiến trúc của GDI+ .19II.1. Đồ họa Vector 2D 20II.2. Hình ảnh .20II.3. In ấn v hiển thị font chữ .20III. Kiến trúc lớp của GDI+ .20IV. Một số điểm mới trong GDI+ 211 IV.1. Bút vẽ Gradient .21IV.2. Đờng cong Spline 22IV.3. Đối tợng đồ họa độc lập 22IV.4. Chức năng chuyển đổi v đối t ợng ma trận .22IV.5. Vùng ảnh co giãn đợc .23IV.6. Đổ bóng Alpha 23V. Thay đổi trong mô hình lập trình 23V.1. Ngữ cảnh thiết bị, Handles v các đối t ợng đồ họa .23V.2. Bút vẽ, bút phủ, đồ họa, hình ảnh v Font chữ 24VI. Giới thiệu các đối tợng đồ họa cơ bản trong GDI+ .24VI.1. Đồ họa Vector .24VI.2. Hình ảnh v Metafile .25VI.3. Các loại hệ tọa độ 26 VI.4. Các phép chuyển đổi 27Phần III: Đa luồng trong C# 28I. Khái niệm đa luồng 28I.1. Đa nhiệm ( multitasking ) 28I.2. Đa luồng ( multitasking) 28II. Đa luồng trong C# .29II.1. Cấu trúc các lớp điều khiển luồng của C# 30II.2. Tổng quát các phơng thức của lớp Thread 31II.2.1. Tạo luồng ( create thread ) .32II.2.2. Nhập luồng ( join thread ) 33II.2.3. Dừng một luồng 34II.2.4. Hủy một luồng 34 II.3. Vòng đời của một luồng 34II.4. Sự u tiên của luồng và định thời gian biểu cho luồng 35II.5. Đồng bộ hóa các luồng: .37II.5.1. Lớp Interlocked: .37II.5.2. Sử dụng lệnh C# lock: 37II.5.3. Monitor: 38Phần IV: XML và C# 42I. Lịch sử các ngôn ngữ đánh dấu .42I.1. Khái niệm đánh dấu (markup) .42I.2. Ngôn ngữ đánh dấu 44II. Tổng quan về ngôn ngữ XML .45II.1. Ngôn ngữ XML là gì? 45II.2. Các u điểm của XML .46II.3. Các ứng dụng XML 46II.3.1. Mathematical Markup Language (MathML) .46II.3.2. Resource Description Framework(RDF) 46II.3.3. XML Linking Language(XLink) .47II.3.4. Synchronized Multimedia Intergration Language(SMIL) .47II.3.5. Extensible Stylesheet Language(XSL) .47II.4. Tơng lai XML .472 III. Cấu trúc và cú pháp XML 48III.1. Cấu trúc XML .48III.1.1. Cấu trúc logic 48III.1.2. Cấu trúc vật lí .49III.2. Cú pháp XML .50III.2.1. Các thẻ gán và phần tử 50III.2.2. Các thuộc tính và chú giải .51IV. XML trong C# .52IV.1. Tạo một tài liệu XML .52IV.2. Duyệt tài liệu XML .54IV.3. Quá trình Serializing .56IV.4. Quá trình Deserializing .59Phần V: Lập trình mạng trong C# .60I. Giới thiệu về lập trình mạng .60I.1. Nhận dạng máy 60I.2. Socket .61I.3. Server phục vụ nhiều clients 64II. Giao tiếp với Web 66II.1. Gửi và nhận các yêu cầu HTTP 66II.2. Các yêu cầu Web không đồng bộ 68II.3. Dịch vụ Web .68Phần VI: Một vài so sánh C# với các ngôn ngữ khác .70I. Sự khác nhau giữa C# và C/C++ .70I.1. Về môi trờng 70I.2. Về các lệnh 70I.3. Về tổ chức chơng trình 71II. Sự khác biệt giữa C# và Java .71II.1. Về kiểu dữ liệu .71II.2. Về truy cập thành phần 72II.3. Các tham số ref và out .72II.4. Giao diện (Interfaces) 73II.5. Về 2 từ khoá khai báo import và using 73 III. Sự khác biệt giữa C# và VB 6.0 73Kết luận .75Tài liệu tham khảo 76Phụ lục .77I. Mô tả chơng trình minh họa .77II. Hớng dẫn sử dụng chơng trình 78III. Hớng dẫn cài đặt chơng trình .783 Danh sách các hình vẽHình 1 Kiến trúc nền .NET .9Hình 2 Cấu trúc CLR 11Hình 3 Tô màu bằng bút vẽ Gradient tuyến tính .21Hình 4 Đờng Bézier đợc tô bởi bút phủ Gradient .22Hình 5 Chuyển đổi đồ thị 22Hình 6 Co giãn vùng ảnh 23Hình 7 Các mức độ trong suốt của màu nền .23Hình 8 Hệ trục toạ độ của GDI+ 25Hình 9 Dịch chuyển hệ toạ độ 26Hình 10 Vòng đời của một luồng .36Hình 11 Vòng luân phiên thực hiện luồng 36Hình 12 Minh hoạ soạn thảo trong WordPad .42Hình 13 Mã của văn bản đọc bằng NotePad .43Hình 14 Mã của văn bản Word đọc bằng NotePad 43Hình 15 Tạo văn bản HTML trong NotePad 44Hình 16 Cấu trúc của XML 48 Hình 17 Khai báo thành phần trong XML .49Hình 18 Minh họa cấu trúc cây của ví dụ .51Hình 19 Kết quả chơng trình tạo tài liệu trên IE 6.0 54Hình 20 Kết quả ví dụ Serializing trên IE 6.0 .58 4 Danh s¸ch c¸c thuËt ng÷ viÕt t¾t IE 6.0 = Internet Explorer 6.0 CLS = Common Language Spcification CLR = Common Language Runtime IDE = Integrated Development Environment API = Application Programming Interface VB = Visual Basic VC = Visual C VS = Visual Studio XML = Extensible Markup Language MSIL = IL = Microsoft Intermediate Language COM = Component Object Model IDL = Interface Definition Language DLL = Dynamic Link Library GC = Garbage Collection JIT = Just In Time compiler ADO = ActiveX Data Object MS = Microsoft SQL = Structured Query Language GDI = Graphic Device Independence WMF = Window MetaFile EMF = Enhanced MetaFile CPU = Central Processing Unit RTF = Rich Text Format HTML = Hyper Text Markup Language SGML = Standard Generalized Markup Language 5 Giới thiệu đề tàiTrong nhiều năm, các lập trình viên C và C++ luôn phải đối mặt với những vấn đề đau đầu nh: sử dụng con trỏ, quản lí bộ nhớ, truyền tham trị, tham biến, xử lý danh sách, xây dựng th viện, đa kế thừa, xây dựng giao diện thân thiện với ngời dùng Vì vậy họ luôn mong muốn, tìm kiếm một ngôn ngữ thay thế có khả năng cũng nh tính uyển chuyển mạnh nh C và C++ hơn nữa lại đơn giản hơn. Vào giữa những năm 90, thế giới lập trình có sự thay đổi lớn với sự bùng nổ Internet ( Internet Boom ) và sự ra đời của ngôn ngữ lập trình Java. Ngay từ khi ra đời, Java đã cho thấy khả năng to lớn của nó trong việc phát triển các ứng dụng trên internet. Hơn nữa Java còn thnàh công với tuyên bố write once, run anywhere cố thể tạm dich là : viết một lần, chạy trên mọi nền. Thành công đó xuất phát từ ý tởng tách rời mã khi biên dịch chơng trình và mã khi chạy chơng trình, đây là điểm khác biệt lớn so với những ngôn ngữ lập trình C hay C++. Java đa ra một khái niệm mới : máy ảo. Máy ảo thực hiện các công việc nh biên dịch ra mã máy, quản lí bộ nhớ hay nói cách khác, máy ảo đóng vai trò giao tiếp giữa ứng dụng Java và môi trờng ( hệ điều hành, hay phần cứng) làm cho ứng dụng Java độc lập với môi trờng. Tuy nhiên tốc độ phát triển Java lại chậm dần, và không thể đấp ứng đợc những đòi hỏi ngày càng cao của ngời dùng. Các hãng phát triển Java chậm đa ra một môi trờng tích hợp IDE phục vụ cho phát triển các dự án phần mềm. Việc lập trình các ứng dụng trên Windows bằng Java không thuận tiện, Java có nhiều hạn chế trong việc giao tiếp với các ngôn ngữ khác nh C++, Visụal Basic Java không có sự phát triển đồng nhất theo xu hớng thuận tiện cho ngời sử dụng, phải mất nhiều năm Java mới hỗ trợ đợc điều khiển Mouse wheel, khó sử dụng th viện API của hệ điều hành, phiên bản Visual J++ của Microsoft phát triển thì lại mang nhiều nét không giống với nguyên bản. Windows XP ra đời với tuyên bố không hỗ trợ máy ảo Java, không tích hợp máy ảo Java vào trình duyệt IE 6.0 đã làm uy tín của Java suy giảm nặng nề. Cuối cùng thì ngôn ngữ mà các lập trình viên mong đợi cũng xuất hiện, đánh dấu chấm hết cho cuộc tìm kiếm ngôn ngữ lập trình kéo dài nhiều năm của các lập trình viên. Đợc bắt đầu nghiên cứu từ năm 1997, vào năm 2001, Microsoft giới thiệu một platform mới --.Net, đi cùng với nó là một ngôn ngữ mới - C#. C# đợc coi nh ngôn ngữ mang tính cách mạng của Microsoft. Dựa trên kinh nghiệm của các ngôn ngữ trớc đó nh C, C++ và VB, C# đợc thiết kế nhằm sử dụng đơn giản, hoàn toàn hớng đối tợng. Với sự tích hợp C# với VS. Net, việc phát triển các ứng dụng Windows và Web nhanh và đơn giản. Có thể truy cập vào các th viện lớp của .Net, C# hỗ trợ phát triển các ứng dụng ASP.Net và dịch vụ Web. Bên cạnh đó, C# tăng cờng năng suất lập trình bằng việc xoá bỏ đi những lỗi thông thờng có trong C và C++.Java thành công nhất trên 2 lĩnh vực: lập trình các ứng dụng trên server và trong giảng dạy khoa học tính trong các trờng học. C# cũng có khả năng vợt trội Java trên hai lĩnh vực đó. Trong đề tài này, chúng em không thể trình bày hết mọi vấn đề liên quan đến ngôn ngữ C#, chúng em chỉ xin giới thiệu sơ bộ về .NET và C# cùng với một số vấn đề nâng cao trong ngôn ngữ C# nh sau:1. Giới thiệu sơ bộ về nền .NET và ngôn ngữ C# 6 2. Đồ hoạ trong C# 3. Đa luồng trong C# 4. XML và C# 5. Lập trình mạng trong C# 6. Một vài so sánh C# với các ngôn ngữ khácTrong đề tài này, chúng em không dám chắc mọi trình bày, đánh giá là chính xác, xác đáng. Trong khi làm đề tài có một số thuật ngữ Anh khó chuyển tải đúng nghĩa sang tiếng Việt nên đợc giữ nguyên. Chúng em kính mong thầy thông cảm và góp ý sửa chữa những điểm cha tốt trong báo cáo. 7 Phần I: Giới thiệu sơ bộ về nền .NET và ngôn ngữ C#Nếu nh Java ra đời, nổi tiếng với tuyên bố: write once, run anywhere, thì ngay từ khi chào đời, C# và .NET đợc các nhà thiết kế gắn với tuyên bố: Every language, one platform, có thể tạm dịch là: mọi ngôn ngữ đều chạy trên một nền. Nền đó chính là .NET ( .NET Framework). Vậy .NET là gì ? Chúng ta sẽ cùng nhau tìm hiểu về .NET qua các vấn đề sau :- Giới thiệu chung về nền .NET- Những đặc điểm của nền .NET- Những thành phần của .NETI. Giới thiệu sơ bộ về .NETI.1. Giới thiệu chung về nền .NET (.NET platform) Nền .NET là một khái niệm mới trong khoa học máy tính; nó vợt ra ngoài khuôn khổ của một ngôn ngữ lập trình, một bộ th viện; nó cha phải là một hệ điều hành, chúng ta có thể hiểu đơn giản nó là một nền để từ đó có thể phát triển các ứng dụng cả trên Windows lẫn trên Internet thuận tiện hơn. Nền .NET đợc thiết kế để phục vụ các mục đích sau:o Cung cấp một môi trờng lập trình hớng đối tợng tuyệt đối, mã của chơng trình đợc thực thi trên một máy hay cững có thể thực thi từ một máy từ xa thông qua Internet.o Giảm thiểu tối đa xung đột giữa các version của một phần mềmo Đem lại một môi trờng cho phép các ngôn ngữ lập trình có thể giao tiếp với nhau, tích hợp với nhauChú ý: chúng ta cũng cần phải phân biệt giữa hai thuật ngữ: .NET và nền .NET. .NET bao gồm 3 thành phần cơ bản :o Nền .NET: một nền cho phép phát triển các ứng dụngo Các sản phẩm .NET: bao gồm tất cả các sản phẩm của Microsoft dựa trên nền .NET.o Các dịch vụ .NET: các dịch vụ đợc cung cấp bởi Microsoft phục vụ cho việc phát triển các ứng dụng chạy trên nền .NET. Nh vậy nền .NET chỉ là một thành phần của .NET.Nền .NET gồm hai thành phần chính: Common language runtime ( CLR ) và thviện lớp nền .NET. Hai thành phần này sẽ đợc trình bày cụ thể ở những phần sau.I.2. Kiến trúc phân lớp nền .NET8 Hình 1 biểu diễn kiến trúc nền .NET. Mỗi ngôn ngữ thuộc gia đình .NET ( phiên bản đầu tiên gồm các ngôn ngữ : VC.NET, VB.NET, C#, sau đó có thêm VJ# ) Hình 1 Kiến trúc nền .NETđều đợc dịch sang ngôn ngữ trung gian Microsoft ( MSIL hay gọi ngắn là IL ) ngôn ngữ dựa theo tiêu chuẩn của Common Language Specification ( CLS ). Có 3 loại ứng dụng cơ bản là: các ứng dụng Web, các dịch vụ Web, các ứng dụng Form trên Windows. Những ứng dụng này sử dụng các đối tợng, phơng thức từ th viện lớp cơ sở và chạy trong môi trờng CLR.I.3. Những đặc trng của nền .NET Những đặc trng chủ chốt của nền .NET chủ yếu nằm trong CLR, th viện lớp cơ sơ và CLS. Chúng em chỉ xin trình bày một số đặc trng chúng em cho là dễ nhận biết và nắm bắt nhấtI.3.1. Phát triển đa ngôn ngữ Trớc đây, vấn đề sử dụng đa ngôn ngữ ( multilanguage ) hay giao thoa ngôn ngữ lập trình ( cross language ) đã đợc đề cập nhiều khi phát triển các ứng dụng. Đa ngôn ngữ có thể hiểu là việc sử dụng nhiều ngôn ngữ phát triển một ứng dung, mỗi ngôn ngữ viết lên một phần ứng dụng. Với giải pháp này, ngời lập trình có thể sử dụng một ngôn ngữ mà mình quen thuộc kết hợp sử dụng lại những đoạn mã đợc viết trên những ngôn ngữ khác phù hợp với mục đích của một phần chơng trình nhất định để xây dựng lên một ứng dụng hoàn chỉnh. Một phơng pháp truyền thống để thực hiện giải pháp này là xây dựng nên các th viện động .dll. Phơng pháp này đợc áp dụng trong VS 6.0. Mỗi ngôn ngữ đều có thể xây dựng nên một th viện .dll. Một ngôn ngữ khác sẽ sử dụng file .dll đó nh là một phần th viện của mình. Phơng pháp th hai là sử dụng mô hình đối tợng hớng thành phần COM ( trong đề tài này sẽ không trình bày về COM, 9 ở đây chúng em chỉ điểm qua). Cả hai phơng pháp trên đều sử dụng ngôn ngữ định nghĩa giao diện ( IDL ). Với nền .NET, chúng ta có thể thực hiện việc phối hợp ngôn ngữ dễ dàng hơn. Nền .NET cho phép ngôn ngữ này có thể tích hợp với ngôn ngữ khác bằng việc sử dụng ngôn ngữ trung gian là MSIL Tất cả các ngôn ngữ khi soạn thảo có thể khác nhau, sau đó đợc dich bởi một chơng trình dịch thích hợp, chúng đều trở thành dạng ngôn ngữ trung gian, khác biệt giữa các ngôn ngữ hoàn toàn bị xoá bỏ. Ngôn ngữ trung gian sẽ đợc đa vào CLR để thực thi.I.3.2. Chơng trình ứng dụng độc lập với hệ điều hành và bộ vi xử líNgôn ngữ trung gian IL là ngôn ngữ độc lập với bộ vi xử lí, nó là ngôn ngữ ở cấp cao hơn ngôn ngữ máy. Khi nào cần thực thi, IL sẽ đợc dịch ra ngôn ngữ máy thích hợp. Bất cứ hệ điều hành nào hỗ trợ nền .NET thì ứng dụng .NET sẽ chạy và không gặp khó khăn gì. Đối với các hệ điều hành thuộc họ Windows từ Win 98 trở nên đều hỗ trợ nền .NET. Tháng 6 2001, khi mới cho ra đời .NET, Microsoft đã thông báo rằng họ đã đạt đợc thoả thuận phát triển .NET trên Unix, tuy nhiên đến nay vẫn cha có kết quả chính thức. Tháng 10 2001, Microsoft cho phép Ximian, ngời đã phát triển giao diện GNOME thông dụng trên Linux, phát triển một chơng trình dịch C# và CLR trên Linux. Phiên bản đầu tiên có tên Mono có thể tìm trên www.go-mono.net. Công việc hiện đang tiến hành ở giai đoạn xây dựng th viện cơ sở trên Linux.I.3.3. Quản lí bộ nhớ tự độngRò rỉ bộ nhớ luôn là vấn đề phức tạp trong lập trình khi ta không quản lý nổi những vùng nhớ đã đợc cấp phát. Trong Visual Basic, quản lý bộ nhớ đợc thực hiện bởi kĩ thuật đếm số lần truy cập. Trong C và C++, cách tốt nhất để quản lý bộ nhớ là tự mình trả lại cho hệ điều hành những vùng nhớ không dùng nữa. Trong .NET, có một bộ phận là GC( Garbage Collection ) làm nhiệm vụ thu hồi lại vùng nhớ hiệu quả hơn những cách trên.I.3.4. Hỗ trợ phiên bảnNhững lập trình viên đã từng lập trình với th viện động DLL chắc hẳn đều biết đến thuật ngữ DLL Hell. DLL Hell có thể miêu tả nh sau : bạn đang sử dụng một ch-ơng trình ứng dụng với một DLL phiên bản 1.0, sau đó bạn cài thêm một ứng dụng khác cũng sử dụng một DLL giống nh vậy với phiên bản 1.1. Khi đó ứng dụng cữ lập tức sẽ có vấn đề, có thể không chạy. Khi bạn thay thế DLL đó với DLL phù hợp với ứng dụng cũ thì ứng dụng mới lại không chạy. Trong .NET, các thành phần của đối t-ợng luôn đợc phân tách riêng rẽ, một ứng dụng chỉ load những thành phần đã đợc xây dựng, kiểm tra chạy thử với ứng dụng đó. Sau khi một ứng dụng đã cài đặt và chạy thử thành công thì nó luôn chạy. .NET thực hiện vấn đề này bằng cách sử dụng thêm thành phần là assemblies. Những thành phần đợc đóng gói lại trong một assembly. Assembly có chứa thông tin về phiên bản, và CLR trong .NET sẽ sử dụng thông tin này để nạp đúng những thành phần phục vụ cho ứng dụng I.4. Những thành phần của nền .NET 10 [...]... Những thành phần Internal là những thành phần không khai báo thuộc tính truy cập - Private: thành phần này chỉ đợc truy cập từ những thành phần trong cùng 1 lớp Cấu trúc ( struct): chúng ta có thể xây dựng một loại struct nằm ngoài các lớp và nằm trong 1 namespace nên có thể coi nó là một đơn vị chơng trình ngang với class Struct cũng khá giống với class khi nó cũng có các biến dữ liệu thành phần với. .. Đối với mỗi thành phần của lớp thì có các thuộc tính truy cập sau: - public: tất cả các đối tợng khác đều có thể truy cập đến các thành phần này - protected: chỉ những đối tợng kế thừa từ một đối tợng mới có thể truy cập vào thành phần protected của lớp cha - Internal: những đối tợng đợc định nghĩa trong một assembly ( các file định nghĩa chúng cùng nằm trong 1 assembly) có thể truy cập những thành phần. ..Nh chúng ta đã xem ở phần trớc, có nhiều thành phần trong nền NET Trong phần này chúng ta sẽ trình bày các thành phần nổi bật về tính chất và vai trò của chúng trong cả hệ thống I.4.1 CLR CLR có thể đợc coi nh trái tim của nền NET CLR nằm ở cấp cuối cùng trong sơ đồ phân cấp của nền NET, trực tiếp giao tiếp với hệ điều hành hay các thiết bị phần cứng Vai trò của nó là nhận mã IL,... nh là một gói cả mã chơng trình, các thành phần, các tài nguyên Một assembly bao gồm thông tin metadata, mã chơng trình ở dạng IL, các file tài nguyên ví dụ nh các file ảnh, âm nhạc, các th viện thành phần Metadata là tập hợp dữ liệu ở dạng nhị phân diễn tả các thành phần của chơng trình Metadata đợc lu trữ ở file có thể thực thi ( executable hay exe , dll) cùng với mã IL của chơng trình Metadata chứa... C#, mọi thực thể đều đợc biểu diễn là đối tợng, đi cùng với nó là các thuộc tính, hành vi ( method ) của thực thể đó Nh vậy, một thuộc tính hay một method chắc chắn phải thuộc về một đối tợng nào đó Một chơng trình ứng dụng bao gồm nhiều đối tợng Khi chúng muốn một đối tợng thực hiện một công việc hay đối tợng này muốn đối tợng kia thực hiện một công việc, chúng ta hay các đối tợng giao tiếp với nhau... của bộ vi xử lý đợc gọi là thời luợng (quantum) xuyên suốt quá trình thực hiện luồng Tại một thời lợng hoàn thành, thậm chí nếu luồng cha hoàn thành thì processor sẽ vẫn lấy luồng trong hàng đợi của các luồng đồng u tiên vào thực hiện, nếu nh có luồng chờ đợi Công việc của bộ định luồng là giữ luồng ở mức u tiên cao nhất vào thực hiện tại tất cả các thời điểm Nếu có hơn một luồng u tiên cao nhất thì đảm... foreach ( giống nh trong VB): một lệnh lặp foreach liệt kê các thành phần trong một tập hợp, thực thi một câu lệnh cho mỗi thành phần của tập hợp đó Các lệnh throw, try, catch: các lệnh phục vụ cho quá trình quản lí lỗi trong thời gian chạy ( runtime error ) gồm có phát ra một lỗi ( throw ), cặp lệnh try catch đón nhận một lỗi và đa ra hành động xử lí lỗi II.2.4 Cấu tạo của một chơng trình C# Nếu... các nhập nhằng, rắc rối khi truy cập các thành phần của các lớp cha Trong C# không cho phép chúng ta thực hiện đa thừa kế từ nhiều lớp Tuy nhiên để thực hiện đa thừa kế, C# tạo ra một đơn vị chơng trình mới là Interface, thay vì khai báo thừa kế từ nhiều lớp, chúng ta có thể khai báo thừa kế từ một lớp và thực thi nhiều Interface Qua đó, chúng ta cũng có thể thực hiện đa kế thừa Một Interface có thể... nó cần, với cách thực hiện này một tiến trình ngăn chặn các tiến trình khác đợc xử lí đồng thời I.2 Đa luồng ( multitasking) Không gian bộ nhớ, trong đó một ứng dụng đợc thực hiện đợc gọi là tiến trình (process) Trong phạm vi một tiến trình thờng có nhiều công việc cần đợc thực hiện Quá trình thực hiện một công việc đợc gọi là một luồng (tiểu trình) Các công việc trong một tiến trình có thể thực hiện... cực kỳ kinh nghiệm Ngôn ngữ C# cùng với các ngôn ngữ khác trong bộ NET đã biến các tính năng nguyên thủy đồng thời trở nên sẵn sàng 29 cho ngời lập trình xây dựng các ứng dụng cá nhân.Lập trình viên C# có thể xây dựng ứng dụng có nhiều luồng thi hành mà mỗi luồng chỉ định rõ một phần công việc trong số nhiều phần việc của một chơng trình và có thể thi hành đồng thời với các luồng khác.Một ứng dụng cụ . -=, <<=, >>=, &=, ^=, != Các toán tử quan hệ: <, >, <=, >=, is, as, ==, != Các toán tử lô- gíc: &, ^, !, &, |, <<,. những thành phần phục vụ cho ứng dụng I.4. Những thành phần của nền .NET 10 Nh chúng ta đã xem ở phần trớc, có nhiều thành phần trong nền .NET. Trong phần