|
|
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Petro123, Значит сущности две - кредит и платёж. Данные по периодам - предстоящим платежам рассчитываются динамически, и не требуют хранения в БД. Платильщика намерено не выделил в отдельную сущность дабы не усложнять задачу. Достаточно ФИО в кредите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 15:40:06 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
javapeckerразница не в этом, а в том, что у вас алгоритм наделен полномочиями решать, как ему считать по кредиту, но мне кажется, это не его забота. Необязательно в конструкторе передавать. т.е. КРЕДИТ должен решать, каким алгоритмом воспользоваться. А при добавлении нового алгоритма мы вносим изменения именно у пользователя алгоритма (КРЕДИТа), он должен знать чем он пользуется. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 15:45:09 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123, ну да. Алгоритм должен только уметь считать, ничего решать ему не надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 15:51:57 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123, Хранить или не хранить рассчитанные суммы по периодам тоже большой вопрос. Например, у вас много клиентов, и вы хотите получить отчет об остатках их задолженностей. А для того чтобы это сделать, нужно рассчитать сначала суммы всех кредитов, потом отнять от них платежи. Это будет очень долго. К тому же, суммы выплат по периодам можно хранить в базе, при этом не выделяя их в отдельные сущности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 15:58:32 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
javapecker, а если алгоритм привязать к типу кредита? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:08:36 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123Значит сущности две - кредит и платёж. Лучше периоды тоже сохранять, хоть они и вычисляются динамически - платежный график является неотъемлемой частью кредитного договора, имеет, так сказать, юридическое значение - в финансовых системах требуется частенько иметь план потока денежных средств. Посчитать годовой план на 10000 кредитов может оказаться непосильной задачей; Для алгоритмов не хватает фабрики - интерфейс+реализация. Конкретная реализация фабрики делается в зависимости от используемого фреймворка: это может быть jndi, инъекция, properties+reflection, что-то еще. Помещать конкретные реализации в enum CreditType - плохая идея Кредит, по идее, не должен себя рассчитывать, в нем только геттеры и сеттеры, если уже решили что это entity. Связка всего вместе - в отдельном классе, CreditBean ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:13:01 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
javapeckerХранить или не хранить рассчитанные суммы по периодам тоже большой вопрос. Например, у вас много клиентов, и вы хотите получить отчет об остатках их задолженностей. Это будет уже новый UseCase, пункт 6 к моей задачи. Задача разрастается))) Подумать над этим тоже интересно. javapecker К тому же, суммы выплат по периодам можно хранить в базе, при этом не выделяя их в отдельные сущности. Что вы имели в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:14:02 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
ivanra, а не подскажите в какой литературе расписаны такие вещи, что от чего лучше отделять и как проектировать в контексте java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:19:23 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123, у алгоритма нет состояния, поэтому alg.setCredit(this) лишнее. Это фактически функция. Если его надо куда-то передавать, то придется создать объект, но если не надо, то зачем вообще нужен getAlgoritm().newInstance()? Алгоритм в таком случае может быть статическим методом класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:19:51 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123, Что вы имели в виду? Что с точки зрения вашей системы все ее объекты смогут обращаться к периодам только через кредит, и никогда напрямую. Вообщем, что период это атрибут сущности, а не самостоятельная сущность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:23:14 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123ivanra, а не подскажите в какой литературе расписаны такие вещи, что от чего лучше отделять и как проектировать в контексте java. соседний топик - Проектирование ИС. Там предметники. А вот, привязывать к Java - лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:26:45 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Новый вариант. Не очень понятно отделение данных Credit от методов CreditBean. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 16:42:02 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123, CreditType наверно лишнее, я бы сделал просто строковое поле, а если нужен справочник, то его должна возвращать фабрика алгоритмов; Между бином и конкретными реализациями алгоритмов не должно быть "сильной" связи, сейчас она есть. Как простейшую реализацию могу предложить хранение в properties карты тип_кредита=класс_расчетов, а в методе фабрики - загрузку классов с использованием reflection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:12:43 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
ivanra, Мне кажется мы немножко по разному представляем задачу. Я исхожу из того, что тип кредита, это его атрибут. Один и тот-же банк, в одно и тоже время может выдавать кредиты двух видов. Вы наверно представляете это как разный режим работы приложения. В моём понятии тип кредита это свойство конкретного экземпляра кредита, определяющий методику его расчёта. Пользователь также должен видеть, что этот кредит аннуитетный, а этот дифференцированный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:27:38 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Alexey123, так может тогда сделать алгоритм атрибутом объекта, и пусть у него будет помимо расчетных метод getType(), который и вернет тип расчета кредита. ivanra Говорит скорее о том, как технически при создании кредита назначить ему алгоритм, поскольку в базе он не хранится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:31:36 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Если кто-то говорит, что расчет хранить не надо, включая периоды, суммы, проценты и так далее - пусть он съест земли. Под страхом расстрела всю динамику убрать, потому как поменялся "алгоритм" и...ну вы поняли, все данные за прошлое неожиданно разошлись с ожиданиями клиента. Очень внимательно надо следить за "алгоритмами" расчета, либо ни в коем случае не МЕНЯТЬ их, а просто заводить новые. либо иметь версию алгоритма(v1, v2, v3) и говорить о версионности, тогда в этом разрезе риски динамики меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:37:23 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Я просто предлагаю хранить в поле "тип кредита" его символьное обозначение. В один прекрасный день банк захочет реализовать какой-нибудь третий алгоритм расчетов. Всё, что для этого понадобится - закодировать новый класс и добавить строчку в ресурс .properties - и всё благодаря слабой связанности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:38:39 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
ОзверинЕсли кто-то говорит, что расчет хранить не надо, включая периоды, суммы, проценты и так далее - пусть он съест земли. Под страхом расстрела всю динамику убрать, потому как поменялся "алгоритм" и...ну вы поняли, все данные за прошлое неожиданно разошлись с ожиданиями клиента. Очень внимательно надо следить за "алгоритмами" расчета, либо ни в коем случае не МЕНЯТЬ их, а просто заводить новые. либо иметь версию алгоритма(v1, v2, v3) и говорить о версионности, тогда в этом разрезе риски динамики меньше. +1 даже больше: ФизЛицо --> КредитнаяКарта ---> Кредит + Транзакция --> ТипОранзакции. ... А мы выбросили кредитку, Физ-Лицо, Банк и ФинансовыеТранзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:47:55 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
кстати табла Транзакции с 2-ой записю: Поле15 - счёт корреспондирующий Поле16 - счёт дебетовый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:51:09 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Petro123, опять понесло) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:52:14 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
javapeckerPetro123, опять понесло) угу. Тебе же кОдить не терпится. Алгоритм, это Договор с клиентом. Вот его в БД и надо хранить. Там все процентные ставки и методы расчёта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 17:55:29 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Petro123, не надо раздувать простую полуучебную задачу до промышленных масштабов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 18:06:26 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
javapeckerPetro123, не надо раздувать простую полуучебную задачу до промышленных масштабов. верно. И механизм рефлекции, фабрики чего бы то ни было) тут тоже не нужен. Но это IMHO ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 18:11:53 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
Petro123, вопрос про ООП, поэтому насчет рефлекта согласен, а фабрики можно оставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 18:18:25 |
|
||
|
Задача ООП
|
|||
|---|---|---|---|
|
#18+
javapecker, я думаю так: вот это самая сложная часть: автор4. Расчёт суммы платежа в текущем периоде (с учётом задолженности) т.к. текущий долг может увеличиться от чего угодно (сняли оплату помесячную за СМСки) Значит лучше табла именно финансовые транзакции. Например часть взять отсюда: http://www.databaseanswers.org/data_models/customers_and_credit_cards/customers_and_credit_cards_with_attributes.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2013, 18:22:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38161189&tid=2129931]: |
0ms |
get settings: |
20ms |
get forum list: |
30ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
64ms |
get topic data: |
24ms |
get forum data: |
6ms |
get page messages: |
122ms |
get tp. blocked users: |
3ms |
| others: | 314ms |
| total: | 597ms |

| 0 / 0 |
