Thứ Hai, 9 tháng 3, 2009

C# căn bản _ phần II

Trong bài này chúng ta tiếp tục tìm hiểu các vấn đề căn bản của ngôn ngữ C# :

* · Khai báo biến hệ thống kiểu dữ liệu trong C#.
* · Cú pháp lệnh và các khái niệm trong C#.



Khái niệm interface :

Interface cung cấp giải pháp thuận tiện cho việc phát triển các thành phần cơ sở. Interface cung cấp những thỏa thuận chung cho phép các thành phần làm việc với nhau.

Interface chứa các khai báo của các members hay methods, sử dụng từ khóa public. Các method trong interface chỉ là các khai báo, có thể nói đơn giản đó như là chỉ thị buộc những class hay struct cài đặt interface phải cài đặt các method này. Các class hay struct có thể cài đặt nhiều interface, khi đã cài đặt interface bắt buộc phải cài đặt đầy đủ các member và method được khai báo trong interface.

Cấu trúc : interface [tên interface]

{

//code

}

Ví dụ :

//Khai bao interface

public interface IPlayerManager

{

public void PlayMusic();

public void PauseMusic();

public void Stop();

}

//Class cài đặt interface

public class Player : IPlayerManager

{

public void PlayMusic()

{

//code

}

public void PauseMusic()

{

//code

}

public void Stop()

{

//code

}

}

Trên đây là ví dụ về cài đặt 1 interface cho class, nếu bạn sử dụng nhiều interface thì cách làm không có gì khác biệt, khi ấy mỗi interface được cài đặt sẽ được viết cạnh nhau và chác nhau bằng dấu “ , ”. Tuy nhiên, vấn đề đạt ra là nếu trong các interface được cài đặt vào class lại có những method trùng tên nhau thì sao !? Vấn đề này được giải quyết như sau :

Cũng đoạn code trên nhưng ta sẽ viết tường minh cả tên Interface chưa method như sau :

public class Player : IplayerManager1 , IplayerManager2

{

// cài đặt method PlayMusic() trong interface IplayerManager1

public void IplayerManager1.PlayMusic()

{

//code

}

// cài đặt method PlayMusic() trong interface IplayerManager2

public void IplayerManager2.PlayMusic()

{

//code

}

public void PauseMusic()

{

//code

}

public void Stop()

{

//code

}

}

Kế thừa trong C# :

Kế thừa là khái niệm then chốt trong lập trình hướng đối tượng, Kế thừa cho phép các method, thuộc tính được dùng chung trong các lớp cơ sở (base class) và các lớp chỉ định được sử dụng chúng cũng như mở rộng các chức năng ấy tùy thuộc từng yêu cầu trong từng lớp xẫn xuất.

Ví dụ : hình chữ nhật, hình tam giác … đều là những hình khối cơ bản và có đặc điểm chung như chiều dài, rộng, có diện tích, chu vi …. Điều này trong lập trình cho phép ta khái quát hóa chúng thành một lớp cơ sở. hcn, tam giác … sẽ là những lớp kế thừa từ lớp cơ sở này và có đầy đủ tính chất của lớp co sở, nhưng bản thân chúng cũng có những sự khác biệt, và chúng ta hoàn toàn có thể mở rộng.

// lớp cơ sở

class Shape

{

public int ChieuDai;

public int ChieuRong;

public void DienTich(int Dai,int Rong)

{

}

}

class HinhChuNhat : Shape

{

//Contructor

public HinhChuNhat()

{

ChieuDai = 0;

ChieuRong = 0;

}

public new void DienTich(int Dai,int Rong)

{

Console.WriteLine(“Diện tích là : {0}”,Dai*Rong);

}

}

class HinhVuong : Shape

{

//Contructor

public HinhVuong()

{

}

public new void DienTich(int Canh1,int Canh2)

{

int iDienTich = Canh1*Canh2;

Console.WriteLine(“Diện tích là : {0}” , iDienTich);

}

}



Tính đa hình

Như trên ta đã nói, lớp dẫn xuất có khả năng ghi đè phương thức của lớp cớ sở (hay nói cách khác là cài đặt lại) và cung cấp thể hiện khác ở lớp dẫn xuất, đây chính là hình thức cơ bản của khái niệm đa hình.

C# cung cấp từ khóa virtual để chỉ rõ phương thức có thể bị lớp dẫn xuất ghi đè (overridden). Lớp dẫn xuất có thể ghi đè phương thức virtual bằng cách sử dụng từ khóa override.

Code demo :

class TongDai()

{

public virtual void ChuongGoiDien() { … }

}

class DienThoaiCoDinh() : TongDai

{

public override void ChuongGoiDien() { … }

}

class DienThoaiDiDong() : TongDai

{

public override void ChuongGoiDien() { … }

}

Không có nhận xét nào: