41910

Использование приёма «внедрение зависимости»

Лабораторная работа

Информатика, кибернетика и программирование

Избавиться от зависимости MinViewModel от класса MessgeBox путём создания интерфейса IDilogService. Написать модульные тесты проверяющие результаты работы команды поиска объекта в классе MinViewModel по образцу в примере. Вызов диалогов из MinViewModel делать с соблюдением шаблона MVVM то есть не создавая зависимостей MinViewModel от конкретных классов диалогов делать через интерфейс. Если реализация будет как в примере то есть с использованием свойства типа ObservbleCollection в классе MinViewModel то в коде MinViewModel придётся...

Русский

2013-10-26

19.62 KB

3 чел.

Лабораторная №5. Использование приёма «внедрение зависимости».

Длительность: 10 часов.

Теоретическая часть

Топики для изучения:

  1. Шаблоны обращение контроля (Inversion of Control) и внедрение зависимости (Dependency Injection)
  2. Модульное тестирование (Unit Testing)
  3.  WPF DataGrid

Практическая часть

Используя среду разработки MS Visual Studio 2010 необходимо модифицировать проект, созданный на третьей л/р, следующим образом.

Часть 1.

Добавить в решение новый проект с модульными тестами (через меню решения «Добавить -> Новый проект…» и выбрать тип проекта Test в папке Visual C#).

Либо можно вызвать контекстное меню (правой кнопкой мыши) для свойства или метода какого-нибудь класса и выбрать «Создать модульный тест…». В появившемся диалоговом окне можно будет создать проект для тестов (или выбрать из уже существующих в решении), в который сразу будет добавлена заглушка для теста выбранного члена класса. Заглушку тестового метода можно удалить (код, который делает студия, довольно бестолковый), хотя сам сгенерированный класс еще может пригодиться.

Избавиться от зависимости MainViewModel от класса MessageBox путём создания интерфейса IDialogService. Внедрить IDialogService как свойство, инициализировать в рабочем коде в классе ViewModelLocator (по образцу в примере).

Написать модульные тесты, проверяющие результаты работы команды поиска объекта (в классе MainViewModel, по образцу в примере). Заменить DialogService в тестах заглушкой (если потребуется). Убедиться, что вывод сообщений пользователю не создаёт проблем для тестирования. Добавлять тесты для новых классов удобнее через контекстное меню методов класса (как описано выше), но для добавления тестов в существующий класс удобнее может быть писать эти методы вручную, так как всё равно название метода должно описывать действие теста и автоматически генерируемый студией код мало помогает. Главное, не забыть для тестового метода поставить атрибут [TestMethod], чтобы среда могла автоматически запускать тест на выполнение.

Написать модульные тесты для класса сущности, которые проверяют, что значение вычисляемого свойства меняется при изменении других свойств, от которых оно зависит, а также, что при этом изменении происходит вызов события PropertyChanged для вычисляемого свойства.

Написать 2 модульных теста для класса коллекции сущностей, которые проверяют какое-нибудь ожидаемое поведение этой коллекции при операции с ней (придумать, какое).

Часть 2.

Сделать интерфейс загрузки из файла и сохранения в файл списка сущностей, работающий через главное меню. Выбор файла для загрузки и сохранения сделать через стандартный диалог открытия/сохранения (в примере это реализовано для открытия файла). Вызов диалогов из MainViewModel делать с соблюдением шаблона MVVM, то есть, не создавая зависимостей MainViewModel от конкретных классов диалогов (делать через интерфейс). Для этого использовать принцип обращения контроля, как это сделано для диалога показа сообщения (в примере это также реализовано для диалога открытия файла).

При попытке сохранения в уже существующий файл, приложение должно спрашивать у пользователя, действительно ли он хочет перезаписать этот файл.

Часть 3.

Добавить на главное окно грид со списком объектов. Выделение строки грида должно приводить к отображению свойств этого объекта (действие, равнозначное поиску этого объекта по ключу в старом варианте интерфейса).

Добиться корректного поведения грида при выполнении уже реализованных операций добавления и удаления объектов коллекции. (Если реализация будет как в примере, то есть, с использованием свойства типа ObservableCollection в классе MainViewModel, то в коде MainViewModel придётся реализовать подписку на изменение состава EntityCollection, чтобы эти изменения отображались в интерфейсе.)

В примере синхронизация между выделенным объектом грида и отображаемым объектом осуществляется через привязку свойства грида SelectedItem к свойству Employee класса MainViewModel. Есть другой вариант – через использование CollectionViewSource, который здесь не рассматривается.


 

А также другие работы, которые могут Вас заинтересовать

32096. Проблема установки в психологии и социологии. Структура и функции социальной установки. Социальные стереотипы и предрассудки 50.5 KB
  Проблема установки в психологии и социологии. Структура и функции социальной установки. Понятие соц установки. Значение исследований установки в школе Д.
32097. Ценностно – нормативная и социально-ролевая регуляция поведения личности 57 KB
  Ценностно – нормативная и социальноролевая регуляция поведения личности. Нормативная регуляция поведения: нормы в контексте культуры социальные групповые нормы внутриличностные нормы. Норма –это правила регулирующие соцое поведение передаются в процессе инкультурации. Ценностно – нормативная и социальная регуляция означает что индивиду задается должный вид поведения его форма тот или иной способ достижения цели реализации намерений и т.
32098. Факторы производства туристского продукта 79 KB
  Существуют три основные категории производственных ресурсов или факторов производства: природные и культурноисторические людские капитальные. Большинство природных ресурсов истощаются в процессе туристской эксплуатации.Организации отдыха предшествуют выявление и изучение природных туристских ресурсов которые завершаются их оценкой.
32099. Эстетическая география 32.65 KB
  Однако научное осмысление этого феномена и выявление объективных закономерно стей эстетической привлекательности ландшафтов сталкиваются с проблемой значительной доли субъ ективизма. Тем не менее очевидная практическая значимость ландшафтноэстетических исследований особенно ярко она проявляется при рекреационном освоении территории определяет растущий интерес к этой проблематике и появление различных подходов к оценке пейзажноэстетической привлекательности ландшафтов. История становления и развития эстетической...
32100. Влияние различных видов туризма на окружающую природную среду 18.59 KB
  Именно поэтому в туристской отрасли особенно важен жесткий контроль при организации туризма и отдыха в регионе. Рассмотрим влияние отдельные видов туризма на состояние окружающей среды и туристских ресурсов. Наиболее массовым из всех видов туризма является спортивнооздоровительный туризм: купальнопляжная рекреация которая наиболее популярна у отечественных и иностранных туристов а следовательно имеет наиболее высокую степень влияния на окружающую природную среду; отдых с использованием судов с подвесным лодочным мотором парусных и...
32101. ИСТОРИЯ ЗАПОВЕДНОГО ДЕЛА В СССР И РОССИИ 17.91 KB
  Уже тогда были научно определены место заповедников в системе рационального природопользования и их основные задачи т. дана основа для создания сети заповедников в стране режимов их использования и охраны.Петербург 1883 обосновал эталонное значение заповедников а также указал на то что объективное познание почв и закономерностей их развития возможно только на участках исключенных из хозяйственного использования. Основным предназначением заповедников называлось использование их в научноисследовательских целях.
32102. Туристский продукт 114.5 KB
  Продуктами являются физические объекты услуги идеи и т. набор услуг продаваемый туристам в одном пакете. Если спросить поставщиков что они производят перевозчики назовут транспортные услуги отели услуги по размещению тематические парки услуги развлечения и т. Для каждого из них продукт есть конкретный вид предоставляемых услуг.
32103. Объекты и схемы стандартизации в сфере услуг. Применение сертификации 28.5 KB
  Применение сертификации. Схема сертификации – это состав и последовательность действий третьей стороны при оценке соответствия продукции услуг систем качества и персонала. Как правило система сертификации предусматривает несколько схем. Схемы сертификации продукции применяемые в РФ приведены в приложении 5.
32104. Государственный контроль и надзор за соблюдением обяза 32.5 KB
  Проводят госнадзор должностные лица Госстандарта и подведомственных ему центров стандартизации и метрологии получивших статус территориальных органов госнадзора государственные инспекторы. Акт должен быть направлен руководству проверенной организации в РостестМосква который готовит обобщенную информацию о результатах работы госнадзора а если возникла необходимость применения мер воздействия в Госстандарт России где в соответствии с Законом О стандартизации и другими действующими законодательными положениями определяются конкретные...