- •Раздел 3. Объектно-ориентированное программирование. Функциональное программирование и интеллектуальные информационные системы. Экспертные системы.
- •Классы и объекты.
- •Создание классов
- •Создание объектов
- •Модульность
- •Примеры иерархий
- •Наследование и композиция
- •Интерфейсы, делегаты и события.
- •Int (целое число);
- •Базовые типы данных
Модульность
Модульность – это разделение программы на фрагменты, кот компилируются по отдельности, но связаны между собой. Логич стр-ру системы образуют классы и объекты, она помещается в модули из кот сост физич. Структура систем. Структура каждого модуля должны быть простой для понимания, допускать независимую реализацию др.модулей, не влиять на их поведение, а также позволять вносить изменение без последствий.
Модульность – это св-ва системы, разложенные на цельные, но слабо связанные между собой модули. При выполнении декомпозиции системы на модули желательно объединять логически связанные части, по возможности обеспечивая сокращение количества внешних связей между модулями. Принцип унаследован от модульного программирования, следование ему упрощает проектирование и отладку программы.
Иерархия – ранжирование или упорядочивание абстракций. Наиболее важными видами иерархии сложных программных системах явл стр-ра классов (иерархия обобщения, частное) и стр-ра объектов (иерархия, целое, часть).
Примеры иерархий
Наследование означает такое отношение между классами, когда один класс заимствует стр-ру или поведение одного или нескольких др классов. Наследование созд иерархию абстракций, кот подклассы заимствуют св-ва одного или неск супер классов. Обычно подкласс наращивает и переопределяет существующую стр-ру и поведение суперкласса.
A
Name
G
o()
В
Go()
По мере эволюции иерархия наследования, стр-ра и поведение, общие для разных классов имеют тенденцию мигрировать в наиболее общий суперкласс.
Именно поэтому наследование часто назыв иерархией обобщение специализация. Суперклассы представл обобщенные абстракции, а подклассы это специализации, в кот добавляются модифицируются, а также скрываются поля и методы из суперкласса. Абстракция данных, созд непроницаемый барьер, скрывающий методы (СОСТОЯНИЕ ОБЪЕКТА, принцип наследования же требует открыть доступ их состояния к методам объекта, не прибегая к абстракции).
Множественное наследование.
Множ наслед представ простую концепцию, наслед от неск абстракций, но созд некот сложности для яз пр, а именно конфликты имен между различн суперклассами и повторное наследование.
В ООП используются два вида иерархии.
1. Иерархия «целое/часть» – показывает, что некоторые абстракции включены в рассматриваемую абстракцию, как ее части, например, лампа состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования (на логическом уровне – при декомпозиции предметной области на объекты, на физическом уровне - при декомпозиции системы на модули и при выделении отдельных процессов в мультипроцессной системе).
2. Иерархия «общее/частное» – показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол – конкретный вид стола», а «столы – конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.
Один из важнейших механизмов ООП - наследование свойств в иерархии общее/частное. Наследование - это такое соотношение между абстракциями, когда одна из них использует структурную или функциональную часть другой или нескольких других абстракций (соответственно простое и множественное наследование).
Агрегация
Есть классы сущ отдельно друг от друга, то это агрегация. Если взаимоотнош сущ без части невозможно, то композиция.
Типизация
Типизация - это ограничение, накладываемое на свойства объектов и препятствующее взаимозаменяемости абстракций различных типов (или сильно сужающее возможность такой замены). В языках с жесткой типизацией для каждого программного объекта (переменной, подпрограммы, параметра и т. д.) объявляется тип, который определяет множество операций над соответствующим программным объектом. Рассматриваемые далее языки программирования на основе Паскаля используют строгую, а на основе С - среднюю степень типизации.
Использование принципа типизации обеспечивает:
1) раннее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами (ошибки обнаруживаются на этапе компиляции программы при проверке допустимости выполнения данной операции над программным объектом);
2) упрощение документирования;
3) возможность генерации более эффективного кода.
Тип может связываться с программным объектом статически (тип объекта определен на этапе компиляции - раннее связывание) и динамически (тип объекта определяется только во время выполнения программы - позднее связывание). Реализация позднего связывания в языке программирования позволяет создавать переменные - указатели на объекты, принадлежащие различным классам (полиморфные объекты), что существенно расширяет возможности языка.
Параллелизм - свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции. Существует целый ряд задач, решение которых требует наличия одновременного выполнения некоторых последовательностей действий. К таким задачам, например, относятся задачи автоматического управления несколькими процессами. Реальный параллелизм достигается только при реализации задач такого типа на многопроцессорных системах, когда имеется возможность выполнения каждого процесса отдельным процессором. Системы с одним процессором имитируют параллелизм за счет разделения времени процессора между задачами управления различными процессами. В зависимости от типа используемой операционной системы (одно- или мультипрограммной) разделение времени может выполняться либо разрабатываемой системой (как в MS DOS), либо используемой ОС (как в системах Windows).
Перстистентность - это св-во сохранять состояние и класса объекта во времени и пространстве. Свойство абстракции существовать во времени независимо от процесса, породившего данный программный объект, и/или в пространстве, перемещаясь из адресного пространства, в котором он был создан.
Виды
1. Локальные переменные в вызове процедур
2. Собственные или глобальные переменные
3.Данные, сохраняющиеся между сеансами прогр
4.данные, сохр при переходе от одной версии к другой
5. Данные сохр после исчезновения прогр
Сериализация – сохр состояния объекта
