Обектно-ориентирано програмиране: Опростяване на сложните понятия

Разкриване на информация Вашата поддръжка помага за поддържането на сайта! Печелим такса за препращане за някои от услугите, които препоръчваме на тази страница.


Обектно-ориентираното (OO) програмиране е парадигма за програмиране, която включва или разчита на концепцията за обекти, капсулирани структури от данни, които имат свойства и функции и които взаимодействат с други обекти.

Обектите в дадена програма често представляват обекти от реалния свят – например приложение за уебсайт за електронна търговия може да има клиентски обекти, обекти на Shopping_cart и обекти на продукта. Другите обекти може да са слабо свързани с реални еквиваленти – като Payment_processor или Login_form. Много други обекти обслужват логиката на приложението и нямат пряк паралел в реалния свят – обекти, които управляват удостоверяване, шаблониране, обработка на заявки или някоя от другите безброй функции, необходими за работещо приложение.

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

История на обектно-ориентираното програмиране

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

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

Разпространението на обектно-ориентираното програмиране в началото беше сравнително бавно. Common Lisp въвежда Общата система Lisp Object, добавяйки обекти към Lisp, в края на 70-те години. През 80-те години на миналия век е изобретен Айфеловият език за програмиране, който е изцяло обектно ориентиран. Изобретателят на Айфел, Бертран Майер, пише Обектно-ориентирана софтуерна конструкция, която беше една от първите книги, разпространяващи широко концепциите за OO програмиране.

През 90-те и през 2000-те обектно-ориентираното програмиране наистина започна. Това съвпадна с мащабен взрив в технологичната индустрия като цяло през този период и внезапния приток на програмисти в големи технологични компании. Една от точките за продажба на обектно-ориентираното програмиране, както се насърчава от неговите защитници, е, че разделянето на проблемите и разхлабеното свързване (виж по-долу) дават възможност на екипите да работят по-ефективно на големи системи.

В края на първото десетилетие на 21 век обектно-ориентираното програмиране до голяма степен се е превърнало в приетия „един правилен начин“ за разработване на повечето софтуер. По-новите езици за програмиране, особено динамично типирани интерпретирани езици като Python, Ruby и JavaScript, са склонни да приемат или дори да налагат обектно-ориентиран подход. Междувременно много по-стари езици като Fortran и COBOL са добавили обектно-ориентирани функции.

Важни обектно-ориентирани концепции

Обектно-ориентираното програмиране е концепция – начин да се подходи към проблема за проектиране на компютърна програма. Това не е твърд и бърз набор от правила или конкретна методология. Различните езици за програмиране подхождат към OOP по различен начин. Някои са повече или по-малко строги, а други просто различни. Следва общ преглед на обектно-ориентираните дизайнерски концепции. Вижте нашата сестринска статия, Обектно-ориентирано програмиране за ресурси и подробности, които обясняват как тези концепции се прилагат на много различни езици.

Разделяне на опасенията

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

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

Обекти и класове

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

Класът определя обект; обект създава клас. Например, нека продължим да мислим за уебсайт за електронна търговия. Има много клиенти, но всички те правят едно и също нещо. Така че ще има клиентски клас, в който програмистът определи какво е клиент и как работи. След това всеки отделен клиент се представя в системата от клиентски обект.

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

Класически и некласически OO езици

Има няколко езика, които включват голям брой обектно-ориентирани концепции, но които нямат конструкция, специално наречена клас. Най-забележителният е JavaScript, който използва прототипи или общи предмети, които след това се клонират. Терминологията, основната философия и дори прилагането „под капака“ са различни – и въпреки това опитът на разработчиците е до голяма степен един и същ.

Езиците с класове, които представляват по-голямата част от OO езиците, понякога се наричат ​​„класически“. Това е едновременно каламбур върху думата “class” и потвърждение, че класовете са се превърнали в конвенционалния подход за обектно-ориентирано програмиране.

Методи и свойства

Обектът има променливи, които обикновено се наричат ​​свойства или атрибути в повечето езици. Например, клиентски обект може да има свойства като shipping_address или име.

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

Едно от предизвикателствата при разработването на добри обектно-ориентирани програми е определянето как да се разделят функции между няколко потенциални класа. Например, трябва ли метод за плащане да принадлежи на Клиента или на количката? Клиентът притежава ли метода на изход или клиентът извиква метода на изход на някакъв обект Authentication_manager?

Друго предизвикателство за много нови OO програмисти е разбирането как да проектират класове, които не представляват неща от реалния свят. Разбирането, че електронната търговия се нуждае от Продукти и системата за управление на проекти се нуждае от Проекти е доста лесно. Но големите обектно-ориентирани програми имат безброй класове, определящи всички видове абстрактни пакети от функционалности, като обектни релационни картографи, фабрики за обекти и контролери (само за да назовем три лесни за разбиране примери).

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

Ето няколко ресурса, които ще ви помогнат да разберете по-добре клас, свойства и методи:

  • Класове, обекти, свойства и концепции за методи е страхотен 10-минутен видео преглед на тези понятия;
  • Изборът между свойствата и методите е .NET урок, обхващащ някои съображения за дизайн, приложими към всеки език;
  • Разбирането на класове, методи и свойства в C # дава добро обяснение с някои полезни диаграми.

Предаване на съобщения и динамично изпращане

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

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

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

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

  • Някой попита Какво предава съобщение в OO? на StackExchange; последваха някои много полезни отговори;
  • Вижте също Кои са основните разлики между OO в Smalltalk и Java? за някакъв поглед върху това как предаването на съобщения се е променило от първоначалната идея до това как работи най-вече на съвременните езици;
  • Съобщение Предаването на c2 wiki има подробно, макар и донякъде хаотично обяснение.

Капсулирането

Тясно свързана с предаването на съобщения и динамичното изпращане е концепцията за капсулиране. Капсулирането означава, че кодът извън обекта не може директно да получи достъп до вътрешните му данни. Ако, например, един обект трябва да „познае“ свойство на друг обект (например, може да се нуждае от Ship_manager за доставка_адрес на клиентски обект), тогава извикващият обект не може да намери тези данни директно; тя трябва да предаде съобщение „питане“ на обекта на клиента, което след това връща необходимите данни. (Обикновено това се прави с повикване на метод.)

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

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

Наследяване и Състав

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

Наследяването описва взаимоотношенията “е”: Потребителят е Личност; клиент е Потребител. В този пример може да има клас Person, който дефинира всички свойства и методи на Persons като цяло (име, рожден ден). Тогава потребителският клас ще разшири класа Person, за да добави неща като атрибут на потребителско име или вход и методи за излизане. След това клиентски клас може да разшири Потребителя, добавяйки тези неща, от които се нуждае само клиент, като order_history или billing_address.

Съставът описва връзка „има“, когато един обект „притежава“ друг обект. Например, класът на клиента може да притежава Billing_address, който сам по себе си е пълноценен обект, дефиниран в клас. Подобно на йерархията на наследството, композиционната йерархия лесно може да бъде дълбока на няколко слоя. Например: Клиентът може да има Shopping_cart, Shopping_cart има няколко продукта, всеки продукт има доставчик и т.н..

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

  • Наследяване срещу състав: Кое от тях да изберете? влиза в някои от дизайнерските съображения при изграждането на йерархия на сложен клас;
  • Състав срещу Наследяване: Как да изберем? обхваща същия въпрос, но от друг ъгъл и с повече хумор;
  • Java Design: Обектите, UML и процесите, от Kirk Knoernschild, включват раздел, „Комбиниран принцип на повторна употреба“, в първата глава, който обяснява защо композицията понякога е по-добра, дори когато наследяването изглежда правилно.

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

Полиморфизмът (или по-точно подтип полиморфизъм) е понятие, което естествено произлиза от наследство. Ако родителският клас (или „Супер клас“) има определен метод, тогава всички негови деца („подкласове“) също ще имат метода. Всеки подклас може да реализира метода по различен начин, но не се нуждае от извикващи обекти да знаят кой от няколко подтипа извикват. Те могат да третират всички различни подтипове обекти като еквивалентни.

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

  • Полиморфизъм в Java – методът Overloading and Overriding е нежно въведение в полиморфизма;
  • Обектно-ориентирани концепции за програмиране: Полиморфизмът и интерфейсите са конкретно за ActionScript, но предоставят много подробности по темата, включително различни проблеми и ограничения;
  • Полиморфизъм – обектно-ориентираното програмиране в C ++ е приятно видео обяснение;
  • Принципът на заместване в Лисков (PDF) е презентация, която ще ви помогне да разберете подтипирането.

Научете повече за обектно-ориентираното програмиране

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

  • Дизайнерски модели: Елементи на многократно използвания обектно-ориентиран софтуер, от Gamma и др., Е класическата книга, която въведе обектно-ориентирана програма на основните разработчици; все още е задължително четене;
  • Обектно-ориентиран анализ и дизайн с приложения, от Booch и др., Надхвърля писането на OO код и попада в месото на OOP-движението, което е анализ и проектиране на системи;
  • Обектно-ориентираният мисловен процес на Мат Вайсфелд е добра книга за разработчици, квалифицирани в процедурно или функционално програмиране и които трябва да преквалифицират мисленето си към обекти и класове;
  • OOP Demystified, от Keogh и Giannini, представя урок за OOP в контекста на разработването на приложения в реалния свят с акцент върху уменията и мисленето, необходими за прилагане на обектно-ориентиран анализ и процес на проектиране;
  • Обектно-ориентираната софтуерна конструкция, от Бертран Майер, е класическа книга за ОО, една от първите, която представи техниката и философията, залегнала в основата на концепциите; някои от материалите в тази книга могат да изглеждат датирани, но основите все още са актуални;
  • Обяснени модели на проектиране: Нова перспектива за обектно-ориентирания дизайн, от Shalloway и Trott, е най-важната книга за напредване на практиката на дизайнерските модели или стратегиите за многократна употреба за справяне с повтарящи се проблеми;
  • Моделите на обекта: Стратегии, модели и приложения от Coad, North и Mayfield е добър спътник на обясняваните модели за проектиране, предоставящи много допълнителни модели и стратегии за обектно-ориентирано програмиране.

За по-практично и съвременно разбиране на обектно-ориентираните програми за програмиране опитайте един или повече от тези онлайн ресурси:

  • Бързо научете обектно-ориентираното програмиране е урок, базиран на Python от мрежата за разработчици на Mozilla;
  • Обектно-ориентираните концепции за програмиране е урок от Oracle, обхващащ обектно-ориентираните основи на програмиране, от гледна точка на Java;
  • Обектно-ориентираният урок за програмиране представя езиково-агностично въведение в основните понятия;
  • Въведение в обектно-ориентираните програми за концепции и други е страхотен преглед на обектно-ориентираното програмиране, а също и няколко тясно свързани теми, като софтуерна архитектура и модели на проектиране;
  • Преглед на обектно-ориентираното програмиране от Codecademy, използва JavaScript и редактор в браузъра, за да ви позволи незабавно да работите с концепциите (но не забравяйте, че JavaScript реализира OOP концепциите малко по-различно);
  • Обектно-ориентираното Основи за програмиране е друг ресурс на Java, с много полезни примери с реални класове.

Важни обектно-ориентирани езици

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

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

Интернет е изпълнен с есета, които разглеждат езика X спрямо езика Y – повечето от които просто надраскват повърхността. Предлагаме ви да разгледате това по-общо сравнение на езика за програмиране. Този обмислен анализ разглежда специфични подробности за няколко популярни езика на ОО, обсъждайки как са реализирани конкретни концепции за OO във всеки.

Езици, базирани на C

C не е обектно ориентиран език. Въпреки това е възможно поне да напишете OO код в него:

  • Обектно-ориентирано програмиране с ANSI-C (PDF)
  • Ръководство на Фил към обектно-ориентирания ANSI C
  • Обектно-ориентирано програмиране в С.

Нито една от техниките, описани в тези книги и статии, не е особено здрава или лесна за справяне с нетривиални програми. Вместо да се опитвате да разтегнете C до неговите граници, има три преки потомци на C, които включват обектно ориентирани езикови инструменти.

° С++

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

  • Обектно-ориентирано програмиране (OOP) в C ++: страхотно ръководство за въвеждане от професора по компютърни науки
  • Обучение обектно-ориентирано програмиране в C ++: голям, многочастичен урок за OOP
  • Учебник C ++ 20-1 – Класове и обектно-ориентирано програмиране: част от по-голяма видео серия на C ++, тази сесия започва отразяването на концепциите за OOP
  • Въведение в обектно-ориентираното програмиране с помощта на C++
  • Обектно-ориентирано програмиране в С++.

° С#

C # („остър C“) е друго производно на C, разработено най-вече като подобрение над C ++ за използване в .NET Framework на Microsoft.

  • Обектно-ориентирано програмиране в C #
  • C # Обектно-ориентирано програмиране Basic to Advance (видео)
  • C # OOPS концепции (видео)
  • Обектно-ориентирани основи за програмиране в C #: първокласен урок от PLuralsight (налична е безплатна пробна версия)
  • Въведение в обектно-ориентираните концепции за програмиране в C #: обхваща абстракцията, капсулирането, наследяването и полиморфизма в C #
  • Топ 10 концепции за OOPS в C # .NET с примери: чудесно бързо ръководство за ориентиране в C #, ако вече разбирате концепции за OOP
  • Учене на C #: Как да овладеем обектно-ориентиран език за програмиране: преглед на високо ниво за това как най-добре да подходите за учене на C # и OOP като цяло
  • Начало C # Обектно-ориентирано програмиране.

Цел-C

Objective-C е разработен приблизително по същото време като C ++, с по същество същата цел – добавянето на OOP способности към C. Днес, Objective-C наистина се използва само в платформата за разработка на какао на Apple за OS X и iOS и GNUstep, неговата Алтернатива с отворен код.

  • Обектно-ориентирано програмиране с Objective-C
  • Въведение в обектно-ориентиран дизайн
  • Обектно-ориентирано програмиране и езикът Objective-C (PDF)
  • Въведение в обектно-ориентирано програмиране.

Обикновен Лисп

Lisp не е по същество обектно-ориентиран. Въпреки това Common Lisp, един от най-популярните Lisp диалекти, включва Общата система на Lisp Object (CLOS), която предоставя OOP функции.

Подходът към обектно-ориентираната реализация в CLOS е коренно различен от начина, по който OO се обработва на други езици. Това означава, че CLOS не е чудесно място за стартиране, ако искате да научите OO като цяло или да приложите OO на други видове езици. Ако обаче влизате в Lisp, CLOS е много важен. Освен това, ако ви се стори OOP особено интригуващ, ще се радвате да изучавате CLOS, за да видите OO концепциите в различна светлина.

  • Основи на CLOS
  • Кратко ръководство за CLOS
  • Общата система на Lisp Object: Общ преглед (PDF)
  • CLOS: Интегриране на обектно-ориентирано и функционално програмиране (PDF)
  • Обектно-ориентирано програмиране в COMMON LISP: Ръководство за програмист към CLOS.

Erlang

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

Голяма част от това важи и за Elixir. От друга страна, може би това е просто OO-стил, не е вярно OO.

F #

F # (“F остро”) е многопарадигмен език. Ядрото му е наистина функционално програмиране, но включва поддръжка на OO и опити за съгласуване на тези два различни подхода към програмирането.

  • Обектно-ориентираното програмиране в серия F #
  • F # Бързи ръководства: Обектно-ориентирано програмиране
  • F # Преглед – императивно и обектно-ориентирано програмиране
  • Обектно-ориентиран F # – Създаване на класове
  • Обектно-ориентирано програмиране във F # (PDF)
  • OOP без класове във F #.

Fortran

Fortran е най-старият език за програмиране, който все още се използва. Когато е изобретен през 50-те години, не е имало такова нещо като обектна ориентация. Изричната поддръжка на OOP беше добавена към Fortran с издаването на езика Fortran 2003. Но беше възможно да се приложат някои основни концепции за OOP в по-ранни версии на езика.

  • OOP във Fortran, преди Fortran да е обектно-ориентиран:
    • Псевдо обектно-ориентиран стил във Fortran 90
    • Обектно-ориентирано програмиране чрез Fortran 90 (PDF)
    • Въведение в обектно-ориентираните концепции, използващи Fortran90.
  • OOP във Fortran с официална поддръжка:
    • Обектно-ориентирано програмиране във Fortran 2003
    • Модерен Фортран на практика
    • НАУЧНО ПРОГРАМИРАНЕ В FORTRAN 2003: Урок, включващ обектно-ориентирано програмиране (PDF).

Отивам

Go е сравнително нов език, разработен от Google през 2007 г. Има много дискусии за това дали Go е обектно-ориентиран.

Go няма нищо в него, наречено „обект“ или „клас“, но има някои аналогични структури. От определена гледна точка тогава можете да мислите за Go като обектно-ориентиран.

Всъщност много хора смятат, че Go е OO:

  • Отидете Обектно-ориентиран дизайн
  • Обектно-ориентирано програмиране в Go
  • Обектно-ориентирани езикови образи в Go
  • Отидете за обектно-ориентирани програмисти или обектно-ориентирано програмиране без обекти (видео)
  • Обобщение на обектно-ориентираното програмиране Доброта в движение, без болка.

Ява

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

  • Обектно-ориентиран системен дизайн: уебсайтът за CS108 на Станфорд, с връзки към код, подаръци, слайдове за лекции и почти всичко, което е необходимо, за да работите самостоятелно през курса
  • Урокът на Java: Обектно-ориентирано програмиране
  • Урок за програмиране на Java Основи на обектно-ориентирано програмиране (OOP)
  • Обектно-ориентирани концепции за програмиране (шест видео серии)
  • Обектно-ориентирано програмиране – урок за Java
  • Урок за основите на Java: Обектно-ориентирано програмиране в Java
  • Обектно-ориентирано програмиране в Java
  • Основи на обектно-ориентирано програмиране с Java (PDF).

JavaScript

Много хора не мислят, че JavaScript наистина е ориентиран към обекти. Но много други хора смятат, че определено е така.

Считаме, че нашата работа е да ви помогнем да намерите полезни ресурси, а не да участвате в непримирими дебати. Ето някои ресурси на OOP за JavaScript:

  • Въведение в обектно-ориентирания JavaScript (Mozilla Developer Network)
  • JavaScript: Най-неразбраният програмен език в света
  • OOP В JavaScript: Какво трябва да знаете
  • Обектно-ориентиран JavaScript: Създавайте мащабируеми, многократно използваеми JavaScript приложения и библиотеки
  • Принципите на обектно-ориентирания JavaScript
  • Обектно-ориентиран JavaScript (видео).

PHP

PHP не поддържа дори основни OO концепции до версия 4 и не поддържа пълна ориентация към обекта до PHP5.

  • Обектно-ориентиран PHP за начинаещи
  • Обектно-ориентиран PHP за абсолютно начинаещи
  • Принципи на обектно-ориентираното програмиране в PHP
  • Обектно-ориентиран PHP (видео)
  • Обектно-ориентиран PHP: Концепции, техники и код.

Питон

Python кодовете не трябва да бъдат обектно ориентирани, но езикът напълно го поддържа. Вижте тези ресурси:

  • Обектно-ориентирано програмиране: въведение към OOP, чрез Python, от отворения курс на MIT
  • Обектно-ориентирано програмиране в Python
  • Подобрете вашия Python: класове Python и обектно-ориентирано програмиране
  • Курс на Python: Обектно-ориентирано програмиране
  • Python 3 Обектно-ориентирано програмиране.

рубин

В Ruby всичко е обект, дори „примитивни“ типове данни като низове и цели числа. Добавяте две цели числа, като извиквате метода на добавяне на едно от тях; намирате дължината на низ, като извиквате метода на дължината върху него.

  • Ръководство за потребителя на Ruby: Обектно-ориентирано мислене
  • Ruby модул: Основна OOPs характеристика на езика за програмиране Ruby
  • Практически обектно-ориентиран дизайн в Ruby.

Общи приказки

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

  • Обектно-ориентирано програмиране с Smalltalk (PDF)
  • Малък разговор и ориентация към обекта: Въведение (PDF)
  • Малък разговор: Първи стъпки с езика (видео)
  • Програмиране Малък разговор – Обект-ориентация от самото начало: Въведение в принципите на програмирането.

От друга страна…

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

Ето шест ресурси, представящи насрещния аргумент на OOP:

  • Обектно-ориентираното програмиране е скъпа катастрофа, която трябва да приключи
  • Обектно-ориентираното програмиране е по своята същност вредно
  • Обектно-ориентирано програмиране: история на бедствията.

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

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

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

По-интересни неща

Имаме още ръководства за програмиране, ръководства и инфографика, свързани с кодирането и разработката:

  • C ++ ресурси за разработчици: в допълнение към информацията за C ++ има още информация за обектно-ориентирано програмиране.
  • Въведение и ресурси за Linux програмиране: въпреки че не е конкретно за обектно-ориентираното програмиране, тази дискусия за много нива на Linux програмиране е длъжна да ви зареди с енергия.
  • ИНТЕРКАЛ Въведение и ресурси: ако прецените за обектно-ориентирано програмиране трудно, изучаването на INTERCAL ще ви се стори лесно. Този пародиен (или шеговит) език е толкова сложен и ужасен, че дори и най-дълбоката дискусия за полиморфизма ще изглежда приятна.

Какъв код трябва да научите?

Объркани в какъв език за програмиране трябва да се научите да кодирате? Вижте нашата инфография, какъв код трябва да научите? Той не само обсъжда различни аспекти на езиците, а отговаря на важни въпроси от рода на: „Колко пари ще спечеля за програмиране на Java за прехрана?“

Какъв код трябва да научите?
Какъв код трябва да научите?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map