41911

WPF приложение с многооконным (MDI) интерфейсом

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

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

Часть 1 Необходимо перенести интерфейс редактирования свойств объектов коллекции в отдельное окно. Главное окно приложения должно содержать грид со списком объектов функции открытия сохранения файла коллекции функции удаления объектов из коллекции и вызова окон для редактирования объекта или создания объекта в отдельном окне. При выборе пользователем команды редактирования выделенного объекта в гриде должно появиться отдельное окно для редактирования свойств этого объекта. Должна быть возможность открывать одновременно несколько окон для...

Русский

2013-10-26

19.15 KB

100 чел.

Лабораторная №6. WPF приложение с многооконным (MDI) интерфейсом

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

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

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

  1. Шаблоны обращение контроля (Inversion of Control) и внедрение зависимости (Dependency Injection)
  2. Шаблон «Фабрика» (Factory)

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

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

Часть 1

Необходимо перенести интерфейс редактирования свойств объектов коллекции в отдельное окно. Главное окно приложения должно содержать грид со списком объектов, функции открытия/сохранения файла коллекции, функции удаления объектов из коллекции и вызова окон для редактирования объекта или создания объекта в отдельном окне.

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

При удалении объекта из коллекции ранее открытое окно редактирования этого объекта должно закрываться.

При выборе пользователем команды создания нового объекта, должно появляться окно для редактирования свойств нового объекта. Окно должно отображаться в модальном режиме, то есть, не давать пользователю переключаться на другие окна приложения, пока модальное окно не закрыто. Окно создания нового объекта отличается от окна редактирования наличием кнопок «ОК» и «Отмена», которые, соответственно, подтверждают добавление нового объекта в коллекцию, либо отменяют это действие.

Часть 2

При написании автоматических тестов важно понимать, что автоматическое тестирование графического интерфейса – задача весьма сложная. Поэтому в шаблоне MVVM уровень представления (View) отделён от уровня ViewModel, что позволяет тестировать поведение приложения на уровне ViewModel, не создавая в тестах реальные объекты окон и графических элементов. Если же такое разделение не соблюдается, то тестировать приходится приложение целиком, и, как правило, вручную (что гораздо менее эффективно).

Автоматический тест с использованием поддельной фабрики, создающей диалоговые ViewModel, приведён в примере (см. модуль MainViewModelTest).

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

Бонусное задание за дополнительные баллы:

Написать автоматический тест, который проверит, что при вызове команды удаления объекта, для которого открыта форма для редактирования, эта форма будет закрыта.

Примечание: В практике программирования широкое применение имеют DI-фреймворки (например, Unity, Spring) и фреймворки для написания заглушек к тестовому коду (например, Moq, RhinoMock и др.) Использование этих инструментов очень сильно облегчает написание автоматических (как  модульных, так и интеграционных) тестов.

Требования к коду

При написании кода приложения необходимо придерживаться шаблона MVVM. В частности, не должно быть прямой зависимости классов ViewModel от слоя представления. Динамическое создание пары View-ViewModel лучше выделить в отдельный класс-фабрику (как в примере).

Написанные ранее модульные тесты должны выполняться успешно, либо, при необходимости, быть изменены.


 

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

23576. ЭЛЕМЕНТЫ ОБЩЕЙ ЛИНГВИСТИКИ 1.42 MB
  Иными словами выяснение общеязыковых закономерностей внутренней логики и механизма действия языка с необходимостью входит в сферу общего языкознания. В то же время автор надеется что адекватным окажется и западноевропейское понимание этого слова: ср. Передача информации один из существеннейших видов и аспектов общения между людьми поэтому по словам В. 246 иначе говоря всякое слово есть результат абстрагирующей работы мысли слово дерево обозначает дерево вообще и наоборот абстрактное понятие общее для всех членов данного...
23577. История языкознания: Учебное пособие для cтудентов старших курсов и аспирантов 1.4 MB
  Здесь даны очерки посвящённые истории формирования и развития самобытной лингвистической мысли в государствах Востока и в странах Западного мира где лингвистическая традиция сложилась на основе грекоримских идей по философии языка и грамматике. Читатель обратит внимание на то что становление и развитие языкознания в восточных и западных культурных ареалах шло во многом своими путями отражая особенности как своих языков так и своих культур и что лишь в последние одиндва века наблюдается переориентация ряда восточных школ на европейские...
23578. Плезиохронная цифровая иерархия 32.5 KB
  Технологии передачи информационного сигнала развивались параллельно с развитием телефонных сетей. Постоянно растущее число пользователей и рост телефонного трафика привел к появлению систем мультиплексирования сигналов с разделением по частоте
23579. Отсутствующая структура Введение в семиологию 2.96 MB
  Код [2. Коды и лексикоды [2. Коды и их модификации [2. Кодифицируемость уровней [2.
23580. Россия в метафорическом зеркале: когнитивное исследование политической метафоры 1.25 MB
  Чудинов Россия в метафорическом зеркале: когнитивное исследование политической метафоры 1991 2000 УДК 408. Ч84 Россия в метафорическом зеркале: Когнитивное исследование политической метафоры 1991 2000: Монография Урал. ISBN 5718602778 Монография посвящена исследованию закономерностей моделирования образа современной России в зеркале концептуальной метафоры в котором вне зависимости от чьихлибо симпатий и антипатий достаточно объективно фиксируется подлинная картина национального самосознания в котором отражаются как традиционные...
23581. Семиосфера. Культура и взрыв Внутри мыслящих миров 5.53 MB
  ЛОТМАН Семиосфера Культура и взрыв Внутри мыслящих миров Статьи Исследования Заметки СанктПетербург ИскусствоСПБ О метаязыке типологических описаний культуры О семиотическом механизме культуры Миф имя культура Культура как коллективный интеллект и проблемы искусственного разума Феномен культуры Технический прогресс как культурологическая проблема Культура как субъект и самасебе объект О семиотике понятий стыд и страх в механизме культуры Память в культурологическом освещении [1] Содержание [2] Люди и знаки1 [3] Культура и взрыв...
23582. Язык и межкультурная коммуникация 1.96 MB
  Язык культура и культурная антропология 8 3. Межкулътурная коммуникация и изучение иностранных языков 14 5. Роль сопоставления языков и культур для наиболее полного раскрытия их сущности 19 Часть I. Язык как зеркало культуры 21 Глава 1.
23583. ЯЗЫК И БЕССОЗНАТЕЛЬНОЕ 2.05 MB
  Тексты собранные в книге последовательно представляют анализы общей проблематики бессознательного лингвистической структурированности афатических расстройств речи ребенка поэтической речи проблем семиотики структур языка как такового и его наименьшей смысловой единицы фонемы. Хайдеггером и наоборот спор Хайдеггера с семиотическим представлением языка встречи с Жаком Лаканом совершенно поновому осмыслившем 5 наследие Фрейда проштудировавшем и Хайдеггера и Якобсона вес это тот новый круг внутри которого вновь и вновь можно...
23584. ВЕЩЬ И ИМЯ 697.22 KB
  И физическая материя кресла и его отвлеченная идея не суть вещи реального обихода но исключительно предмет мыслительных операций. А вот помоему имя вовсе не есть звук имя вещи есть сила самой вещи. Поэтому я прямо утверждаю что имя неотделимо от вещи что оно есть оформление самой вещи в ее объективном существовании. Получается типичный для всякой абстрактной метафизики дуализм: вещи сами по себе без всякого имени а имена наши субъективные звуки сами по себе.