Tải bản đầy đủ (.ppt) (49 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (435.17 KB, 49 trang )


Ngôn ngữ lập trình C#
CHƯƠNG 3. LỚP - ĐỐI TƯỢNG
Lớp (class) 1
Đối tượng (object) 2
Bộ tạo (Constructors)
3
Các bộ khởi tạo (Initializers)4
Bộ tạo sao chép (Copy Contructors) 5
Từ khoá this
6
Sử dụng các thành viên tĩnh (static)
7
CHƯƠNG 3. LỚP - ĐỐI TƯỢNG (tt)
Hủy đối tượng 8
Truyền tham số (Passing Parameters)
9
Nạp chồng phương thức10
Đóng gói dữ liệu với đặc tính thuộc tính
11
Các trường chỉ đọc12
Câu hỏi, bài tập, bài thực hành
13
3.1. Lớp (class)

Khái niệm về lớp

Định nghĩa lớp

Thành phần “access-modifiers” trong cú pháp
định nghĩa lớp



Đối số của phương thức
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

Các đặc tính của lớp:

Thuộc tính

Hành vi

Ví dụ: Lớp Mèo:

Có thuộc tính: trọng lượng, có chiều cao, màu mắt, màu
lông

Hành vi: ăn, ngủ, leo trèo…
3.1.1. Khái niệm về lớp (tt)

Để sử dụng lớp, trước hết chúng
ta phải tạo ra một lớp (định nghĩa
lớp)

Biến thành viên (trường) - Biểu diễn
thuộc tính

Phương thức thành viên - Biểu diễn
hành vi


Một lớp được tạo ra không chỉ có
dữ liệu mà còn có các chức năng
tương tác với dữ liệu đó
Class Meo
{
int TrongLuong;
int ChieuCao;
string MauMat;
string MauLong;
void An() { … }
void Ngu() {…}
void LeoTreo() {…}
}
3.1.2. Định nghĩa lớp

Để định nghĩa một lớp mới:

Khai báo lớp

Định nghĩa các phương thức

Định nghĩa các trường

Cú pháp khai báo lớp:
[attributes] [access-modifiers] class identifier [:base-class]
{class-body}
Khai
báo
lớp

Tên
lớp
Thân
lớp
3.1.2. Định nghĩa lớp (tt)

Ví dụ: Tạo một lớp
đơn giản về thời
gian
using System;
public class Time
{
int Year;
int Month;
int Date;
int Hour;
int Minute;
int Second;
public void DisplayCurrentTime( )
{
Console.WriteLine( “DisplayCurrentTime”);
}
}
public class Tester
{
static void Main( )
{
Time t = new Time( );
t.DisplayCurrentTime( );
}

}
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
3.1.3.Thành phần “access-modifiers” (tt)

Bao gồm:

public

private

protected

internal


protected internal
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
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
3.1.3.Thành phần “access-modifiers”

Private là thành phần mặc định

Các khai báo sau đây là tương đương:
int Year;

int Month;
int Date;
int Hour;
int Minute;
int Second;
private int Year;
private int Month;
private int Date;
private int Hour;
private int Minute;
private int Second;
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ỳ ý
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ố đó


Ví dụ:
void MyMethod (int firstParam, button secondParam)
{
//
}
ValueType NameMethod(ParameterList);
3.1.4. Đối số của phương thức (tt)
using System;
public class MyClass
{
public void SomeMethod(int firstParam, float secondParam)
{
Console.WriteLine( “Parameters received: {0}, {1}”, firstParam, secondParam);
}
}
public class Tester
{
static void Main( )
{
int howManyPeople = 5; float pi = 3.14f;
MyClass mc = new MyClass( );
mc.SomeMethod(howManyPeople, pi);
}
}
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( );
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
trả về giá trị và thường
khai báo với phương
thức truy cập là puplic
public class Time
{
public void DisplayCurrentTime( )
{
System.Console.WriteLine(“{0}/{1}/{2} {3}:{4}:{5}”,
Month, Date, Year, Hour, Minute, Second);
}
public Time(System.DateTime dt)
{
Year = dt.Year;
Month = dt.Month;

Date = dt.Day;
Hour = dt.Hour;
Minute = dt.Minute;
Second = dt.Second;
}
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( );
}
}
3.3 Bộ tạo (Constructors)
public class Time
{
public void DisplayCurrentTime( )
{
System.Console.WriteLine(“{0}/{1}/{2} {3}:{4}:{5}”,Month, Date, Year, Hour, Minute, Second);
}
int Year; int Month;
int Date; int Hour;
int Minute; int Second;
}
public class Tester

{
static void Main( )
{
Time t = new Time();
t.Year=2008; t.Month=10;
t.Date=05; t.Hour=5;
t.Minute=30; t.Second=30;
t.DisplayCurrentTime( );
}
}
Không sử dụng hàm tạo:
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
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)
{
Year = existingTimeObject.Year;
Month = existingTimeObject.Month;

Date = existingTimeObject.Date;
Hour = existingTimeObject.Hour;
Minute = existingTimeObject.Minute;
Second = existingTimeObject.Second;
}
Time t3 = new Time(t2);
Ví dụ: Sao chép:
T2: đối tượng Time đã tồn tại
T3: đối tượng mới tạo
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
3.6 Từ khoá this (tt)

Các cách sử dụng:

Cách 1: Sử dụng khi các biến thành viên bị che lấp bởi tham số đưa
vào:
public void SomeMethod(int hour)
{
this.hour = hour;
}

Cách 2: Sử dụng tham chiếu this để truyền đối tượng hiện hành vào
một tham số của một phương thức của đối tượng khác:
public void FirstMethod(OtherClass otherObject)
{
otherObject.SecondMethod(this);//Tham số là đối tượng đang thực hiện

}

Cách 3: Sử dụng tham chiếu this với mảng chỉ mục (indexer), phần
này sẽ được trình bày trong nội dung của mảng chỉ mục
Biến thành viên
Tham số truyền vào
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
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à
btnUpdate và btnDelete
- Và có một phương thức tĩnh (thành viên tĩnh) là
SomeMethod()
Khi đó, để truy cập đến phương thức tĩnh này ta có thể viết:
Button.SomeMethod();
Chứ không được viết: btnUpdate.SomeMethod();
Hay viết: btnDelete.SomeMethod();

×