1. Trang chủ
  2. » Luận Văn - Báo Cáo

TÌM HIỂU NGÔN NGỮ LẬP TRÌNH CSHAP(C#)

40 435 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 40
Dung lượng 1,67 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bù lại nó hổ trợ khái niệm interface có những đặc điểm của đa kế thừ nhưng loại bỏ được những phức tạp ở đa kế thừa ở C++ o Ở ví dụ trên tính kế thừa được thể hiện ở việclớp HinhVuong là

Trang 1

Khoa CNTT Trường CĐ Công Nghiệp Tuy Hòa

TÌM HIỂU NGÔN NGỮ LẬP TRÌNH CSHAP(C#)

Bắt Đầu

Nhóm PNP

Trang 2

Nghiên cứu được chia làm hai giai đoạn:

1 Giai đoạn một nghiên cứu những khái niệm cơ bản của CShap và lập trình hướng đối tượng trong CShap

2 Giai đoạn hai nghiên cứu sâu kỹ thuật lập trình mạng được cài đặt trên ngôn ngữ Cshap

Trang 3

CÁC VẤN ĐỀ

C# và kiến trúc NET Một số công cụ hổ trợ lập trình C# Hướng đối tượng trong C#

Trang 4

C# VÀ KIẾN TRÚC NET

1 C# là một trình biên dịch hướng NET, nghĩa là tất cả các mã của C#

luôn luôn chạy trên trên môi trường NET Framework Điều đó dẫn đến 2 hệ quả sau:

– Cấu trúc và các lập luận C# được phản ánh các phương pháp luận

của NET ngầm bên dưới

– Trong nhiều trường hợp, các đặc trưng của C# thậm chí được quyết

định dựa vào các đặc trưng của NET, hoặc thư viện lớp cơ sở của NET

2 C# là một ngôn ngữ độc lập Nó được thiết kế để có thể sinh ra mã

đích trong môi trường NET, nó không phải là một phần của NET bởi vậy có một vài đặc trưng được hỗ trợ bởi NET nhưng C# không

hỗ trợ và bạn cũng đừng ngạc nhiên khi có những đặc trưng C# hỗ trợ mà NET không hỗ trợ

chẳng hạn như quá tải toán tử

Trang 5

C# VÀ CÔNG CỤ HỔ TRỢ LẬP TRÌNH

Bạn có thể lập trình Cshap bằng bất cứ trình soạn thảo văn bản nào

Ví dụ như notepad, Wordpad nhưng để làm tăng năng xuất của làm việc của các lập trình viên rút ngắn thời gian viết code

Ta nên sử dụng các IDE hỗ trợ lập trình

Ví dụ như :

Bộ IDE: Microsoft Visual Studio các phiên bản 2003,

2005, 2008 và gần đây nhất là bản 2010 Bên cạnh đó microsoft còn có các bản miễn phí Express dành cho Các cá nhân nghiên cứu hay học tập

Trang 6

HƯỚNG ĐỐI TƯỢNG TRONG C#

o C# dựa trên nền tảng là C++ nên các cú pháp về khai báo biến cấu trúc lặp ….Gần như tương tự C++ vì vậy chúng ta lướt qua các khái niệm trên Ta chỉ nghiên cứu các khái niệm cơ bản của lập trình hướng đối tượng

o Giống như java C# cũng là ngôn ngữ lập trình hướng đối tượng

Trang 8

Tính kế thừa

o Khác với C++, C# chỉ hỗ trợ đơn kế thừa Nghĩa là một lớp con chỉ được thừa kế từ một lớp cha duy nhất Bù lại nó hổ trợ khái niệm interface có những đặc điểm của đa kế thừ nhưng loại bỏ được những phức tạp ở đa kế thừa ở C++

o Ở ví dụ trên tính kế thừa được thể hiện ở việclớp HinhVuong

là lớp con kế thừa từ lơp cha là lớp HinhHoc cụ thể là kế thừa

từ một lớp trựu tượng Lớp cha

Trang 9

Tính kế thừa(tt)

Trong C# một lớp bắt buột phải thừa kế từ một lớp nào đó ngoại

trừ lớp Object C# hỗ trợ một lớp cơ sở toàn diện gọi là

System.Object

Vì lớp cha HinhHoc là một lớp trừu tượng(abstract) chứa trong

nó hai phương thức trừu tượng , C# sẽ yêu cầu lớp con

HinhVuong phải override lại các phương thức đó

Phương thức abstract ở lớp cha

Phương thức cài đặt ở lớp con

Trang 10

Phương thức nạp chồng(Overloading)

o C# hỗ trợ phương thứ nạp chồng với một vài dạng phương thức khác nhau về những đặc tính sau:số lượng tham số, kiểu tham số

o Nó không chấp nhận hai phương thức chỉ khác nhau về kiểu trả về, hay khác nhau về đặt tính của tham số đang được khai báo như sef hay out

o Ở ví dụ ta thấy hàm tạo ở lớp HinhVuong được viết theo kiểu nạp chồng

Hàm tạo(Constructor) được viết theo 2 kiểu

Trang 11

Giao diện(interface)

o Việc khai báo giao diện làm việc cũng tương tự như khai báo một lớp trừu tượng( abstactor) nhưng nó không cho phép thực thi bất cứ một phần nào của giao diện Một giao diện chỉ được khai báo bên trong

nó những phương thức, thuộc tính, bộ lập mục và sự kiện

o Giao diện thì không chứa Constructor , không cho phép các phương thức nạp chồng, không cho phép khai báo các bổ, hay các từ khóa virtual hay static trên các thành phần Mặc các thành phần trong giao diện luôn luôn là public

Giao diên IDoHoa được khai báo và cài đặt cho lớp HinhChuNhat

Trang 12

Struct

o Trong C# struct được định nghĩa gần giống như một lớp chỉ khác tù khóa và một vài điểm như sau:

1 Struct là một kiểu giá trị không phải kiểu tham chiếu

2 Struct không hỗ trợ kế thừa nhưng vẫn kế thừa từ lớp Object

3 Trình biên dịch luôn cung cấp một constructor không tham số mặc định và không cho phép thay thế

4 Với struct bạn có thế chỉ rỏ cách mà các trường đặt ngoài bộ nhớ

Khai báo 1 struct

Vì struct là kiểu giá trị nên thao tác new chỉ đơn giản là định vị bộ nhớ

và gọi hàm tạo nên có thể code trên struct theo hai cách như sau:

Trang 13

Lỗi và xử lý biệt lệ

o Nếu bạn đã học VB thì cũng biết cách xử lý biệt lệ của nó rất hạn chế trong câu lệnh On Error Goto đối với C# nó mở ra một thế giới mới cho việc xử lý lỗi trong chương trình của bạn

o Cách của C# xử lý biệt lệ tương đối giống với Java và C++ nhưng trong C++ thỉnh thoảng phải cảnh giác với những biệt lệ bởi việc thực thi ẩn trong C++ có thể xảy ra Nhưng bạn hãy hoàn toàn yên tâm khi sử dụng trong C# vì nó không gây bất cứ ảnh hưởng nào bất lợi nào trong thực thi

o Sau đây là những lớp biệt lệ của lớp cơ sở:

Trang 15

Các lớp biệt lệ cơ bản(tt)

o những lớp biệt lệ nên đươc đặt trong bất kì namspace nào tương đuơng những lớp mà chúng có thể được sinh ra - vì lí do đó những biệt lệ có liên quan đến IO thì nằm trong namspace System.IO

o Có 2 lớp quan trọng trong hệ thống các lớp được dẫn xuất từ System.Exception là :

System.SystemException - sử dụng cho những biệt lệ thường xuyên được sinh ra trong thời gian chạy của NET,hoặc là những lỗi chung thường được sinh ra bởi hầu hết những ứng dụng , ví dụ như là StackOverflowException đuợc sinh ra bởi thời gian chạy NET nếu nó thăm dò thấy Stack đầy

Trang 16

Đón bắt biệt lệ

cách mà nó làm như sau :

1 Dòng thực thi bước vào khối try

2 Nếu không có lỗi xuất hiện, việc thực thi tiến hành một cách bình thường xuyên suốt khối try, và khi đến cuối khối try, dòng thực thi sẽ nhảy đến khối finally ( bước 5), tuy nhiên, nếu một lỗi xuất hiện trong khối try,thực thi sẽ nhảy đến khối catch ( bước tiếp theo)

3 trạng thái lỗi được xử lí trong khối catch

4 vào cuối của khối catch , việc thực thi được chuyển một cách tự động đến khối finally

5 khối finally được thực thi

Cú pháp C# được sử dụng để thể hiện tất cả điều này cụ thể như sau:

Trang 17

Đón bắt biệt lệ(tt)

Những thuộctính của system.exception

Trong ví dụ trên chúng ta chỉ xem xét 1 thuộc tính đó là message, của đối tượng exception tuy nhiên có 1 số những thuộc tính trong lớp

system.exception

- helplink: 1 liên kết đến 1 tập tin trợ giúp mà cung cấp nhiều thông tin hơn về biệt lệ

- message: chuỗi mô tả trạng thái lỗi

- source : tên của ứng dụng hoặc đối tượng mà gây ra lỗi

- Stacktrace: chi tiết về phương thức gọi stack ( để giúp đỡ truy dấu vết phương thức mà ném ra biệt lệ)

- TargetSite: một đối tượng phản ánh của NET mà mô tả phương thức ném ra biệt lệ

- InnerException :nếu biệt lệ này được ném từ bên trong một khối catch , nó chứa đựng đối tượng biệt lệ mà gửi đoạn mã vào trong khối catch

Trang 18

Cơ chế Delegate & Event

Có instance

Có thể chứa những tham chiếu đến 1 hay nhiều method Một delegate định nghĩa một signature

Return type Sequence of parameter types Tất cả các method có cùng signature có thể được add vào thể hiện của delegate

Trang 19

Delegate instance có một danh sách các tham chiếu method

Cho phép add (+) các method

Có thể remove (-) các method

public delegate void MyDelegate1(int x, int y)

Delegate cho dạng hàm: void Method( int, int )

public delegate string MyDelegate2(float f)

Delegate cho dạng hàm: string Method( float )

Trang 20

2.) Instance delegate

public void Method1(int x, int y) {

… }

… MyDelegate1 del1 = new MyDelegate1(Method1);

public string Method2(float f) {

… }

… MyDelegate2 del2 = new MyDelegate2(Method2);

Cơ chế Delegate & Event(tt)

Trang 21

3.) Call Delegate

