Обектно ориентирано програмиране срещу процедурно програмиране
Обектно ориентираното програмиране (ООП) и процедурното програмиране са две програмни парадигми. Парадигмата на програмиране е основен стил на компютърното програмиране и те се различават по начина, по който са представени различните елементи на програмата и как са дефинирани стъпките за решаване на проблеми. Както подсказва името, OOP се фокусира върху представянето на проблеми с помощта на обекти от реалния свят и тяхното поведение, докато процедурното програмиране се занимава с представяне на решения на проблеми с помощта на процедури, които са колекции от код, който се изпълнява в определен ред. Има езици за програмиране, които поддържат ключови аспекти на ООП (наречени ООП езици), процедурни (наречени процедурни езици) и двете. Но едно важно нещо, което трябва да се отбележи, е, че ООП и процедурният са два начина за представяне на проблеми, които трябва да бъдат решени, и няма значение кой език се използва. С други думи, ООП езиците могат да се използват за процедурно програмиране, докато процедурните езици понякога могат да се използват за ООП, с известно усилие.
Процедурното програмиране е начин за програмиране чрез идентифициране на набор от стъпки за решаване на определен проблем и точния ред, в който те трябва да бъдат изпълнени, за да се достигне до желания резултат или състояние. Например, ако искате да изчислите крайното салдо в края на месеца за банкова сметка, необходимите стъпки ще бъдат както следва. Първо получавате началния баланс на сметката и след това намалявате всички дебитни суми, възникнали през месеца. След това добавяте всички кредитни суми, възникнали през месеца. В края на процеса ще получите крайния баланс на сметката в края на месеца. Една от основните концепции на процедурното програмиране е извикването на процедура. Процедура, известна още като подпрограма, метод или функция, съдържа подреден списък от инструкции, които трябва да бъдат изпълнени. Процедура може да бъде извикана по всяко време по време на изпълнението от всяка друга процедура или сама по себе си. Примери за процедурни езици за програмиране са C и Pascal.
В ООП фокусът е върху мисленето за проблема, който трябва да бъде разрешен по отношение на елементи от реалния свят и представяне на проблема по отношение на обекти и тяхното поведение. Обектът е структура от данни, която много прилича на обект от реалния свят. Обектите съдържат полета с данни и методи, които представляват атрибути и поведение на обекти от реалния свят. Има няколко важни OOP концепции като абстракция на данни, капсулиране, полиморфизъм, съобщения, модулност и наследяване. Някои популярни ООП езици са Java и C. Те обаче могат да се използват и за извършване на процедурно програмиране.
Ключовата разлика между ООП и процедурното програмиране е, че фокусът на процедурното програмиране е да разбие програмната задача в колекция от променливи и подпрограми, докато фокусът на ООП е да разбие програмната задача в обекти, които капсулират данни и методи. Най-забележителната разлика може да бъде, че докато процедурното програмиране използва процедури за директна работа със структури от данни, ООП ще обедини данните и методите заедно, така че обектът да работи със собствените си данни. Що се отнася до номенклатурата, процедура, модул, извикване на процедура и променлива в процедурното програмиране често се наричат съответно метод, обект, съобщение и атрибут в ООП.