1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập Trình C# (Sharp) ppt

225 905 6
Tài liệu đã được kiểm tra trùng lặp

Đ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 225
Dung lượng 2,79 MB

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

Nội dung

 Nếu namespace không được xác định => sử dụng namespace mặc định  Namespace có thể chứa struct, interface, delegate và enum  Namespace có thể được sử dụng ở các file khác  Trường h

Trang 1

Lập trình C# (Sharp)

GV: Hồ Văn Lâm Khoa Tin học, ĐH Quy Nhơn

Trang 4

.NET Platform

– Tập hợp các ngôn ngữ lập trình (C#, VB.NET), tập hợp các công cụ phát triển (Visual Studio NET), thư viện các class

và Common Language Runtime (CLR)

– Tập hợp các NET Enterprise Servers (SQL Server 2005, Exchange 2005, BizTalk 2005 …)

– Web Service: cho phép sử dụng các service này để xây dựng những ứng dụng như bảo mật, xác định người sử dụng …

– Hỗ trợ các thiết bị không phải là máy tính như điện thoại di động, máy chơi điện tử …

Trang 5

2 .NET Framework

các thành phần đều phải tuân theo

interface, delegate, kiểu tham chiếu và kiểu giá trị

Có CLS (Common Language Specification) - cung cấp các quy tắc phục vụ cho việc tích hợp ngôn ngữ

các đối tượng có thể thao tác với nhau

bộ thư viện FCL (Framework Class Library)

Trang 6

Các thành phần của NET Framework

 4 ngôn ngữ chuẩn: C#, VB.NET, Managed C++, và JScript NET

 CLR (Common Language Runtime)

Trang 7

Kiến trúc của NET Framework

Trang 8

3 Dịch chương trình

thành IL (Microsoft Intermediate Language)

– IL được lưu trên 1 file trong ổ đĩa

– File IL do C# tạo ra cũng tương tự như file IL do các ngôn ngữ NET khác tạo ra

cách sử dụng chương trình dịch JIT (Just In Time )

Kết quả là tạo ra mã máy bởi Common Language

Runtime (CLR), được thực hiện bởi bộ xử lý

– Trình dịch JIT sẽ đọc từng lệnh trong file IL, dịch ra mã máy, sau đó yêu cầu bộ xử lý sẽ thực hiện luôn và còn JIT quay lại tiếp tục thực hiện với lệnh kế tiếp

Trang 9

3 Dịch chương trình

Trang 10

 File Hello.cs

 Bổ sung namespace System

 Chương trình bắt đầu thực hiện từ hàm Main

 In ra màn hình

Trang 11

 Nếu namespace không được xác

định => sử dụng namespace mặc định

 Namespace có thể chứa struct,

interface, delegate và enum

 Namespace có thể được sử dụng ở

các file khác

 Trường hợp đơn giản nhất: Một lớp,

một file, và chỉ sử dụng namespace mặc định

Cấu trúc của một chương trình

• Câu lệnh C# được kết thúc bởi một dấu chấm phẩy (;).

• Nhiều câu lệnh có thể gộp thành một khối được bao ở hai đầu bởi cặp dấu

ngoặc nghéo { },

• Câu lệnh nếu dài có thể tiếp tục xuống hàng dưới không cần đến một ký tự

Trang 12

Chương 2:

Căn bản C#

Trang 13

Biến và kiểu dữ liệu

– Là một khoảng không gian trong bộ nhớ máy tính được dành ra để lưu trữ một giá trị

– Tên của biến được dùng để tham chiếu đến giá trị

– Khai báo biến là báo cho máy dành ra một vùng nhớ để lưu một kiểu dữ liệu:

– Cú pháp khai báo biến:

[ modifier ] datatype identifer ;

– Ví dụ: int a; public float b;

– Phạm vi hoạt động của biến là đoạn chương trình mà biến được khai báo, trong một đoạn chương trình không được khai báo hai biến trùng tên nhau

Trang 14

kiểu dữ liệu

 C# là một ngôn ngữ được kiểm soát chặt chẻ về mặt kiểu dữ liệu, phân biệt chữ hoa chữ thường

– Value Type - Kiểu dữ liệu cơ bản: kiểu dữ liệu khác lớp đối tượng

– Reference Type - Kiểu tham chiếu: kiểu dữ liệu là lớp đối tượng

Kiểu số nguyên

Name CTS Type Description Range (min:max)

byte System.Byte 8-bit signed integer 0:255 (0:2 8 -1)

ushort System.UInt16 16-bit signed integer 0:65,535 (0:2 16 -1)

uint System.UInt32 32-bit signed integer 0:4,294,967,295 (0:2 32 -1)

Trang 15

kiểu dữ liệu

Kiểu số nguyên

sbyte System.SByte 8-bit signed integer -128:127 (-2 7 :2 7 -1)

short System.Int16 16-bit signed integer -32,768:32,767 (-2 15 :2 15 -1)

int System.Int32 32-bit signed integer -2,147,483,648:2,147,483,647 (-21) 31:231long System.Int64 64-bit signed integer -9,223,372,036,854,775,808: 9,223,372,036,854,775,807 (-263:263-1)

Trang 16

-kiểu dữ liệu

Kiểu số thực

Float System.Single 32-bit single-precision floating- point ±1.5 × 101038 -45 to ±3.4 ×

Double System.Double 64-bit double-precision floating- point ±5.0 × 1010308 -324 to ±1.7 ×

decimal System.Decimal 128-bit high precision decimal notation ±1.0 × 101028 -28 to ±7.9 ×

Trang 17

 Thường thì phải khởi gán một biến chuỗi:

string myString = "Xin chao“;

char System.Char Represents a single 16-bit (Unicode) character

Trang 18

Biến và kiểu dữ liệu

Trang 19

Reference Type

 Lớp đối tượng Object (System.Object): là lớp trừu tượng, là lớp cha của tất cả các lớp Khi định nghĩa một lớp A Mặc nhiên A sẽ lấy

Object làm lớp cha.

 Reference Type:

Trang 20

– Hằng bắt buộc phải được gán giá trị lúc khai báo.

– Trị của hằng phải có thể được tính toán vào lúc biên dịch, không thể gán một hằng từ một trị của một biến Nếu muốn làm thế thì phải sử dụng đến một read-only field.

– Hằng bao giờ cũng static, tuy nhiên ta không thể đưa từ khoá static vào khi khai báo hằng

Có ba thuận lợi khi sử dụng hằng trong chương trình:

– Hằng làm cho chương trình đọc dễ dàng hơn,

– Hằng làm cho dễ sữa chương trình hơn.

Trang 22

Phép toán và biểu thức

> >= < <= == !=

x >= 5 a==b

a != 7

&& || !

x>5 && x <10 x<5 || x >10

3<10 -> true !(3<10) -> false

Trang 23

Toán tử

Trang 24

Toán tử

 Bảng mô tả cách viết tắt của các phép toán

Trang 27

An toàn kiểu (Type Safety)

 Bảng chuyển đổi kiểu ngầm định trong C#

Trang 28

Boxing and Unboxing

 Boxing là từ dùng để chỉ quá trình chuyển đổi từ một kiểu giá trị sang kiểu tham khảo và tương tự Unboxing thì ngược lại

 Ví dụ sau đây sử dụng Boxing:

Trang 29

Boxing and Unboxing

tượng object được chuyển thành j kiểu int.

Trang 30

Phép toán và biểu thức

3 logic

2

So sánh

1

Số học

Nhân chia trước cộng trừ sau

Từ trái sang phải

3

Or (||)

2 And (&&)

1 Not (!)

Trang 32

Console I/O

Trang 34

Biểu thức điều kiện if

Câu lệnh if hoặc if else: Để kiểm tra điều kiện trước khi thực hiện công việc.

Cú pháp:

if(điều_kiện) {

//thực hiện công việc

}

Trang 35

Câu lệnh if hoặc if else

Câu lệnh if hoặc if else :

Trang 36

Câu lệnh switch case

Câu lệnh switch case : Khi công việc có nhiều lựa chọn và tuỳ

vào từng trường hợp để đưa ra công việc phù hợp với điều kiện

đưa vào có thể dùng câu lệnh switch case.

case 1: Console.WriteLine("integerA =1"); break;

case 2: Console.WriteLine("integerA =2"); break;

case 3: Console.WriteLine("integerA =3"); break;

default: Console.WriteLine("integerA is not 1,2, or 3");

Trang 40

}

