update README.md

This commit is contained in:
Ivan Zinchenko 2023-12-23 14:05:20 +03:00
parent 94fa4dae6b
commit 460a535ba0
Signed by: zinch
GPG Key ID: 6D45AA2C8FD6A37E

121
README.md
View File

@ -34,4 +34,123 @@ graph TD;
```
Главный абстрактный класс - Entity, который имеет только имя. От него наследуются предметы и персонажи. Персонажи могут чувствовать *(IFeelabe)*, двигаться *(IMovable)* и брать вещи *(ITakeable)*. Также персонажи имеют гендер *(enum Feels)*.
За историю отвечает класс *StoryTeller*. Он меняет состояние персонажей и отображает их состояние.
За историю отвечает класс *StoryTeller*. Он меняет состояние персонажей и отображает их состояние.
## UML Диаграмма
```mermaid
classDiagram
class Entity {
# String name
+ getName() String
}
class Character {
# Item itemInHand
# Feels feel
- String currentState
- Gender gender
- Entity position
+ setFeel(Feels)* void
+ moveTo(Entity)* void
+ grab(Item)* void
+ getItemInHand() Item
+ getPosition() Entity
+ getGender() String
+ getState() String
# setState(String) void
# setPosition(Entity) void
}
class FrenBok {
- IGrabbable characterInHand
+ grabCharacter(IGrabbable) void
+ setFeel(Feels) void
+ moveTo(Entity) void
+ grab(Item) void
+ pushCharacterBehindItem(Item) void
}
class Karlson {
+ grab(Item) void
+ setFeel(Feels) void
+ moveTo(Entity) void
+ grabFrom(Container) void
+ getGrabbablePart() String
}
class Item {
- Character owner
+ getOwner() Character
+ setOwner(Character) void
}
class Container {
- Item innerItem
+ getInnerItem() Item
}
class Feels {
<<enumeration>>
+ SAD
+ ANGRY
+ SCARY
+ RAGE
+ NORMAL
- String feel
+ values() Feels[]
+ toString() String
+ valueOf(String) Feels
}
class Gender {
<<enumeration>>
- String gender
+ MAN
+ WOMAN
+ valueOf(String) Gender
+ toString() String
+ values() Gender[]
}
class StoryTeller {
- Item door
- Item meatball
- Container fryingPan
- FrenBok frenBok
- Karlson karlson
- Item kitchenHob
+ play() void
}
class ICanTake {
<<interface>>
+ grab(Item) void
}
class IMovable {
<<interface>>
+ moveTo(Entity) void
}
class IFeelable {
<<interface>>
+ setFeel(Feels) void
}
class IGrabbable {
<<interface>>
+ getGrabbablePart() String
}
IGrabbable --|> IMovable
Character --|> Entity
Container --|> Item
FrenBok --|> Character
Item --|> Entity
Karlson --|> Character
Character ..|> IFeelable
Character ..|> IMovable
Character ..|> ICanTake
Karlson ..|> IGrabbable
Character --> Feels
Character --> Gender
```