Здавалка
Главная | Обратная связь

Структурное и объектно-ориентированное программирование. Другие виды программирования.



Программирование ("программная инженерия", "инженерия ПО", "кодирование") - создание программ, программного обеспечения для ЭВМ с использованием языков программирования (написание исходного кода, тестирование и отладка программ).

Основные виды программирования

1. Процедурное (императивное) использует процедурные языки программирования - Ada, Basic, Си, Кобол, Фортран, Паскаль и др., которые предоставляют возможность программисту разбивать задачи на шаги и решать их шаг за шагом.

 

2. Функциональное. Основные используемые языки - LISP, APL, F#, Miranda, Haskell, ML, Erlang. Функциональный вид описывает математические отношения между данными и целью, не обозначая точной последовательности шагов.

3. Логическое. Самые известные языки - Prolog, Mercury, VisualProlog, Oz. Данный вид основан на теории и принципах математической логики и изучает вывод информации на основе заданных фактов и правил.

4. Объектно-ориентированное. Языки - C#, C++, Java, Delphi, Perl, Python, PHP и многие другие. В основу концепции ООП лежит понятие объекта, который используя свои данные может реагировать на посланные ему сообщения, т.е. выполнять действия. ООП имеет множество схожих методик - Компонентное программирование, Прототипное, Класс-ориентированное и другие.

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

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

Идеи структурного программирования появились в начале 70-годов в компании IBM, в их разработке участвовали известные ученые Э. Дейкстра, Х. Милс, Э. Кнут, С. Хоор.

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

Типы управляющих структур:

– последовательность;

– альтернатива (условие выбора);

– цикл.

Распространены две методики (стратегии) разработки программ, относящиеся к структурному программированию:

– программирование «сверху вниз»;

– программирование «снизу вверх».

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

Главные понятия и разновидности

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

Такое объединение называется инкапсуляцией.

Наличие инкапсуляции достаточно для объектности языка программирования но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.

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

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

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

Абстракция данных

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

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

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

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

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

Полиморфизм

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

Основные концепции

Система состоит из объектов

Объекты некоторым образом взаимодействуют между собой

Каждый объект характеризуется своим состоянием и поведением

Состояние объекта задаётся значением полей данных

Поведение объекта задаётся методами

Традиционный подход

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

Обмен сообщениями

Этот подход предложен Аланом Кэйем в языке Smalltalk.

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

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

Gрототипное программирование

Примерами языков программирования, где используется прототипное программирование, являются Self и JavaScript.

Создание новых объектов через клонирование прототипов.

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


 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.