Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Общие сведения о проектировании и реализации моделей предметной области




НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

 

УТВЕРЖДАЮ

Директор ИДО

_______________ С.И. Качин

 

«____»_____________2012 г.

 

 

МЕТОДЫ И СРЕДСТВА ПРОЕКТИРОВАНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ И ТЕХНОЛОГИЙ

Методические указания по выполнению лабораторных работ для студентов ИДО, обучающихся по направлению
220400 «Управление в технических системах»

 

 

Семестр    
Лекции, часов    
Лабораторные занятия, часов    
Контрольная работа    
Самостоятельная работа, часов    
Всего часов    
Форма контроля   экзамен

 

 

Томск 2014


УДК 681.3

Методы и средства проектирования информационных систем и технологий: метод. указ. по выполнению лабораторных работ для студентов ИДО, обучающихся по напр. 230100 «Информатика и вычислительная техника» / сост. П.И. Банокин; Томский политехнический университет. – Томск: Изд-во Томского политехнического университета, 2015. – 18 с.

 

 

Методические указания по выполнению лабораторных работ рассмотрены и рекомендованы к изданию методическим семинаром кафедры Автоматики и компьютерных систем «____»___________2015 года

 

Зав.кафедрой проф., д-р техн. наук _________________А.С. Фадеев

 

 


Оглавление

Лабораторная работа №1. Модульная архитектура программного обеспечения. Архитектурный шаблон Репозиторий. Модульное тестирование. 5

Общие сведения о модульном тестировании. 5

Задание. 7

Список литературы.. 8

Литература обязательная. 8

Дополнительная литература. 9

Интернет-ресурсы.. 9

 


Аннотация

Методические указания по выполнению лабораторных работ по дисциплине «Методы и средства проектирования информационныз систем и технологий» предназначены для студентов ИДО, обучающихся по направлению 230100 «Информатика и вычислительная техника». Данная дисциплина изучается один семестр.

Приведено содержание основных тем дисциплины, указан перечень лабораторных работ. Даны методические указания по выполнению лабораторных работ.

 


Лабораторная работа №1. Модульная архитектура программного обеспечения. Архитектурный шаблон Репозиторий. Модульное тестирование

Целью лабораторной работы является изучение модульной архитектуры программного обеспечения.

Модуль программного приложения является единицей организации исходного кода программного приложения и его повторного использования. Обычно программное обеспечение разделяется на функциональные модули. В объектно-ориентированном программировании модули содержат наборы классов, интерфейсов и структур данных. В процедурном программировании модули содержат библиотеки подпрограмм.

Наиболее часто в отдельных модулях реализуется следующая функциональность:

1. Модель данных.

2. Доступ к данных (например, набор классов для доступа к реляционной базе данных).

3. Графический интерфейс пользователя.

4. Набор (библиотека) классов, реализующих стандартные графические элементы управления (кнопка, текстовая метка, поле ввода, меню и др.).

5. Математические вычисления.

6. Компьютерной графика.

В среде разработки программного обеспечения Microft Visual Studio каждый модуль обычно реализуется в виде отдельного проекта. Отдельным модулем может быть проект многооконного программного приложения Windows Forms, консольное программное приложение и другие типы проектов. Разработчик может подключить к текущему проекту уже готовый модуль через раздел References (ссылки) инструмента Solution explorer (обозреватель решения).

Многослойная архитектура программных приложений предлагает разделение исходного кода на модули (слои) и накладывает ограничения на отношения зависимости между модулями. Модули низкого уровня не могут зависеть от модулей более высокого уровня. Часто в многослойных приложениях реализуют следующие слои:

1. Модель предметной области, реализованная в виде библиотеки классов.

2. Слой доступа к данным.

3. Логика программного приложения.

4. Графический интерфейс пользователя

Общие сведения о проектировании и реализации моделей предметной области