Trang 43

Mảng (Array)

 Array là một cấu trúc dữ liệu cấu tạo bởi một số biến được gọi là những phần tử mảng Tất cả các phần tử này đều thuộc một kiểu dữ liệu Có thể truy xuất phần tử thông qua chỉ số (index) Chỉ số bắt đầu bằng zero.

 Có nhiều loại mảng (array): mảng một chiều, mảng nhiều chiều.

Trang 44

Mảng (Array)

như sau:

myIntegers = new int[32];

integers[0] = 35;// phần tử đầu tiên có giá trị 35

integers[31] = 432;// phần tử 32 có giá trị 432

int[] integers;

integers = new int[32];

string[] myArray = {"first element", "second element", "third element"};

Trang 45

Mảng (Array)

Làm việc với mảng (Working with Arrays)

 Chiều dài của mảng :

int arrayLength = integers.Length

 Thành phần của mảng là kiểu định nghĩa trước (predefined types), sắp xếp tăng dần dựa vào phương thức static

Array.Sort() method: Array.Sort(myArray);

 Đảo ngược mảng đã có nhờ vào static Reverse() method:

Trang 46

Mảng nhiều chiều (Multidimensional

Arrays in C#)

 Cú pháp :

type[,] array-name;

 Thí dụ:

hàng ba cột với phần tử kiểu nguyên:

int[,] myRectArray = new int[2,3];

int[,] myRectArray = new int[,]{ {1,2},{3,4},{5,6}, {7,8}}; mảng 4 hàng 2 cột

Trang 47

Mảng jagged

với kích thước khác nhau Những mảng con này phải đuợc khai báo từng mảng con một.

nghĩa là hai cặp [], gồm 3 hàng mỗi hàng là một mảng một chiều:

int[][] a = new int[3][];

a[0] = new int[4];

a[1] = new int[3];

a[2] = new int[1];

Trang 48

gồm một tập hợp những hằng đuợc đặt tên.

public enum TimeOfDay

Trang 49

 Ví dụ sau sử dụng enumeration:

class EnumExample

{ public enum TimeOfDay {

Morning = 0, Afternoon = 1, Evening = 2

} public static int Main() {

WriteGreeting(TimeOfDay.Morning);

return 0;

}

Trang 50

static void WriteGreeting(TimeOfDay timeOfDay)

{ switch(timeOfDay) {

Trang 51

giữa các lớp và các kiểu khác.

tên biến, tên hàm đụng độ vì trùng tên giữa các lớp namespace CustomerPhoneBookApp

Trang 52

namespace Basics {

}

Trang 53

public static int Main()

{

Basics.NamespaceExample NSEx = new Basics.NamespaceExample();

return 0;

} }

Trang 55

{ Introduction.NamespaceExample NSEx = new Introduction.NamespaceExample();

Console.WriteLine(NSEx.GetNamespace()); return 0;

} }

Trang 56

public string GetNamespace() {

return this.GetType().Namespace; }

} }

