Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по курсу Информатика NEW.doc
Скачиваний:
60
Добавлен:
26.02.2016
Размер:
6.33 Mб
Скачать

На практике наибольшее распространение получили язык функционального программирования lisp и два его диалекта: язык Common lisp и язык Scheme.

Кроме языка LISP, основной областью применения которого являются системы искусственного интеллекта, известны и другие языки функционального программирования: ML (MetaLanguage), Miranda и Haskell. Программирование как на императивных, так и на функциональных языках является процедурным. Это означает, что программы на этих языках содержат указания, как нужно выполнять вычисления.

Декларативные языки программирования - это языки программирования, в которых операторы представляют собой объявления или высказывания в символьной логике. Типичным примером таких языков являются языки логического программирования (языки, основанные на системе правил).

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

разрешающее условие 1 → последовательность операторов 1

разрешающее условие 2 → последовательность операторов 2

разрешающее условие n → последовательность операторов n

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

Наиболее распространенным языком логического программирования является язык Prolog (Пролог).

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

Основными областями применения языка Prolog являются экспертные системы, системы обработки текстов на естественных языках и системы управления реляционными базами данных.

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

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

Использование концепции объектно-ориентированного программирования позволяет упростить разработку сложных программ и повысить их надежность.

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

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

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

В ООП базовыми единицами программ и данных является классы.

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

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

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

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

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

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

Инкапсуляция - это комбинирование данных с процедурами и функциями, которые манипулируют этими данными. Класс представляет единство трех сущностей - полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией.

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

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

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

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

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

Например, класс «животное», имеет свойства «название», «размер», «методы», «идти», «размножатся» Созданный на его основе класс «кошка» содержит все эти свойства и методы, к которым дополнительно добавляется свойство «окраска» и метод «пить».

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

Полиморфизм

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

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

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

Полиморфизм (от греч. «многоликость») — механизм, допускаю­щий возможность использования одинаковых имен для разных ме­тодов обработки данных различных типов. Основная идея этого ме­ханизма состоит в том, что он позволяет создавать стандартные интерфейсы для схожих методов обработки разных объектов. Благодаря полиморфизму в ООП обработка объектов уп­рощается, так как одинаковым действиям объектов соответствуют одноименные методы.

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

Идеи ООП проникли во многие процедурные языки. Например, в состав интегрированной системы программирования Паскаль (кор­порации Borland International), начиная с версии 5.5, входит специ­альная библиотека ООП Turbo Vision.

С середины 90-х гг. многие объектно-ориентированные языки реализуются как системы визуального программирования. Такие систе­мы имеют интерфейс, позволяющий при составлении текста про­граммы видеть те графические объекты, для которых она пишется. Отличительной особенностью этих систем является наличие в них среды разработки программ из готовых «строительных блоков», по­зволяющих создавать интерфейсную часть программного продукта в диалоговом режиме, практически без написания программных опе­раций. Система берет на себя значительную часть работы по управ­лению компьютером, что делает возможным в простых случаях об­ходиться без особых знаний о деталях ее работы. Она сама пишет значительную часть текста программы: описания объектов, заголов­ки процедур и многое другое. Программисту остается только вписать необходимые строчки, определяющие индивидуальное поведение программы, которые система не в состоянии предвидеть. Но даже в этих случаях система сама указывает место для размещения таких строк. К объектно-ориентированным системам визуального проек­тирования относятся: Visual Basic, Delphi, C++ Builder, Visual C++. Это системы программирования самого высокого уровня.

VBA (Visual Basic for Application) является общей языковой плат­формой для приложений Microsoft Office (Excel, Word, Power Point и др.). VBA соблюдает основной синтаксис и правила программирова­ния языков Бейсик-диалектов. VBA помогает довольно сильно рас­ширить возможности приложений за счет написания макросов — программ, предназначенных для автоматизации выполнения многих операций. VBA позволяет создавать объекты управления графичес­кого интерфейса пользователя, задавать и изменять свойства объек­тов, подключать к ним необходимый для конкретного случая про­граммный код. С помощью VBA можно производить интеграцию между различными программными продуктами. Программы на язы­ке VBA для приложений создаются двумя способами: в автоматическом режиме как результат построения клавишной макрокоманды или путем написания программного кода.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.