Объектно-ориентированная модель предметной области реализуется в виде библиотеки классов. Классы реализуют абстракции объектов и их взаимодействия и отношения, происходящие в исследуемой предметной области. Правильно спроектированная и реализованная модель предметной области позволяет создать программное обеспечение, обладающие высокими характеристиками качества, включая адаптируемость, гибкость, способность к модификации. Созданная модель предметной области может использоваться многократно для реализации разных программных приложений.

В моделях предметной области выделяют следующие основные типы элементов:

1. Сущности – абстракции группы (категории) объектов предметной области. Сущность обязательно имеет уникальный набор атрибутов, позволяющих по их значениям уникально идентифицировать ее объект. Также сущность может иметь поведение – способность изменить свое состояние или состояние других объектов.

2. Объекты значения. Идентифицируются исключительно совокупностью значений всех их атрибутов. Не имеют поведения. Пример объектов значения – адрес, цвет в формате RGB. Обычно объекты значения реализуются как составной тип данных – тип значения (struct или record).

3. Сервисы реализуют операции преобразования объектов сущностей, не относящихся ни к одной из них. Обычно реализуются в виде статических классов.

4. Репозитории являются сервисами, реализующие операции долгосрочного хранения данных. Основные операции репозитория: чтение, сохранение, удаление объектов сущности из хранилища данных.

Помимо перечисленных выше элементов в моделях предметной области могут также реализовываться агрегаты. Агрегат обладает всеми свойствами сущности, но отличается своей сложной внутренней структурой. Агрегат состоит из управляющего объекта (корень агрегата, root) и коллекции зависимых объектов. Корень агрегат реализует методы для управления зависимыми объектами (например, операции добавления в коллекцию, исключения из коллекции и редактирования). Важной особенностью агрегата заключается в том, что он обрабатывается репозиторием как единое целое – корень агрегата и коллекция зависимых объектов сохраняются и считываются в рамках одной операции, а не по отдельности. Примером агрегата может быть «Заказ» в интернет-магазине, который включает коллекцию зависимых объектов – отдельных товарных позиций, входящих в заказ.

// Сущность Индивидуум

public class Person

{

public string PassportNumber;

public string Name;

public string Education;

public Address HomeAdress;

public List<Person> Friends;

public void AddFriend(Person p){.....}

public void Unfriend(Person p) {....}

}

 

//объект значения Адрес (идентичность определяется названием улицы и номером дома)

public struct Address

{

public string Street;

public string HouseNumber;
}

 

public class PersonRepository

{

public List<Person> Get(){....}

public void Save(Person p){....}

public void Delete(Person p){....}

}

 

//Сервис для создания уведомления для друзей индивидуума

public class FriendNotifier

{

public void Notify (Person p){

foreach (var item in p.Friends)

{

.....

}

}

}

 

Пример реализации обобщенного интерфейса репозитория и репозитория:

public interface IGenericRepository<T> where T: class

{

 

IQueryable<T> GetAll();

IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);

void Add(T entity);

void Delete(T entity);

void Edit(T entity);

void Save();

}

 

 

public class GenericRepository<T>:

IGenericRepository<T>

where T: class

{

 

private JobContext _entities;

public GenericRepository(string connectionString)

{

_entities = new JobContext(connectionString);

_entities.Database.Initialize(true);

}

 

 

public virtual IQueryable<T> GetAll()

{

 

IQueryable<T> query = _entities.Set<T>();

return query;

}

 

public IQueryable<T> FindBy(System.Linq.Expressions.Expression<Func<T, bool>> predicate)

{

 

IQueryable<T> query = _entities.Set<T>().Where(predicate);

return query;

}

 

public virtual void Add(T entity)

{

_entities.Set<T>().Add(entity);

}

 

public virtual void Delete(T entity)

{

_entities.Set<T>().Remove(entity);

}

 

public virtual void Edit(T entity)

{

_entities.Entry(entity).State = System.Data.EntityState.Modified;

}

 

public virtual void Save()

{

_entities.SaveChanges();

}

}

 





Поделиться с друзьями:


Дата добавления: 2016-12-31; Мы поможем в написании ваших работ!; просмотров: 352 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2265 - | 2223 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.