Menu
Coddy logo textTech

관리자 인터페이스

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 105번째.

challenge icon

챌린지

쉬움

이전 레슨에서는 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 Thomas
    • 978-0-596-51774-8, JavaScript: The Good Parts, Douglas Crockford
    • 978-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: 최종 도서 개수 출력
}

객체 지향 프로그래밍의 모든 레슨