Место моделирования в проектировании больших программных систем. Моделируемые аспекты программных систем
Да. У коктейлей «Нэчурал Баланс» оптимально сбалансированная формула, включающая три натуральных источника протеинов, которые обеспечивают насыщенное белковое питание. Мы рекомендуем пить коктейли до и после занятий спортом, это обеспечит организм дополнительной энергией во время тренировок, будет способствовать увеличению мышечной массы и поможет восстановить силы после занятий. Также очень важно правильно питаться в остальное время. ВОПРОСЫ ПО UML Место моделирования в проектировании больших программных систем. Моделируемые аспекты программных систем. Моделирование программных систем позволяет: · визуализировать систему в ее текущем или желательном для нас состоянии; · определить структуру или поведение системы; · получить шаблон, позволяющий затем сконструировать систему; · документировать принимаемые решения, используя полученные модели. Логичность и формализованность компьютерных моделей позволяет выявить основные факторы, определяющие свойства изучаемого объекта-оргинала (или целого класса объектов), в частности, исследовать отклик моделируемой физической системы на изменения ее параметров и начальных условий. Различают аналитическое и имитационное моделирование. При аналитическом моделировании изучаются абстрактные модели реального объекта в виде математических уравнений, а также предусматривающих осуществление однозначной вычислительной процедуры, приводящей к их точному решению. При имитационном моделировании исследуются математические модели в виде алгоритма(ов), воспроизводящего функционирование исследуемой системы путем последовательного выполнения большого количества элементарных операций. Система моделей включает описание процессов, функций, потоков, данных и других статических и динамических аспектов функционирования системы. Основные понятия объектно-ориентированного подхода к проектированию программ. Абстрагирование. Ограничение доступа. Модульность. Иерархия. Преимущества объектной модели: · В полной мере используются возможности языков программирования · Повышается уровень унификации разработки и пригодность для повторного использования · Система строится на основе стабильных промежуточных описаний, что упрощает внесение изменений · Уменьшается риск разработки · Единственная методология позволяющая справиться со сложностью очень больших систем Абстракция: Ø Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя Ø Абстракция разделяет смысл и реализацию объекта Инкапсуляция: Ø Инкапсуляция реализует абстракцию, скрывая внутреннюю структуру объекта и предоставляя вовне только внешнее поведение – интерфейс, соответствующий принятому уровню абстракции Ø Абстракция и инкапсуляция дополняют друг друга: абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается внутренним устройством Ø Данные и методы могут иметь модификаторы public, private и protected определяющие степень доступности. Модульность: Ø Это свойство системы, которая была разложена на внутренне связные, но слабо связанные между собой модули Ø Модули выполняют роль физических контейнеров, в которые помещаются определения классов и объектов Ø Принципы абстрагирования, инкапсуляции и модульности являются взаимодополняющими Иерархия: Ø Это упорядочение абстракций, расположение их по уровням. Ø Значительное упрощение в понимании сложных задач достигается за счет образования из абстракций иерархической структуры Ø Один из видов иерархии – концепция наследования «обобщение-специализация» (is-a) Ø Другой вид иерархии – агрегация (part-of) Основные понятия объектно-ориентированного подхода к проектированию программ. Понятие класса. Понятие объекта. Инкапсуляция данных и методов. Класс является описываемой на языке терминологии (пространства имён) исходного кода моделью ещё не существующей сущности (объекта). Фактически он описывает устройство объекта, являясь своего рода чертежом. Говорят, что объект — это экземпляр класса. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области. Класс представляет набор объектов, которые обладают общей структурой и одинаковым поведением. Поведение выражается в терминах состояния объекта (изменения состояний) и в передаче сообщений. Типы объектов: · Актер (действующее лицо) – объект может воздействовать на другие объекты, но сам никогда не подвергается воздействию других объектов · Сервер – объект может только подвергаться воздействию со стороны других объектов · Агент – Может выступать как в активной, так и пассивной роли Связи объектов: · Связи по информационному взаимодействию (по данным) · Связи по управлению (вызываются методы другого объекта) · Связи по иерархии наследования Отношения между классами: · Ассоциация - семантическая (смысловая) связь без объяснения ее реализации; фиксируются участники ассоциации, их роли в ассоциации, мощность отношения; возможны три мощности ассоциации – один-к-одному, один-ко-многим, многие-ко-многим · Наследование · Агрегация: либо физическое включение одного класса в другой (внутренний класс), либо концептуальное вхождение одного класса в другой (контейнер) · Использование данных одного объекта для работы другого и методов одного объекта для реализации поведения другого · Инстанцирование - построение параметризированного класса (шаблона), который может параметризироваться другими классами, объектами или методами · Метакласс - это класс, экземпляры которого есть классы Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя. Данные и методы могут иметь модификаторы public, private и protected определяющие степень доступности.
Основные понятия объектно-ориентированного подхода к проектированию программ. Роль наследования в ООП. Наследование: Ø При наследовании один класс заимствует структурную или функциональную часть одного или нескольких других классов Ø Наследование основано на иерархии классов Ø Наследование упрощает выражение абстракций, делает проект более выразительным Ø Дочерние классы наследуют свойства одного или нескольких родителей Одиночное наследование: При одиночном наследовании один или несколько классов наследуют свойства ТОЛЬКО ОДНОГО родительского класса. Множественное наследование: Абстрактные классы – обязательно должны иметь наследников и не имеют экземпляров.
Основные понятия объектно-ориентированного подхода к проектированию программ. Свойство полиморфизма. Полиморфизм – возможность объектов с одинаковой спецификацией иметь различную реализацию. Он позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общие свойства объектов объединяются в систему - класс. Общность имеет внешнее и внутреннее выражение: · внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именами методов, типами аргументов и их количеством); · внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу называется перегрузкой метода. Полиморфизм: Ø Одно и то же имя может означать объекты разных ТИПОВ Ø Полиморфизм реализует адаптивное поведение класса Ø Полиморфизм реализует динамическое связывание объектов Основные понятия объектно-ориентированного подхода к проектированию программ. Понятие типизации. Типизация: Ø Это точная характеристика свойств, включая структуру и поведение, относящаяся к некоторой совокупности объектов Ø Позволяет в программных системах проводить целый ряд проверок и согласований Ø Строгая типизация предотвращает смешивание абстракций Процесс проверки и накладывания ограничений типов — контроля типов, может выполняться во время компилирования (статическая проверка) или во время выполнения (динамическая проверка). · Статическая типизация — контроль типов осуществляется при компиляции. · Динамическая типизация — контроль типов осуществляется во время выполнения. Контроль типов также может быть строгим и слабым. · Строгая типизация — совместимость типов автоматически контролируется транслятором: o Номинативная типизация — совместимость должна быть явно указана (наследована) при определении типа. o Структурная типизация — совместимость определяется структурой самого типа (типами элементов, из которых построен составной тип). · Слабая типизация — совместимость типов никак транслятором не контролируется. В языках со слабой типизацией обычно используется подход под названием «утиная типизация» — когда совместимость определяется и реализуется общим интерфейсом доступа к данным типа.
|