Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_СИТ_1-55(все).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
656.9 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

26. Понятие системы, системность, сложная система, системный эффект.

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

Состав системы — это множество входящих в нее частей. В качестве примера системы рассмотрим объект, с которым ученикам приходится иметь дело на уроках информатики, — персональный компьютер.

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

Появление нового качества у системы называется системным эффектом. Это же свойство выражается фразой: "Целое больше суммы своих частей".

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

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

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