@startuml package com.iluwatar.model.view.viewmodel { class Book { - author : String - description : String - name : String + Book(name : String, author : String, description : String) # canEqual(other : Object) : boolean + equals(o : Object) : boolean + getAuthor() : String + getDescription() : String + getName() : String + hashCode() : int + setAuthor(author : String) + setDescription(description : String) + setName(name : String) + toString() : String } interface BookService { + load() : List {abstract} } class BookServiceImpl { - designPatternBooks : List + BookServiceImpl() + load() : List } class BookViewModel { - bookList : List - bookService : BookService - selectedBook : Book + BookViewModel() + deleteBook() + getBookList() : List + getSelectedBook() : Book + setSelectedBook(selectedBook : Book) } } BookViewModel --> "-bookService" BookService BookServiceImpl --> "-designPatternBooks" Book BookViewModel --> "-bookList" Book BookViewModel --> "-selectedBook" Book BookServiceImpl ..|> BookService @enduml