int x = 5, y = 10;

del1(x, y); del1(10, 20);

int y = 2; del1(100, y); Gọi del1

float f =0.5f;

string s;

s = del2(f);

string s = del2(100f); Gọi del2

Cơ chế Delegate & Event(tt)

Trang 22

3.) Multi Cast

void Print(int x,int y) {

Console.WriteLine(“x = {0}, y = {1}”, x, y);

} void Sum(int x, int y) {

Console.WriteLine(“Tong = {0}”, x+y);

}

MyDelegate1 mulDel = new MyDelegate1(Print);

mulDel += new MyDelegate1(Sum);

Trang 23

Cơ chế thông điệp giữa các lớp hay các đối tượng

Có thể thông báo cho lớp khác biết được khi một lớp có phát sinh điều gì đó

Publisher: lớp phát sinh sự kiện Subscriber: lớp nhận hay xử lý khi sự kiện xảy ra Trong môi trường giao diện GUIs (Graphical User Interfaces: GUIs):

Button đưa ra sự kiện “Click”, cho phép lớp khác có thể đáp ứng (xử lý) khi sự kiện này xảy ra

VD: Button “Add” trong Form, khi sự kiện click xảy ra thì Form thực hiện lấy dữ liệu từ các TextBox đưa vào ListBox…