Trang 57

Phương thức Main()

biên dịch, theo mặc định trình biên dịch nhìn vào phương thức Main()

dịch sẽ trả về thông báo lỗi

được xem là điểm đột nhập vào chương trình

Trang 59

Khai báo hàm main() nhận thông

số (Passing Arguments to Main())

{ for (int i = 0; i < args.Length; i++)

{ Console.WriteLine(args[i]);

} return 0;

} }

}

Trang 60

Khai báo hàm main() nhận thông

số (Passing Arguments to Main())

Chạy chương trình bạn nhớ nhập thêm thông số, Bạn nên chạy bằng công cụ hỗ trợ của NET kết quả như sau:

ArgsExample /a /b /c

/a /b /c

Trang 61

spans multiple lines */

Console.WriteLine(/* Please don't do this! */ "This will compile");

DoSomething(Width, /*Height*/ 100); string s = "/* This is

Trang 62

Chương 3

C# hướng đối tượng

 Trong chương này sẽ được tiếp xúc một số khái niệm về hướng đối tượng trong C#

Trang 63

Chương 3

C# hướng đối tượng – Lớp và kế thừa

thuộc tính và phương thức

class MyClass

{

private int someField;

public string SomeMethod(bool parameter)

{ } }

Trang 64

Chương 3

