DEV.BG Форуми
Май 20, 2012, 15:16:18 *
Добре дошъл/дошла, Гост. Моля, въведи своето потребителско име или се регистрирай.

Влез с потребителско име, парола и продължителност на сесията
 
   Начало   Помощ Търси Вход Регистрирай се  
Страници: [1]   Надолу
  Изпечатай  
Автор Тема: Project-5-Set of Databases  (Прочетена 1933 пъти)
0 Членове и 1 Гост преглежда(т) тази тема.
ceco
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Пол: Мъж
Публикации: 26


343735961
Профил WWW Ел. поща
« -: Май 18, 2008, 22:50:57 »

[color=#0000BF:14irsro9][size=120:14irsro9]Тук може да задавате всякакви въпроси свързани с Проект 5 Множество от Бази Данни.[/size:14irsro9][/color:14irsro9]

Молбата ми към Вас е въпросите да са колкото може по-конкретни, дори и това да е причина да зададете повече на брой въпроси. Когато обаче всеки въпрос е за нещо малко ще е по-лесно да Ви отговоря и да ме разберете.

Освен това ще е добре да уведомите колегите си за форума. Ако те попитат тук, някой друг, който пише същия проект ще види отговора на въпроса.

Дори и да не почнете да пишете веднага проекта, може предварително да задавате всякакви въпроси по условието, за да го разберете. Ако седнете да пишете проекта 1 ден преди защитата и тогава ми зададете наведнъж 1000 въпроса във форума, няма да е невероятно ако не Ви отговоря на всички.

[color=#0000BF:14irsro9][size=120:14irsro9]Кратко разяснение към изискванията за този проект:[/size:14irsro9][/color:14irsro9]

Освен всичко друго изисква се UML диаграма на класовете в системата. Няма да е проблем ако не е прекалено вярна диаграмата. Важно е визуално да се видят връзките между отделните класове. Това ще Ви помогне и при проектирането на системата.

[color=#0000BF:14irsro9][size=120:14irsro9]Допълнения и разяснения относно условието:[/size:14irsro9][/color:14irsro9]

Проекта е специфичен и е ясно, че не може (пък и няма нужда) всеки да си инсталира всички от изредените в условието бази данни. Целта на курса е да проектирате системата. Да измислите и имплементирате класовете, интерфейсите, връзките и взаимодействията между тях. Да реализирате проекта като се стараете да удовлетворите изискванията в условието.

Там където се викат заявките може да пишете на конзолата например:
[color=#004000:14irsro9][i:14irsro9][code:14irsro9]cout << "Executing query #query string# against #database type# database";
Console.WriteLine("Executing query #query string# against #database type# database");
System.out.println("Executing query #query string# against #database type# database");[/code:14irsro9][/i:14irsro9][/color:14irsro9]

[size=120:14irsro9][color=#BF0040:14irsro9]Успех с проекта![/color:14irsro9][/size:14irsro9]
« Последна редакция: Май 21, 2008, 21:44:40 от ceco » Активен
sedrik
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 13


Профил Ел. поща
« Отговор #1 -: Май 19, 2008, 23:11:24 »

А къде можем да намерим и самите проекти?
Активен
ceco
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Пол: Мъж
Публикации: 26


343735961
Профил WWW Ел. поща
« Отговор #2 -: Май 20, 2008, 15:09:46 »

Проектите и разпределението са на сайта на курса http://patterns.dev.bg в секцията Новини. Извинявам се за краткото забавяне.

Проектите са за 30 точки. Преподавателския екип реши, че проектът за базите данни е по-труден. Следователно той ще дава 10 точки повече, т.е. 40.

И е по желание, т.е. ако някой има нужда от повече точки може да прави него.
« Последна редакция: Май 20, 2008, 16:08:59 от ceco » Активен
sedrik
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 13


Профил Ел. поща
« Отговор #3 -: Май 20, 2008, 15:32:03 »

Цитат на: "ceco"
Проектите и разпределението са на сайта на курса http://patterns.dev.bg в секцията Новини.

Благодаря!
Активен
omeganet
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 10


Профил Ел. поща
« Отговор #4 -: Май 27, 2008, 19:46:44 »

Не мога да схвана идеята с дървовидната структура от бази данни? Аз го разбирам, имаме един главен клас, зад който стоят други класове (различните видове бази данни). На този главен клас му се подава заявка, която трябва да се обработи то всички бази данни и след това резултатите се обединяват. Ако може малко повече разяснения на тази част.

Също искам да питам за заявките. Ние трябва да си създадем наши класове, които представляват заявка и всяка от базите данни трябва по свой собствен начин да я изпълни и след това да върне типизиран резултат?
Активен
ceco
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Пол: Мъж
Публикации: 26


343735961
Профил WWW Ел. поща
« Отговор #5 -: Май 28, 2008, 00:34:47 »

@omeganet

[color=#0040FF:2km7vto1]1. Относно структурата.[/color:2km7vto1]
Дървовидната структура е изградена от инстанции, не от класове. Предполагам си се объркал. Примерно може да имаме следната структура:
[code:2km7vto1]
composite1
    oracle-db
    mssql-db
    composite2
        mysql-db
        xml-file1
    xml-file2
    excel-file
[/code:2km7vto1]
composite1 и composite2 са съставни, а останалите са крайни елементи. Всеки от тях е инстанция на някакъв клас. Какви да бъдат тези класове и как да построиш структурата, за да ти е удобно да изпълниш изискванията е твоя задача.

[color=#0040FF:2km7vto1]2. Относно справката към структурата[/color:2km7vto1]
Справката се подава на корена на дървовидната структура. Т.е. на инстанция, а не на клас. И да, както е написано в 6-та точка от условието на проекта - резултатите се обединяват при обхождане на всички елементи от структурата. Думичките във въпроса ти са почти същите като в тази точка от условието. Трябва да се разгледа обаче не само случая с обединяване, а и ако имаме агрегатна функция (6 ii от условието). Реализация на 2-3 агрегатни функции като Min, Max например е достатъчна. Трябва да имаме и сливане на резултати също.

*Разбира се, ако проектираш библиотеката така, че лесно да може да се добавя нова агрегатна функция (което не е в изискванията за проекта) ще получиш разни бонус точки, ако не стигнеш максимума от 40 за този проект. Изобщо - считайте, че освен изискваната функционалност, всяка допълнително проектирана и реализирана такава също се награждава.

[color=#0040FF:2km7vto1]3. Относно самите справки[/color:2km7vto1]
Различните бази данни имат различни езици за заявки. Т.е. заявката трябва да се преведе до съответния език на конкретната база данни, за да може да се изпълни. Как да стане това и дали ще има нужда от класове решаваш ти. Важното е да изпълнят изискванията и по-конкретно:
1) лесно добавяне на нова база данни от клиентите на библиотеката
2) лесно добавяне на справка от клиентите на библиотеката
Достатъчно е да се реализира една конверсия към конкретен език за конкретна база данни.

[color=#0040FF:2km7vto1]4. Относно вида на резултата[/color:2km7vto1]
В условието няма изисквания за вида на резултата - т.е. дали да е типизиран или не. Под нетипизиран се разбира примерно untyped DataSet модела в .Net например. Важно е все пак да се демонстрира, че лесно можем да покажем резултатите. В изискванията на проекта няма точка, която твърди самите резултати да са типизирани, но ако така ти е по-лесно или смяташ, че е по-смислено - направи го по този начин!

Предполагам интересна би била лекцията и по-скоро кода за Visitor шаблона. Можеш да ги погледнеш, когато те бъдат качени на сайта Усмивчица
Активен
ivelin
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 7


Профил Ел. поща
« Отговор #6 -: Юни 01, 2008, 11:12:00 »

UML диаграми, документация(javadoc и нещо като design document) и код на библеотеката достатъчно ли е за защитата? По точно, трябва ли ни нещо като потребителски интерфейс или няколко test cases с които да покажем как работи.

Да кажем, че в моят проект съм имплементирал клас подобен на org.hibernate.Criteria и в рамките на библеотеката така си представям заявките. Преди да изпълня една заявка аз я превеждам на майчиния език на базата към която ще я изпълнявам. Това "превеждане" необходимо ли е да го имплементирам? Вижда ми се като доста времеотнемаща задача.

Въобще необходимо ли е да се имплементират повечето методи или сигнатура и кратък javadoc е достатъчен?
Активен

[size=85]Това е България. Тук Темида е проститутка, но с юридическо образование. Взето с връзки,дупе или пари. [/size]
ceco
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Пол: Мъж
Публикации: 26


343735961
Профил WWW Ел. поща
« Отговор #7 -: Юни 01, 2008, 12:52:54 »

[color=#0040FF:8zv2sbpk]1. Относно документацията:[/color:8zv2sbpk]
Изисквам UML диаграма, както съм написал в първия си пост във форума. Не изисквам Javadoc. Естествено код на библиотеката е нужен. Даже трябва да се компилира Усмивчица

[color=#0040FF:8zv2sbpk]2. Относно демонстрацията, че кодът работи:[/color:8zv2sbpk]
Няма нужда от потребителски интерфейс, но ако на някой така му е по-удобно - все ми е тая. Това, което ще гледам би се побрало точно в няколко test case-ове, както ти си казал. Даже така ще е перфектно!

[color=#0040FF:8zv2sbpk]3. Относно интерфейсът орг.алабал
Изискването е Вие да си проектирате системата. Това означава, че всеки клас и интерфейс (и структура, ако езикът Ви го поддържа) трябва да са дефинирани от ВАС! В противен случай се отнемат точки. Как да си решиш проблема: вземи си тези методи, които ти трябват, напиши си свой интерфейс, кръсти го с по-хубаво име и си готов.

[color=#0040FF:8zv2sbpk]4. Относно превода към майчиния език на базата данни.[/color:8zv2sbpk]
Необходимо е преди всичко да организираш класовете така, че да са изпълнени изисквания 2 и 5. Разширяемостта на приложението е важна. В случая от значение е, когато клиента на библиотеката иска да си добави нова база данни да може лесно да имплементира конверсия към нейния майчин език Усмивчица

[color=#0040FF:8zv2sbpk]5. Пояснение-допълнение към въпроса кое е нужно да се имплементира и кое е достатъчно да пише по конзолата?[/color:8zv2sbpk]
5.1. Трябва да се имплементира и да работи сливането на резултатите.
5.2. Освен това 1-2 агрегатни функции.
5.3. Една конверсия към конкретен език за конкретна база данни. Естествено, че е тежка задача, затова може да ограничиш по удобен за теб начин поддържания език. Например SELECT column1, column2 FROM tableName WHERE column3 = @parameter. Не съм писал, че трябва да се поддържат JOIN-ове например. Или дори ORDER BY клаузи.
Може би не съм написал ясно, но да обобщя малко по-строго казаното в точка 6 от условието: искам обикновен SELECT, който да избира определени колони (или със * всички), WHERE клауза за параметри и агрегатни функции. Това е от гледна точка на на езика и всичко свързано с конверсията му.

[color=#0040FF:8zv2sbpk]6. Подсказка как да демонстрираме работата с някаква база данни при положение, че все пак няма да имаме истинска такав
Базата данни трябва да връща резултати. В първия ми пост е казано да изпишем на конзолата каква заявка изпълняваме към каква база данни. За да покажем как се обработват (сливане, агрегатни функции) резултатите можем да създадем такива ръчно с произволни измислени стойности и да ги върнем.
Активен
ivelin
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 7


Профил Ел. поща
« Отговор #8 -: Юни 02, 2008, 01:36:13 »

[quote:2gln56uy]6. Подсказка как да демонстрираме работата с някаква база данни при положение, че все пак няма да имаме истинска такав
Активен

[size=85]Това е България. Тук Темида е проститутка, но с юридическо образование. Взето с връзки,дупе или пари. [/size]
ceco
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Пол: Мъж
Публикации: 26


343735961
Профил WWW Ел. поща
« Отговор #9 -: Юни 02, 2008, 13:59:41 »

Съгласен съм, че така е доста по-добре. Проблема е, че голяма част от студентите едва ли са запознати с Unit Testing, TDD, Classic и Mocking Testing и Mocking фреймуърци.

Най-добре е да се използват strong-typed mocking frameworks като EasyMock, както е посочил ivelin. За .NET разработчиците препоръчвам да не се ползва порта на същия EasyMock за .NET, а RhinoMocks. С NUnit, разбира се Усмивчица

Проблема е, че сигурно няма да бъдат инсталирани на тези виртуални машини, на които ще се проверяват проектите... така, че остава по-простия вариант...
Активен
omeganet
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Публикации: 10


Профил Ел. поща
« Отговор #10 -: Юни 03, 2008, 11:57:59 »

Разгледах кода на шаблона Visitor и имам следния въпрос. 1) Заявките трябва да могат да се въвеждат в конзолата и да се изпълняват или 2) може да си създадем различни класове (всеки клас за отделна заявка) и посредством този шаблон да ги изпълняваме? Защото, четейки .doc файла на проекта, оставам с впечатление за 2), но четейки мненията в тази тема, оставам с впечатление за 1)?
Активен
ceco
Нови
*

Приноси: +0/-0
Неактивен Неактивен

Пол: Мъж
Публикации: 26


343735961
Профил WWW Ел. поща
« Отговор #11 -: Юни 03, 2008, 19:03:37 »

Не ми трябва взаимодействие с конзолата. Не искам интерактивно приложение.

Без значение какво решиш да ти е справката - стринг или обект - създава се в някакъв мейн метод (или тест кейс метод) и се изпълнява. Важно е да може клиентите да могат да си добавят лесно собствена справка, както пише в условието.
Активен
Страници: [1]   Нагоре
  Изпечатай  
 
Отиди на:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!