1. Trang chủ
  2. » Thể loại khác

...C04. Class and Object.pdf

24 86 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 24
Dung lượng 576,84 KB

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

Nội dung

public class MyClass{ public void SomeMethodint firstParam, float secondParam{ C onsole.W riteL ine“C ác tham số nhận đư ợ c:{0},{1}”,... T ạo các đối tư ợ ngC ác kiểu dữ liệu có sẳn của

Trang 1

N gôn ngữ C #

T rần V ăn T èo tvteo@agu.edu.vn

Trang 2

C hư ơ ng 2: L ớ p và Đ ối tư ợ ng

n Đ ịnh nghĩa lớ p.

n T ạo các đối tư ợ ng.

n S ử dụng các thành viên static.

n H uỷ các đối tư ợ ng (destructor).

n T ruyền thông số cho hàm

n N ạp chồng (overload) và constructor.

n C ác thuộc tính (property).

n C ác vùng m ục tin read C ác vùng m ục tin read only only.

n C uộc sống bên trong các đối tư ợ ng.

Trang 3

1 Đ ịnh nghĩa lớ p

n Cú pháp:

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

[class-body]

n identifier: tên class

n basebase class: lớ p cơ sở đ ư ợ c class: lớ p cơ sở đư ợ c

kế thừ a

n classclass b o d y : th ân củ a lớ p , body: thân của lớ p,

nằm trong dấu ngoặc

nhọn {}, các thành viên

đư ợ c định nghĩa trong

đây

Trang 4

static void Main() {

CDate d = new CDate();

d.CurDate();

}

Trang 5

T ừ khoá chỉ dẫn truy xuất

n public : có thể truy cập từ bên ngoài.

n private: chỉ truy cập bên trong.

n protected: bên trong và thêm các lớ p kế thừ a.

n Ngoài ra còn enternal và protected internal

Trang 6

C ác tham số của hàm

n C ác hàm có nhiều tham số cũng đư ợ c

n T rong thân hàm , các tham số hoạt động như các biến cục bộ

public class MyClass{

public void SomeMethod(int firstParam, float secondParam){

C onsole.W riteL ine(“C ác tham số nhận đư ợ c:{0},{1}”,

Trang 7

2 T ạo các đối tư ợ ng

C ác kiểu dữ liệu có sẳn của C # (int, long… ) thuộc kiểu trị (value type) nên đư ợ c lư u trong bộ nhớ của stack.C òn nhữ ng đối tư ợ ng thì thuộc kiểu qui chiếu (reference type) nên đư ợ c lư u trong bộ nhớ của heap

và để sử dụng chúng phải dùng từ khóa

và để sử dụng chúng phải dùng từ khóa new new

V í dụ: C D ate d = new C D ate();

Trang 8

H àm khở i dự ng (constructor)

n Đ ư ợ c triệu gọi bất cứ lúc nào bạn cho thể hiện m ột

đối tư ợ ng.

n C onstructor phải đư ợ c định nghĩa

•• H oặc định nghĩa theo ý bạn.H oặc định nghĩa theo ý bạn

•• H oặc trình biên dịch sẽ tự định nghĩa và đối tư ợ ng đư ợ c tạo H oặc trình biên dịch sẽ tự định nghĩa và đối tư ợ ng đư ợ c tạo

ra không làm gì cả, các biến thành viên sẽ đư ợ c khở i gán

m ặc định: số nguyên

m ặc định: số nguyên  zero, chuổi zero, chuổi  rổng, bool rổng, bool  false.false

n M ột hàm constructor:

•• C ó tên cùng tên lớ p.C ó tên cùng tên lớ p

•• K hông có trị trả về, có các tham số ( nếu cần )K hông có trị trả về, có các tham số ( nếu cần )

•• T hư ờ ng có m odifier là public.T hư ờ ng có m odifier là public

Trang 9

dt DisplayCurDate();

} }

Trang 10

n N ếu trong constructor có

khở i gán lại các biến này

Trang 11

this Year = d.Year;

this Month = d.Month;

this Day = d.Day;

} }

… … … CDate ddd = new CDate( dd );

Trang 12

•• L à thông số cho m ột hàm L à thông số cho m ột hàm

•• D ùng trong indexer để xác D ùng trong indexer để xác

định m ột phần tử trong

m ảng (trình bày chư ơ ng

sau)

private int hour;//thành viên

public void SomeMethod

(int hour){

this.hour = hour;

}

public void FirstMethod

(OtherClass otherObj){

otherObj.SomeMethod( this );}

Trang 13

S ử dụng các thành viên static

n C ác thuộc tính hoặc các hàm của m ột lớ p hoặc là C ác thuộc tính hoặc các hàm của m ột lớ p hoặc là instance instance

member

member hoặc là hoặc là static member static member

•• Instance m em ber đư ợ c gắn liền vớ i các kiểu dữ liệu Instance m em ber đư ợ c gắn liền vớ i các kiểu dữ liệu

•• S tatic m em ber đư ợ c xem là thành phần của lớ p S tatic m em ber đư ợ c xem là thành phần của lớ p

•• T ruy xuất đến static m em ber thì không cần phải khai báo lớ p T ruy xuất đến static m em ber thì không cần phải khai báo lớ p.

thay vì viết: B utton btn = new B utton(); btn.S om eM ethod();

n C # không có hàm (biến) toàn cục (global), thay vào đó là hàm (biến) static

n T riệu gọi các hàm T riệu gọi các hàm static static

n S ử dụng hàm S ử dụng hàm static constructor static constructor

n S ử dụng S ử dụng private constructor private constructor.

n S ử dụng các m ục tin (field) static

Trang 14

T riệu gọi các hàm static

n Hàm Hàm static static không có qui không có qui

chiếu

chiếu this this vì nó không vì nó không

có m ột thể hiện

((instance instance) nào. ) nào.

n Các hàm Các hàm static static không không

thể trự c tiếp truy xuất

public class Tester

{ static void Main() {

MyClass mc = new MyClass(); mc.SomeMethod();

}

Trang 15

S ử dụng hàm static constructor

n Đ ư ợ c triệu gọi trư ớ c

khi bất cứ thể hiện nào

của lớ p đư ợ c tạo ra.

N am e = “N am e”;

}}