Cơ chế Delegate & Event(tt)

Trang 24

Một lớp có publish một tập các event cho phép các lớp khác subscribe

Button là lớp publish đưa ra event: click Form là lớp subscribe có phần xử lý riêng khi “click” của Button kích hoạt

Cơ chế Delegate & Event(tt)

Trang 25

Sự kiện trong C# được thực thi nhờ uỷ thác

Lớp publishing định nghĩa ủy thác Những lớp subscribing phải thực thi Khi sự kiện xuất hiện thì phương thức của lớp subscribing được gọi thông qua uỷ thác

Phương thức để xử lý sự kiện gọi là trình xử lý sự kiện (event handler)

Trình xử lý sự kiện trong NET Framework được mô tả như sau:

Trả về giá trị void Tham số 1: nguồn phát sinh sự kiện, đây chính là đối tượng publisher

Tham số 2: là đối tượng thuộc lớp dẫn xuất từ EventArgs Phải thực hiện trình xử lý sự kiện theo đúng mẫu trên!

Cơ chế Delegate & Event(tt)

Trang 26

Khai báo delegate xử lý sự kiện

Khai báo event

Các lớp muốn xử lý khi sự kiện OnEventName phát sinh thì phải thực thi event handler

Cơ chế Delegate & Event(tt)

