Произходът на обектно-ориентираното програмиране може да бъде проследен до началото на 60-те години на миналия век до езика за програмиране Simula 67, разработен от Кристен Нигаард и Оле Йохан Дал от Норвежкия компютърен център в Осло, Норвегия, и PDP-1 в Масачузетския технологичен институт. PDP-1 или Programmed Data Processor 1 е произведен от Digital Equipment Corporation през 1959 г., PDP-1 също е микрокомпютър, използван за игра на първата компютърна игра, Spacewar на Steve Russell.

Simula 67 въведе идеята за обекти, класове и подкласове; неговият дизайн беше за създаване на, както подсказва името му, симулации, същото имитиране продължава и днес в много обектно-ориентирани езици.

Терминът Обектно ориентирано програмиране е използван за първи път от Xerox, за да опише езика за програмиране Smalltalk, препратка към използването на обекти като основа за изчисление. Въпреки че Simula 67 беше неговото вдъхновение, Smalltalk се различаваше по това, че беше динамичен (адаптивен). Вече не е статичен, Smalltalk въведе наследяване и позволи промяната, създаването и изтриването на обекти, което днес обикновено се нарича CRUD. Simula 67 също вдъхнови създаването на езика за програмиране Pascal. До 80-те години на миналия век обектно-ориентираното програмиране придоби известност в програмирането с навлизането на C++, а по същото време обектно-ориентираното програмиране също играеше решаваща роля в развитието на графичните потребителски интерфейси.

Възникнаха някои проблеми със съвместимостта, защото много програми не бяха проектирани с оглед на ООП подхода. Ранните итерации на ООП, които се считаха за „чисти“, нямаха много от необходимите функционални програмисти, което доведе до изследвания за запазване на обектната ориентация и комбиниране на много от функционалните аспекти, желани от програмистите.

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

Принципите, около които се базира обектно-ориентираното програмиране, са класове, обекти, капсулиране, абстракция, наследяване и полиморфизъм.

Да проучим:

Класове, това са чертежи, които определят какви основни атрибути имат всички членове; пример биха били бозайниците, всички те са топлокръвни, имат косми и в по-голямата си част раждат по-малки подобия на себе си.

Обекти, те следват модела, изложен от класа, но притежават атрибути, които ги правят уникални сами по себе си, тяхното име, цвят, възраст, височина или друг идентификатор ги прави лесни за намиране или извикване поотделно.

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

Абстракция позволява на обектите да разкриват или скриват достатъчно от своите атрибути, необходими за изпълнението на блок от код.

Наследяването е като връзка родител-дете, то позволява също повторно използване на обща логика, поддържаща принципала DRY, пример би бил предаването на рецептата за пай на баба.

Полиморфизмът дава на програмата в зависимост от контекста способността да определя значението или използването на обекти за изпълнение на изпълнявания код.

Някои от по-често срещаните езици за обектно-ориентирано програмиране днес, продължаващи традицията на Simula 67 и Smalltalk, са Java, JavaScript, Python, C++, Ruby, Scala, PHP и Visual Basic.NET.

Кодирайте!