Trang 16

S ử dụng

n T rong C # không có hàm (hằng) toàn cục (global) D o đó ta có thể tạo m ột lớ p tiện ích chứ a các thành viên static

n Đ ể ngăn ngừ a việc tạo bất kỳ thể hiện nào Đ ể ngăn ngừ a việc tạo bất kỳ thể hiện nào  tạo m ột tạo m ột

constructor không tham số và khai báo

constructor không tham số và khai báo private private Vì không có Vì không có constructor public, nên không thể tạo m ột thể hiện nào trên lớ p

public class MyConstant{

public static byte MaxQuality = 50;

public static byte MaxAge = 25;

public static byte MinAge = 16;

private MyConstant(){}

}

Trang 17

H uỷ các đối tư ợ ng

C # cung cấp dịch vụ thu gom rác gọi là “garbage collection”, viết tắt là G C

n Destructor

n Finalize

Trang 18

T rao tham số cho hàm

n M ặc định tham số truyền vào là tham trị.

n T ừ khoá T ừ khoá ref ref cho biết biến truyền vào kiểu cho biết biến truyền vào kiểu

tham chiếu.

n T ừ khoá T ừ khoá out out vớ i trư ờ ng hợ p m ột biến ref chư a vớ i trư ờ ng hợ p m ột biến ref chư a khở i gán giá trị ban đầu.

n T ừ khoá T ừ khoá params params cho phép m ột hàm chấp nhận cho phép m ột hàm chấp nhận

m ột số lư ợ ng tham số không cố định.

Trang 19

int Year=2006, Month=3, Day=26;

public void ValueDate

( int y, int m, int d) {

y = Year;m = Month; d = Day;

}

public void RefDate

( ref int y, ref int m, ref int d) {

y = Year; m = Month; d = Day;

dt ValueDate( Y , M , D ); // Year = ? , Month = ? , Day = ?

dt ValueDate( ref Y, ref M, ref

D );

} }

Trang 20

T rao tham số out

using System;

public class CDate

{

int Year=2006, Month=3, Day=26;

public void SetDate

( int y, out int m, ref int d) {

y = Year; m = Month; d = Day;

int Y = 2006; // tham tri

int M; // khong khoi gan

int D = 1; // tham chieu

CDate dt = new CDate( );

dt SetDate(Y, out M, ref D );

} }

Trang 21

public CDate( int y, int m, int d ){

… … … }

public CDate( CDate dt ){

… … … }

}

Trang 22

n P hần lớ n các F ield thư ờ ng m ang

tính private D o đó ngư ờ i ta đư a

ra các P roperty dư ớ i dạng các

hàm để truy xuất các F ield này

n M ục tiêu:

•• C ung cấp m ột giao diện đơ n C ung cấp m ột giao diện đơ n

giản cho ngư ờ i dùng

•• C he giấu đư ợ c các thông tin.C he giấu đư ợ c các thông tin

public class CDate{

private int Year, Month, Day;

public int Year{

get { return Year; }

set { Year = value ; } }

public int Month{

get { return Month; }

set { Month = value ; } }

public int Day{

get { return Day; }

set { Day = value ; } }

Trang 23

public static int Year;

public static int Month;

public static int Day;

}

public readonly static int Year;

public readonly static int Month;

public readonly static int Day;

Trang 24

Q & A

Ngày đăng: 05/11/2017, 03:38

w