Объектное моделирование простого приложения - PullRequest
1 голос
/ 12 декабря 2011

У меня путаница в отношении моделирования объектов, которую я проиллюстрирую на примере проекта простой библиотеки ссуд.

В библиотеке есть книги (по одной копии на каждую книгу, чтобы упростить задачу) и покровители.Патроны могут одолжить книгу, если эта книга не передана другому патрону.

Для этого потребуется 3 класса: Книга, Патрон и Кредит.

Книга будет иметь идентификатор и имя.Патрон будет иметь идентификатор и имя.У ссуды будут идентификатор, book_id, patron_id и дата ссуды.

Где будет определен метод ссуды и возврата?Это метод книги, меценат или кредитный объект?

Книга - это тот, кто получает деньги, покровитель - тот, кто дает книгу, а заем - тот, кто хранит все подробности о конкретной операции кредитования.

Зачем действительно нужен класс Займа?Конечно, таблица БД необходима с полями, упомянутыми выше, но с точки зрения инфраструктуры MVC (например, Symfony или Rails) это следует определять как модель?

Я знаю, что это простая и решаемая проблема,но после долгого отсутствия связи с oop design я не могу «правильно» рассмотреть эту проблему!

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Создайте класс, который отвечает за создание объекта Loan.Вы можете позвонить этому LoanCreator или, если вам полезно думать об этом следующим образом, вы можете назвать его библиотекарем.Вы передадите этому новому классу объект Book и Patron, и он создаст заем для вас.Как правило, если вы не уверены, должен ли метод принадлежать определенному классу, возможно, пришло время подумать о создании нового класса.

1 голос
/ 12 декабря 2011

На мой взгляд вам нужно 2 класса

  1. Книга
  2. Патрон

и

loan и *Методы 1012 * должны входить в класс Book, поскольку эти операции выполняются с книгами.Но, как вы сказали, должна быть другая таблица ссуд, чтобы вести эти записи.

При возвращении в MVC они должны быть реализованы в виде моделей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...