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

Tự học ngôn ngữ lập trình c#

49 560 0
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 49
Dung lượng 582,5 KB

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

Nội dung

3.1.3.Thành phần “access-modifiers” Thành phần access- modifiers gọi là phương thức truy cập quyết định khả năng các phương thức của lớp bao gồm việc các phương thức của lớp khác có th

Trang 1

Ngôn ngữ lập trình C#

Trang 2

CHƯƠNG 3 LỚP - ĐỐI TƯỢNG

Trang 3

CHƯƠNG 3 LỚP - ĐỐI TƯỢNG (tt)

Hủy đối tượng

Trang 5

3.1.1 Khái niệm về lớp

 Lớp là một kiểu dữ liệu có cấu trúc dùng để biểu

diễn kiểu dữ liệu trừu tượng

Trang 6

int TrongLuong; int ChieuCao;

string MauMat; string MauLong; void An() { … } void Ngu() {…}

void LeoTreo() {…} }

Trang 7

Tên lớp Thân

lớp

Trang 8

} public class Tester {

static void Main( ) {

Time t = new Time( );

t.DisplayCurrentTime( );

} }

Trang 9

3.1.3.Thành phần “access-modifiers”

 Thành phần access- modifiers (gọi là phương thức truy cập)

quyết định khả năng các phương thức của lớp bao gồm việc

các phương thức của lớp khác có thể nhìn thấy và sử dụng các biến thành viên hay những phương thức bên trong lớp

[attributes] [access-modifiers] class identifier [:base-class]

{class-body}

public Class A {

….

}

public Class B {

….

}

Nhìn thấy

Trang 11

3.1.3.Thành phần “access-modifiers” (tt)

 public: Những thành viên được khai báo với từ khoá public

có thể được sử dụng bởi bất kỳ lớp nào

 private: Thành viên trong một lớp A được khai báo với từ khoá là private thì chỉ được truy cập bởi các phương thức của lớp A

 protected: Thành viên trong lớp A được khai báo với từ

khoá là protected thì chỉ được các phương thức bên trong lớp A và những phương thức dẫn xuất (derived) từ lớp A truy cập

Trang 12

3.1.3.Thành phần “access-modifiers”

 internal: Thành viên trong lớp A được khai báo với từ khoá là

internal thì được truy cập bởi những phương thức của bất

cứ lớp nào trong cùng khối hợp ngữ (assembly) với A

 protected internal: Thành viên trong lớp A được khai báo với

từ khoá là protected internal thì được truy cập bởi các

phương thức của lớp A, các phương thức của lớp dẫn xuất của A, và bất cứ lớp nào trong cùng khối hợp ngữ của A

Trang 14

3.1.4 Đối số của phương thức

 Khi định nghĩa một phương thức, thông thường phải khai

báo các đối số (hay tham số) cho các phương thức đó

 Số lượng của đối số trong một phương thức có thể tuỳ ý

Trang 15

3.1.4 Đối số của phương thức (tt)

 Phương thức:

 Khai báo một phương thức có đối số:

 Khai báo kiểu trả về của phương thức

 Tên của phương thức

 Sau phần tên của phương thức là danh sách các đối số được đặt trong cặp dấu ngoặc đơn Đứng trước mỗi đối số là kiểu dữ liệu của đối số đó

Trang 16

3.1.4 Đối số của phương thức (tt)

int howManyPeople = 5; float pi = 3.14f;

MyClass mc = new MyClass( );

mc.SomeMethod(howManyPeople, pi);

}

}

Trang 17

3.2 Đối tượng (object)

 Đối tượng là một thể hiện của lớp, nó là một kiểu dữ liệu

tham chiếu và được tạo ở trong bộ nhớ heap

 Để tạo một đối tượng ta sử dụng từ khoá new

 Ví dụ: Tạo một đối tượng của lớp Time()

Time t = new Time( );

Trang 18

3.3 Bộ tạo (Constructors)

 Bộ tạo (hàm tạo) là một

phương thức của lớp

 Chức năng của hàm

tạo là tạo ra một đối

tượng đặc biệt của lớp

và hàm tạo có tên trùng

với tên của lớp chứa nó

 Hàm tạo không có kiểu

System.Console.WriteLine(“{0}/{1}/{2} {3}:{4}:{5}”, Month, Date, Year, Hour, Minute, Second);

} public Time(System.DateTime dt) {

int Year; int Month;

int Date; int Hour;

int Minute; int Second;

} public class Tester {

static void Main( ) {

System.DateTime currentTime = System.DateTime.Now; Time t = new Time(currentTime);

t.DisplayCurrentTime( );

} }

Trang 19

int Year; int Month;

int Date; int Hour;

int Minute; int Second;

Trang 20

