Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Структурное , процедурное программирование, Переход к ООП и сравнение

Лекция



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

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

Изначально понятие технологии как таковой появилось в период “стихийного” программирования (это 60-е годы прошлого столетия). В этот период отсутствовало понятие структуры программы, типов данных и т.д. Вследствие этого код получался запутанным, противоречивым. Программирование тех лет считалось искусством. Конец 60-х — кризис в программировании.

Выход из этого кризиса — переход к структурной парадигме программирования.

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

Другим базовым принципом структурного программирования является использование при составлении программ только базовых алгоритмических структур , запрет на использование оператора GOTO.

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

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

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

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

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

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

Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Так, были созданы среды, поддерживающие визуальное программирование, например, Delphi, C++ Builder, Visual C++ и т.д. При использовании визуальной среды у программиста появляется возможность проектировать некоторую часть, например, интерфейсы будущего продукта, с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.

Можно дать обобщающее определение: объект ООП — это совокупность переменных состояния и связанных с ними методов (операций). Упомянутые методы определяют, как объект взаимодействует с окружающим миром.

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

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

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

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

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

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

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

Компонентный подход лежит в основе технологий, разработанных на базе COM (Component Object Model — компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture — общая архитектура с посредником обработки запросов объектов). Эти технологии используют сходные принципы и различаются лишь особенностями их реализации.

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

Дальнейшее развитие технологи и методов разработки программного обеспечения приввело к разделению на декларативну и императивную парадикму программрования. Суть которой скрыть вооще "Как делать" и использовать только "Что получить". Императивными языками являтся процедурно и объетно ориентированные языки.

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

На повышение уровня декларативности нацелено языково-ориентированное программирование.

Так же в последние годы появляются мультипарадигменные языки позволящие писать как в имеративном та и в декларативном стиле.

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

Понятие ООП. Сравнение процедурно-ориентированного и объектно-ориентированного подходов к программированию

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

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

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

Ассемблер и языки высокого уровня моделируют компьютер, облегчая программисту общение с ним. Об этом говорит сайт https://intellect.icu . Альтернативой моделированию компьютера является моделирование решаемой задачи. Такие языки программирования, как ЛИСП и ПРОЛОГ, используют именно этот подход. Однако с помощью этих языков достаточно трудно решать задачи, для которых они изначально не предназначались.

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

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

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

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

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

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

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

Мы все знаем, что существуют 2 подхода к написанию программы – процедурно-ориентированное программирование (ПОП) и объектно-ориентированное программирование (ООП). Вы можете написать программу, используя любой из этих способов, но между ними есть заметные различия. Эти 2 подхода являются результатом эволюции разработки программного обеспечения, длившейся многие десятилетия. С момента изобретения компьютера было опробовано множество подходов и методов написания программ. Сюда можно отнести такие методы, как программирование сверху вниз (Top-Down programming), программирование снизу вверх (Bottom-Up programming), модульное программирование (Modular programming), структурное программирование (Structured programming) и другие. Основной целью всех этих методов было одно — сделать процесс программирования эффективнее. Это означает, сделать процесс написания сложных программ менее трудным, легко понимаемым, легко расширяемым/модифицируемым и имеющим как можно меньшую вероятность появления ошибок.

Говоря простыми словами, разницу между ПОП и ООП можно объяснить так:

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

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

Рассмотрим теперь каждую методику в отдельности.

Процедурно-ориентированное программирование (POP)

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

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структура методики ПОП

