Professional Documents
Culture Documents
SE203 - Bai 4 - v1.0011108202
SE203 - Bai 4 - v1.0011108202
1
v1.0011106202
TÌNH HUỐNG DẪN NHẬP
• Các thành phần dữ liệu và cách thức thực hiện, thao tác trên các dữ liệu để thực
hiện công việc quản lý học viên của trường đại học quốc gia cần được thực hiện theo
cách nào đó để khi viết các chương trình, tổ chức các lớp, đối tượng cũng như việc
dùng lại các thành phần dữ liệu và phương thức được thuận lợi.
• Có những thành phần dữ liệu và phương thức chỉ thực hiện trong 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 một lớp do đơn vị thứ ba cung cấp thì nó tiến hành kế thừa,
hơn nữa chương trình lại dùng lại các thành phầncủa một lớp do chương trình
cung cấp.
Vậy những thông tin và việc tiến hành thao tác quản lý các học viên
được thực hiện quản lý và cất dấu như thế nào bằng C# ?
2
v1.0011106202
MỤC TIÊU
Trình bày khái niệm giao diện, cách xây dựng và thực thi một giao diện.
3
v1.0011106202
NỘI DUNG
4
v1.0011106202
1.1. LỚP TRỪU TƯỢNG
5
v1.0011106202
1.1.1. KHÁI NIỆM
• Lớp trừu tượng là lớp chỉ thiết lập một cơ sở cho các lớp kế thừa mà nó không thể
có bất kỳ một thể hiện nào tồn tại.
• Khai báo lớp trừu tượng bằng từ khoá abstract:
6
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ể hiện của lớp
• Bất cứ lớp nào có một phương thức trừu tượng thì phải khai báo lớp là lớp
trừu tượng
• Override chúng trong lớp dẫn xuất
• Các phương thức trừu tượng của lớp trừu tượng không được thực thi trong thân lớp
mà phải được thực thi ở tất cả các lớp kế thừa từ lớp trừu tượng đó.
• Phương thức trong lớp trừu tượng
Từ khoá override trước phương thức ở Từ khoá override trước phương thức ở
lớp con lớp con
7
v1.0011106202
1.1.2. CÁC GIỚI HẠN (tiếp theo)
8
v1.0011106202
1.1.2. CÁC GIỚI HẠN (tiếp theo)
9
v1.0011106202
1.1.3. LỚP SEALED
• Còn gọi là 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ừ khoá “sealed” thay cho từ khoá “abstract” để có được lớp sealed:
<Bổ từ truy cập> sealed class <Tên lớp>
• Sử dụng từ khoá “sealed” trước phương thức để ngăn không cho lớp dẫn xuất
override.
10
v1.0011106202
1.1.3. LỚP SEALED (tiếp theo)
11
v1.0011106202
1.1.3. LỚP SEALED (tiếp theo)
14
v1.0011106202
2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN
• Giao diện (interface) định nghĩa những khả năng muốn có trong một lớp;
• Giao diện quy định các chức năng nhưng không mô tả cụ thể chúng.
Định nghĩa giao diện
• Cú pháp định nghĩa một giao diện:
15
v1.0011106202
2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo)
16
v1.0011106202
2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo)
Ví dụ giao diện:
17
v1.0011106202
2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo)
18
v1.0011106202
2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo)
19
v1.0011106202
2.2.1. ĐỊNH NGHĨA VÀ THỰC THI CÁC GIAO DIỆN (tiếp theo)
Trong lớp QLSV phải thực hiện tất cả các Giữa các giao diện được
phương thức đã định nghĩa trong ngăn cách bởi dấu “,”
hai giao diện cơ sở trên
20
v1.0011106202
PROPERTIES
On passing, 'Finish' button: Goes to Next Slide
On failing, 'Finish' button: Goes to Next Slide
Allow user to leave quiz: At any time
User may view slides after quiz: At any time
User may attempt quiz: Unlimited times
2.2.2. KẾ THỪA GIAO DIỆN
• Định nghĩa:
[Bổ từ truy cập] interface <Tên giao diện> [: danh sách giao diện cơ sở]
{
//Phần thân giao diện
}
• Danh sách giao diện cơ sở là danh sách các giao diện mà giao diện này kế thừa;
• Sự kế thừa interface phải đặt sau sự kế thừa lớp.
22
v1.0011106202
2.2.2. KẾ THỪA GIAO DIỆN (tiếp theo)
23
v1.0011106202
2.2.2. KẾ THỪA GIAO DIỆN (tiếp theo)
24
v1.0011106202
2.2.2. KẾ THỪA GIAO DIỆN (tiếp theo)
25
v1.0011106202
2.2.2. KẾ THỪA GIAO DIỆN (tiếp theo)
• Cách tốt nhất để truy cập đến thành phần giao diện là thông qua tham chiếu của
giao diện. Cách khai báo kết hợp như sau:
Istudent st1 (Istudent) new Student(“Nguyễn văn X”;)
• Ví dụ:
103. interface Istudent1
104. { Lớp Student chỉ thực thi giao diện Istudent
105. int StudentID;
106. void AddSubject();
107. } Tham chiếu ist1 đến đối tượng st của lớp
108. interface Istudent2 Student là hợp lệ
109. {
110. int PointMath;
111. void AveragePoint();
112. }
113. Public class Student:Istudent1{}
114. Student st = new Student("Nguyễn thị X");
103. Istudent1 ist1 = (Istudent1) st;
104. ist1.AddSubject();
105. Istudent2 ist2 = (Istudent2) st;
Tham chiếu ist2 đến đối tượng st của lớp
106. ist2.AveragePoint();
Student là 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 sự thực thi giao diện của đối tượng
119. Student st = new Student("Nguyễn thị X");
120. // chỉ gán khi an toàn
Cấu trúc sử dụng is:
121. if ( st is Istudent1 )
122. { <tên biến> is <Tên giao diện>
123. Istudent1 ist1 = (Istudent1) st;
124. ist1.AddSubject(); Nếu đúng thì is cho kết quả true,
• } sai thì cho kết quả false
• // việc kiểm tra này sẽ sai
121. if ( st is Istudent2 )
• {
• Istudent2 ist2 = (Istudent2) st;
• ist2.AveragePoint();
• }
27
v1.0011106202
2.2.2. KẾ THỪA GIAO DIỆN (tiếp theo)
Sử dụng “as”kiểm tra sự thực thi giao diện của đối tượng
132. Student st = new Student(“Nguyễn văn X”);
133. Istudent1 ist1 = st as Istudent1; Cấu trúc sử dụng is:
134. if ( ist1 != null )
<tên biến> as <Tên giao diện>
135. {
136. ist1.AddSubject(); Kiểm tra tính hợp lệ của phép gán, nếu hợp lệ
137. } thì phép gán được thực hiện, nếu không hợp
138. else lệ thì as trả về giá trị null
139. {
140. Console.WriteLine(“Istudent1 không được thực hiện trong lớp Student”);
141. }
142. Istudent2 ist2 = st as Istudent2;
143. if ( ist2 != null)
144. {
145. ist2.AveragePoint();
146. }
147. else
148. {
149. Console.WriteLine(“Istudent2 không được thực hiện trong lớp Student”);
150. } 28
v1.0011106202
2.2.2. KẾ THỪA GIAO DIỆN (tiếp theo)
is as
Có phát sinh ngoại lệ và đôi khi gặp kiểm Không phát sinh ngoại lệ, loại bỏ được xử lý
tra điều kiện nhiều lần. ngoại lệ.
Kiểm tra và thực hiện phép gán đối tượng Kiểm tra và thực hiện 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 và không thực hiện phép gán: Kiểm tra và không thực hiện phép gán:
- Tối ưu - Không tối ưu
29
v1.0011106202
2.2.2. KẾ THỪA GIAO DIỆN (tiếp theo)
Giao diện rất giống các lớp trừu tượng nên có thể thay thế giao diện bằng lớp
trừu tượng và sau đó dùng kế thừa để lớp thực hiện các phương thức.
• Nắm được về khái niệm, khai báo lớp trừu tượng, các giới hạn cửa lớp
trừu tượng từ đó đưa ra cách sử dụng lớp trừu tượng.
• Nắm được lớp Sealed là gì? cách mà C# muốn đóng cũng như hoạt
động của lớp Sealed.
• Giao diện và cách thức làm việc của giao diện, cách thức.
34
v1.0011106202
PROPERTIES
On passing, 'Finish' button: Goes to Next Slide
On failing, 'Finish' button: Goes to Next Slide
Allow user to leave quiz: At any time
User may view slides after quiz: At any time
User may attempt quiz: Unlimited times
PROPERTIES
Allow user to leave interaction: Anytime
Show ‘Next Slide’ Button: Don't show
Completion Button Label: Next Slide
PROPERTIES
Allow user to leave interaction: Anytime
Show ‘Next Slide’ Button: Don't show
Completion Button Label: Next Slide