Khi tạo một đối tượng ở lớp thừa kế thì nó sẽ cấp phát bộ nhớ cho tất cả các trường của cả lớp cơ sở và lớp dẫn xuất. 33[r]
(1)BÀI 5
KẾ THỪA, ĐA NHIỆM TRONG C#
(2)v1.0011106202
TÌNH HUỐNG DẪN NHẬP
• Khi thực viết chương trình để quản lý học viên, trường đại học Quốc gia
bằng ngơn ngữ lập trình C# vấn đề như: tránh trùng lặp phải viết lại nhiều đoạn chương trình giống lớp, khả tái sử dụng lại chương
trình lớp vấn đề quan tâm
• Trong chương trình quản lý học viên có nhiều luồng công việc khác Việc quản
lý thực thi luồng công việc thực ngôn ngữ lập trình để thực
phần cơng việc khác mà người dùng yêu cầu
• Ngơnhiện thếngữ C# có cho phépnào? kế thừa khơng việc kế thừa thực • Các luồng cơng việc thực cách xử
(3)MỤC TIÊU
Trình bày khái niệm kế thừa C#
Trình bày khái niệm luồng đa nhiệm C#
Xây dựng chương trình C# đơn giản sử dụng tính kế thừa
(4)v1.0011106202
NỘI DUNG
1.1.1 Giới thiệu chung
1
1.1.2 Đơn kế thừa
2
1.1.3 Đa kế thừa
3
1.1.4 Tính đa hình
4
2.2.1 Khái niệm luồng
5
2.2.3 Ứng dụng đa nhiệm
7
2.2.2 Tạo luồng
(5)1.1.1 GIỚI THIỆU CHUNG
• Thừa kế cách tạo lớp từ lớp có sẵn Nó cho phép tái sử dụng lại mã
nguồn viết lớp có sẵn
• Lớp thể lớp (tức đối tượng) không tồn khối,
nhưng chúng tồn mạng lưới phụ thuộc quan hệ lẫn • Ví dụ như: sinh viên công nhân người có tên, có tuổi,…
• Quan hệ “là -một” (is-a) đặc biệt hóa
• Quan hệ đặc biệt hóa tổng quát hóa hai mối quan hệ đối ngẫu và phân cấp
với tạo quan hệ
Đặc biệt hoá nhánh tổng quát hoá
Nếu di chuyển lên trường hợp tổng qt hóa
(6)v1.0011106202
• Kế thừa việc lớp thừa hưởng thuộc tính phương thức từ
lớp khác
• Cú pháp:
<Bổ từ truy cập> class <Tên lớp kế thừa>:<Tên lớp sở>
1.1.2 ĐƠN KẾ THỪA
(7)Đặc điểm
• Lớp dẫn xuất kế thừa tất thành viên lớp sở, bao gồm tất
phương thức biến thành viên lớp sở
• Lớp dẫn xuất tự thực thi phiên phương thức lớp sở • Lớp dẫn xuất tạo phương thức thuộc tính
• C# cho phép đơn thừa kế lớp
• Trong C# lớp bắt buộc phải thừa kế từ lớp
(8)v1.0011106202
Ví dụ:
1. class Student 2. {
3. string name; 4. int age;
5. public void Birthday() { age++; } 6. int id;
7. public double Calpoint(); 8. }
9. class Employee 10. {
11. string name; 12. int age;
13. public void Birthday() { age++; } 14. double salary;
15. public double Calsalary(); 16. }
17. class Person 18. {
19. string name; 20. int age;
21. public void Birthday() { age++; } 22. }
23. class Student :Person 24. {
25. int id;
26. public double Calpoint(); 27. }
28. class Employee : Person 29. {
30. double salary;
31. public double Calsalary(); 32. }
Lặp lại giống
(9)Cấp phát nhớ
Khi tạo đối tượng lớp thừa kế cấp phát nhớ cho tất trường lớp sở lớp dẫn xuất
33. class Person 34. {
35. string name; 36. int age;
37. 38. }
39. class Student : Person 40. {
41. int id; 42. 43. }
44. Public static void Main()
45. {
46. Student s = new
Student(); 47. }
s nameage id
(10)v1.0011106202 10 Thực thi phương thức lớp sở
49. class Person 50. {
51. public void Birthday() 52. {
53. age++; 54. }
55. 56. }
57. class Student : Person 58. {
59. 60. }
61. Public static void Main() 62. {
63. Student s = new Student(); 64. s.Birthday();
65. }
Gọi phương thức lớp sở từ đối tượng lớp kế thừa
• Có thể gọi phương thức lớp sở từ phương thức lớp dẫn xuất từ
khoá “base”