Интерфейсы в реляционной диаграмме UML, вдохновленные SO

StackOverflow https://stackoverflow.com/questions/1181912

Вопрос

Возможный дубликат:
Реляционная диаграмма UML, вдохновленная SO

Я разработал домашнее задание из пост.

Проблема: делать сообщения так же, как в SO, чтобы первое сообщение было вопросом, а остальные сообщения были ответами после вопроса.

Вопрос: Как бы вы улучшили интерфейсы?Облегчит ли задачу какая-нибудь более простая структура данных?

Это было полезно?

Решение

Ваш первый вопрос меня смущает.UML заставляет меня думать об объектах, а «Таблица сообщений» заставляет меня думать о реляционных базах данных.Какой из них вы имеете в виду?Я предполагаю, что вам нужны объекты.

Вам нужен интерфейс или абстракция, которая представляет как вопросы, так и ответы — возможно, это интерфейс Post.У него будут такие атрибуты, как текст и автор, а также отметка времени публикации.

Поскольку вопрос никогда не предшествует ответу, если у вас есть коллекция экземпляров Post, они будут в правильном порядке, если вы отсортируете их по метке времени.

ОБНОВЛЯТЬ:UML означает объектно-ориентированное программирование.Python является одновременно объектно-ориентированным и функциональным языком.Это означает, что вы сначала будете думать о проблеме с точки зрения объектов.

Думать в терминах объектов означает отбросить заботы о пользовательском интерфейсе и базе данных.Вы проектируете объекты так, чтобы обеспечить необходимое вам поведение.Сначала у вас может быть простой текстовый интерфейс, а для постоянства подойдет сериализация объектов.Но сначала разберитесь с объектами.

Когда вы говорите «интерфейс», я имею в виду интерфейсы Java.Они объявляют сигнатуру класса, но ничего не говорят о реализации.Таким образом, ваш интерфейс Post может иметь реализации вопросов и ответов.

Что содержит все экземпляры Post?Что ими владеет?У меня был бы еще один объект под названием KnowledgeExchange, который владел бы коллекцией сообщений.Пусть он скроет все детали реализации и предоставит методы getQuestion и getAnswers.Не заставляйте своих клиентов знать все эти детали или даже независимо от того, реализуете ли вы это в виде стека или списка.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top