| 
			| 
					
						| 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-скрипта вполне сравнимы с функционалом многих ЯП высокого уровня. у вас восемь параметров, часть из которых является составными. вы когда-нибудь пробовали запускать консольное приложение с восемью (и более) параметрами, которые надо задавать вручную? а потом читать результат из текстового файла? извините за оффтоп, не смог удержаться. |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  |