Министерство образования и науки Украины
НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИТЕТ
«ХАРЬКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ»
КАФЕДРА КОМПЬЮТЕРНОГО МОНИТОРИНГА И ЛОГИСТИКИ
КУРСОВАЯ РАБОТА
На тему: «Управление базой данных на языке программирования С+»
Выполнила студент гр. ЭИМ-39
Вычисенко М.А.
Руководитель: Клименко А.А.
Харьков 2011
Содержание
Введение
1. Паттерны проектирования
1.1 Абстрактная фабрика
1.2 Репозитории
2. Анализ предметной области
3. Разработка пользовательского интерфейса
Заключение
Список использованной литературы
Введение
Объектно-ориентированное или объектное программирование (в дальнейшемООП) — парадигма программирования, в которой основными концепциями являются понятияобъектов и классов (либо, в менее известном варианте языков с прототипированием,- прототипов).
ООП возникло в результате развития идеологии процедурного программирования,где данные и подпрограммы (процедуры, функции) их обработки формально не связаны.Для дальнейшего развития объектно-ориентированного программирования часто большоезначение имеют понятия события (так называемое событийно-ориентированное программирование)и компонента (компонентное программирование, КОП).
Формирование КОП от ООП произошло, как случилось формированиемодульного от процедурного программирования: процедуры сформировались в модули- независимые части кода до уровня сборки программы, так объекты сформировалисьв компоненты — независимые части кода до уровня выполнения программы. Взаимодействиеобъектов происходит посредством сообщений. Результатом дальнейшего развития ООП,по-видимому, будет агентно-ориентированное программирование, где агенты — независимыечасти кода на уровне выполнения. Взаимодействие агентов происходит посредством изменениясреды, в которой они находятся.
Первым языком программирования, в котором были предложены принципыобъектной ориентированности, была Симула. В момент своего появления (в 1967 году),этот язык программирования предложил поистине революционные идеи: объекты, классы,виртуальные методы и др., однако это всё не было воспринято современниками как нечтограндиозное. Тем не менее, большинство концепций были развиты Аланом Кэйем и ДэномИнгаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированнымязыком программирования.
база язык программирование паттерн
В настоящее время количество прикладных языков программирования(список языков), реализующих объектно-ориентированную парадигму, является наибольшимпо отношению к другим парадигмам. В области системного программирования до сих порприменяется парадигма процедурного программирования, и общепринятым языком программированияявляется язык C. Хотя при взаимодействии системного и прикладного уровней операционныхсистем заметное влияние стали оказывать языки объектно-ориентированного программирования.
История возникновения и развития технологий баз данных можетрассматриваться как в широком, так и в узком аспекте. В широком аспекте понятиеистории баз данных обобщается до истории любых средств, с помощью которых человечествохранило и обрабатывало данные. В таком контексте упоминаются, например, средстваучёта царской казны и налогов в древнем Шумере (4000 г. до н.э.), узелковая письменность инков — кипу, клинописи, содержащие документы Ассирийского царстваи т.п. Следует помнить, что недостатком этого подхода является размывание понятия«база данных» и фактическое его слияние с понятиями «архив»и даже «письменность». История баз данных в узком аспекте рассматриваетбазы данных в традиционном (современном) понимании. Эта история начинается с 1955 г., когда появилось программируемое оборудование обработки записей. Программное обеспечение этоговремени поддерживало модель обработки записей на основе файлов. Для хранения данныхиспользовались перфокарты.
Оперативные сетевые базы данных появились в середине 1960-х.Операции над оперативными базами данных обрабатывались в интерактивном режиме спомощью терминалов. Простые индексно-последовательные организации записей быстроразвились к более мощной модели записей, ориентированной на наборы. За руководствоработой DBTG (Data Base Task Group), разработавшей стандартный язык определенияданных и манипулирования данными, Чарльз Бахман получил Тьюринговскую премию. Вэто же время в сообществе баз данных COBOL была проработана концепция схем баз данныхи концепция независимости данных.
Следующий важный этап связан с появлением в начале 1970-х реляционноймодели данных, благодаря работам Эдгара Ф. Кодда. Работы Кодда открыли путь к теснойсвязи прикладной технологии баз данных с математикой и логикой. За свой вклад втеорию и практику Эдгар Ф. Кодд также получил премию Тьюринга. Сам термин database(база данных) появился в начале 1960-х гг., и был введён в употребление на симпозиумах,организованных фирмой SDC (System Development Corporation) в 1964 и 1965 гг. [8]
1. Паттерны проектирования
В разработке программного обеспечения, шаблон проектированияили паттерн (англ. design pattern) — повторимая архитектурная конструкция, представляющаясобой решение проблемы проектирования в рамках некоторого часто возникающего контекста.Обычно шаблон не является законченным образцом, который может быть прямо преобразованв код; это лишь пример решения задачи, который можно использовать в различных ситуациях.Объектно-ориентированные шаблоны показывают отношения и взаимодействия между классамиили объектами, без определения того, какие конечные классы или объекты приложениябудут использоваться.
«Низкоуровневые» шаблоны, учитывающие специфику конкретногоязыка программирования, называются идиомами. Это хорошие решения проектирования,характерные для конкретного языка или программной платформы, и потому не универсальные.На наивысшем уровне существуют архитектурные шаблоны, они охватывают собой архитектурувсей программной системы. Алгоритмы по своей сути также являются шаблонами, но непроектирования, а вычисления, так как решают вычислительные задачи.
1.1 Абстрактная фабрика
Абстрактная фабрика (англ. Abstract factory) — порождающий шаблонпроектирования, позволяющий изменять поведение системы, варьируя создаваемые объекты,при этом сохраняя интерфейсы. Он позволяет создавать целые группы взаимосвязанныхобъектов, которые, будучи созданными одной фабрикой, реализуют общее поведение.Шаблон реализуется созданием абстрактного класса Factory, который представляет собойинтерфейс для создания компонентов системы (например, для оконного интерфейса онможет создавать окна и кнопки). Затем пишутся наследующиеся от него классы, реализующиеэтот интерфейс.
Цель
Предоставляет интерфейс для создания семейств взаимосвязанныхили взаимозависимых объектов, не специфицируя их конкретных классов.
Плюсы
· изолирует конкретные классы;
· упрощает замену семейств продуктов;
· гарантирует сочетаемость продуктов.
Минусы
· сложно добавить поддержку нового вида продуктов.
Применимость
Система не должна зависеть от того, как создаются, компонуютсяи представляются входящие в нее объекты. Входящие в семейство взаимосвязанные объектыдолжны использоваться вместе и вам необходимо обеспечить выполнение этого ограничения.Система должна конфигурироваться одним из семейств составляющих ее объектов. Требуетсяпредоставить библиотеку объектов, раскрывая только их интерфейсы, но не реализацию.
Пример С+
using System;
class MainApp
{
public static void Main ()
{
// Abstract factory#1
AbstractFactory factory1= new ConcreteFactory1 ();
Client c1 = new Client(factory1);
c1.run ();
// Abstract factory#2
AbstractFactory factory2= new ConcreteFactory2 ();
Client c2 = new Client(factory2);
c2.run ();
// Wait for user input
Console. Read ();
}
}
// «AbstractFactory»
abstract class AbstractFactory
{
public abstract AbstractProductACreateProductA ();
public abstract AbstractProductBCreateProductB ();
}
// «ConcreteFactory1»
class ConcreteFactory1:AbstractFactory
{
public override AbstractProductACreateProductA ()
{
return new ProductA1();
}
public override AbstractProductBCreateProductB ()
{
return new ProductB1();
}
}
// «ConcreteFactory2»
class ConcreteFactory2:AbstractFactory
{
public override AbstractProductACreateProductA ()
{
return new ProductA2();
}
public override AbstractProductBCreateProductB ()
{
return new ProductB2();
}
}
// «AbstractProductA»
abstract class AbstractProductA
{
}
// «AbstractProductB»
abstract class AbstractProductB
{
public abstract voidInteract (AbstractProductA a);
}
// «ProductA1»
class ProductA1: AbstractProductA
{
}
// «ProductB1»
class ProductB1: AbstractProductB
{
public override voidInteract (AbstractProductA a)
{
Console. WriteLine(this. GetType (). Name +
" interacts with" + a. GetType (). Name);
}
}
// «ProductA2»
class ProductA2: AbstractProductA
{
}
// «ProductB2»
class ProductB2: AbstractProductB
{
public override voidInteract (AbstractProductA a)
{
Console. WriteLine(this. GetType (). Name +
" interacts with" + a. GetType (). Name);
}
}
// «Client»- the interaction environment of the products
class Client
{
private AbstractProductAabstractProductA;
private AbstractProductBabstractProductB;
// Constructor
public Client (AbstractFactoryfactory)
{
abstractProductB =factory. CreateProductB ();
abstractProductA =factory. CreateProductA ();
}
public void Run ()
{
abstractProductB. Interact(abstractProductA);
}
}
/>
1.2 Репозитории
/>
Посредничает между уровнями области определения и распределенияданных (domain and data mapping layers), используя интерфейс, схожий с коллекциямидля доступа к объектам области определения.
Система со сложной моделью области определения может быть упрощенапри помощи дополнительного уровня, например Data Mapper, который бы изолировал объектыот кода доступа к БД. В таких системах может быть полезным добавление ещё одногослоя абстракции поверх слоя распределения данных (Data Mapper), в котором бы былсобран код создания запросов. Это становится ещё более важным, когда в области определениямножество классов или при сложных, тяжелых запросах. В таких случаях добавлениеэтого уровня особенно помогает сократить дублирование кода запросов.
Паттерн Repository посредничает между слоем области определенияи слоем распределения данных, работая, как обычная колекция объектов области определения.Объекты-клиенты создают описание запроса декларативно и направляют их к объекту-репозиторию(Repository) для обработки. Объекты могут быть добавлены или удалены из репозитория,как будто они формируют простую коллекцию объектов. А код распределения данных,скрытый в объекте Repository, позаботится о соответсвующих операциях в незаметнодля разработчика. В двух словах, паттерн Repository инкапсулирует объекты, представленыыев хранилище данных и операции, производимые над ними, предоставляя более объектно-ориентированноепредставление реальных данных. Repository также преследует цель достижения полногоразделения и односторонней зависимости между уровнями области определения и распределенияданных.
/>2. Анализ предметной области
Предметной областью даннойкурсовой работы является магазин фотоаппаратуры с большим ассортиментом товаров.Для удобства работы «персонала» создана база данных в Microsoft Access 2003 с поддерживаемой целостностью данных.
/>
В ней разработаны основные критерии, по которым оценивают и выбираютфотокамеры:
· цена;
· производитель;
· тип;
· габариты;
· вес;
· светочувствительность диафрагмы;
· скорость затвора/выдержка и другие.
Еще одним важным аспектом в разработке базы данных является клиентскаябаза. С течением времени на основании этой базы можно будет разработать выгоднуюсистему скидок или дисконтную систему, что увеличит доходы предприятия и привлечетновых клиентов.
3. Разработка пользовательского интерфейса
Сегодня ни для кого не секрет, что графический пользовательскийинтерфейс любого программного продукта является одним из ключевых факторов его популярности.Времена, когда связь между пользователем и приложением повсеместно устанавливаласьпри помощи командной строки, практически безвозвратно канули в лету, уступив местографическому пользовательскому интерфейсу (GUI от Graphical User Interface).
Создание грамотного пользовательского интерфейса — процесс трудоемкийи требующий максимального внимания к деталям. Создаваемый интерфейс должен максимальнореализовывать возможности программы, но вместе с тем не перегружать пользователяобилием меню, кнопок, изображений и текста.
Даже самое мощное программное обеспечение, спроектированное талантливейшимиинженерами и написанное самыми искусными программистами, без удобной организациивзаимодействия с пользователем рискует так и остаться невостребованным.
Краеугольным камнем удобства программы либо интернет-сайта являетсяего быстрота, которая достигается путем подробного изучения функций продукта и разработкимаксимально эффективного, интуитивно-понятного меню навигации, грамотным использованиемиконок (ico), при котором пользователь не тратит время на поиски требуемой ссылки.
На практике программирование Windows-приложений предполагаетэкстенсивное использование различных инструментальных средств и мастеров, которыенамного упрощают этот процесс Однако все указанные средства автоматизации заслоняютто, что лежит в основе создания графического пользовательского интерфейса Поэтомусначала мы рассмотрим основы создания графических пользовательских интерфейсов Инымисловами, мы научимся создавать простые приложения Windows с самого начала, пользуясьтолько комплексом инструментальных средств разработки программ NET Framework SDKЭто значит, что вначале мы будем создавать простые приложения Windows без применениякаких-либо специальных сервисных программ Будут рассмотрены основы рисования с помощьюWindows Forms (Формы Windows) с применением шрифтов и кистей, а также необходимыеобработчики событий Мы объясним принципы обработки событий в Windows Forms (ФормыWindows) и реализуем обработчики событий мыши.
С помощью Windows Forms (Формы Windows) мы также реализуем менюи соответствующие обработчики событий. Кроме того, мы рассмотрим управляющие элементы,а после этого изучим среду Visual Studio.net, посредством которой можно без трудасоздать простой графический пользовательский интерфейс на С#.
В нашем случае обязательным заданием являлась реализация трехкнопок (методов):
· добавление;
· изменение/обновление;
· удаление.
/>Заключение
Эта программа может помочь многим людям, причем, не только покупателям,но и продавцам. Потому что очень часто люди покупают вовсе не то, что на самом делеискали или на что рассчитывали.
Это происходит из-за лени или оплошности продавцов, которые частобывают некомпетентны. Но с этой программой они просто не смогут ошибиться, так какза них будет думать компьютер.
Не стоит упускать и тот факт, что в разработке программы использованытакие паттерны проектирования, как абстрактная фабрика и репозитории.
Это существенно облегчит задачу, если, допустим, в будущем магазинбудет расширяться или клиентская база настолько вырастет, что одной базы данныхстанет недостаточно. Тогда её с легкостью можно будет заменить на СУБД, и работапрограммы не изменится.
Список использованной литературы
1. http://donbass.ua/news/jobs-and-education/2010/10/13/prishla-pora-ukrupnjat-vuzy.html
2. http://ru. wikipedia.org/wiki/Объектно-ориентированное_программирование
3. http://ru. wikipedia.org/wiki/Абстрактная_фабрика_ (шаблон_проектирования)
4. http://ru. wikipedia.org/wiki/Шаблон_проектирования
5. http://design-pattern.ru/patterns/repository.html
6. http://www.db. by/services/interface/
7. http://www.realcoding.net/article/view/2958