Ôn tập: phân cấp nhân viên
Thuộc phần Lập trình hướng đối tượng trong hành trình Dart của Coddy. Bài học 42 trên 110.
Thử thách
DễHãy xây dựng một hệ thống phân cấp nhân viên hoàn chỉnh, kết hợp mọi khái niệm về tính kế thừa trong chương này. Bạn sẽ tạo một lớp nhân viên cơ sở và mở rộng lớp đó với các vai trò chuyên biệt, mỗi vai trò có hành vi riêng.
Bạn sẽ sắp xếp code thành hai tệp:
employee.dart: Định nghĩa hệ thống phân cấp nhân viên tại đây:- Một lớp cơ sở
Employeecó các thuộc tínhString name,double salaryvàint id. Thêm hàm khởi tạo và phương thứcgetDetails()trả về'[name] (ID: [id]) - Salary: $[salary]' - Một lớp
Managerkế thừaEmployeevà thêm thuộc tínhint teamSize. Dùng các tham số super cho những trường được kế thừa. Ghi đègetDetails()để trả về thông tin của lớp cha, theo sau là', Team: [teamSize] members' - Một lớp
Developerkế thừaEmployeevà thêm thuộc tínhString language. Ghi đègetDetails()để trả về thông tin của lớp cha, theo sau là', Specializes in [language]' - Một lớp
TeamLeadkế thừaDevelopervà thêm thuộc tínhint projectCount. Ghi đègetDetails()để mở rộng phiên bản củaDeveloperbằng cách thêm', Leading [projectCount] projects'
- Một lớp cơ sở
main.dart: Nhập tệp nhân viên và tạo các đối tượng thuộc từng loại nhân viên:- Tạo một
Employeecó tên'Alice', mức lương50000.0và id101 - Tạo một
Managercó tên'Bob', mức lương75000.0, id102và teamSize8 - Tạo một
Developercó tên'Carol', mức lương65000.0, id103và language'Dart' - Tạo một
TeamLeadcó tên'David', mức lương80000.0, id104, language'Python'và projectCount3 - In kết quả gọi
getDetails()trên từng nhân viên, mỗi kết quả trên một dòng
- Tạo một
Lưu ý cách TeamLead thể hiện tính kế thừa nhiều cấp: lớp này kế thừa Developer, còn Developer kế thừa Employee. Mỗi cấp bổ sung thông tin riêng mà vẫn giữ lại thông tin từ các lớp cha bằng cách dùng super.
Đầu ra mong đợi:
Alice (ID: 101) - Salary: $50000.0
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projectsTự làm thử
import 'employee.dart';
void main() {
// TODO: Tạo một Employee có name là 'Alice', salary là 50000.0 và id là 101
// TODO: Tạo một Manager có name là 'Bob', salary là 75000.0, id là 102 và teamSize là 8
// TODO: Tạo một Developer có name là 'Carol', salary là 65000.0, id là 103 và language là 'Dart'
// TODO: Tạo một TeamLead có name là 'David', salary là 80000.0, id là 104, language là 'Python' và projectCount là 3
// TODO: In ra getDetails() của từng nhân viên, mỗi người một dòng
}
Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về lập trình hướng đối tượng
Tệp bên ngoàiThư viện và câu lệnh importGiới thiệu về lập trình hướng đối tượngLớp và đối tượngTừ khóa thisPhương thứcBiến thể hiệnKiến thức cơ bản về hàm khởi tạoÔn tập: Máy tính đơn giản4An toàn với giá trị null
Giới thiệu về an toàn với giá trị nullCó thể null và không thể nullToán tử ? và !Từ khóa late và an toàn với giá trị nullToán tử xử lý nullAn toàn với giá trị null trong lớpÔn tập: hệ thống hồ sơ người dùng7Lớp trừu tượng và interface
Lớp trừu tượngPhương thức trừu tượngInterface trong DartInterface ngầm địnhTriển khai và kế thừaNhiều interfaceÔn tập: Máy tính hình10Bộ sưu tập và kiểu tổng quát
Tổng quan về List, Set và MapBộ sưu tập an toàn về kiểuLớp tổng quátPhương thức tổng quátRàng buộc kiểu tổng quátIterable và IteratorÔn tập: Lưu trữ tổng quát2Hàm khởi tạo trong Dart
Hàm khởi tạo mặc địnhHàm khởi tạo có tênDanh sách khởi tạoHàm khởi tạo hằng sốHàm khởi tạo nhà máyHàm khởi tạo chuyển hướngÔn tập: Trình tạo hình dạng5Đóng gói
Thành viên công khai và riêng tưQuy ước tiền tố _Tính riêng tư ở cấp thư việnTìm hiểu sâu về getter và setterChe giấu thông tinÔn tập: hồ sơ học sinh8Mixin
Giới thiệu về MixinTạo MixinSử dụng nhiều MixinTừ khóa on trong MixinMixin và kế thừaMixin và giao diệnÔn tập: hệ thống động vật3Thuộc tính của lớp
Thành viên instance và thành viên tĩnhTrường final và constBiến latePhương thức và trường tĩnhGetter và setterÔn tập: trình quản lý tài khoản ngân hàng6Kế thừa
Kế thừa cơ bảnTừ khóa superGhi đè phương thứcChú thích @overrideTừ khóa lớp finalHàm khởi tạo và kế thừaÔn tập: phân cấp nhân viên9Đa hình
Khái niệm cơ bản về đa hìnhĐa hình qua giao diệnKiểm tra kiểu lúc chạyToán tử is và asTừ khóa hiệp biếnÔn tập: Bộ xử lý thanh toánTự luyện tập: Trình biên dịch Dart online