C# hướng đối tượng – Lớp và kế thừa

thuật ngữ(term) dùng để chỉ đến một dữ liệu hay một chức năng nào đó được định nghĩa trong lớp đó

thành viên chứa mã như các phương thức(methods), các thuộc tính(properties), constructor, hay các nạp chồng toán hạng(Operator Overloads).

Trang 65

Chương 3

C# hướng đối tượng – Lớp và kế thừa

 Ví dụ tạo lớp sinhvien sau:

Class Sinhvien

{ private string ten;

private string lop;

public string Ten {

get

{ return ten; } set

{ ten=value;}

} public void xuatthongtin()

Console.WriteLine(“Ten sinh vien {0}”, ten);

Console.WriteLine(“Hoc lop {0}”, lop);

} }

Trang 66

Chương 3

C# hướng đối tượng – Lớp và kế thừa

khi khai báo một kiểu lớp thì có một biến lưu trữ tham khảo đến một thể hiện (instance) của lớp đó và sử dụng

lệnh new để tạo ra một đối tượng.

Ví dụ tạo ra đối tượng myObject như sau:

MyClass myObject;

myObject = new MyClass();

 Tuy nhiên có thể khai báo và khởi tạo đối tượng cùng một lúc

MyClass myObject = new MyClass();

Ví dụ tạo đối tượng a thuộc lớp Sinhvien

Trang 67

Chương 3

C# hướng đối tượng- Đơn thừa kế

hưởng những thuộc tính và phương thức từ một lớp khác

class MyDerivedClass : MyBaseClass

{ // functions and data members here }

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

System.Object.

Trang 68

Chương 3

C# hướng đối tượng- Đơn thừa kế

 Ví dụ:Xây dựng lớp Sinhvien và lớp Congnhan kế thừa từ lớp Connguoi.

class Connguoi

{

private string ten;

private int tuoi;

… }

class Sinhvien: Connguoi

{

private string lop;

… }

class Congnhan: Connguoi

{

private string tencongty;

Trang 69

Chương 3

C# hướng đối tượng - Phương thức nạp chồng(Overloading)

phương thức khác nhau về những đặc tính sau: tên,

số lượng thông số, và kiểu thông số

C++ và VB

cùng tên nhưng khác số lượng và kiểu của thông số:

Trang 70

void DisplayResult(int result)

{

// implementation }

}

Trang 71

Chương 3

C# hướng đối tượng - Phương thức nạp chồng(Overloading)

về kiểu trả về

về đặc tính của một thông số đang được khai báo

như ref hay out

Trang 72

Chương 3

C# hướng đối tượng - Phương thức Overriden và Hide

Bằng cách khai báo virtual trong một hàm ở lớp cơ sở thì cho

phép hàm đó được overriden trong bất kỳ một lớp thừa hưởng nào

Trang 73

Chương 3

C# hướng đối tượng - Phương thức Overriden và Hide

class MyDerivedClass : MyBaseClass

 Những trường thành viên (member fields) và những hàm

tĩnh thì không được khai báo Virtual.

Trang 74

Chương 3

C # hướng đối tượng - Phương thức Overriden và Hide

khai báo ở lớp cơ sở và lớp thừa hưởng nhưng các

phương thức này không khai báo virtual hay overriden thì sẽ được gọi là: "lớp thừa hưởng hide lớp cơ sở

đó"

kiểu của biến được sử dụng để tham khảo đến thể hiện, chứ không phải kiểu của chính thể hiện đó.

cả lớp thừa hưởng và lớp cơ sở mà không có khai báo

virtual và override thì sẽ bị cảnh báo trong khi biên

dịch Trong C#, nên sử dụng từ khoá new để đảm bảo bạn muốn hide phương thức đó

Trang 75

Chương 3

C # hướng đối tượng - Phương thức Overriden và Hide

