Java
чем отличается структурно процедурное програмирование от обьектно ориентированого?)
Если коротко сюто ООП это методология программирования в котором программа представляется в виде совокупности обектов которые в свою очередь состоят из класов, которы между собой взаимодействуют и наследуются. А процедкюурный язык это набор процедур гемор еще тот... Скажем тебе надо написать простейший браузер на джава ты напишешь его испольщуя штук 20 классов. Состоящих из 20 меетодов к стати еще один плюс ооп что объекты всегда принадлежат какомуто классу. Так что в случае ошибки знаешь в какой класс лезть и в какой метод... С процедурным же так не получится в этой каше чёрт ногу сломит...
Не существует структурно процедурного программирования.
Есть процедурное программирование: программа разбивается на отдельные вычислительные блоки - подпрограммы.
Есть структурное программирование: стиль написания (скорее, конструирования) кода, способствующий формальной верификации и упрощающий понимание чужого кода. К сожалению, модный сейчас С-style не способствует структурному программированию.
"Процедурное программирование" и "структурное программирование" - это понятия разных классов. Процедурная программа далеко не всегда бывает структурной, а структурное программирование применяется далеко не только в процедурном подходе.
Термин ООП имеет множество разных значений (ООП в Smaltalk и ООП в Java - это совершенно разные понятия), но обычно сейчас под ООП подразумевают исключительно C++-style ООП, представляющее собой надстройку над процедурным программированием, заключающуюся в том, что подпрограмма (обычно именуемая методом) запускается в контексте блока данных (обычно именуемого объектом).
Модная мантра "инкапсуляция, полиморфизм, наследование" - это всего лишь красивый лозунг, не слишком хорошо сочетающийся с реальностью.
Полиморфизм прекрасно реализуется безо всякого ООП - если в языке есть процедурные типы. И появился он задолго до ООП.
Инкапсуляция? Так есть языки без ООП с инкапсуляцией и ООП-языки без инкапсуляции. Так что инкапсуляция не является исключительным и обязательным свойством ООП.
Наследование? Оно создаёт куда больше проблем, чем решает. Полиморфизм через интерфейсы (которые вовсе не ООП, а контрактное программирование) проще и надёжнее полиморфизма через наследование. А всё, что делается посредством наследования, можно реализовать через композицию и агрегацию. Так что ООП без наследования - это вполне себе современная и даже местами модная (Go) реальность.
Есть процедурное программирование: программа разбивается на отдельные вычислительные блоки - подпрограммы.
Есть структурное программирование: стиль написания (скорее, конструирования) кода, способствующий формальной верификации и упрощающий понимание чужого кода. К сожалению, модный сейчас С-style не способствует структурному программированию.
"Процедурное программирование" и "структурное программирование" - это понятия разных классов. Процедурная программа далеко не всегда бывает структурной, а структурное программирование применяется далеко не только в процедурном подходе.
Термин ООП имеет множество разных значений (ООП в Smaltalk и ООП в Java - это совершенно разные понятия), но обычно сейчас под ООП подразумевают исключительно C++-style ООП, представляющее собой надстройку над процедурным программированием, заключающуюся в том, что подпрограмма (обычно именуемая методом) запускается в контексте блока данных (обычно именуемого объектом).
Модная мантра "инкапсуляция, полиморфизм, наследование" - это всего лишь красивый лозунг, не слишком хорошо сочетающийся с реальностью.
Полиморфизм прекрасно реализуется безо всякого ООП - если в языке есть процедурные типы. И появился он задолго до ООП.
Инкапсуляция? Так есть языки без ООП с инкапсуляцией и ООП-языки без инкапсуляции. Так что инкапсуляция не является исключительным и обязательным свойством ООП.
Наследование? Оно создаёт куда больше проблем, чем решает. Полиморфизм через интерфейсы (которые вовсе не ООП, а контрактное программирование) проще и надёжнее полиморфизма через наследование. А всё, что делается посредством наследования, можно реализовать через композицию и агрегацию. Так что ООП без наследования - это вполне себе современная и даже местами модная (Go) реальность.
Степенью абстракционирования от архитектуры.
Если кратко - различия в способах мышления разработчика, которые требуются для написания программ в том и другом стиле.
Считается, что ООП более подходит для решения задач моделирования окружающего мира, поскольку человек в этом мире видит вокруг себя кучу разных объектов, которые обладают разными признаками и обмениваются друг с другом сообщениями. Получается как бы минимальный барьер между естественно-языковым (концептуальным) описанием предметной области и ее программной моделью.
При структурном подходе человеку в конечном счете приходится мыслить отдельными переменными, процедурами и функциями, которые он непосредственно не наблюдает в окружающем мире. Поэтому структурный подход требует больше мысленных усилий для построения программной модели предметной области.
Считается, что ООП более подходит для решения задач моделирования окружающего мира, поскольку человек в этом мире видит вокруг себя кучу разных объектов, которые обладают разными признаками и обмениваются друг с другом сообщениями. Получается как бы минимальный барьер между естественно-языковым (концептуальным) описанием предметной области и ее программной моделью.
При структурном подходе человеку в конечном счете приходится мыслить отдельными переменными, процедурами и функциями, которые он непосредственно не наблюдает в окружающем мире. Поэтому структурный подход требует больше мысленных усилий для построения программной модели предметной области.
Похожие вопросы
- Отличается сумма Почему отличается сумма ряда 1/n^2 при n от 1 до 1000000 и от 1000000 до 1?
- Чем Java отличается от JavaScript
- чем отличается перегрузка от переопределения?)
- Чем абстрактный класс отличается от интерфейса?
- Зарплата инженера и программиста у нас отличается в сотни раз, а какая разница в мире между этим специалистами?
- Чем отличается информатика, от програмирования и какие нужны для этого програмы для програмирования при помощи информати
- Чем объектно-ориентированное программирование отличается от процедурного?
- Чем отличается структурная схема от функциональной схемы прибора? Спасибо.
- Програмирование в VBA
- язык програмирования С сильно отличается от паскаля? а если и отличается то в чем различия?