From 1516215382bd20365e93d77cd42723f72d8edbd1 Mon Sep 17 00:00:00 2001 From: Ivan Zinchenko Date: Sat, 30 Dec 2023 17:44:16 +0500 Subject: [PATCH] update README.md --- README.md | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/README.md b/README.md index 41cfbaf..dae43cd 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,134 @@ graph TD; За историю отвечает класс *StoryTeller*. Он меняет состояние персонажей и отображает их состояние. +## UML диаграмма +```mermaid +classDiagram +direction BT +class Character { + # Feels feel + # Item itemInHand + - Gender gender + - Entity position + - String currentState + + setFeel(Feels) void + + getGender() String + + moveTo(Entity) void + + getState() String + + getPosition() Entity + + getItemInHand() Item + + grab(Item) void + # setState(String) void + # setPosition(Entity) void + - validateFields() void + - getValueForField(Object, Field) String? + - setValueForField(Object, Field, String) void +} +class Container { + - Item innerItem + + getInnerItem() Item +} +class Door { + - boolean isOpen + + closeDoor() void + + openDoor() void +} +class Entity { + # String name + + getName() String +} +class ExitFuelException +class Feels { +<> + + SAD + + SCARY + + RAGE + + DEAD_INSIDE + + ANGRY + + NORMAL + - String feel + + valueOf(String) Feels + + toString() String + + values() Feels[] +} +class FrenBok { + - IGrabbable characterInHand + + pushCharacterBehindItem(Item) void + + moveTo(Entity) void + + grab(Item) void + + grabCharacter(IGrabbable) void +} +class ICanTake { +<> + + grab(Item) void +} +class IFeelable { +<> + + setFeel(Feels) void +} +class IFlyable { +<> + + flyTo(Entity) void +} +class IGrabbable { +<> + + getGrabbablePart() String +} +class IMovable { +<> + + moveTo(Entity) void +} +class Item { + - Character owner + + setOwner(Character) void + + equals(Object) boolean + + getOwner() Character +} +class Karlson { + - Engine engine + + grab(Item) void + + flyTo(Entity) void + + moveTo(Entity) void + + grabFrom(Container) void + + stomp() void + + getGrabbablePart() String +} +class Main { + + main(String[]) void +} +class Malysh { + - Mouth mouth + + moveTo(Entity) void + + speak(String) void + + grab(Item) void +} +class OwnershipException +class StoryTeller { + - FrenBok frenBok + - Door door + - Karlson karlson + - Item meatball + - Container fryingPan + - Item kitchenHob + - Malysh malysh + + play() void +} + +Character --> Entity +Character ..> ICanTake +Character ..> IFeelable +Character ..> IMovable +Container --> Item +Door --> Item +FrenBok --> Character +IGrabbable --> IMovable +Item --> Entity +Karlson --> Character +Karlson ..> IFlyable +Karlson ..> IGrabbable +Malysh --> Character +``` + ## Особенности 4 лабы Есть два исключения: `OwnershipException` и `ExitFuelException`. `OwnershipException` - исключение при взятии чужой вещи. `ExitFuelException` возникает, когда у Карлсона кончается топливо.