Lịch sự kiện
Thuộc phần Lập trình hướng đối tượng trong hành trình Swift của Coddy. Bài học 56 trên 57.
Thử thách
KhóXây dựng bộ lập lịch sự kiện bằng các giao thức tiêu chuẩn. Event là một struct có title, day (1-31), start và end biểu thị giờ. Nó tuân theo Comparable (sắp xếp theo ngày, rồi đến giờ bắt đầu, rồi đến tiêu đề), Hashable và Equatable, chỉ dựa trên tiêu đề và ngày (cùng một sự kiện được nhập hai lần), đồng thời tuân theo CustomStringConvertible với định dạng day 3 09-11 standup. Lớp Scheduler có add(_:), trả về added, duplicate (cùng tiêu đề trong cùng ngày) hoặc conflicts with <title> (một sự kiện đã có trong ngày đó có giờ bị trùng: sự kiện này bắt đầu trước khi sự kiện kia kết thúc). agenda() trả về danh sách sự kiện đã sắp xếp, còn busiestDay() trả về busiest day 3: 5h hoặc no events.
Code được cung cấp đọc các sự kiện từ những dòng có định dạng title,day,start,end và in phản hồi cho từng dòng, sau đó in chương trình nghị sự (mỗi sự kiện trên một dòng) và ngày bận rộn nhất.
Code của bạn nằm trong Event.swift và Scheduler.swift. main.swift chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.
Tự làm thử
// Đoạn code đầu vào/đầu ra được cung cấp sẵn: giữ nguyên
var input: [String] = []
while let line = readLine() { input.append(line) }
let scheduler = Scheduler()
for line in input {
let p = line.split(separator: ",").map(String.init)
print(scheduler.add(Event(title: p[0], day: Int(p[1])!, start: Int(p[2])!, end: Int(p[3])!)))
}
for e in scheduler.agenda() { print(e) }
print(scheduler.busiestDay())
Tất cả bài học trong Lập trình hướng đối tượng
1Lớp và đối tượng
Làm việc với tệpĐịnh nghĩa lớpPhương thức và selfHàm khởi tạoLớp là tham chiếuÔn tập: Thẻ thư viện2Struct và kiểu giá trị
StructNgữ nghĩa giá trịPhương thức thay đổiStruct hay classÔn tập: mặt hàng trong kho5Kế thừa
Lớp conGhi đè phương thứcHàm khởi tạo và superfinal và hệ phân cấpÔn tập: hệ phân cấp nhân viên8Các giao thức tiêu chuẩn
CustomStringConvertibleEquatableComparableHashableÔn tập: Sắp xếp tùy chỉnhTự luyện tập: Playground Swift