관리자 인터페이스
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 105번째.
챌린지
쉬움이전 레슨에서는 Library 클래스에 검색 기능을 추가했습니다. 이제 권한이 있는 사용자가 도서관의 인벤토리를 관리(새 도서 추가 및 기존 도서 삭제)할 수 있도록 하는 관리자 인터페이스를 만들어 보겠습니다.
새로운 Admin 클래스를 도입하고 Library에 관리 기능을 강화할 것입니다:
book.dart: 기존Book클래스를 변경 없이 유지합니다.user.dart: 기존User클래스를 변경 없이 유지합니다.admin.dart: 도서관 관리자를 나타내는 새로운Admin클래스를 생성합니다. 관리자는id(String)와name(String)을 가집니다.toString()을 오버라이드하여Admin [id]: name형식을 반환하도록 합니다.library.dart:Library클래스에 관리 기능을 추가합니다:- 등록된 관리자를 저장할 리스트를 추가합니다.
registerAdmin(Admin admin)- 도서관에 관리자를 등록합니다.addBookAsAdmin(String adminId, Book book)- 관리자가 존재하면 도서를 추가하고adminId added "title"을 출력합니다. 관리자가 존재하지 않으면Unauthorized를 출력합니다.removeBook(String adminId, String isbn)- 관리자가 존재하고 도서가 존재하면 도서관에서 해당 도서를 삭제하고adminId removed "title"을 출력합니다. 관리자가 존재하지 않으면Unauthorized를 출력합니다. 도서가 존재하지 않으면Book not found를 출력합니다.getBookCount()- 도서관의 총 도서 수를 반환합니다.
main.dart: 관리자 인터페이스를 시연합니다.Library를 생성하고 관리자(A001,Sarah Admin)를 등록합니다. 관리자를 사용하여 다음 세 권의 도서를 추가합니다:978-0-13-468599-1,The Pragmatic Programmer,David Thomas978-0-596-51774-8,JavaScript: The Good Parts,Douglas Crockford978-0-13-235088-4,Clean Code,Robert Martin
Total books: X형식으로 출력합니다. 그런 다음 등록되지 않은 관리자 ID인A999로 도서 추가를 시도합니다. 등록된 관리자를 사용하여 두 번째 도서를 삭제합니다. 마지막으로 최종 도서 수를 출력합니다.
예상 출력:
A001 added "The Pragmatic Programmer"
A001 added "JavaScript: The Good Parts"
A001 added "Clean Code"
Total books: 3
Unauthorized
A001 removed "JavaScript: The Good Parts"
Total books: 2직접 해보기
import 'book.dart';
import 'user.dart';
import 'library.dart';
import 'admin.dart';
void main() {
// TODO: 도서관 생성
// TODO: 관리자 생성 및 등록 (A001, Sarah Admin)
// TODO: 관리자를 사용하여 세 권의 도서 추가:
// - 978-0-13-468599-1, The Pragmatic Programmer, David Thomas
// - 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
// - 978-0-13-235088-4, Clean Code, Robert Martin
// TODO: 도서 개수를 "Total books: X" 형식으로 출력
// TODO: 등록되지 않은 관리자 ID A999로 도서 추가 시도
// TODO: 등록된 관리자를 사용하여 두 번째 도서(978-0-596-51774-8) 제거
// TODO: 최종 도서 개수 출력
}