Tài liệu Cấu trúc và giao diện doc

24 879 0
Tài liệu Cấu trúc và giao diện doc

Đ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

CẤU TRÚC CẤU TRÚC GIAO DIỆN GIAO DIỆN Giảng viên phụ trách: Giảng viên phụ trách: Nguyễn Hoàng Tùng Nguyễn Hoàng Tùng Bộ môn Tin học Bộ môn Tin học Email: nhoangtung@agu.edu.vn Email: nhoangtung@agu.edu.vn Mục đích bài học Mục đích bài học Cấu trúc (struct): Khái niệm, khai báo sử dụng struct, Phân biệt được struct class, Nhận biết khi nào nên dùng struct. Giao diện (interface) Khái niệm, khai báo sử dụng interface, Phân biệt được interface lớp abstract, Xây dựng interface. 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 2 2 Cấu trúc ( Cấu trúc ( struct struct ) ) Là một kiểu dữ liệu tham trị (value type). Sử dụng struct đối với các kiểu dữ liệu nhỏ, đơn giản, có các phương thức thuộc tính như kiểu dữ liệu bẩm sinh (int, float, string, ). Dùng để đóng gói các trường dữ liệu có liên quan với nhau. Ví dụ: Tạo cấu trúc để biểu diễn một điểm trên trục toạ độ hai chiều. 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 3 3 Khai báo Khai báo struct struct Cú pháp: [access-modifier] struct identifier [:interface-list] { struct member } Ví dụ: 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 4 4 public struct Location { private int xVal; private int yVal; public Location(int x, int y) { this.xVal = x; this.yVal = y; } public override string ToString( ) { return String.Format (“{0},{1}”, xVal, yVal ); } public struct Location { private int xVal; private int yVal; public Location(int x, int y) { this.xVal = x; this.yVal = y; } public override string ToString( ) { return String.Format (“{0},{1}”, xVal, yVal ); } public int X { get { return xVal; } set { xVal = value; } } public int Y { get { return yVal; } set { yVal = value; } } } public int X { get { return xVal; } set { xVal = value; } } public int Y { get { return yVal; } set { yVal = value; } } } Hàm tạo Kế thừa Hàm tạo Kế thừa Ngầm định kế thừa từ lớp Object. Ngoài ra, struct không kế thừa bất cứ class hay struct nào khác, không làm cơ sở cho một class hay struct nào khác. Không dùng từ khóa abstract sealed. Biến thành viên không có từ khóa protected. Các phương thức không có từ khóa abstract virtual. Từ khóa override chỉ sử dụng khi override các phương thức được kế thừa từ đối tượng Object. 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 5 5 Hàm tạo Kế thừa Hàm tạo Kế thừa Struct có thể thực thi (xây dựng lại) nhiều interface. Nếu có hàm tạo thì phải có tham số, không cho phép hàm tạo không tham số. Các thành viên của struct không có bộ khởi gán (initializer). 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 6 6 interface IShape() { void Paint(); } struct Rectangle : Ishape { public void Paint() { … } private int x, y, z; } interface IShape() { void Paint(); } struct Rectangle : Ishape { public void Paint() { … } private int x, y, z; } struct KeyValue { private string key; private string value; public KeyValue(string key, string value) { this.key = key; this.value = value; } } struct KeyValue { private string key; private string value; public KeyValue(string key, string value) { this.key = key; this.value = value; } } Struct là một kiểu dữ liệu Struct là một kiểu dữ liệu tham trị tham trị Ví dụ: 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 7 7 static void Main() { Location loc = new Location(200, 300); myFunc(loc); Console.WriteLine(loc.ToString()); } static void myFunc(Location loc) { loc.X = 100 ; loc.Y = 200; } static void Main() { Location loc = new Location(200, 300); myFunc(loc); Console.WriteLine(loc.ToString()); } static void myFunc(Location loc) { loc.X = 100 ; loc.Y = 200; } Kết quả: loc.X = ? loc.Y = ? loc.X = ? loc.Y = ? Một kiểu khai báo khác của Một kiểu khai báo khác của struct struct Tạo đối tượng struct không dùng từ khóa new: Struct là kiểu trị nên có thể tạo một đối tượng struct không cần từ khóa new (giống như các kiểu bẩm sinh: int, long, ) Không triệu gọi hàm tạo (constructor). Phải khởi gán các biến thành viên trước khi gọi các phương thức. Ví dụ: 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 8 8 static void Main() { Location loc; loc.X = 100 ; loc.Y = 200; myFunc(loc); } static void Main() { Location loc; loc.X = 100 ; loc.Y = 200; myFunc(loc); } Không triệu gọi hàm tạo Không triệu gọi hàm tạo Phải khởi gán các biến thành viên trước khi gọi các phương thức. Phải khởi gán các biến thành viên trước khi gọi các phương thức. So sánh So sánh struct struct class class 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 9 9 Sử dụng struct khi nào? Sử dụng struct khi nào? Thể hiện (instance) có kích thước nhỏ (16 byte). Có chu kỳ ngắn. Thông thường nằm lồng trong một đối tượng thuộc class nào đó. Không có ý định cho việc kế thừa. Không thường xuyên được sử dụng để boxing. 20/12/2011 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 Chuyên đề Ngôn ngữ lập trình 3 10 10 [...]... doc = new Document doc = new Document(); Document(); doc. Status = -1; doc. Status = -1; doc. Read(); doc. Read(); // Tạo thể hiện bàng cách ép // Tạo thể hiện bàng cách ép IStorable iStor = (IStorable )doc; IStorable iStor = (IStorable )doc; iStor.Status = 0; iStor.Status = 0; iStor.Read(); iStor.Read(); }} 20/12/2011 Ép đối tượng Document về Ép đối tượng Document về kiểu giao diện IStorable kiểu giao diện. .. expression (kiểu dữ liệu qui chiếu) có thể ép an toàn về kiểu type không Toán tử as: Cú pháp: expression as type Kiểm tra xem expression có thể ép an toàn về kiểu type không Nếu hợp lệ sẽ trả về type Ngược lại trả về null Document doc = new Document(); Document doc = new Document(); IStorable iStor; IStorable iStor; Document doc = new Document(); Document doc = new Document(); IStorable iStor = doc as IStorable;... nhiều giao diện mở rộng: 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 18 Truy xuất các phương thức của interface Truy xuất các thành viên của IStorable thông qua các thành viên của lớp Document Không thể tạo thể hiện giao diện một cách trực tiếp Tạo thể hiện của giao diện bằng cách ép (casting) đối tượng Document về kiểu IStorable static void Main(string[] args) {{ static void Main(string[] args) Document... ICompressible ICompressible {{ private int m_Status; private int m_Status; // Thi công giao diện // Thi công giao diện IStorable IStorable public void Read() {{… }} public void Read() … public void Write(object obj) public void Write(object obj) {{… }} … public int Status {{… }} public int Status … // Thi công giao diện // Thi công giao diện ICompressible ICompressible public void Compress() public void Compress()... Ngôn ngữ lập trình 3 11 Giao diện (interface) Giao diện giống như một bản vẽ thiết kế, nó đảm bảo việc các chương trình muốn xây dựng lại giao diện phải thực thi tất cả những gì trong bản vẽ 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 12 Khai báo interface Cú pháp: [access-modifier] interface identifier [:base-list] { interface body } Không thể cài đặt code trong phần thân Tên giao diện nên bắt đầu bằng... iStor = doc as IStorable; IStorable iStor = doc as IStorable; if (doc is IStorable) if (doc is IStorable) iStor = (IStorable )doc; iStor = (IStorable )doc; if (iStor != null) if (iStor != null) iStor.Read(); iStor.Read(); 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 20 So sánh interface lớp abstract 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 21 So sánh interface lớp abstract Abstract class cũng có thể... phương thức, thuộc tính, sự kiện, bộ chỉ mục Không thể chứa: hằng, biến, toán tử, hàm tạo, hàm hủy, kiểu dữ liệu các từ khóa: abstract, public, protected, internal, private, virtual, override Khi một class (hoặc struct) thiết đặt một giao diện thì phải thi công tất cả các thành viên của giao diện này 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 13 Xây dựng interface Ví dụ: interface IStorable interface... Compress() {{… }} … public void Decompress() public void Decompress() Chuyên đề Ngôn ngữ lập trình 3 15 Xây dựng interface Thiết đặt cùng lúc nhiều giao diện: 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 16 Xây dựng interface Phối hợp cùng lúc nhiều giao diện mở rộng: interface IStorable {{ interface IStorable void Read(); void Read(); void Write(object obj); void Write(object obj); int Status {{get;... đặt cùng lúc nhiều giao diện: interface IStorable interface IStorable {{ void Read(); void Read(); void Write(object obj); void Write(object obj); int Status {{get; set; }} int Status get; set; }} interface ICompressible interface ICompressible {{ void Compress(); void Compress(); void Decompress(); void Decompress(); }} 20/12/2011 public class Document ::IStorable, public class Document IStorable,... interface IStorable interface IStorable {{ void Read(); void Read(); void Write(object obj); void Write(object obj); int Status {{get; set; }} int Status get; set; }} 20/12/2011 public class Document ::Istorable {{ public class Document Istorable public void Read() {{ public void Read() Console.WriteLine("Thi công hàm Console.WriteLine("Thi công hàm Read của IStorable"); Read của IStorable"); }} public void . CẤU TRÚC CẤU TRÚC VÀ VÀ GIAO DIỆN GIAO DIỆN Giảng viên phụ trách: Giảng viên phụ trách: Nguyễn. 3 20 20 Document doc = new Document(); IStorable iStor; if (doc is IStorable) iStor = (IStorable )doc; Document doc = new Document(); IStorable iStor; if (doc

Ngày đăng: 26/02/2014, 13:20

Từ khóa liên quan

Mục lục

  • CẤU TRÚC VÀ GIAO DIỆN

  • Mục đích bài học

  • Cấu trúc (struct)

  • Khai báo struct

  • Hàm tạo và Kế thừa

  • Slide 6

  • Struct là một kiểu dữ liệu tham trị

  • Một kiểu khai báo khác của struct

  • So sánh struct và class

  • Sử dụng struct khi nào?

  • Demo struct

  • Giao diện (interface)

  • Khai báo interface

  • Xây dựng interface

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Truy xuất các phương thức của interface

  • Slide 20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan