sd
Постоялец
Offline
|
|
« : 06-10-2011 23:13 » |
|
Все доброго времени суток. В общем есть такое задание: сформировать набор предложений клиенту по целевым кредитам различных банков для оптимального выбора. Учитывать возможность досрочного погашения и/или продления кредитной линии. Реализовать выбор и поиск кредита.
В общем, как я понял это задание: я (пользователь программы) - клиент банка, т.е. банк - кредитор а я - заемщик. Банки могут предоставлять кредиты различных видов. Мне (как клиенту) требуется из множества банков выбрать подходящий кредит с помощью поиска. Т.е. я ввожу параметры поиска (возможность продления, возможность досрочного погашения, процент кредитования, сумма кредита, кредит сроком до..., еще может что-нибудь посоветуете) , а программа выбирает мне по моим запросам подходящие кредиты различных банков. Задача должна решаться с помощью ООП. Поделитесь пожалуйста идеями, как можно решить данную задачу. Я не прошу написать техническое решение данной задачи, с помощью какого либо языка. Просто было бы здорово, если бы подкинули UML диаграмму решения данной проблемы.
P.S. Возможно я не очень подробно изложил то чего хочу, т.к. сам еще не сильно понимаю, но думаю суть ясна. Спасибо.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #1 : 07-10-2011 08:43 » |
|
Задача практически нереализуема, или же потянет за собой огромный шлейф человекочасов для сбора информации.
В банках не существует единой тарифной системы. Информация на сайтах обновляется нерегулярно, хотя к этом у стремятся. Нужно писать под каждый банк свой парсер тарифов
Кроме того, указанные проценты кредита, в основном, замаскированны. Могут не учитываться комиссии при погашении, при выдаче, при ... штрафных санкциях и прочего. Кроме того. Существенную роль влияет срок выдачи кредита при готовности документов. Как часто собирается кредитная комиссия, или же - где принимаются решения - на местном уровне или проходит согласование в центральном. Сумма кредита также играет немаловажную роль. Сможет ли банк потянуть такую сумму. И еще, и еще...
Конечно, что-то простенькое можно наваять. Цифры взять с потолка. Напридумывать комиссии. Напридумывать схемы кредитования, вернее схемы погашения, например - аннуитет, который может считаться по разным формулам и соответственно давать разные результаты. Или например такой вид кредитования, как лизинг, Его рассматривать с какой стороны?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dimka
Деятель
Модератор
Offline
Пол:
|
|
« Ответ #2 : 07-10-2011 09:01 » |
|
еще может что-нибудь посоветуете Вопросы залога, вопросы порядка погашения (аннуитетные платежи или пропорциональные), штрафные санкции, перечень документов для проверки заёмщика. Задача должна решаться с помощью ООП. ООП тут ни при чём. Сначала нужно сконструировать модель, затем выбрать средства реализации, и только потом уже речь пойдёт про ООП или что-то ещё. Для начала напиши обычным текстом сочинение, в котором: - чётко опиши параметры обобщённого кредита, и как параметры конкретного банка накладываются на эту модель обобщённого кредита; - напиши правила (протокол, порядок) подключения банка к системе (какие-то параметры могут оказаться взаимно не согласованными, и как это будет обрабатываться системой); - опиши базу данных о параметрах разных банков и всякие их контактные сведения (базу данных для начала можно описать просто перечнем свдений, которые в ней должны храниться); - определи правила (протокол, порядок) поддержания этих сведений в актуальном состоянии; - чётко перечисли функции пользователя твоей системы (задать параметры, найти, быть может, банковский калькулятор или какие-то подобные опции для лучшего сравнения предложений банков); - опиши порядок работы пользователя с системой (какие функции с какими как связаны, как их может активировать пользователь); - не забудь такой вопрос, как экспорт результатов в какой-нибудь документ (т.е. пользователь что-то искал, выбрал и, например, ему нужен список банков с координатами и их финансовых продуктов, которые он затем захочет обзвонить, объехать - ему это нужно будет на бумажке, или в телефон, или просто по почте выслать). Как видишь, в этом списке пока ещё нет ничего, что бы говорило о языке программирования или среде разработки. Сначала нужно решить общие организационные вопросы, на 80% лежащие вне компьютера и ООП. После получения текста сочинения (которое будет называться концепцией или vision) уже можно начать выстраивать формальные модели, в которых концепция получит уточнение и шлифовку мутных моментов. Затем будет этап выбора технологий и разработки архитектуры для реализации с учётом технических условий (формат доступа, нагрузка, совместимость и т.п.) И только потом разработка. Добавлено через 4 минуты и 41 секунду:Или например такой вид кредитования, как лизинг, Его рассматривать с какой стороны? Я понял автора так, что речь идёт о потребительском/ипотечном кредитовании физических лиц, а не предприятий. Поэтому никаких лизингов, аккредитивов и т.п. (Лизинг - это, кстати, чисто технически есть финансовая аренда, а не заём денежных средств.)
|
|
« Последнее редактирование: 07-10-2011 09:06 от dimka »
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Sla
|
|
« Ответ #3 : 07-10-2011 10:04 » |
|
Если все сведется только к кредитному калькулятору... то, да возможно что и получится... Но - напиши правила (протокол, порядок) подключения банка к системе (какие-то параметры могут оказаться взаимно не согласованными, и как это будет обрабатываться системой); - определи правила (протокол, порядок) поддержания этих сведений в актуальном состоянии; Как раз и потребует огромного числа человеко-часов. Хотя, если этим будет заниматься конкретный человек и только этим, то собрать актуальную информацию можно за Количество банков * (20мин или 30мин) на поиск информации. Кроме того, если этот человек четко сформирует параметры поиска, или местонахождения информации, то процесс обновления можно автоматизировать. Хотя видел инфу, типа: Тарифы.DOC или Тарифы.PDF, т.е информация в неудобном формате для автоматической обработки.
А тут уже не маловажную роль будет играть - опиши базу данных о параметрах разных банков и всякие их контактные сведения (базу данных для начала можно описать просто перечнем свдений, которые в ней должны храниться);
Которую нельзя начинать описывать без - чётко опиши параметры обобщённого кредита, и как параметры конкретного банка накладываются на эту модель обобщённого кредита; Здесь нужно еще и собрать вот эти "параметры конкретного банка".
Понятно, что без пользовательского интерфейса никуда нельзя. Экспорт, импорт, калькуляторы, доступы пользователей и т.д.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
sd
Постоялец
Offline
|
|
« Ответ #4 : 07-10-2011 11:19 » |
|
Парни, спасибо. Но тут все намного проще должно быть (наверное). Мне не требуется написать реальный проект, с которым потом будут работать клиенты. Не стоит так углубляться в тонкости кредитования. Что касается параметров обобщенного кредита, то кроме как процентная ставка, сумма, срок действия, ежемесячная выплата и возможность досрочного погашения или продления я не придумал (хотя, наверное, возможность досрочного погашения или продления сделать параметром банка, а не кредита, но за это будет больше процент). А вот как к кредиту привязать банк - я не знаю. Допустим у меня есть три банка, в каждом из них выдают кредит на квартирку, на образование, на лечение и общепотребительский. В первом банке кроме этих кредитов есть еще, например, кредит на "отдохнуть", во втором - кредит для малого бизнеса, в третьем - кредит на покупку автомобиля. Итого есть 1)кредит на квартирку 2)на образование 3)на лечение 4)общепотребительский 5)кредит на "отдохнуть" 6)кредит для малого бизнеса 7)кредит на покупку автомобиля
Первые 4 кредита есть в каждом банке, но, естественно, отличаются суммой, процентной ставкой и т.д. А дальше, в каждом банке добавляется по одному кредиту. Вопрос: что еще добавить в информацию о кредите и как все это связать с банками?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #5 : 07-10-2011 11:43 » |
|
Вот и есть первая ошибка.. Ты уже влазишь в реализацию не спроектировав систему.
Допустим ты все хочешь сделать по упрощенной схеме. Но и в этом случае путь показанный Dimka не пройти нельзя.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dale
|
|
« Ответ #6 : 07-10-2011 11:50 » |
|
А вот как к кредиту привязать банк - я не знаю. Можно попробовать другой подход - привязать коллекцию кредитов к банку, который их выдает. Тогда банк должен уметь по запросу клиента выдавать набор возможных кредитов (либо все, либо отобранные по какому-то условию). Клиент опрашивает банки, получает набор потенциальных предложений, оценивает по набору критериев и выбирает оптимальный.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
sd
Постоялец
Offline
|
|
« Ответ #7 : 07-10-2011 21:53 » |
|
А вот как к кредиту привязать банк - я не знаю. Можно попробовать другой подход - привязать коллекцию кредитов к банку, который их выдает. Т.е. ты предлогаешь в класса банка создать массива класса кредит, а потом, когда клиент ввел параметры поиска в каждом банке прогонять массив кредитов и выводить подходящие?
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #8 : 07-10-2011 22:48 » |
|
Т.е. ты предлогаешь в класса банка создать массива класса кредит... Нет, поскольку: Я не прошу написать техническое решение данной задачи, с помощью какого либо языка. Просто было бы здорово, если бы подкинули UML диаграмму решения данной проблемы. Читайте внимательнее: я предлагаю агрегировать коллекцию кредитов в банке классов. Будет ли это в действительности массив, связанный список, хэш-таблица или еще десяток-другой возможных контейнеров, я пока еще не знаю; это выяснится в процессе реализации, когда будут достаточно уточнены требования. Пока речь идет лишь об архитектуре верхнего уровня, абстрактной. Массив - чересчур низкоуровневая деталь на данном этапе. ...а потом, когда клиент ввел параметры поиска в каждом банке прогонять массив кредитов и выводить подходящие? Опять же, пока еще рано печься о таких низкоуровневых деталях. Я предлагаю в данный момент заложить в архитектуру, например, паттерн GoF Visitor, а его конкретные реализации уже сами решат, как им обойти структуры данных и по каким критериям выбирать варианты. Кстати, набор критериев можно попробовать реализовать через паттерн Strategy, а способы обхода структур - через паттерн Iterator. Тогда решение получится гибким и легко настраиваемым на конкретные нужды без переписывания массы кода. Кстати, забыл спросить главное: это вопрос по реальному проекту или для курсовой? Если первое, имеет смысл продолжать разговор. Если второе, то я тут зря разоряюсь: смело используйте массив, перебор в цикле и получайте заветную галочку в зачетку.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
sd
Постоялец
Offline
|
|
« Ответ #9 : 07-10-2011 23:01 » |
|
Скорее варианта номер два. Не для курсовой, но проект далеко не реальный и не будет использоваться нигде.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #10 : 07-10-2011 23:17 » |
|
Ну тогда на ваше собственное усмотрение. Если нужно гибкое и легко наращиваемое решение с промышленным качеством, то выше я предложил несколько наметок на эту тему. Если нет, то сойдет и массив.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
zubr
Гость
|
|
« Ответ #11 : 08-10-2011 02:16 » |
|
Если говорить о конкретной реализации привязки кредитов к банкам, то здесь лучше решать через связь таблиц БД. Сама программа должна представлять собой GUI-оболочку, модули для работы с БД и сама БД.
|
|
|
Записан
|
|
|
|
sd
Постоялец
Offline
|
|
« Ответ #12 : 08-10-2011 07:10 » |
|
Не, сама программа должна быть консольной. Только я вот все равно не очень представляю что и как делать.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Модератор
Offline
Пол:
|
|
« Ответ #13 : 08-10-2011 10:07 » |
|
Только я вот все равно не очень представляю что и как делать. sd, написать сочинение на тему по пунктам, изложенным мною выше. Без этого не только ты, а вообще никто на свете не представляет, что и как тебе делать.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
sd
Постоялец
Offline
|
|
« Ответ #14 : 08-10-2011 14:15 » |
|
Вот, написал сочинение. Вот что получилось: -Параметры обобщенного кредита: Процентная ставка Ежемесячные выплаты Возможность досрочного погашения Надобность справки о доходах Залог Поручители Срок выплаты Срок рассмотрения кредита Банк может предоставлять различные кредиты. В каждом банке есть перечень кредитов, предоставляемых этим банком. -Существует три банка, в каждом из которых есть определенные кредиты. Данные о банке (номер телефона, адрес) можно получить по имени банка -Функции пользователя - обычный поиск подходящего кредита по параметрам обобщенного кредита. Если полное соответствие не найдено - программа выводит приблеженные результаты поиска. -Программа представляет из себя консольное приложение, которое начинает выполнение сразу с поиска кредита по нужным параметрам. Найденные кредиты, по желанию пользователя, сохраняются в текстовый файл.
Что дальше? Я извиняюсь за столь глупые вопросы, просто никогда не занимался проектированием, только код писал.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Модератор
Offline
Пол:
|
|
« Ответ #15 : 08-10-2011 20:06 » |
|
sd, непонятно, как в программу поступают данные о трёх банках; кто и как отслеживание изменения в банках и вносит изменения в программу. Ты не указал, есть ли база данных, и что именно в ней хранится. Непонятно, как пользователь вводит параметры запроса, с по которым программа сразу начинает поиск. Не телепатией же. Если полное соответствие не найдено - программа выводит приблеженные результаты поиска. Тоже непонятно. Если результаты ранжируются по релевантности, то нужно описать это при помощи математики.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
sd
Постоялец
Offline
|
|
« Ответ #16 : 09-10-2011 08:45 » |
|
Предполагается, что никаких данных о банках меняться не будет, инфа о банках храниться в текстовом файле. Никаких БД нету.
|
|
|
Записан
|
|
|
|
Dimka
Деятель
Модератор
Offline
Пол:
|
|
« Ответ #17 : 09-10-2011 09:38 » |
|
sd, если ты так будешь невнимательно читать, то программиста из тебя не выйдет.
Я ещё спрашивал, как пользователь будет вводить свой запрос в программу поиска, и каковы правила определения релевантности конкретного ответа на запрос.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #18 : 21-10-2011 08:09 » |
|
консольное приложение консольное приложение? а почему не cmd-файл? уверяю вас, возможности встроенного в винду ws-скрипта вполне сравнимы с функционалом многих ЯП высокого уровня. у вас восемь параметров, часть из которых является составными. вы когда-нибудь пробовали запускать консольное приложение с восемью (и более) параметрами, которые надо задавать вручную? а потом читать результат из текстового файла? извините за оффтоп, не смог удержаться.
|
|
|
Записан
|
|
|
|
|