Giao diện

¾Giao diện làmột dạng của lớp trừu tư u tượng

¾Chỉ cócác nguyên mẫu phương th u phương thức, thuộc

tính, chỉ mục, đư được khai báo trong giao diện.

¾Tất cảcác thành phần khai báo trong giao

diện mặc đ c định là public(nên không cótừ

khóa vềmức đ c độtruy cập trong khai báo các

thuộc tính vàphương th phương thức)

¾Khi một lớp kếthừa một giao diện ta nói rằng

lớp đ p đóthực thi (Implement) giao diện

pdf9 trang | Chuyên mục: Visual C++ | Chia sẻ: dkS00TYs | Lượt xem: 1962 | Lượt tải: 2download
Tóm tắt nội dung Giao diện, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com1
Giao diện (Giao tiếp)
1
Interface
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com2
Interface
¾Giao diện là một dạng của lớp trừu tượng
¾Chỉ có các nguyên mẫu phương thức, thuộc 
tính, chỉ mục, được khai báo trong giao diện.
¾Tất cả các thành phần khai báo trong giao 
diện mặc định là public (nên không có từ
khóa về mức độ truy cập trong khai báo các 
thuộc tính và phương thức)
¾Khi một lớp kế thừa một giao diện ta nói rằng 
lớp đó thực thi (Implement) giao diện 
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com3
Interface
¾Khi một lớp kế thừa một giao diện ta phải 
thực thi tất cả các phương thức, thuộc tính…
khai báo trong giao diện đó.
¾Trong C# chỉ có kế thừa đơn 
¾Muốn thực hiện đa kế thừa phải kế thừa 
thông qua Interface, nói các khác Một lớp chỉ
có thể kế thừa 1 lớp khác, đồng thời kế thừa 
nhiều giao diện (đây tạm gọi là đa kế thừa 
trong C#)
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com4
Interface
¾Cú pháp tạo giao diện: 
[MứcĐộTruyCập] Interface TênGiaoDiện [: GiaoDiệnCơ Sở]
{
/ / Nội dung giao diện
}
Trong đó:
[MứcĐộTruyCập] : thường là public;
[: GiaoDiệnCơ Sở] : danh sách các Interface khác mà nó kế
thừa, mỗi Interface các nhau bởi dấu phẩy (,)
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
VD: 
5
public interface IPlayerManager
{
public void PlayMusic();
public void PauseMusic();
public void Stop();
public int OnOff // thuộc tính của Interface
{
get ;
}
} 
// Error ?
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
VD: 
6
public interface IPlayerManager
{
void PlayMusic();
void PauseMusic();
void Stop();
int OnOff // thuộc tính của Interface
{
get ;
}
} 
// Error ?
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
VD: 
7
public class Player : IPlayerManager 
{ int _Switch;
public void PlayMusic()
{ Console.WriteLine(“Music is playing ”);
_Switch = 1 ;
}
public void PauseMusic()
{ Console.WriteLine(“Music is pause ”);
_Switch = 0 ;
} 
public void Stop()
{ Console.WriteLine(“Music is stopped ”);
_Switch = -1 ;
}
} // Error ?
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
VD: 
8
public class Player : IPlayerManager 
{ int _Switch;
public void PlayMusic()
{ Console.WriteLine(“Music is playing ”);
_Switch = 1 ;
}
public void PauseMusic()
{ Console.WriteLine(“Music is pause ”);
_Switch = 0 ;
} 
public void Stop()
{ Console.WriteLine(“Music is stop ”);
_Switch = -1 ;
}
public int OnOff
{
get { return _Switch ; }
}
}
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
VD: interface
1 - Creating an interface
2 - Interface Inheritance Demo
3 - Interfaces Inheriting Interfaces
4 - One interface can inherit another interface
5 - Inheritance from both class and interface
9
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
Hủy đối tượng (destructor)
¾ C# cũng hỗ trợ Destructor, nhưng chúng 
không được dùng thường xuyên như 
trong C++
¾Các đối tượng trong .NET và C# thì bị xoá
bởi bộ thu gom rác (garbage collection). 
¾Destrutor được gọi tự động khi một đối 
tượng bị huỷ.
¾Không nên thực thi Destructor nếu như 
lớp đó không thực sự cần đến nó.
10
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
Hủy đối tượng (destructor)
¾Nếu một object thực thi Destructor, thì nó
sẽ gọi bộ thu gom rác của đối tượng đó. 
¾Những object không có Destructor thì bị
xoá khỏi bộ nhớ trong một lần hoạt động 
của bộ thu gom rác rác (garbage collection)
¾Object có Destructor thì nó sẽ qua hai 
bước: lần đầu nó gọi Destructor mà không 
xoá đối tượng, lần thứ hai mới thực sự xoá 
đối tượng.
11
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
Ghi chú và cú pháp về destructor
¾Một lớp chỉ có 1 destructor.
¾Destructor không thể kế thừa hoặc là phương 
thức chồng (override)
¾Destructor không cần gọi mà chúng được gọi 
tự động
¾Cú pháp khai báo Destructor không có tham số
¾Cú pháp
~TênLớp()
{
// Thực hiện công việc dọn dẹp
}
12
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
Constructor vs Destructor
¾Số lượng phương thức?
¾Kế thừa ?
¾Cú pháp ?
¾Gọi thực thi ?
¾Nếu các lớp có Kế thừa
‰Constructor của lớp cơ sở thực thi TRƯỚC 
Constructor lớp dẫn xuất, ngược lại
‰Destructor của lớp cơ sở thực thi SAU 
Destructor lớp dẫn xuất
13
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
VD: 
class LopA 
{ public LopA() { 
Console.WriteLine("Creating A"); 
} 
~LopA() 
{ 
Console.WriteLine("Destroying A"); 
} 
} 
class LopB : LopA 
{ 
public LopB() { 
Console.WriteLine("Creating B"); 
} 
~LopB() 
{ 
Console.WriteLine("Destroying B"); 
} 
} 
14
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
class LopC : LopB 
{ public LopC() { 
Console.WriteLine("Creating C"); 
} 
~LopC () 
{ 
Console.WriteLine("Destroying C"); 
} 
} 
class Program 
{ public static void Main() 
{ 
LopC c = new LopC(); 
Console.WriteLine("Object Created "); 
Console.WriteLine("Press enter to Destroy it"); 
Console.ReadLine(); 
c = null; 
Console.Read(); 
} 
} // Display ?
15
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
Màn hình xuất hiện của VD trên
Creating A 
Creating B 
Creating C 
Object Created
Press enter to Destroy it
Destroying C 
Destroying B 
Destroying A
16
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
Hủy đối tượng (destructor)
¾ Thông qua giao diện IDisposable chúng ta 
có thể hủy đối tượng không cần nữa bằng 
cách gọi tường minh thông qua phương 
thức Dispose() của giao diện IDisposable
public void Dispose()
{
// Thực hiện công việc dọn dẹp
// Yêu cầu bộ thu dọn GC trong thực hiện kết thúc
GC.SuppressFinalize( this );
}
VD: trang 62
17
OOP in C# - GV: Phạm Đình Sắc – sacvn@yahoo.com
Q&A

File đính kèm:

  • pdf06_Interface.pdf
Tài liệu liên quan