Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

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

Главная > Реферат >Информатика, программирование

Сохрани ссылку в одной из сетей:

Введение

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

1. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ – ОСНОВНЫЕ ПОНЯТИЯ И ПРИНЦИПЫ

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

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

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

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

И вновь сложность разрабатываемого программного обеспечения стала ограничиваться возможностью программиста отслеживать процессы обработки данных уже на новом уровне. К этому добавились проблемы согласования интерфейса при ведении разработки несколькими программистами. В результате встал вопрос создания технологии разработки сложных программных продуктов, снижающей вероятность появления ошибок. Усилиями многих авторов такая технология была создана и получила название «структурное программирование».

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

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

  • собственно структурное программирование, рекомендующее определенные структуры алгоритмов и стиль программирования (чем нагляднее текст программы, тем меньше вероятность ошибки);

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

Поддержка принципов структурного программирования была заложена в основу процедурных языков программирования. Среди наиболее известных языков этой группы стоит назвать PL/1, ALGOL-68, Pascal, С.

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

Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов, модуль подпрограмм вывода на принтер. Связи между модулями осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (С++), языки Ада и Modula.

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

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

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

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

Взаимодействие программных объектов в такой системе осуществляется путем передачи сообщений (рис. 1.1).

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

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

Рис. 1.1. Архитектура программы при ООП

Основной недостаток ООП – некоторое снижение быстродействия за счет более сложной организации программной системы.

Основные понятия ООП

1. Класс. Представьте себе, что вы являетесь конструктором и собираетесь спроектировать легковой автомобиль. Вы знаете, что автомобиль должен содержать кузов, двигатель, подвеску, две передних фары, 4 колеса, и т.д. Ещё вы знаете, что автомобиль должен иметь возможность набирать и сбавлять скорость, совершать поворот и двигаться задним ходом. И, что самое главное, вы точно знаете, как взаимодействует двигатель и колёса, согласно каким законам движется распредвал и коленвал, а также как устроены дифференциалы. Вы уверены в своих знаниях и начинаете проектирование.

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

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

С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов):

Класс = Набор данных + Методы

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

В нашем случае, класс будет отображать сущность – автомобиль.

Атрибуты класса «Автомобиль»: кузов, двигатель, подвеска, четыре колеса и т.д.

Методы класса «Автомобиль»: открыть дверь, нажать на педаль газа, а также «закачать порцию бензина из бензобака в двигатель».

Очевидно, что первые два метода доступны для выполнения другим классам (в частности, классу «Водитель»). Последний описывает взаимодействия внутри класса и не доступен пользователю.

2. Объект. Вы отлично потрудились и автомобили, разработанные по вашим чертежам, сходят с конвейера. Вот они, стоят ровными рядами на заводском дворе. Каждая из них точно повторяет ваши чертежи. Все системы взаимодействуют именно так, как вы спроектировали. Но каждая машина уникальна. Они все имеют номер кузова и двигателя, но все эти номера разные, автомобили различаются цветом, а некоторые даже имеют литьё вместо штампованных дисков. Эти автомобили, по сути, являются объектами вашего класса.

Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом.

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

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

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

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

3. Интерфейс. Когда мы подходим к автомату с кофе или садимся за руль, мы начинаем взаимодействие с ними. Обычно, взаимодействие происходит с помощью некоторого набора элементов: щель для приёмки монеток, кнопка выбора напитка и отсек выдачи стакана в кофейном автомате; руль, педали, рычаг коробки переключения передач в автомобиле. Всегда существует некоторый ограниченный набор элементов управления, с которыми мы можем взаимодействовать.

Интерфейсэто набор методов класса, доступных для использования другими классами.



Похожие страницы:

  1. Изучение основных принципов языка Delphi и C++

    Курсовая работа >> Информатика, программирование
    ... Цель работы: изучение основных принципов языка Delphi, а также получение основных навыков разработки приложений с графическим ... дисциплине Объектно-ориентированное программирование был использован Microsoft Visual Studio 2010. Среды разработки Borland ...
  2. Разработка визуализатора для нахождения максимального потока в сети

    Курсовая работа >> Коммуникации и связь
    ... – так называемая, система визуального программирования. Delphiэто среда разработки программ, ориентированных на работу в операционных системах семейства Windows. Программы в Delphi создаются на ...
  3. Объектно-ориентированные языки програмирования

    Реферат >> Информатика
    ... ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ 1.1. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Технология программирования - это совокупность методов и средств разработки (написания) программ и порядок применения этих ... приводятся основные реализации и поставщики. Системы DEC, ...
  4. Информационные системы (12)

    Реферат >> Информатика
    ... . Система визуального программирования Delphi позволяет в полной мере реализовать современные концепции программирования, включая: объектно-ориентированный подход; визуальные средства быстрой разработки ...
  5. Основные понятия и принципы системы Delphi

    Лекция >> Информатика, программирование
    ... идеологии Delphi лежит технология визуального проектирования и методология объектно-ориентированного событийного программирования. Приложения (прикладные программы) Delphi являются интерактивными сис­темами ...

Хочу больше похожих работ...