powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Задача ООП
25 сообщений из 54, страница 2 из 3
Задача ООП
    #38160927
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Значит сущности две - кредит и платёж. Данные по периодам - предстоящим платежам рассчитываются динамически, и не требуют хранения в БД. Платильщика намерено не выделил в отдельную сущность дабы не усложнять задачу. Достаточно ФИО в кредите.
...
Рейтинг: 0 / 0
Задача ООП
    #38160941
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerразница не в этом, а в том, что у вас алгоритм наделен полномочиями решать, как ему считать по кредиту, но мне кажется, это не его забота. Необязательно в конструкторе передавать.
т.е. КРЕДИТ должен решать, каким алгоритмом воспользоваться. А при добавлении нового алгоритма мы вносим изменения именно у пользователя алгоритма (КРЕДИТа), он должен знать чем он пользуется. Так?
...
Рейтинг: 0 / 0
Задача ООП
    #38160954
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey123, ну да. Алгоритм должен только уметь считать, ничего решать ему не надо
...
Рейтинг: 0 / 0
Задача ООП
    #38160966
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey123,
Хранить или не хранить рассчитанные суммы по периодам тоже большой вопрос. Например, у вас много клиентов, и вы хотите получить отчет об остатках их задолженностей. А для того чтобы это сделать, нужно рассчитать сначала суммы всех кредитов, потом отнять от них платежи. Это будет очень долго. К тому же, суммы выплат по периодам можно хранить в базе, при этом не выделяя их в отдельные сущности.
...
Рейтинг: 0 / 0
Задача ООП
    #38160995
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker,

а если алгоритм привязать к типу кредита?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public enum CreditType {
	DIFFERENCE(DifferenceAlgoritm.class),ANNUA(AnnuaAlgortim.class);
	
	private Class algoritm;
	
	CreditType(Class algoritm){
		this.algoritm=algoritm;
	}
	
	public Class getAlgoritm(){
		return algoritm;
	}
}

public class Credit {
	....
	public void calculatePeriods(){
		Algortim alg= this.type.getAlgoritm().newInstance();
		alg.setCredit(this);
		this.periods=alg.CalculatePeriods();
	}
...
Рейтинг: 0 / 0
Задача ООП
    #38161002
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey123Значит сущности две - кредит и платёж.
Лучше периоды тоже сохранять, хоть они и вычисляются динамически
- платежный график является неотъемлемой частью кредитного договора, имеет, так сказать, юридическое значение
- в финансовых системах требуется частенько иметь план потока денежных средств. Посчитать годовой план на 10000 кредитов может оказаться непосильной задачей;

Для алгоритмов не хватает фабрики - интерфейс+реализация. Конкретная реализация фабрики делается в зависимости от используемого фреймворка: это может быть jndi, инъекция, properties+reflection, что-то еще. Помещать конкретные реализации в enum CreditType - плохая идея

Кредит, по идее, не должен себя рассчитывать, в нем только геттеры и сеттеры, если уже решили что это entity.
Связка всего вместе - в отдельном классе, CreditBean
...
Рейтинг: 0 / 0
Задача ООП
    #38161006
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerХранить или не хранить рассчитанные суммы по периодам тоже большой вопрос. Например, у вас много клиентов, и вы хотите получить отчет об остатках их задолженностей.
Это будет уже новый UseCase, пункт 6 к моей задачи. Задача разрастается))) Подумать над этим тоже интересно.

javapecker К тому же, суммы выплат по периодам можно хранить в базе, при этом не выделяя их в отдельные сущности.
Что вы имели в виду?
...
Рейтинг: 0 / 0
Задача ООП
    #38161013
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,
а не подскажите в какой литературе расписаны такие вещи, что от чего лучше отделять и как проектировать в контексте java.
...
Рейтинг: 0 / 0
Задача ООП
    #38161015
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey123, у алгоритма нет состояния, поэтому alg.setCredit(this) лишнее. Это фактически функция. Если его надо куда-то передавать, то придется создать объект, но если не надо, то зачем вообще нужен getAlgoritm().newInstance()? Алгоритм в таком случае может быть статическим методом класса.
...
Рейтинг: 0 / 0
Задача ООП
    #38161030
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey123,
Что вы имели в виду?
Что с точки зрения вашей системы все ее объекты смогут обращаться к периодам только через кредит, и никогда напрямую. Вообщем, что период это атрибут сущности, а не самостоятельная сущность.
...
Рейтинг: 0 / 0
Задача ООП
    #38161037
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey123ivanra,
а не подскажите в какой литературе расписаны такие вещи, что от чего лучше отделять и как проектировать в контексте java.
соседний топик - Проектирование ИС. Там предметники.
А вот, привязывать к Java - лишнее.
...
Рейтинг: 0 / 0
Задача ООП
    #38161074
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый вариант. Не очень понятно отделение данных Credit от методов CreditBean.
...
Рейтинг: 0 / 0
Задача ООП
    #38161139
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey123,
CreditType наверно лишнее, я бы сделал просто строковое поле, а если нужен справочник, то его должна возвращать фабрика алгоритмов;
Между бином и конкретными реализациями алгоритмов не должно быть "сильной" связи, сейчас она есть.

