Основные понятия и принципы объектно-ориентированного программирования

Автор работы: Пользователь скрыл имя, 20 Мая 2013 в 23:22, реферат

Краткое описание

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

Прикрепленные файлы: 1 файл

ЛЕКЦИИ ООП ИТО-09 ИСТ-09_2.doc

— 135.00 Кб (Скачать документ)

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

 

Процедурное программирование – парадигма, основанная на использовании процедур. Процедура (иногда также называемая подпрограммой или методом) – это последовательность команд, которые следует выполнить.

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

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

Процедурное программирование является частным случаем императивной парадигмы.

Языки программирования: C, C++, COBOL, FORTRAN, LISP, Pascal.

 

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

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

Императивное программирование является противоположностью декларативного программирования; второе описывает, что необходимо сделать, а первое – как именно это сделать.

Языки программирования: Basic, C, C#, C++, COBOL, FORTRAN, Java, Modula, Pascal, Perl, PL/1, Ada.

 

Декларативное программирование – термин с двумя различными значениями.

Согласно первому  определению, программа «декларативна», если она описывает каково нечто, а не как его создать. Например, веб-страницы на HTML декларативны, так как они описывают, что должна содержать страница, а не как отображать страницу на экране.

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

Декларативная парадигма программирования определяет процесс вычислений посредством  описания логики самого вычисления, а  не управляющей логики программы.

Языки программирования: Prolog, SQL.

 

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

чтобы доказать/решить H, следует доказать/решить B1 и ... и Bn.

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

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

Языки программирования: Prolog.

 

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

Языки программирования: LISP, LOGO, Perl.

 

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

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

Языки программирования: Ada, C, C#, FORTRAN, Modula, Pascal, PL/1, Java.

 

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

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

Языки программирования: Ada, C#, C++, COBOL, Java, Perl, PHP, Ruby, Smalltalk.

Прототипное программирование – разновидность объектно-ориентированного программирования, в котором отсутствует понятие класса. Для повторного использования поведения объекта (в классических языках программирования – наследование) этот объект клонируется, становясь прототипом. Каноническим примером прототипного языка программирования является язык Self.

 

Предметно-ориентированная  парадигма: в платформе созданы базовые классы. Создание пользовательских классов не предусмотрено.

 

Метапрограммирование предусматривает написание программ, которые работают с другими программами в качестве данных. Язык обрабатывающей программы называется метаязыком, язык обрабатываемой – объектным языком.

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

 

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

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

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

Матричное программирование является противоположностью скалярного программирования.

Языки программирования: MATLAB.

 

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

ЯП: Basic, C, C#, COBOL, Java, LOGO, Pascal, Smalltalk.

 

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

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

Большинство современных языков используют понятия типов данных, переменных и операторов присваивания, и, следовательно, реализуют эту парадигму.

Программирование на уровне значений является противоположностью программирования на уровне функций.

ЯП: Basic, C, C#, C++, COBOL, Java, LOGO, Pascal, Perl, Smalltalk.

 

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

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

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

ЯП: FP, J.

 

Нестрогий язык программирования позволяет пользователю определять нестрогие функции и, как следствие, использовать «ленивые» вычисления.

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

 

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

Обобщённое программирование широко используется для реализации универсальных  контейнеров и алгоритмов. Так, стандартная  библиотека шаблонов STL в С++ предоставляет  набор контейнеров (динамический массив, связный список, очередь, множество и т.д.) и алгоритмов, применимых к этим или пользовательским контейнерам.

ЯП: Ada, C#, C++.

 

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

 

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

 

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

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

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

 

Языки программирования и типы данных: типизация языка.

 

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

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

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

 

Преимущества от использования типов данных.

    • Надежность. Типы данных защищают от трех видов ошибок:
    1. некорректное присваивание;
    1. некорректная операция;
    2. некорректная передача параметров.
        • Стандартизация. Благодаря соглашениям о типах, поддерживаемых большинством систем программирования, сложилась ситуация, когда программы не требуют больших переделок при переносе исходных текстов в другую среду.

Информация о работе Основные понятия и принципы объектно-ориентированного программирования