Другие языки программирования и технологии

Чем объектно-ориентированное программирование отличается от процедурного?

ООП от процедурного поколения отличается наличием классов и объектов.
Класс можно рассматривать как подпрограмму, которая содержит в себе свои данные (в ООП поля) и функции (в ООП методы).
Хотя более обычной формулировкой считается, что это отражает какой-нибудь объект.
И в программе можно создавать экземпляры классов - объекты, с которыми можно играться.
Как уже сказали, при помощи классов можно разбить программу на независимые части.
------
По моему субъективному мнению, ООП полезно в средних и больших программах, когда уже функций многовато и переменных и чтобы не держать в голове что делают все функции и за что отвечают все глобальные переменные, лучше сделать классы, использовать разные прелести ООП (Абстракиця, Инкапсуляция, Наследование, Полиморфизм). А в маленьких программах ООП может усложнить жизнь (привет Java и C#).
К тому же кидать новичков сразу в ООП как-то дико.
Евгений Смышляев
Евгений Смышляев
28 648
Лучший ответ
Реально - почти ничем. Просто позволяет разделить программу на независимые части - классы. Посмотри языки Oberon или Go - там очень хорошо видно, что ООП - всего лишь надстройка над процедурами.
Пример из java.
Создаём объект Human - человека:
Human hum = new Human(23,"Петя");
Где передали параметры 23 (возраст) и "Петя" (имя) в конструктор. Эти параметры сохранены в объекте hum в его полях. Теперь вызываем для данного объекта функцию, которая имеет доступ к полям объекта.
int age = hum.getAge(); функция getAge, вызванная у объекта hum типа Human, вернула его возраст. Вызываем другой метод: hum.kill();

Теперь создаем наследника классу Human, назовём его Child. Child является Human, но может переопределить методы класса Human и добавить новые, таким образом расширить класс и изменить.
Human hum2 = new Child(5,"Вася",hum); тут у конструктора есть дополнительный параметр, где задаётся родитель ребёнка.
Теперь вызываем hum2.kill(); этот метод мог быть переопределен.

Интерфейсы: Есть интерфейсы comparable, cloneable, runnable и др. Интерфейс принуждает класс иметь в наличии опр. функционал (методы и т. д). comparable - объекты класса можно сравнивать (метод compare - больше, меньше или равен). Заранее написанный алгоритм сортировки может требовать от объектов класса быть сравнимыми между собой (comparable). Cloneable - объект можно скопировать методом clone. И т. д. и т. п. То есть наделяем функционалом, который должен быть реализован в классе.
Сергей Гулида
Сергей Гулида
91 372
ООП - самотык с ЧПУ
ПП - просто самотык
в объектном есть классы и объекты
в них внутри есть функции которые работают только для этого класса или объекта (экземпляра этого класса)

в процедурном классов нет и функции общие
IB
Incoming Bg
75 320
Процедурное программирование - это типа как Нео, а объектно-ориентированное программирование - это агент Смит.
No Name
No Name
26 548
представлением неких абстракций (мат. моделей) в виде других абстракций (объектов), подчиняющимся неким принципам (всякие там инкапсуляции и другие страшные слова).
используй с++ или питон и пиши как хочешь...
Своим гемороем и нереально большим временем компиляции, по сути тот же частный случай ПП где передается скрытно параметр объекта класса (this)...

Похожие вопросы