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

Tài liệu Bài 4: Xây dựng lớp - đối tượng ppt

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 (192.29 KB, 21 trang )

Bài 4. Xây dựng lớp – Đối
tượng
Mục tiêu của bài:
Nhằm trang bị cho người học:
Kiến thức và kỹ năng tạo lớp, tạo đối tượng.
Kiến thức và kỹ năng về các phương thức, các thành phần static.
Kiến thức và kỹ năng về tham số và các phương thức nạp chồng.
Kiến thức và kỹ năng về thuộc tính.


1. Lớp và đối tượng
1.1 Lớp (Class)
Lớp hay còn gọi là class là sự gói gọn các dữ liệu và các
phương thức (method) họat động trên dữ liệu đó.Trong C# ,
lớp được xem là kiểu dữ liệu tham chiếu (reference) . Khai báo
một lớp bằng cách sử dụng từ khoá class. Cú pháp đầy đủ của
khai báo một lớp như sau:
[Thuộc tính] [Bổ sung truy cập] class <Định danh lớp>
[: Lớp cơ sở]
{

phương thức hành động >
}


1. Lớp và đối tượng

+ Thuộc tính
- public :Khơng hạn chế. Những thành viên được đánh dấu public có
thể được dùng bởi bất kì các phương thức của ớp bao gồm những lớp khác.


- private : Thành viên trong một lớp A được đánh dấu 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 đánh dấu 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 từ lớp
A truy cập.
- internal : Thành viên trong lớp A được đánh dấu 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ữ
với A.
- protected internal : Thành viên trong lớp A được đánh dấu là
protected internal đượ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.
+ Bổ sung truy cập : partial cho phép triển khai nhiều class tên giống nhau trên
các file khác nhau.Sau đó có thể kết hợp trong khơng gian tên (namespace) hoặc
sử dụng Assembly.
+ Hàm khởi tạo (Contructor)
Hàm khởi tạo là một phương thức của lớp và được gọi thực hiện khi


1. Lớp và đối tượng

Ví dụ hàm khởi tạo
public class mySampleClass
{
public mySampleClass()
{
// This is the no parameter constructor method.
// First Constructor
}
public mySampleClass(int Age)

{
// This is the constructor with one parameter.
// Second Constructor
}
public mySampleClass(int Age, string Name)
{
// This is the constructor with two parameters.
// Third Constructor
}
}


1. Lớp và đối tượng
1.2 Đối tượng (Obiect)
Còn đối tượng là những đại diện cho lớp, mọi đối tượng đều có
chung tính chất và hành vi mà lớp định nghĩa.
Khai báo đối tượng : ClsCommon cm = new ClsCommon();


1. Lớp và đối tượng