 Trong C# có một cú pháp đặc biệt để gọi những phiên bản cơ sở của một phương thức từ một lớp thừa hưởng Cú pháp :

base.<methodname>()

 Ví dụ:

class CustomerAccount

{ public virtual decimal CalculatePrice() {

// implementation }

} class GoldAccount : CustomerAccount {

public override decimal CalculatePrice() {

return base.CalculatePrice() * 0.9;

}

Trang 76

Chương 3

C# hướng đối tượng - lớp và hàm Abstract

C# cho phép cả lớp và phương thức có thể khai báo abstract

 Một lớp abstract không được thể hiện và một phương thức abstract không được thực thi mà phải được overriden trong bất kỳ lớp thừa hưởng không abstract nào

Một phương thức abstract sẽ tự động được khai báo virtual Nếu

một lớp có phương thức abstract thì nó cũng là lớp abstract và được khai báo như sau:

abstract class Building

{ public abstract decimal CalculateHeatingCost(); // abstract method

}

Trang 77

Chương 3

C# hướng đối tượng - Sealed các lớp và phương thức

C# cho phép các lớp và phương thức được khai báo sealed Nếu

là lớp có nghĩa là không được quyền thừa kế lớp đó, nếu là phương thức tức là không được phép override nó

C# sử dụng từ khoá sealed trước tên lớp và phương thức:

sealed class FinalClass

{

// etc}

class DerivedClass : FinalClass // wrong Will give compilation error {

// etc }

Trang 78

class DerivedClass : MyClass

{

public override void FinalMethod() // wrong Will give compilation error

{ } }

Trang 79

Chương 3

C# hướng đối tượng – Những Bổ Từ Truy cập

 Trong C# cung cấp các bổ từ để cho biết sự tồn tại của một thành viên một lớp Có 5 bổ ngữ như sau:

public Biến và phương thức có thể được truy cập từ bất kỳ nơi đâu.

Internal Biến và phương thức chỉ có thể được truy cập trong cùng một

gói Protected Biến hay phương thức chỉ có thể được truy cập từ kiểu của nó

hay từ những kiểu kế thừa kiểu đó.

Protected internal Biến hay phương thức chỉ có thể được truy cập từ gói hiện tại,

hay từ những kiểu kế thừa hiện tại.

private Biến hay phương thức chỉ có thể truy cập từ trong kiểu của nó

Trang 80

Chương 3

C# hướng đối tượng – Thuộc Tính

 Để định nghĩa thuộc tính trong C# dùng cú pháp sau:

public string SomeProperty

{

// do whatever needs to be done to set the property

} }

Trang 81

Chương 3

C# hướng đối tượng – Thuộc Tính

Thủ tục get không có tham số và phải trả về cùng kiểu với thuộc tính đã được khai báo

Không nên khai báo tường minh các tham số trong thủ tục set, mà trình biên dịch sẽ tự động

biết là có một tham số cùng kiểu trỏ đến giá trị

 Ví dụ:

private string foreName;

public string ForeName

Trang 82

trong khai bao thuộc tính đó.

Ví dụ để định nghĩa thuộc tính Forename là chỉ đọc:

private string foreName;

public string ForeName

Trang 83

Chương 3

C# hướng đối tượng – Thuộc Tính

Bổ từ truy cập:

C# không cho phép cài đặt những bổ từ khác nhau cho thủ tục set và get Nếu muốn tạo ra một

thuộc tính có public để đọc nhưng lại muốn hạn chế protected trong gán thì đầu tiên phải tạo

thuộc tính chỉ đọc với bổ từ public sau đó tạo một hàm set() với bổ từ protected ở bên ngoài

protected void SetForeName(string value)

Ngày đăng: 12/07/2014, 03:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w