Как простейшую реализацию могу предложить хранение в properties карты тип_кредита=класс_расчетов, а в методе фабрики - загрузку классов с использованием reflection.
...
Рейтинг: 0 / 0
Задача ООП
    #38161172
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,
Мне кажется мы немножко по разному представляем задачу. Я исхожу из того, что тип кредита, это его атрибут. Один и тот-же банк, в одно и тоже время может выдавать кредиты двух видов. Вы наверно представляете это как разный режим работы приложения. В моём понятии тип кредита это свойство конкретного экземпляра кредита, определяющий методику его расчёта. Пользователь также должен видеть, что этот кредит аннуитетный, а этот дифференцированный.
...
Рейтинг: 0 / 0
Задача ООП
    #38161179
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey123,
так может тогда сделать алгоритм атрибутом объекта, и пусть у него будет помимо расчетных метод getType(), который и вернет тип расчета кредита. ivanra Говорит скорее о том, как технически при создании кредита назначить ему алгоритм, поскольку в базе он не хранится.
...
Рейтинг: 0 / 0
Задача ООП
    #38161188
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто-то говорит, что расчет хранить не надо, включая периоды, суммы, проценты и так далее - пусть он съест земли. Под страхом расстрела всю динамику убрать, потому как поменялся "алгоритм" и...ну вы поняли, все данные за прошлое неожиданно разошлись с ожиданиями клиента.
Очень внимательно надо следить за "алгоритмами" расчета, либо ни в коем случае не МЕНЯТЬ их, а просто заводить новые. либо иметь версию алгоритма(v1, v2, v3) и говорить о версионности, тогда в этом разрезе риски динамики меньше.
...
Рейтинг: 0 / 0
Задача ООП
    #38161189
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я просто предлагаю хранить в поле "тип кредита" его символьное обозначение.
В один прекрасный день банк захочет реализовать какой-нибудь третий алгоритм расчетов. Всё, что для этого понадобится - закодировать новый класс и добавить строчку в ресурс .properties - и всё благодаря слабой связанности.
...
Рейтинг: 0 / 0
Задача ООП
    #38161207
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинЕсли кто-то говорит, что расчет хранить не надо, включая периоды, суммы, проценты и так далее - пусть он съест земли. Под страхом расстрела всю динамику убрать, потому как поменялся "алгоритм" и...ну вы поняли, все данные за прошлое неожиданно разошлись с ожиданиями клиента.
Очень внимательно надо следить за "алгоритмами" расчета, либо ни в коем случае не МЕНЯТЬ их, а просто заводить новые. либо иметь версию алгоритма(v1, v2, v3) и говорить о версионности, тогда в этом разрезе риски динамики меньше.
+1
даже больше:
ФизЛицо --> КредитнаяКарта ---> Кредит
+
Транзакция --> ТипОранзакции.
...
А мы выбросили кредитку, Физ-Лицо, Банк и ФинансовыеТранзакции.
...
Рейтинг: 0 / 0
Задача ООП
    #38161213
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати табла Транзакции с 2-ой записю:
Поле15 - счёт корреспондирующий
Поле16 - счёт дебетовый
...
Рейтинг: 0 / 0
Задача ООП
    #38161214
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
опять понесло)
...
Рейтинг: 0 / 0
Задача ООП
    #38161223
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerPetro123,
опять понесло)
угу. Тебе же кОдить не терпится.
Алгоритм, это Договор с клиентом. Вот его в БД и надо хранить. Там все процентные ставки и методы расчёта.
...
Рейтинг: 0 / 0
Задача ООП
    #38161244
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
не надо раздувать простую полуучебную задачу до промышленных масштабов.
...
Рейтинг: 0 / 0
Задача ООП
    #38161258
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerPetro123,
не надо раздувать простую полуучебную задачу до промышленных масштабов.
верно.
И механизм рефлекции, фабрики чего бы то ни было) тут тоже не нужен.
Но это IMHO )
...
Рейтинг: 0 / 0
Задача ООП
    #38161265
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, вопрос про ООП, поэтому насчет рефлекта согласен, а фабрики можно оставить.
...
Рейтинг: 0 / 0
Задача ООП
    #38161272
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker,
я думаю так:
вот это самая сложная часть:
автор4. Расчёт суммы платежа в текущем периоде (с учётом задолженности)
т.к. текущий долг может увеличиться от чего угодно (сняли оплату помесячную за СМСки)
Значит лучше табла именно финансовые транзакции.
Например часть взять отсюда:
http://www.databaseanswers.org/data_models/customers_and_credit_cards/customers_and_credit_cards_with_attributes.htm
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Задача ООП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]