namespace ConsoleApplication2
{
class ClsCommon
{
----------------------------------------------------------------int i = 10;
Kết quả : Gia tri tra ve :30
int j = 20;
public int sum()
----------------------------------------------------------------{

return i + j;
}
}
}
namespace ConsoleApplication2
{
public class UseClass
{
static void Main()
{
//Tao doi tuong
ClsCommon cm = new ClsCommon();
Console.WriteLine("Gia tri tra ve :{0}", cm.sum());
}


2. Sử dụng các thành viên static
Trong Class có thể có phương thức và thuộc tính là static hoặc
khơng , nếu khai báo phương thức có từ khóa static thì bạn có
thể truy cập trực tiếp phương thức mà khơng cần khởi tạo
đối tượng chứa nó .
Ví dụ sử dụng static.


2. Sử dụng các thành viên static
namespace ConsoleApplication2
{
class ClsA
{
static int i = 10;

static int j = 20;
public static int Total()
{
return i + j;
}
public static int Sum()
{
int a = 30;
int b = 40;
return a + b;
}
}


2. Sử dụng các thành viên static
namespace ConsoleApplication2
{
public class UseClass
{
static void Main()
{
Console.WriteLine("Gia tri tra ve Total :{0}", ClsA.Total());
Console.WriteLine("Gia tri tra ve Sum :{0}", ClsA.Sum());
}
}
}
-------------------------------------------------------------------------Kết qua : Gia tri tra ve Total : 30
Gia tri tra ve Total : 70
-----------------------------------------------------------------------------------------



3. Hủy đối tượng
3.1 Phương thức Finalize
Ngôn ngữ C# cung cấp cơ chế thu dọn (garbage
collection) và do vậy không cần phải khai báo tường minh các
phương thức hủy. Tuy nhiên, khi làm việc với các đoạn mã
không được quản lý thì cần phải khai báo tường minh các
phương thức hủy để giải phóng các tài nguyên.C# cung cấp
ngần định một phương thức để thực hiện điều khiển công
việc này, phương thức đó là Finalize() hay cịn gọi là bộ kết
thúc. Phương thức Finalize này sẽ được gọi bởi cơ chế thu
dọn khi đối tượng bị hủy.
Phương thức kết thúc chỉ giải phóng các tài nguyên mà
đối tượng nắm giữ, và không tham chiếu đến các đối tượng
khác. Nếu với những đoạn mã bình thường tức là chứa các
tham chiếu kiểm sốt được thì khơng cần thiết phải tạo và
thực thi phương thức Finalize(). Chúng ta chỉ làm điều này khi
xử lý các tài ngun khơng kiểm sốt được.


3. Hủy đối tượng
Cú pháp phương thức hủy trong ngôn ngữ C#
~Class1()
~Class1()
{
// Thực hiện một số công việc
}
Cũng tương tự như viết :
Class1.Finalize()
{

// Thực hiện một số công việc
base.Finalize();
}


4. Truyền tham số và nạp chồng
phương thức
4.1 Truyền tham số
4.1.1 Truyền tham trị
4.1.2 Truyền tham chiếu
.2 Nạp chồng phương thức(Overloading)


4.1.2 Truyền tham chiếu

Khi mơt đối tượng có kiểu giá trị được truyền giá trị vào cho một phương th ức thì có m ột b ản sao
chép đối tượng đó được tạo ra bên trong phương thức. Khi phương thức thực hiện xong thì đ ối
tượng sao chép này sẽ được hủy.
Ví dụ truyền tham trị
public class ThamTri
{
static void Main()
{
Console.Write("Nhap so thu nhat : ");
int a = int.Parse(Console.ReadLine());
Console.Write("Nhap so thu hai : ");
int b = int.Parse(Console.ReadLine());
Console.Write("Ket qua a + b = {0}",Sum(a,b));
Console.ReadLine();
}

static int Sum(int a, int b)
{
return a + b;
}
}


4.1.1 Truyền tham trị
Truyền tham chiếu, trong phương thức sẽ xử lý và gán các giá trị mới cho các tham chiếu
này và kết quả là sau khi phương thức thực hiện xong ta dùng các tham số truyền vào như
là các kết quả trả về
+ Truyền tham chiếu khởi tạo
public class ThamChieuref
{
static void Method(ref string s)
{
s = "changed";
}
static void Main()
{
string str = "original";
Method(ref str);
Console.WriteLine(str);
}
}


4.1.1 Truyền tham trị
+ Truyền tham chiếu không khởi tạo
public class ThamChieuref

{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = "I've been returned";
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
}
}


4.1.1 Truyền tham trị
Dùng tham chiếu out hay ref ?
public class ThamChieu
{
static void swap(? int a,? int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
static void Main()
{
int x = 3, y = 4;

Console.Write("Truoc khi goi ham swap()\n");
Console.Write("x = {0}, y = {1}\n", x, y);
swap(? x,? y);
Console.Write("Sau Khi goi ham swap()\n");
Console.Write("x = {0}, y = {1}\n", x, y);
}


4.2 Nạp chồng phương
thức(Overloading)
Nạp chồng phương thức xây dựng nhiều các phương thức cùng tên nhưng nhận các tham s ố khác
nhau.
namespace ConsoleApplication2
{
class ClsA
{
public int Total(int a,int b)
{
return a + b;
}
public int Total(int a,int b,int c)
{
return a + b + c;
}
}
}


4.2 Nạp chồng phương
thức(Overloading)

namespace ConsoleApplication2
{
public class NapChong
{
static void Main()
{
int a = 5, b = 6, c = 7;
ClsA A = new ClsA();
Console.Write("Tong a + b = {0}\n",A.Total(a,b));
Console.Write("Tong a + b + c = {0}\n", A.Total(a, b,c));
}
}
}


5. Đóng gói dữ liệu với thuộc tính
Đặc tính này cung cấp khả năng bảo vệ các trường dữ liệu bên trong
một lớp bằng việc đọc và viết chúng thông qua thuộc tính. Trong ngơn
ngữ khác, điều này có thể được thực hiện thông qua việc tạo các
phương thức lấy dữ liệu (getter method) và phương thức thiết lập dữ
liệu (setter method).
5.1 Thuộc tính đọc và ghi
5.2 Thuộc tính chỉ đọc
5.3 Thuộc tính chỉ ghi


5.1 Thuộc tính đọc và ghi

public int PropertyName
{

get { return iValue; }
set { iValue = value; }
}

Ví dụ về thuộc tính đọc và ghi
class ClsPeople
{
//Khai bao bien cuc bo
private string sName;
private string sAddress;
private int iAge;
//Khai bao thuoc tinh Name
public string Name
{
get { return sName;}
set {sName = value;}
}

//Khai bao thuoc tinh Address
public string Address
{
get { return sAddress; }
set { sAddress = value; }
}
//Khai bao thuoc tinh Age
public int Age
{
get { return iAge; }
set {
if (value > 100)

iAge = 100;
else if (value < 0)
value = 20;
else
iAge = value;
}
}
}


5.1 Thuộc tính đọc và ghi

public class ThuocTinhDocGhi
{
static void Main()
{
ClsPeople P = new ClsPeople();
Console.Write("Name :");
P.Name = Console.ReadLine();
Console.Write("Address :");
P.Address = Console.ReadLine();
Console.Write("Age :");
P.Age = int.Parse(Console.ReadLine());
Console.Write("Ban da nhap \n Ten : {0} \n Dia Chi : {1} \n Tuoi : {2}
\n",P.Name,P.Address,P.Age);
}
}




×