@Ruslan_kulm

Как выбрать классы в ООП?

Здравствуйте.

Во всех учебных пособиях по ООП приводятся простые и понятные примеры классов вроде стиральной машины и вещей, машина может стирать вещи. Обе абстракции не связаны друг с другом, все понятно.

На практике у меня есть запрос, который содержит список устройств и список команд, которые надо выполнить на устройствах.
[
{'device_name': 'device1', 'commands': ['sh run']},
{'device_name': 'device2', 'commands': ['sh run', 'sh ip int brie']}
]
В качестве класса я выбрал device и добавил ему свойство commands_to_execute куда поместил список команд.
Но в реальном мире устройства и команды это разные сущности и тогда нужно создать классы device и command, но я не понимаю как тогда красиво связать их, ведь мне нужно выполнить определенные команды на определенных устройствах.

Как быть в подобной ситуации?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
@quiex
Вообще, здесь все зависит от того, что конкретно делает ваша система и будет ли у нее развитие.

Но, если мыслить объектно, то устройство - это то, чему на вход подают некую команду, он ее выполняет и отдает ответ. Соответственно, вам нужна реализация Device, которая через метод execute(Executable command) принимает объект, который реализует интерфейс Executable. А список команд уже никакого отношения к устройству не имеет, поэтому и хранится должен отдельно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
Всё упирается в Вашу фантазию, как и в учебниках по программированию.
Здесь можно выделить множество классов:
1. класс Array, который содержит список девайсов или команд
2. класс Device, который отображает сущность девайса и содержит список команд
3. класс Command, который отображает сущность команды

примерная имплементация:
class Device {
  name: String
  commands: Array<Command>
}
class Command {
  shell: String
}

Сюда можно зафигачить accessor methods для доступа к данным или другую муть, которую захотите
Ответ написан
anton_reut
@anton_reut
Начинающий веб-разработчик
Почитай что такое Композиция и Агрегация в ООП, многое поймёшь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы