Коренът на обектно-ориентираната парадигма са съобщенията между компонентите, а не структурата на класовете.

Кратко техническо въведение в парадигмите на програмиране

процедурно програмиране

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

Този тип програмиране се основава на алгоритми (една от основите на всички видове програмиране), тоест някои стъпки, които трябва да следвате, нещо като готварски рецепти, където на практика поръчвате на компютър да ви даде определен резултат. Използване на език за програмиране наложително.

Функционално програмиране

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

Вижте това за повече информация



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

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

Четирите „стълба“ на ООП

Абстракция

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

Капсулиране

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

Наследство

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

Полиморфизъм

Тази дума означава „много начини“, този механизъм е свързан с наследяването и става дума за извършване на действие по различни начини, като се използват едни и същи методи, които са имплементирани по различен начин в различните класове. „Знам, че е доста пресилено“ Обяснение.

Целта на парадигмите

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

Малко история

От 1930 г. програмирането е проучено благодарение на ламбда смятането на Алонзо Чърч, което има математически, декларативен подход, повече мисъл за хората, оставяйки машините да работят и правят изчисленията, също машината на Тюринг на Алън Тюринг с императивен процедурен подход , където човекът е този, който създава алгоритмите, които машината трябва да следва.

В тезата на Чърч-Тюринг за изчислимите функции е показано, че ламбда смятането и машината на Тюринг са еквивалентни.

През 40-те години на миналия век се раждат машинният код и по-късно Асемблирането през 1947 г. и години по-късно езиците от високо ниво като Cobol, Lisp и FORTRAN започват да излизат наяве, през 1972 г. се появява езикът C в ръцете на Денис Ричи,който е изключително популярен до ден днешен и Java се ражда едва през 1995, който е признат в целия свят като обектно-ориентиран език par excellence.



Въпреки че Алън Кей се изрази много лошо за Java, наричайки езика болезнен.



През 60-те години на миналия век Алън Кей въвежда обектно-ориентираното програмиране, където идеята му е да капсулира мини компютри с много специфична функция в чист софтуер, така че да могат да комуникират със съобщения, за да си взаимодействат и да комбинират функционалностите си , нещо много подобно на философията на инструментите на командния ред на Unix, където всички команди носят една отговорност и могат да се комбинират за най-добри резултати.



Самият той създаде Small Talk с обекти и класове, но той не поддържаше подкласиране, докато по-късно тази идея не беше реализирана от друг инженер (Алън Кей винаги е смятал подкласирането като разсейване от истинската обектна ориентация), но този език не беше фокусиран върху класове, той беше функционален език, фокусиран върху съобщения между обекти, както е първоначалната идея на тази парадигма.

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

Алън Кей използва знанията си за клетките, за да разработи тази парадигма за програмиране, като се фокусира върху съобщенията, които клетките изпращат една на друга. Подобно на дизайна на ARPANET, т.е. отделни модули, които са свързани чрез съобщения, всъщност Кей смята наследяването и подкласовете или дъщерните класове като отвличане на вниманието от истинското значение на създадената от него парадигма.

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

Заключение

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

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

Свържи се с мен



[email protected]

LinkedInGitHub