Проблема при применении ПОП заключается в обработке данных. В ПОП данным не придается никакого значения. Под данными мы понимаем информацию, полученную от пользователя, новые результаты, полученные после вычислений, и т.д. Если вы знакомы с программированием на C, то можете вспомнить классы памяти (storage classes) этого языка. В C элемент данных (переменная) должен быть объявлен как GLOBAL для того, чтобы он мог быть доступен двум или более функциям программы. Что происходит, когда 2 или более функций работают с одним и тем же элементом данных? Если в программе насчитывается 10 функций, то все эти 10 функций могут получить доступ к глобальной переменной. Вполне возможно, что одна функция может случайно изменить значение этой глобальной переменной. И если она является ключевым элементом программы, любые такие случайные манипуляции повлияют на всю программу. Тогда будет слишком трудно отлаживать и выявлять функцию, вызывающую проблемы, особенно если программа очень большая.

Структурное , процедурное программирование, Переход  к ООП и сравнение

Работа с данными и функциями в ПОП

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

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

Объектно-ориентированное программирование (OOP)

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

Первой особенностью ООП, о которой упомянули бы программисты, является сокрытие данных (инкапсуляция). ООП придает огромное значение данным. Программист может скрыть действительно важные ключевые данные от внешнего мира, используя инструменты ООП. Базовая концепция ООП основана на понятии, схожем с понятием структуры в ПОП и называемым классом. Класс представляет собой важную особенность ООП, он позволяет упаковать вместе различные типы данных наряду с различными функциями, манипулирующими элементами данных этого класса. Элементы данных внутри класса могут быть объявлены как локальные (private) или глобальные (public). Для того, чтобы спрятать данные от внешнего мира, программист должен объявить их как private. В общем, класс действительно схож со структурой в языке C. Как и любая структура, он объединяет в единое целое различные объекты. Основное отличие между классом и структурой кроется в функциях. Структуры не позволяют объединять в себе данные и функции (структуры работают только с данными), тогда как классы позволяют упаковывать данные вместе со связанными с ними функциями. Кроме того, имеются еще различия, вроде сокрытия данных с помощью private/public. Структуры не облегчают сокрытие данных. В структуре к ее элементам получают доступ с помощью так называемых структурных переменных. В ООП используют другое понятие для доступа к данным и функциям внутри класса — объект. Данные и функции внутри класса называются членами или элементами класса. К элементу класса может быть получен доступ из внешнего мира (вне класса) только с помощью объекта класса.

Структурное , процедурное программирование, Переход  к ООП и сравнение

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

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

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

Переход от процедурного подхода к ООП

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

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Пример внедрения ООП в код программыСтруктурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Пример непонимания ООП

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

Структурное , процедурное программирование, Переход  к ООП и сравнение

отличие ооп и процедурно-ориентированного программирования

  1. В объектно-ориентированном программировании программа делится на части, называемые объектами, тогда как в процедурно-ориентированном программировании программа делится на небольшие части, называемые функциями.
  2. В объектно-ориентированном программировании объекты могут перемещаться и взаимодействовать друг с другом через функцию-член, тогда как в процедурно-ориентированном программировании данные могут свободно перемещаться от функции к функции в системе.
  3. В объектно-ориентированном программировании значение придается данным, а не процедурам или функциям, потому что они работают как реальный мир. С другой стороны, в процедурно-ориентированном программировании значение придается не данным, а функциям, а также последовательности действий, которые необходимо выполнить.
  4. Объектно-ориентированное программирование следует подходу снизу вверх, тогда как процедурно-ориентированное программирование следует подходу сверху вниз.
  5. Объектно-ориентированное программирование обеспечивает скрытие данных, что делает его более безопасным. Но процедурное программирование не имеет надлежащего способа скрытия данных, поэтому оно менее безопасно.
  6. В объектно-ориентированном программировании данные важнее функции. С другой стороны, в процедурном программировании функция важнее данных.
  7. Перегрузка в виде перегрузки функций и перегрузки операторов возможна в объектно-ориентированном программировании, тогда как в процедурно-ориентированном программировании перегрузка невозможна.
  8. В объектно-ориентированном программировании существует три режима доступа: «открытый», «частный», «защищенный», которые используются в качестве общего ресурса для доступа к атрибутам или функциям. С другой стороны, в процедурно-ориентированном программировании нет специального режима доступа для доступа к атрибутам или функциям в программе.
  9. Существующий код в объектно-ориентированном программировании может быть повторно использован функцией, называемой наследованием. А в процедурно-ориентированном программировании такой возможности нет.
  10. В объектно-ориентированном программировании легко добавить новые данные и функции, тогда как в процедурно-ориентированном программировании добавить новые данные и функции непросто.
  11. В объектно-ориентированном программировании данные не могут легко перемещаться от функции к функции, они могут быть общедоступными или частными, чтобы мы могли контролировать доступ к данным. В процедурно-ориентированном программировании большинство функций используют глобальные данные для совместного использования, к которым можно получить свободный доступ от функции к функции в системе.
  12. Примеры объектно-ориентированных языков программирования включают: C ++, Java, VB.NET, C # .NET и Python, с другой стороны, C, VB, Fortran и Pascal являются общими примерами процедурно-ориентированных языков.

