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

25. Абстракция и абстрагирование. Фундаментальные свойства и принципы объектно-ориентированного представления программных систем.

Вызывая подпрограммы, мы абстрагируемся от логики их выполнения. Если удачно разбить программу на подпрограммы, мы сможем в каждой из них работать на одном уровне абстракции - скажем, подпрограмма перемножения матриц имеет дело только с элементами их. В головной же программе программист работает уже с матрицами, не опускаясь до уровня элементов, т.е. количество уровней абстракции уменьшается (точнее говоря, уменьшается не само количество этих уровней, а количество уровней, с которыми работает в данный момент программист). Именно в этом главное преимущество подпрограмм, но не все это понимают, и потому выделяют в подпрограмму обычно просто повторяющиеся действия, не связывая их с понятием абстракции. Я не спорю, что это тоже преимущество подпрограмм, но экономия сил в данном случае - не главный выигрыш. Если не выделен абстрактный объект, который "прячется" за подпрограммой, тот эту подпрограмму ждёт нелёгкое будущее - она либо не будет использоваться, либо будет бесконечно переделываться: история системы ДЕЛЬТА тому яркий пример. При разбитии системы на модули шли от логики, а не от объектов, и поэтому все общие модули постоянно переделываются.

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

1.На каждом уровне ничего не известно о свойствах и даже о существовании более высоких уровней.

2.На каждом уровне ничего не известно о внутреннем строении других уровней.

3.Каждый уровень представляет собой группу модулей.

4.Каждый уровень располагает определёнными ресурсами и либо скрывает их от доугих уровней, либо представляет другим уровням некоторые их абстракции.

5.Каждый уровень может обеспечивать некоторую абстракцию данных в системе.

6.Предположения, которые на каждом уровне делаются относительно других уровней, должны быть минимальны.

7. Связи между уровнями ограничены явными аргументами.

8.Каждый уровень должен иметь высокую прочность и слабое сцепление.

Основные черты объектно-ориентированного подхода к программированию

Абстрагирование и ООП (Полиморфизм... )

Основные черты объектно-ориентированного подхода к программированию

абстрагирование;

инкапсуляция;

наследование;

полиморфизм.

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

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

Инкапсуляция позволяет ограничить доступ к какой-либо информации. Важно понять, что абстракция и инкапсуляция дополняют друг друга, т.е. абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается его внутренним устройством.  Функции двух модификаторов доступа: private и public.

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

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

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