Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по ТООМ.doc
Скачиваний:
113
Добавлен:
02.05.2014
Размер:
2.1 Mб
Скачать

1. Предпосылки возникновения объектно-ориентированного подхода [1/2].

По своей природе компьютер может выполнять только простейшие операции, которые можно вводить одну за другой в его память прямо в машинных кодах. Изнурительная монотонность такой работы привела первых программистов к естественному решению создания ассемблеров. Т.е. средств упрощающих написание программ за счет написания машинных кодов в некоторых мнемонических обозначениях с последующим автоматическим переводом. Дальнейшее развитие этих идей привело к созданию первых языков программирования высокого уровня в которых длинные и сложные последовательности машинных кодов были заменены одним обозначающим их словом или оператором. Эти нововведения существенно упростили написание программ. Тем не менее программы написанные сплошным текстом часто содержали запутанные последовательности операторов в которых зачастую было трудно уловить нить логических рассуждений. Эти проблемы были решены с появлением структурного программирования.

Параллельно был введен принцип декомпозиции. Следующим шагом стало появление модульного подхода, когда отдельные части программ стали отдельные самостоятельные структуры или модули.

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

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

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

*1. Предпосылки возникновения объектно-ориентированного подхода [2/2].

Вместе с развитием ООП стали развиваться и общие объектно-ориентированные методы разработки ПО.

Объектно-ориентированные подход – это подход при котором требования к системе воспринимаются с точки зрения классов и объектов, выявленных в предметной области.

С ООП тесно связанно объектно-ориентированное проектирование или моделирование. Если программирование направленно на правильное и эффективное использование контекстных языков, то проектирование направленно на правильное и эффективное структурирование сложных систем.

2. Концептуальная база объектно-ориентированного стиля[1/2].

Каждый стиль программирования имеет свою концептуальную базу. Для объектно-ориентированного (ОО) стиля концептуальная база – это объектная модель, создание которой требует особого ОО мышления.

ОО модель имеет 4 главных св-ва:

1) Абстрагирование – выделение искусственных характеристик некоторого объекта, отличающих его от других видов объектов. Оно включает понятия агрегации и обобщения.

а) Агрегация – это абстракция, которая превращает связь между объектами в некоторый агрегированный объект более высокого уровня.

Осуществляя такую абстракцию, мы можем игнорировать многие детали этой связи.

b) Обобщение – это абстракция, превращающая класс объекта в родовой объект.

2) Инкапсуляция – скрытие внутренней реализации объекта за представляемым этим объектом интерфейсом.

3) Модульность – способность системы быть разложенной на внутренне сильно- или слабосвязанные между собой модули.

4) Иерархия – упорядочение абстракций и разложение их по уровням.

Эти св-ва являются главными и, при отсутствии хотя бы одного их них, модель не будет ОО.

Также существуют 3 дополнительных св-ва:

1) Типизация – создание объектов на основе шаблонов определенного типа.

2) Параллелизм – способность системы обрабатывать несколько сообщений или задачи параллельно.

3) Сохраняемость – способность хранить не только данные, но и объекты в промежутке между отдельными запусками системы.

*2. Концептуальная база объектно-ориентированного стиля[2/2].

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

Важнейшими св-ми класса явл-ся:

1) Наследование – это св-во, в соответствии с которым знания о более общей категории разрешается применять для более узкой категории. Наследование тесно связано с иерархией класса, которая определяет, какие классы следует считать наиболее абстрактными и общими по отношению к другим классам. При этом если некоторый более общий (или родительский) класс обладает фиксированным набором св-в и поведений, то производный от него потомок должен содержать этот же набор св-в и поведений, а также дополнительные, которые будут характеризовать уникальность полученного таким образом класса.

2) Инкапсуляция – это сокрытие отдельных деталей внутреннего устройства классов от внешних по отношению к нему объектов или пользователей. Взаимодействующему с классом субъекту или клиенту нет необходимости знать, каким образом реализован тот или иной метод класса, услугами которого он решил воспользоваться. Конкретная реализация присущих классу методов, которые определяют его поведение, явл-ся собственным делом данного класса. Отдельные св-ва и методы вообще могут быть невидимыми за пределами этого класса.

3) Полиморфизм – это св-во некоторых объектов принимать различные внешние формы в зависимости от обстоятельств. Действия, выполняемые одноименными методами, могут отличаться в зависимости от того, к какому классу относится тот или иной метод.

3.Методология системного анализа и системного моделирования[1/1]. Системный анализ как научное направление появилось раньше, чем ООАП и имеет собственный предмет исследований.

Центральным понятием системного анализа явл-ся понятие системы, под которой понимается совокупность объектов, компонентов или элементов произвольной природы, образующих некоторую целостность.

Определяющей предпосылкой выделения некоторой совокупности как системы, явл-ся возникновение у нее новых св-в, которые не имеют составляющие ее элементы.

Важнейшими характеристиками любой системы явл-ся:

1) Структура – это устойчивая во времени совокупность взаимосвязи между элементами и компонентами системы. Структура системы может отражать самые различные взаимосвязи, в том числе и вложенность элементов одной системы в другую. В этом случае вложенная (более мелкая) система наз-ся подсистемой, а более крупная – метасистемой.

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

Методология системного анализа служит концептуальной основой системно-ориентированной декомпозиции предметной области. В этом случае исходными компонентами концептуализации явл-ся системы и взаимосвязи между ними.

Результатом системного анализа явл-ся построение некоторой модели системы или предметной области. Применительно к программным системам – это только то понятие модели, которое используется в системном анализе. Т.е. под моделью понимается некоторое представление о системе, отражающее наиболее существенные закономерности ее структуры, процесса функционирования и зафиксированное на некотором языке или в другой форме.

Общим св-ом всех моделей явл-ся их подобие оригинальной системе, а процесс построения и последующего применения модели для получения информации о системе-оригинале наз-ся моделированием.