Таблица Процедурно-ориентированное программирование (POP) VS Объектно-ориентированное программирование (ООП) (сравнение)

ОСНОВА СРАВНЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) ПРОЦЕДУРНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (POP)
Отдел программы В объектно-ориентированном программировании программа делится на части, называемые объектами . В процедурно-ориентированном программировании программа делится на небольшие части, называемые функциями .
Движение данных Объекты могут перемещаться и взаимодействовать друг с другом через функцию-член. Данные могут свободно перемещаться от функции к функции в системе.
Важность Важность придается данным, а не процедурам или функциям, потому что они работают как реальный мир . Важность придается не данным, а функциям, а также последовательности действий, которые необходимо выполнить.
Подходить Объектно-ориентированное программирование следует подходу «снизу вверх». Процедурно-ориентированное программирование следует подходу сверху вниз.
Безопасность Объектно-ориентированное программирование обеспечивает скрытие данных, что делает его более безопасным. Но процедурное программирование не имеет надлежащего способа скрытия данных, поэтому оно менее безопасно.
Виртуальные классы Понятие виртуальной функции появляется при наследовании. Нет понятия виртуальных классов.
Самый важный атрибут Данные важнее функции. Функция важнее данных.
Перегрузка В объектно-ориентированном программировании возможна перегрузка в виде перегрузки функций и операторов. В процедурно-ориентированном программировании перегрузка невозможна.
Режимы доступа В объектно-ориентированном программировании существует три режима доступа: «открытый», «частный», «защищенный», которые используются в качестве общего ресурса для доступа к атрибутам или функциям. В процедурно-ориентированном программировании нет специального режима доступа для доступа к атрибутам или функциям в программе.
Возможность повторного использования кода Существующий код в объектно-ориентированном программировании может быть повторно использован функцией, называемой наследованием. В процедурно-ориентированном программировании такой возможности нет.
Добавление новых данных и функций В объектно-ориентированном программировании легко добавлять новые данные и функции. В процедурно-ориентированном программировании добавить новые данные и функции непросто.
Размер проблемы Подходит для решения больших задач. Он не подходит для решения больших задач.
Доступ к данным В объектно-ориентированном программировании данные не могут легко перемещаться от функции к функции, они могут быть общедоступными или частными, чтобы мы могли контролировать доступ к данным. В процедурно-ориентированном программировании большинство функций используют глобальные данные для совместного использования, к которым можно получить свободный доступ от функции к функции в системе.
Примеры Примеры объектно-ориентированных языков программирования: C++, Java, VB.NET, C # .NET и Python. PHP , C, VB, Fortran и Pascal - распространенные примеры процедурно-ориентированных языков.

Таким образом

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

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

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

Вау!! 😲 Ты еще не читал? Это зря!

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

создано: 2014-08-30
обновлено: 2023-05-01
132868



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Объектно-ориентированное программирование ООП

Термины: Объектно-ориентированное программирование ООП