GIỚI THIỆU public delegate void HandlerName(object obj, EventArgs arg);

Trang 27

Tính đa luồng

Định nghĩa luồng: Luồng (thread) là một chuỗi liên tiếp những

sự thực thi trong chương trình Trong chương trình C#, việc thực thi bắt đầu bằng phương thức main() và tiếp tục cho đến khi kết thúc hàm main()

Thao tác luồng: luồng được thao tác bằng cách dùng lớp Thread nằm trong namespace System.Threading, một thể hiện của luồng đại diện cho một luồng Chúng ta có thể tạo các bằng cách khởi tạo một đối tượng luồng

Trang 28

Tính đa luồng(tt)

Độ ưu tiên luồng:

Độ ưu tiên của luồng được định nghĩa là các giá trị trong bản liệt kê

ThreadPriority, các giá trị: Highest, abovenormal, Normal, Belownormal, Lowest Mỗi luồng có một độ ưu tiên cơ sở

Sự đồng bộ: Một khía cạnh chủ yếu khác của sự đồng bộ hay là việc truy nhập một biến chỉ bởi nhiều luồng vào cùng thời điểm, nếu không đảm bảo được sự đồng bộ thì sẽ gây ra các lỗi ting vi

Để giải quyết việc đồng bộ, C# cung cấp cách thức truy nhập biến bằng từ khóa lock:

Lock (x) {

doSomething();

} Các vấn đề về đồng bộ:

Deadlock: là một lỗi có thể xuất hiện khi hai luồng cần truy nhập vào các tài nguyên mà bị khóa lẫn nhau

Race condition: là một lỗi xuất hiện khi vài luồng cố gắng truy nhập vào cùng một dữ liệu và không quan tâm đến các luồng khác

Trang 29

Tính đa luồng (tt)

Ví dụ về tính đa luồng:

static void DisplayNumbers() {

Thread thisThread = Thread.CurrentThread;

string name = thisThread.Name;

Console.WriteLine("Starting thread: " + name);

Console.WriteLine(name + ": Current Culture = " + thisThread.CurrentCulture);

for (int i=1 ; i<= 8*interval ; i++) {

if (i%interval == 0) Console.WriteLine(name + ": count has reached " + i); }

Trang 32

Những bổ từ truy cập(access modifiers):

o C# cung cấp một số bổ từ truy cập để cho biết sự tồn tại của một thành viên trong một lớp C# có hổ trợ 5 bổ từ như sau:

Trang 33

Giới thiệu hai lớp XmlReader và XmlWriter :Cả hai lớp XmlReader

và XmlWriter đều là những lớp trừu tượng Hình vẻ dưới đây chỉ ra các lớp được thừa kế từ XmlReader và XmlWriter

Trang 34

ở nút button như sau:

o Sử dụng lớp XmlTextWriter: việc sử dụng system.xml cho phép chương trình của chúng ta xuất ra một file XML với nội dung mong muốn Ta xét ví dụ sau:

Trang 36

Sử dụng XPath trong NET

XPath là một ngôn ngữ truy vấn cho XML Bạn sẽ dùng XPath để chọn một bộ con các các yếu tố giá trị văn bản hoặc các giá trị thuộc tính

Không gian tên System.XPath

Đây là một bảng liệt kê các lớp trong System.XPath, và một giải thích ngắn vì hỗ trợ của mỗi lớp:

bị một bộ nút trong Xpath

SelectNodes, SelectSingleNodes, Evaluate, và Matches

Trang 39

Tổng kết

Về cơ bản tìm hiểu được ngôn ngữ lập trình c#, NET Framework, lập trình hướng đối tượng qua đó nâng cao kiến thức của sinh viên Thêm kinh nghiệm tự nghiêm cứu tìm tòi ngôn ngữ lập trình mới

Làm nền cho việc tìm hiểu kỹ thuật lập trình mạng

Vì thời gian có hạn cùng những lý do khác nên không tránh được những sai sót trong slide mong thầy và các bạn thông cảm, góp ý cho nhóm

Khó khăn Chưa đạt được

Trang 40

Tài liệu tham khảo

1 Professional C#, 2nd Edition, Xuất bản bởi Wrox Press Ltd

2 Các giải pháp lập trình c# tổng hợp và biên dịch nguyễn ngọc bình phương-Thái Thanh Phong

3 Các trang diễn đàn trên internet CÁC VẤN ĐỀ

Ngày đăng: 12/04/2015, 14:21

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w