Сценарий удаления чего-либо из библиотеки по идентификатору
Клиент библиотеки посылает библиотеке запрос на удаление элемента из библиотеки. Класс библиотеки просматривает весь список своих элементов и ищет такой элемент, ID которого совпадает с запрашиваемым. Если такой элемент находится (используется фрейм alt), то из списка этот элемент удаляется, а клиенту возвращается значение true (элемент на самом деле удален). Если же в списке не было найдено никакого подходящего элемента, то никакого элемента не было удалено, и клиенту возвращается значение false.
@startuml
LibraryClient > Library : deleteEntity(id : long) loop all elements in list
Library > LibraryEntityList : getEntity
LibraryEntityList > Library : anEntity
alt anEntity.id == id
Library > LibraryEntityList : deleteFromList(entity : LibraryEntity) Library > LibraryClient : true
end end
Library > LibraryClient : false
@enduml
Коррекция диаграммы классов
После создания диаграмм последовательностей, стало ясно, что диаграмма классов нуждается в доработке: появился класс LibraryClient, который связан отношением зависимости с классом Library. Изменились возвращаемые значения в операциях поиска в классе Library.
@startuml skinparam classAttributeIconSize 0
interface LibraryEntity { +getID() : long
+getName() : String
}
abstract class AbstractBook {
ID : long
name : String
}
class Book { ISBN : String
author : String [1..*]
year : int
}
class Magazine {
datePublication: LocalDate
publisher : String
}
note right: LocalDate is from DateTime API in Java 8
class Library {
numberOfEntities : long
name : String
+findEntityByName(name : String) : ResultEntityList
+findEntityByID(id : long) : ResultEntityList
+addNewEntity(entity : LibraryEntity) : boolean
+deleteEntity(id : long) : boolean
}
class LibraryClient
LibraryEntity "0..*" <> "1" Library
LibraryEntity <|.. AbstractBook
AbstractBook <| Book
AbstractBook <| Magazine
LibraryClient ..> Library
@enduml
Do'stlaringiz bilan baham: |