update README.md

This commit is contained in:
Ivan Zinchenko 2023-12-30 17:44:16 +05:00
parent 3c92334ba0
commit 1516215382
Signed by: zinch
GPG Key ID: 6D45AA2C8FD6A37E

128
README.md
View File

@ -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 {
<<enumeration>>
+ 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 {
<<Interface>>
+ grab(Item) void
}
class IFeelable {
<<Interface>>
+ setFeel(Feels) void
}
class IFlyable {
<<Interface>>
+ flyTo(Entity) void
}
class IGrabbable {
<<Interface>>
+ getGrabbablePart() String
}
class IMovable {
<<Interface>>
+ 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` возникает, когда у Карлсона кончается топливо.