Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Понятие об абстракции и инкапсуляции

Функции

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

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

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

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

 

В языке Си имеется развитый аппарат подпрограмм, которые называются функциями.

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

При использовании функций важно получить ответ на следующие вопросы:

1. Какова роль функций в программировании?

2. Какие разновидности функций имеются в языке Си?

3. Чем отличается понятие функции языка Си от понятия функции, принятого в математике?

4. В чем состоят преимущества и недостатки применения функций при программировании на языке Си?

5. Как оценить качество разработанной функции?

6. Как организованы функции языка Си?

7. Из каких структурных частей состоит функция языка Си?

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

<== предыдущая лекция | следующая лекция ==>
Использование зарезервированного слова typedef для объявления синонимов типов | Понятие о функции
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 358; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.