3.4 Các bộ khởi tạo (Initializers)

 Có thể khởi tạo các giá trị ban đầu cho các biến thành viên

thông qua bộ khởi tạo

 Để thực hiện việc khởi tạo, chúng ta chỉ cần gán giá trị ban

đầu cho các thành viên của lớp thông qua lệnh gán

 Ví dụ:

private int Second = 30; // Bộ khởi tạo

Trang 21

3.5 Bộ tạo sao chép

 Bộ tạo (hàm tạo) sao chép thực hiện việc tạo một đối tượng

mới bằng cách sao chép tất cả các biến từ một đối tượng cùng kiểu đã có

public Time(Time existingTimeObject)

Trang 22

3.6 Từ khoá this

 Mỗi phương thức có thể tham chiếu đến những phương

thức và các biến thành viên khác của đối tượng đó (không

có thuộc tính static) thông qua tham chiếu this

Trang 24

3.7 Sử dụng các thành viên tĩnh (static)

 Những thuộc tính và phương thức trong một lớp có thể

là những thành viên thể hiện (instance members) hay những thành viên tĩnh (static members)

 Những thành viên thể hiện là sự kết hợp các thể hiện của một kiểu dữ liệu

 Những thành viên tĩnh được xem như một phần của

lớp Chúng ta có thể truy cập đến thành viên tĩnh của một lớp thông qua tên lớp đã được khai báo

Trang 25

3.7 Sử dụng các thành viên tĩnh (static)

Ví dụ:

- Giả sử rằng có một lớp tên Button

- Trong đó có hai thành viên (đối tượng) thể hiện là

Chứ không được viết: btnUpdate.SomeMethod();

Hay viết: btnDelete.SomeMethod();

Trang 26

3.7.1 Gọi một phương thức tĩnh

 Phương thức tĩnh không thể truy cập trực tiếp đến các

thành viên không có tính chất tĩnh (nonstatic)

 Chẳng hạn, phương thức Main() là một phương thức tĩnh

Do đó Main() không thể gọi một phương thức không tĩnh bên trong lớp

Trang 28

3.7.2 Sử dụng bộ tạo tĩnh

 Nếu một lớp khai báo một bộ tạo tĩnh (static constructor), thì

chắc chắn rằng phương thức khởi tạo tĩnh này sẽ được

thực hiện trước bất cứ thể hiện nào của lớp được tạo ra

Trang 29

- Cuối cùng thêm vào dòng lệnh DisplayCurrentTime(), như sau:

public void DisplayCurrentTime( )

Trang 30

3.7.2 Sử dụng bộ tạo tĩnh (tt)

 Mặc dù chương trình thực hiện tốt, nhưng không cần thiết

phải tạo ra bộ khởi dựng tĩnh để phục vụ cho mục đích này Thay vào đó ta có thể dùng chức năng khởi tạo biến thành viên như sau:

private static string Name = “Time”;

 Tuy nhiên, bộ khởi tạo tĩnh có hữu dụng khi chúng ta cần

cài đặt một số công việc mà không thể thực hiện được

thông qua chức năng khởi dựng và công việc cài đặt này chỉ được thực hiện duy nhất một lần

Trang 31

