1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng ngôn ngữ C#: Bài 4 - Chử Đức Hoàng

37 4 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 3,98 MB

Nội dung

Mời các bạn sinh viên cùng tham khảo Bài giảng ngôn ngữ C# - Bài 4: Lớp trừu tượng và giao diện trong C# để nắm chi tiết nội dung kiến thức về khái niệm lớp trừu tượng; mô tả sự khác nhau giữa lớp trừu tượng và một lớp cụ thể; khái niệm giao diện, cách xây dựng và thực thi một giao diện; kế thừa giao diện; xây dựng ví dụ minh hoạ.

BÀI LỚP TRỪU TƯỢNG VÀ GIAO DIỆN TRONG C# GV Chử Đức Hồng v1.0011106202 TÌNH HUỐNG DẪN NHẬP • Các thành phần liệu cách thức thực hiện, thao tác liệu để thực công việc quản lý học viên trường đại học quốc gia cần thực theo cách để viết chương trình, tổ chức lớp, đối tượng việc dùng lại thành phần liệu phương thức thuận lợi • Có thành phần liệu phương thức thực chương trình mà người ta khơng muốn lớp khác kế thừa lại • Khi lớp muốn kế thừa lớp đơn vị thứ ba cung cấp tiến hành kế thừa, chương trình lại dùng lại thành phầncủa lớp chương trình cung cấp  v1.0011106202 Vậy thông tin việc tiến hành thao tác quản lý học viên thực quản lý cất dấu C# ? MỤC TIÊU Trình bày khái niệm lớp trừu tượng? Mô tả khác lớp trừu tượng lớp cụ thể? Trình bày khái niệm giao diện, cách xây dựng thực thi giao diện Kế thừa giao diện Xây dựng ví dụ minh hoạ v1.0011106202 NỘI DUNG v1.0011106202 Giới thiệu lớp trừu tượng Giao diện thực thi giao diện C# 1.1 LỚP TRỪU TƯỢNG • Lớp trừu tượng gì? • Các giới hạn lớp trừu tượng? • Lớp sealed hoạt động nó? v1.0011106202 1.1.1 KHÁI NIỆM • Lớp trừu tượng lớp thiết lập sở cho lớp kế thừa mà khơng thể có thể tồn • Khai báo lớp trừu tượng từ khoá abstract: abstract class v1.0011106202 1.1.2 CÁC GIỚI HẠN • Lớp trừu tượng khơng cho phép tạo thể lớp • Bất lớp có phương thức trừu tượng phải khai báo lớp lớp trừu tượng • Override chúng lớp dẫn xuất • Các phương thức trừu tượng lớp trừu tượng không thực thi thân lớp mà phải thực thi tất lớp kế thừa từ lớp trừu tượng • Phương thức lớp trừu tượng Abstract Method Từ khoá: abstract Virtual Method Từ khố: virtual Chỉ có phần khai báo method kết thúc Có phần thực thi cho phương thức virtual dấu “;”, Khơng cần có phần thực thi cho lớp sở phương thức abstract lớp abstract Bắt buộc lớp dẫn xuất phải override lại Không bắt buộc lớp dẫn xuất phải override Từ khoá override trước phương thức Từ khoá override trước phương thức lớp lớp v1.0011106202 1.1.2 CÁC GIỚI HẠN (tiếp theo) Lớp trừu tượng Ví dụ • Lớp trừu tượng: AbstractClass • • public abstract class AbstractClass { • • public AbstractClass() { • • } public abstract int AbstractMethod() ; • • public virtual int VirtualMethod() { • • • Phương thức trừu tượng return 0; } } v1.0011106202 1.1.2 CÁC GIỚI HẠN (tiếp theo) Lớp dẫn xuất từ lớp trừu tượng 13 public class DerivedClass : AbstractClass 14 { 15 public DerivedClass() 16 {} 17 public override int AbstractMethod() 18 { 19 return 0; 20 } 21 public override int VirtualMethod() 22 { 23 return base.VirtualMethod (); 24 } 25 } v1.0011106202 Bắt buộc phải có 1.1.3 LỚP SEALED • Cịn gọi lớp niêm phong, khơng cho phép lớp khác kế thừa nó, ngược với lớp abstract • Sử dụng từ khố “sealed” thay cho từ khố “abstract” để có lớp sealed: sealed class • Sử dụng từ khố “sealed” trước phương thức để ngăn khơng cho lớp dẫn xuất override v1.0011106202 10 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) • Mở rộng giao diện  C# cho phép mở rộng giao diện có để thêm phương thức thành viên hay bổ sung cách làm việc cho thành viên; •  Cách thức: thêm phương thức ghi log liệu lưu Ví dụ: 88 interface ILoggedStudent : IStudent 89 { 90 void LogSavedBytes(); 91 }  Lớp sử dụng giao diện cũ giao diện mở rộng tùy thuộc vào mục đích sử dụng  Lớp mà thực thi giao diện mở rộng phải thực thi tất phương thức hai giao diện cũ  Những đối tượng lớp thực thi giao diện gán cho hai giao diện cũ v1.0011106202 23 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) • Kết hợp giao diện  Có thể tạo giao diện cách kết hợp giao diện cũ thêm phương thức hay thuộc tính cho giao diện • Ví dụ: 92 interface IStudent3 : IStudent1, IStudent2 93 { 94 //Phương thức 95 //Dữ liệu 96 v1.0011106202 } 24 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) Truy cập phương thức giao diện Truy cập thành viên giao diện thành viên lớp: Gán đối tượng lớp cho kiểu liệu giao diện, sử dụng giao diện để truy cập v1.0011106202 97 98 99 Student st = new Student(“Nguyễn thị Vân”); st.StudentID = 123; st.AddSubject(“Nguyễn văn X”); 100 Istudent st1 = (Istudent) sv; 101 st1.StudentID = 123; 102 st1.AddSubject(“Nguyễn văn X”); 25 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) • • 103 104 105 106 107 108 109 110 111 112 113 114 103 104 105 106 Cách tốt để truy cập đến thành phần giao diện thông qua tham chiếu giao diện Cách khai báo kết hợp sau: Istudent st1 (Istudent) new Student(“Nguyễn văn X”;) Ví dụ: interface Istudent1 { Lớp Student thực thi giao diện Istudent int StudentID; void AddSubject(); Tham chiếu ist1 đến đối tượng st lớp } Student hợp lệ interface Istudent2 { int PointMath; void AveragePoint(); } Public class Student:Istudent1{} Student st = new Student("Nguyễn thị X"); Istudent1 ist1 = (Istudent1) st; ist1.AddSubject(); Istudent2 ist2 = (Istudent2) st; Tham chiếu ist2 đến đối tượng st lớp ist2.AveragePoint(); Student không hợp lệ 26 v1.0011106202 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) Sử dụng “is” kiểm tra thực thi giao diện đối tượng 119 120 121 122 123 124 • • 121 • • • • v1.0011106202 Student st = new Student("Nguyễn thị X"); // gán an toàn Cấu trúc sử dụng is: if ( st is Istudent1 ) is { Istudent1 ist1 = (Istudent1) st; Nếu is cho kết true, ist1.AddSubject(); sai cho kết false } // việc kiểm tra sai if ( st is Istudent2 ) { Istudent2 ist2 = (Istudent2) st; ist2.AveragePoint(); } 27 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) Sử dụng “as”kiểm tra thực thi giao diện đối tượng 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 v1.0011106202 Student st = new Student(“Nguyễn văn X”); Istudent1 ist1 = st as Istudent1; Cấu trúc sử dụng is: if ( ist1 != null ) as { ist1.AddSubject(); Kiểm tra tính hợp lệ phép gán, hợp lệ } phép gán thực hiện, khơng hợp else lệ as trả giá trị null { Console.WriteLine(“Istudent1 không thực lớp Student”); } Istudent2 ist2 = st as Istudent2; if ( ist2 != null) { ist2.AveragePoint(); } else { Console.WriteLine(“Istudent2 không thực lớp Student”); } 28 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) So sánh “is” “as” is as Khai báo: is Khai báo: as Kết trả về: - Đúng: true - Sai: false Kết trả - Đúng: thực phép gán - Sai: null Có phát sinh ngoại lệ gặp kiểm Không phát sinh ngoại lệ, loại bỏ xử lý tra điều kiện nhiều lần ngoại lệ Kiểm tra thực phép gán đối tượng Kiểm tra thực phép gán đối tượng cho giao diện: cho giao diện: - Không tối ưu - Tối ưu Kiểm tra không thực phép gán: Kiểm tra không thực phép gán: - Tối ưu - Không tối ưu v1.0011106202 29 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) Giao diện lớp trừu tượng Giao diện giống lớp trừu tượng nên thay giao diện lớp trừu tượng sau dùng kế thừa để lớp thực phương thức C# không cho phép đa kế thừa nhiều lớp mà cho kế thừa từ lớp giao diện 151 public class Student : Student1, IStudent1 152 { 153 // phương thức lớp Student1 154 155 // Thực Thi Giao Diện IStudent1 156 } v1.0011106202 30 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) Thực thi giao diện tường minh 157.interface Istudent1 158.{ 159 int StudentID; 160 void AddSubject(); 161 void PointIn(); Giống hai giao diện 162.} 163.interface Istudent2 164.{ 165 int PointMath; Khơng có bổ từ truy cập 166 void AddSubject(); Có bổ từ truy cập 167 void PointOut(); 168.} 169.public class Student : IStudent1, IStudent2 170.{ 171./* phương thức AddSubject giao diện IStudent1 IStudent2 giống nên phải thực thi tường minh*/ 172 void Istudent1.AddSubject(){} 173.//Các phương thức khác giao diện khơng xung đột thực thi bình thường 174 public void PointIn(){} 175.// Thực Thi Giao Diện IStudent2 31 176.} v1.0011106202 2.2.2 KẾ THỪA GIAO DIỆN (tiếp theo) Gọi phương thức tường minh 177 static void Main() 178 { 179 // tạo đối tượng st 180 Student st = new Student("Nguyễn Văn X"); 181 IStudent1 ist1 = st as IStudent1; 182 if ( ist1 != null ) Gọi thông qua việc gán cho giao diện với 183 { phương thức thực thi tường minh 184 ist1.AddSubject(); 185 } 186 187 188 189 190 191 192 193 v1.0011106202 IStudent2 ist2 = st as IStudent2; if ( ist2 != null ) { ist2.AddSubject(); } st.PointIn(); st.PointOut(); } Thực thi qua đối tượng 32 PROPERTIES On passing, 'Finish' button: On failing, 'Finish' button: Allow user to leave quiz: User may view slides after quiz: User may attempt quiz: Goes to Next Slide Goes to Next Slide At any time At any time Unlimited times TĨM LƯỢC CUỐI BÀI v1.0011106202 • Nắm khái niệm, khai báo lớp trừu tượng, giới hạn cửa lớp trừu tượng từ đưa cách sử dụng lớp trừu tượng • Nắm lớp Sealed gì? cách mà C# muốn đóng hoạt động lớp Sealed • Giao diện cách thức làm việc giao diện, cách thức 34 PROPERTIES On passing, 'Finish' button: On failing, 'Finish' button: Allow user to leave quiz: User may view slides after quiz: User may attempt quiz: Goes to Next Slide Goes to Next Slide At any time At any time Unlimited times PROPERTIES Allow user to leave interaction: Show ‘Next Slide’ Button: Completion Button Label: Anytime Don't show Next Slide PROPERTIES Allow user to leave interaction: Show ‘Next Slide’ Button: Completion Button Label: Anytime Don't show Next Slide ... theo) Sử dụng “as”kiểm tra thực thi giao diện đối tượng 132 133 1 34 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 v1.0011106202 Student st = new Student(“Nguyễn văn X”); Istudent1... method"); 45 } 46 } 47 class MyClass : MyClass1 { 48 public override sealed void Method() { 49 Console.WriteLine("sealed method"); 50 } 51 } 52 class MainClass { 53 public static void Main() { 54 MyClass1... Sử dụng sealed trước 40 using System; phương thức để ngăn ko 41 class MyClass1 { cho lớp dẫn xuất override 42 public int x; public int y; 43 public virtual void Method() { 44 Console.WriteLine("virtual

Ngày đăng: 07/05/2021, 13:24