
- •Тема 5.2. Теоретические основы объектно-ориентированного программирования
- •5.2.1. Основные определения
- •5.2.2. Объектно-ориентированная декомпозиция и объектно-ориентированные модели
- •5.2.3. Объектная модель и ее составные части
- •5.2.4. Средства uml для моделирования классов и их отношений
- •5.2.4.1. Введение в uml
- •5.2.4.2. Статическое представление системы в диаграммах классов
- •5.2.4.3. Визуализация класса
- •5.2.4.4. Уровни представления
- •5.2.4.5. Идентификация классов
- •5.2.4.6. Отношения
- •5.2.4.7. Наследование и обобщение
- •5.2.4.7. Абстрактные классы
- •5.2.4.8. Агрегация и композиция
- •5.2.4.9. Ассоциации
- •5.2.4.10. Классы ассоциаций
- •5.2.4.11 Кратность
- •5.2.4.13. Интерфейс и реализация
- •5.2.4.14. Области видимости
- •5.2.4.15. Зависимости
- •5.2.5. Визуализация существующего кода.
- •Практическое руководство. Поиск кода с помощью обозревателя архитектуры
- •Открытие обозревателя архитектуры
- •Обозреватель архитектуры: домены, представления, узлы, типы узлов и типы ссылок
- •Поиск исходного кода в решении Visual Studio
- •Представление классов в обозревателе архитектуры
- •Поиск кода в решении
- •Поиск скомпилированного кода
- •5.2.6. Visual Studio 2010 - uml моделирования проектов
5.2.4.4. Уровни представления
Классы могут существовать на нескольких уровнях представления: аналитическом уровне, уровне проектирования и уровне реализации. При моделировании объектов, выражающих концепции реального мира, очень важно отразить их действительное состояние, поведение и взаимоотношения. Концепции, относящиеся к реализации (сокрытие информации, производительность, видимость и методы), не являются концепциями реального мира, поэтому многие потенциальные свойства класса являются на этом уровне ненужными.
На уровне анализа класс представляет собой логическую концепцию предметной области или самой программы. Аналитическая модель вообще содержит только самые общие представления о моделируемой системе. На этом уровне важно уловить основную логику системы, а не вникать в детали ее работы и построения.
На начальном уровне проектирования для класса становятся актуальны такие концепции, как сопоставление состояния с классом, эффективность переходов между объектами, отделение внешнею представления от внутренней реализации и определение точных сигнатур операций.
В дальнейшем класс объединяет в единый пакет информацию о состоянии и операциях, отражает основные проектные решения по локализации информации и распределению функциональности. На этом уровне класс обладает содержанием, относящимся как к реальному миру, так и непосредственно к моделируемой системе.
И наконец, при реализации в программном коде класс принимает форму, максимально подходящую для отображения в выбранном языке программирования. При этом могут пропасть те общие свойства класса, которые не находят в этом языке прямого применения. На уровне реализации класс уже в точности отражает программный код.
Одна и та же модель может содержать классы нескольких уровней. При этом классы, ориентированные на непосредственную реализацию в программном коде, могут реализовывать функции логических классов данной модели. Класс программной реализации представляет собой объявление класса в конкретном языке программирования и имеет ту форму, которую требует данный язык. Впрочем, довольно часто всю аналитическую информацию вместе с информацией, касающейся проектирования и реализации, можно разместить в одном классе.
5.2.4.5. Идентификация классов
Классы – это слова и термины из предметной области задачи. При общении с клиентом разработчик, анализируя предметную область заказчика, строит компьютерную систему для решения задач в этой области. При этом аналитик изучает терминологию и формирует классы UML.
Во время переговоров с клиентом необходимо запомнить существительные, которыми он описывает свою деятельность, – они могут стать именами классов в проекте представление тируемой модели. Глаголы, употребляемые клиентом для описания действий, должны использоваться для обозначения операций классов. Характеристики предметной области представляют собой ничто иное, чем атрибуты классов. После составления основного списка классов, необходимо выяснить у клиента роль каждого из них в его деятельности. Полученные ответы укажут на обязанности классов в модели.
Предположим, аналитику требуется построить модель игры в баскетбол. Он берет интервью у тренера, чтобы понять, как происходит игра. Запись интервью выглядит следующим образом:
«Цель игры – забросить мяч в корзину и получить больше очков, чем противник. Каждая команда состоит из пяти игроков: двух защитников, двух нападающих и центрового. В процессе игры баскетболист стремится перенести мяч к корзине соперника с целью забросить мяч. Мяч ведет и передает игрок. Команда должна забросить мяч до истечения времени атаки. Это – 24 секунды в профессиональных играх, 30 секунд – в международных и 35 секунд – в любительских играх. После получения мяча в течение этого времени нужно сделать бросок.
За каждое попадание в корзину команда получает два очка, если только бросок не происходил из-за пределов трех-очковой линии. В последнем случае добавляется три очка. Свободный бросок оценивается в одно очко. Свободный бросок, является наказанием для команды, нарушившей правила. Если игрок неправильно сыграл против соперника, игра останавливается, и противник получает право на бросок с линии свободного броска.
Роли игроков.
Защитник преимущественно ведет мяч и передает его. Такие игроки часто имеют рост меньший, чем нападающие, которые, в свою очередь, ниже центрового. Предполагается, что все игроки в состоянии вести мяч, передавать его, выполнять броски и отбор мяча. Нападающие, в основном, выполняют отбор и промежуточную передачу мяча, в то время как центральный игрок располагается возле корзины и делает броски с небольшого расстояния.
Размеры площадки и продолжительность игры.
Для международных игр длина площадки составляет 28 метров, а ширина – 15. В профессиональном баскетболе игра проходит в течение сорока восьми минут, разделенных на четыре двенадцатиминутных тайма. В любительских и международных играх матч длится 40 минут, разделенных на два тайма по 20 минут. Часы показывают оставшееся время».
Идентификацию (выявление) классов надо начать с существительных. Анализ текста и интервью позволяют выявить следующие сущности: мяч, корзина, команда, игроки, защитники, нападающие, центровой, бросок, время атаки команды, трех-очковая линия, свободный бросок, линия свободного броска, площадка, время игры и др.
А вот глаголы: бросать, вести мяч, нарушать правила, передавать и отбирать мяч. Имеется также дополнительная информация о росте игроков, выполняющих на поле разные задачи, размере площадки, времени, отведенном для броска в корзину и общем времени игры.
Рис. 5.2-18. Исходная диаграмма классов для моделирования игры в баскетбол
Наконец, при описании игры можно отразить собственные знания и рассуждения, руководствуясь имеющимися знаниями и здравым смыслом. Например, если известно, что мяч имеет такие атрибуты, как массу и диаметр, то можно добавить их самостоятельно. Используя собранную информацию, можно построить диаграмму, где отображены классы, некоторые атрибуты, операции и ограничения. На диаграмме также указаны обязанности. Эту диаграмму можно использовать в качестве основы для последующих переговоров с тренером и получения недостающей информации.