instances++;

} public static void HowManyCats( ) {

Console.WriteLine(“{0} cats adopted”, instances);

} private static int instances = 0;

} public class Tester {

static void Main( ) {

Trang 32

3.7.4 Sử dụng bộ tạo riêng tư (Private)

 C# không có phương thức toàn cục và hằng số toàn cục

Do vậy cần phải tạo ra những lớp tiện ích nhỏ chỉ để chứa các phương thức tĩnh Để tạo một lớp tiện ích như vậy thì cần phải tạo ra bộ tạo không có tham số và không làm gì

cả, tức là bên trong thân của phương thức là rỗng, và

thêm vào đó phương thức này phải được khai báo với từ khoá là private

Trang 33

3.8 Hủy đối tượng

 Phương thức hủy nhằm mục đích giải phóng các tài nguyên

 C# cung cấp một phương thức ngầm định để thực hiện điều

khiển công việc này, đó là Finalize() hay còn gọi là bộ kết thúc

Trang 34

3.8.1 Bộ huỷ của C# (Destructor )

 Để khai báo một bộ huỷ trong C# thường sử dụng cú pháp

finally { base.Finalize( );

} }

Tên

lớp

bị

huỷ

Trang 35

3.8.2 Phương thức Dispose

 Nếu muốn xử lý các tài nguyên không kiểm soát và muốn

được đóng hay giải phóng các tài nguyên thì cần phải thực thi giao diện IDisposable

 Giao diện IDisposable yêu cầu những thành phần thực thi

của nó định nghĩa một phương thức tên là Dispose() để thực

hiện công việc dọn dẹp được yêu cầu

 Ý nghĩa của phương thức Dispose() là cho phép chương

trình thực hiện các công việc dọn dẹp hay giải phóng tài

nguyên mong muốn mà không phải chờ cho đến khi phương thức Finalize() được gọi

Trang 36

3.8.2 Phương thức Dispose (tt)

class Testing : IDisposable

{

bool is_disposed = false;

protected virtual void Dispose(bool disposing)

Trang 37

3.8.3 Phương thức Close

 Khi xây dựng các đối tượng, có thể sử dụng phương thức

Close(), vì phương thức Close() có vẻ tự nhiên hơn phương thức Dispose() trong trường hợp các đối tượng có liên quan đến xử lý tập tin

 Có thể xây dựng phương thức Dispose() với thuộc tính là

private và phương thức Close() với thuộc tính public Trong phương thức Close() đơn giản là gọi thực hiện phương

thức Dispose()

Trang 38

3.8.4 Câu lệnh using

 Khi xây dựng các đối tượng, chúng ta không thể chắc chắn rằng người sử dụng gọi phương thức Dispose() hay không, cũng không kiểm soát được lúc nào thì bộ thu gom (garbage collector) thực hiện việc dọn dẹp

 Do đó để cung cấp khả năng mạnh hơn để kiểm soát việc

giải phóng tài nguyên thì C# đưa ra cú pháp chỉ dẫn using,

cú pháp này đảm bảo phương thức Dispose() sẽ được gọi sớm nhất nếu có thể được

Trang 39

3.8.4 Câu lệnh using (tt)

 Sử dụng:

 Đầu tiên khai báo các đối tượng với cú pháp using

 Sau đó tạo một phạm vi hoạt động cho các đối tượng

này trong khối được bao bởi dấu ({})

 Khi khối phạm vi này kết thúc, thì phương thức

Dispose() của đối tượng sẽ được gọi một cách tự động

Trang 40

} //trình biên dịch gọi Dispose trên theFont

Font anotherFont = new Font(“Courier”,12.0f);

Trang 41

3.9 Truyền tham số

 Truyền tham chiếu

 Truyền tham chiếu với biến chưa khởi tạo

Trang 42

3.9.1 Truyền tham chiếu

 Những phương thức có thể trả về một giá trị hoặc tập

hợp các giá trị Nếu muốn phương thức trả về nhiều hơn một giá trị thì ta tạo các tham số dưới hình thức tham

chiếu

Trang 43

3.9.1 Truyền tham chiếu

public class Time

{

public void DisplayCurrentTime( )

{ System.Console.WriteLine(“{0}/

{1}/{2} {3}:{4}:{5}”, Month, Date, Year,

Hour, Minute, Second);

private int Month;

private int Date;

private int Hour;

private int Minute;

private int Second;

}

Trang 44

3.9.1 Truyền tham chiếu

public class Tester

}

}

Trang 45

3.9.2 Truyền tham chiếu với biến chưa khởi tạo

 Ngôn ngữ C# bắt buộc phải thực hiện một phép gán cho

biến trước khi sử dụng

 Để mở rộng trong trường hợp này ngôn ngữ C# cung cấp

thêm một bổ sung tham chiếu là out

 Khi sử dụng tham chiếu out thì yêu cầu bắt buộc phải khởi

tạo các tham số tham chiếu được bỏ qua

Trang 46

3.10 Nạp chồng phương thức

 Khi xây dựng các lớp, thường mong muốn là tạo ra nhiều

phương thức có cùng tên, nhưng thực hiện các chức năng khác nhau

 “tham số khác nhau”: khác nhau về mặt số lượng hay về

kiểu dữ liệu của các tham số đó Khi sử dụng một phương thức nào đó, dựa vào danh sách các tham số mà chương trình sẽ thực hiện với những chức năng riêng cho phù hợp

Trang 48

3.11 Đóng gói dữ liệu với đặc tính thuộc tính

 Thuộc tính cung cấp khả năng bảo vệ

các trường dữ liệu bên trong một lớp

 Mục đích của thuộc tính nhằm cung

cấp một giao diện đơn giản cho phép

truy cập các biến thành viên, nhưng

che dấu dữ liệu

 Để khai báo một thuộc tính, viết kiểu

và tên thuộc tính, theo sau là cặp dấu

móc đơn {} Bên trong cặp dấu móc

đơn khai báo toán tử truy cập get và

set

public int Hour {

get { return hour;

} set { hour = value;

} }

Trang 49

3.12 Các trường chỉ đọc

dụng các từ khóa readonly

public static readonly int Year;

public static readonly int Month;

Ngày đăng: 25/07/2014, 19:16

TỪ KHÓA LIÊN QUAN