Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы ООП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
203.41 Кб
Скачать

1)Краткий обзор основных парадигм программирования

В соответствии с концепцией фон-Неймана – основателя теоретической концепции компьютерной техники, процессор обрабатывает данные, выполняя инструкции (команды), которые находятся в той же оперативной памяти, что и данные.

Таким образом, можно выделить две основные сущности процесса обра-ботки информации: код, как совокупность инструкций, и данные. Все программы в соответствии с выбранной технологией программирования концептуально ор-ганизованы вокруг своего кода или вокруг своих данных.

Рассмотрим основные на сегодняшний день парадигмы программирования:

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

  2. Объектно-ориентированная парадигма, при которой программа рас-

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

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

Наряду с двумя вышеизложенными основными в настоящее время пара-дигмами программирования используются еще две парадигмы:

  1. Аппликативная или функциональная парадигма. Основная идея дан-

ного подхода заключается в формализованном определении функции, которую выполняет программа. Таким образом, вместо определения по-следовательности состояний, через которые должен пройти компьютер, чтобы получить требуемый результат, необходимо определить функцию, при применении которой к исходным данным получается требуемое ре-шение:

y = f (x)

Разработка программы при этом подходе сводится к конструированию сложной функции из имеющихся стандартных простых функций:

y = f1 ( f2 ( f3 (...), f4 (...),...))

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

теллекта (ИИ).

  1. Основные принципы ооп

Центральной идеей ООП является реализация понятия "абстракция". Смысл абстракции заключается в том, что сущность произвольной сложности можно рассматривать , а также производить определенные действия над ней, как над единым целым, не вдаваясь в детали внутреннего построения и функцио-нирования.

При создании программного комплекса необходимо разработать опреде-ленные абстракции.

Пример: Задача составления расписания занятий.

Необходимые абстракции: студент, курс лекций, преподаватель, аудитория.

Операции:

  • Определить студента в группу

  • Назначить аудиторию для группы

  • . . . . . . . . . .

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

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

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

Различают типовую иерархию и структурную иерархию, которые далее мы будем называть соответственно структурой классов и структурой объек-тов.

Во всех объектно -ориентированных языках программирования реализованы следующие основные механизмы (постулаты) ООП:

  • Инкапсуляция

  • Наследование

  • Полиморфизм

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

    1. Инкапсуляция механизм, связывающий вместе код и данные, кото-рыми он манипулирует, и одновременно защищающий их от произвольного доступа со стороны другого кода, внешнего по отношению к рассматриваемому. Доступ к коду и данным жестко контролируется интерфейсом.

Основой инкапсуляции при ООП является класс.

Механизма инкапсуляции позволяет оставлять скрытыми от пользователя некоторые детали реализации класса (то есть инкапсулировать их в классе), что упрощает работу с объектами этого класса.

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

Наследование есть очень важное понятие, поддерживающее концепцию иерархической классификации.

  1. Полиморфизм механизм, позволяющий использовать один и тот же интерфейс для общего класса действий.

Пример: Имеются 3 типа стека для хранения:

o целых чисел

o чисел с плавающей точкой o символов

Вместо трех подпрограмм управления в объектно-ориентированной про-грамме требуется всего одна подпрограмма (один интерфейс)

Общая концепция полиморфизма: один интерфейс много методов. Выбор конкретного действия (метода) применительно к конкретной ситуа-

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

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

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