Cấu trúc và giao diện
lượt xem 7
download
Cấu trúc (struct): Khái niệm, khai báo và sử dụng struct, Phân biệt được struct và class, Nhận biết khi nào nên dùng struct. Giao diện (interface) Khái niệm, khai báo và sử dụng interface, Phân biệt được interface và lớp abstract, Xây dựng interface.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Cấu trúc và giao diện
- CẤU TRÚC VÀ GIAO DIỆN Giảng viên phụ trách: Nguyễn Hoàng Tùng Bộ môn Tin học Email: nhoangtung@agu.edu.vn
- Mục đích bài học Cấu trúc (struct): Khái niệm, khai báo và sử dụng struct, Phân biệt được struct và class, Nhận biết khi nào nên dùng struct. Giao diện (interface) Khái niệm, khai báo và sử dụng interface, Phân biệt được interface và lớp abstract, Xây dựng interface. 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 2
- Cấu trúc (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 và 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 Chuyên đề Ngôn ngữ lập trình 3 3
- Khai báo struct Cú pháp: [access-modifier] struct identifier [:interface-list] { struct member } Ví dụ: public struct Location { public int X private int xVal; { private int yVal; get { return xVal; } public Location(int x, int y) { set { xVal = value; } this.xVal = x; } this.yVal = y; public int Y } { public override string ToString( ) { get { return yVal; } return String.Format (“{0},{1}”, set { yVal = value; } xVal, yVal ); } } } 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 4
- Hàm tạo và 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, và không làm cơ s ở cho một class hay struct nào khác. Không dùng từ khóa abstract và 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 và 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 Chuyên đề Ngôn ngữ lập trình 3 5
- Hàm tạo và 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). interface IShape() struct KeyValue { { void Paint(); private string key; } private string value; struct Rectangle : Ishape public KeyValue(string key, string value) { { public void Paint() { … } this.key = key; this.value = value; private int x, y, z; } } } 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 6
- Struct là một kiểu dữ liệu tham trị Ví dụ: Kết quả: static void Main() { Location loc = new Location(200, 300); loc.X = ? myFunc(loc); loc.Y = ? Console.WriteLine(loc.ToString()); } static void myFunc(Location loc) { loc.X = 100 ; loc.Y = 200; } 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 7
- Một kiểu khai báo khác của 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ụ: static void Main() { Không triệu gọi hàm tạo Location loc; loc.X = 100 ; Phải khởi gán các biến thành viên trước khi gọi các loc.Y = 200; phương thức. myFunc(loc); } 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 8
- So sánh struct và class 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 9
- 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 Chuyên đề Ngôn ngữ lập trình 3 10
- Demo struct 20/12/2011 Chuyên đề 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 chữ I hoa (IShape, ISinhVien). Các thành viên trong phần thân chỉ bao gồm: 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 và 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 public class Document : Istorable { { public void Read() { void Read(); void Write(object obj); Console.WriteLine("Thi công hàm int Status { get; set; } Read của IStorable"); } } public void Write(object obj) { Console.WriteLine(obj); } private int m_Status; public int Status { get { return m_Status; } set { m_Status = 20/12/2011 value; } Chuyên đề Ngôn ngữ lập trình 3 14
- Xây dựng interface Thiết đặt cùng lúc nhiều giao diện : interface IStorable public class Document : IStorable, { ICompressible void Read(); { void Write(object obj); private int m_Status; int Status { get; set; } } // Thi công giao diện IStorable interface ICompressible public void Read() { … } { public void Write(object obj) void Compress(); {…} void Decompress(); public int Status { … } } // Thi công giao diện ICompressible public void Compress() { … } public void Decompress() 20/12/2011 {…} 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 và mở rộng: interface IStorable { public class Document : void Read(); IStorableCompressible { void Write(object obj); private int m_Status; int Status { get; set; } // IStorable } public void Read() { … } public void Write(object obj) interface ICompressible { {…} void Compress(); public int Status { … } void Decompress(); } // ICompressible public void Compress() interface IStorableCompressible : {… } IStorable, ICompressible { public void Decompress() void LogSavedBytes(); {…} } // IStorableCompressible 20/12/2011 public void LogSavedBytes() Chuyên đề Ngôn ngữ lập trình 3 17
- Xây dựng interface Phối hợp cùng lúc nhiều giao diện và 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) { Document doc = new Document(); doc.Status = -1; Ép đối tượng Document về doc.Read(); kiểu giao diện IStorable. // Tạo thể hiện bàng cách ép IStorable iStor = (IStorable)doc; iStor.Status = 0; iStor.Read(); } 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 19
- Truy xuất các phương thức của interface Toán tử is: Cú pháp: expression is type Kiểm tra xem 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 = doc as IStorable; if (doc is IStorable) if (iStor != null) iStor = (IStorable)doc; iStor.Read(); 20/12/2011 Chuyên đề Ngôn ngữ lập trình 3 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình cấu trúc dữ liệu và giải thuât part 1
16 p | 825 | 365
-
Phân tích và Thiết kế hệ thống - Thiết kế giao diện
32 p | 730 | 159
-
Đổi giao diện Windows 7 thành Mac OS
7 p | 336 | 41
-
Giáo trình Cấu trúc dữ liệu và Thuật giải 2: Phần 1 - Ng.Thị Thanh Bình, Ng.Văn Phúc
55 p | 148 | 15
-
Bài giảng Cấu trúc máy tính và giao diện - ĐH Phạm Văn Đồng
88 p | 90 | 14
-
Giáo trình Cấu trúc dữ liệu và giải thuật - CĐ Nghề Cơ điện Hà Nội
94 p | 35 | 10
-
Sử dụng các chủ đề giao diện cho jQuery
17 p | 99 | 9
-
Giáo trình Cấu trúc máy tính (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 2 - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
62 p | 25 | 9
-
Giáo trình Cấu trúc dữ liệu và giải thuật (Nghề: Quản trị mạng - Trung cấp) - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
73 p | 27 | 7
-
Giáo trình Cấu trúc máy tính (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 1 - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
66 p | 22 | 6
-
Giáo trình Cấu trúc máy tính (Nghề: Tin học văn phòng - Trung cấp): Phần 2 - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
67 p | 21 | 6
-
Giáo trình Cấu trúc máy tính (Nghề: Tin học văn phòng - Cao đẳng): Phần 1 - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
66 p | 27 | 6
-
Giáo trình Cấu trúc máy tính (Nghề: Tin học văn phòng - Cao đẳng): Phần 2 - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
67 p | 22 | 6
-
Giáo trình Cấu trúc máy tính (Nghề: Tin học văn phòng - Trung cấp): Phần 1 - Trường Cao đẳng Cơ điện Xây dựng Việt Xô
66 p | 24 | 6
-
Bài giảng Hệ điều hành - Chương 7: Giao diện người sử dụng
27 p | 81 | 5
-
Bài giảng Chương 10: Thiết kế tầng giao diện người-máy
57 p | 20 | 3
-
Bài giảng Cấu trúc máy tính và giao diện - Trường Cao đẳng Công nghiệp Phúc Yên
77 p | 7 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn