Интерфейсы в реляционной диаграмме UML, вдохновленные SO
-
19-09-2019 - |
Вопрос
Возможный дубликат:
Реляционная диаграмма UML, вдохновленная SO
Я разработал домашнее задание из пост.
Проблема: делать сообщения так же, как в SO, чтобы первое сообщение было вопросом, а остальные сообщения были ответами после вопроса.
Вопрос: Как бы вы улучшили интерфейсы?Облегчит ли задачу какая-нибудь более простая структура данных?
Решение
Ваш первый вопрос меня смущает.UML заставляет меня думать об объектах, а «Таблица сообщений» заставляет меня думать о реляционных базах данных.Какой из них вы имеете в виду?Я предполагаю, что вам нужны объекты.
Вам нужен интерфейс или абстракция, которая представляет как вопросы, так и ответы — возможно, это интерфейс Post.У него будут такие атрибуты, как текст и автор, а также отметка времени публикации.
Поскольку вопрос никогда не предшествует ответу, если у вас есть коллекция экземпляров Post, они будут в правильном порядке, если вы отсортируете их по метке времени.
ОБНОВЛЯТЬ:UML означает объектно-ориентированное программирование.Python является одновременно объектно-ориентированным и функциональным языком.Это означает, что вы сначала будете думать о проблеме с точки зрения объектов.
Думать в терминах объектов означает отбросить заботы о пользовательском интерфейсе и базе данных.Вы проектируете объекты так, чтобы обеспечить необходимое вам поведение.Сначала у вас может быть простой текстовый интерфейс, а для постоянства подойдет сериализация объектов.Но сначала разберитесь с объектами.
Когда вы говорите «интерфейс», я имею в виду интерфейсы Java.Они объявляют сигнатуру класса, но ничего не говорят о реализации.Таким образом, ваш интерфейс Post может иметь реализации вопросов и ответов.
Что содержит все экземпляры Post?Что ими владеет?У меня был бы еще один объект под названием KnowledgeExchange, который владел бы коллекцией сообщений.Пусть он скроет все детали реализации и предоставит методы getQuestion и getAnswers.Не заставляйте своих клиентов знать все эти детали или даже независимо от того, реализуете ли вы это в виде стека или списка.
Как я уже сказал, пока не беспокойтесь о таблицах или постоянстве.Подумайте об объектах.Лучше всего решить всю проблему с помощью объектов, а не только сообщений, вопросов и ответов.