реклама
Ако сте направили някои програмиране за начинаещиили дори сте започнали да разглеждате различни езици, вероятно сте се натъкнали на фразата „обектно-ориентирано програмиране“ (или „OOP“).
Има всякакви технически обяснения за това какво е, но днес ще разгледаме дефинирането на обектно-ориентираното програмиране по прост начин.
Преди да започнем: Процедурни езици
За да разберете какво е обектно-ориентиран език за програмиране, трябва да разберете какво го замества. Ранните езици за програмиране са процедурни - така наречените, защото програмистът би определил много специфичен набор от процедури, които компютърът ще предприеме.
В най-ранните дни процедурите се пишеха на перфокарти. Тези стъпки взеха данни, извършиха последователност от действия върху тези данни, след което изведоха нови данни.
Процедурните езици работеха добре известно време (а някои все още се използват). Но когато искате да програмирате нещо извън основната последователност от стъпки, процедурните езици могат да станат трудни за управление. Точно там влиза обектно-ориентираното програмиране.
Обект на обектно-ориентирано програмиране
И така, какво е обектно-ориентирано програмиране?
Първият обектно-ориентиран език (общо взето съгласен да бъде Simula) въведе идеята за обекти. Обектите са колекции от информация, които се третират като единно цяло.
Ще се потопим по-дълбоко в това какво всъщност означава след секунда с пример, но първо трябва да поговорим класове. Класовете са нещо като пред-обекти. Те съдържат списък от атрибути, които, когато бъдат дефинирани, стават обект.
Да вземем пример за програмиране на игра на шах. Може да имаме клас, наречен Piece. В рамките на Piece имаме списък от атрибути:
- цвят
- височина
- форма
- Движението е позволено
Един обект просто дефинира един конкретен екземпляр от нещо, принадлежащо към този клас.
Така че бихме могли да имаме обект, наречен WhiteQueen. Този обект би имал дефиниции и за четирите атрибута (бял, висок, цилиндричен с кренелации, произволен брой пространства във всяка посока). Може и да има методи или функции.
Какво прави това толкова по-добро от процедурния подход?
Накратко, обектно-ориентирани езици за програмиране (като Java) улеснява организирането на данни и код по начин, който е по-универсален за по-голям проект.
За да го обсъдим малко по-подробно, ще говорим за четирите основи на обектно-ориентираното програмиране.
Обектно-ориентирано програмиране: абстракция
Само защото искате да използвате нещо, не означава, че трябва да знаете как работи. Машината за еспресо например е сложна. Но не е нужно да знаете как работи. Просто трябва да знаете, че когато натиснете „On“, ще получите еспресо.
Същото е и с обектите в обектно-ориентираното програмиране. В нашия шахматен пример може да имаме метод на ход (). Този метод може да изисква много данни и други методи. Може да се нуждаят от променливи за начална позиция и за крайно положение. Може да използва друг метод за определяне дали е заловен парче.
Но не е нужно да знаете това. Всичко, което трябва да знаете е, че когато кажете на парчето да се движи, то се движи. Това е абстракция
Обектно-ориентирано програмиране: капсулиране
Капсулирането е един от начините, по които обектно-ориентираното програмиране създава абстракция. Всеки обект представлява съвкупност от данни, които се третират като едно цяло. И вътре в тези обекти са данни - и променливи, и методи.
Променливите в рамките на даден обект обикновено се пазят частни, което означава, че други обекти и методи не могат да имат достъп до тях. Обектите могат да бъдат засегнати само с помощта на техните методи.
Обектът Bishop може да съдържа няколко части информация. Например, тя може да има променлива, наречена „позиция“. Тази променлива е необходима, за да се използва методът move (). И, разбира се, има цвят.
Чрез превръщането на променливата на позицията в личен и метода move () публичен, програмист защитава променливата за движение от това да се влияе от всичко друго. И ако цветът е частна променлива, няма начин друг обект да го промени, освен ако няма метод, който позволява промяната. (Което вероятно не бихте имали, тъй като цветът на парчето трябва да остане постоянен.)
Тези променливи и методи се съхраняват в обекта Bishop. Тъй като са капсулирани, програмист може да направи промяна в структурата или съдържанието на обекта, без да се притеснява от публичния интерфейс.
Обектно-ориентирано програмиране: Наследяване
В допълнение към класовете, обектно-ориентираните езици за програмиране имат и подкласове. Те съдържат всички атрибути от родителския клас, но могат да съдържат и други атрибути.
В нашата игра на шах, парчетата на пешките се нуждаят от метод, който може да ги превърне в други парчета, ако го направят до края на дъската. Ще го наречем методът transformPiece ().
Не всяко парче се нуждае от метода transformPiece (). Така че не бихме искали да го поставяме в класа Piece. Вместо това можем да създадем подклас, наречен Пешка. Тъй като е подклас, той наследява всички атрибути от Piece. Така че екземпляр от подклас Пешка включва разрешен цвят, височина, форма и движение.
Но тя също така включва метода transformPiece (). Сега никога не трябва да се притесняваме дали случайно ще използваме тази функция на върха. Ето техническо обяснение:
Създаването на подкласове също спестява много време. Вместо да създават нови класове за всичко, програмистите могат да създадат базов клас и след това да го разширят до нови подкласове, когато трябва. (Въпреки това си струва да се отбележи това прекаленото разчитане на наследството е лошо 10 основни принципа на програмиране, всеки програмист трябва да следваВинаги пишете код, който може да се поддържа от всеки, който може да свърши работа с вашия софтуер. За тази цел ето няколко програмни принципа, които ще ви помогнат да изчистите постъпката си. Прочетете още .)
Обектно-ориентирано програмиране: Полиморфизъм
Полиморфизмът е резултат от наследяване. Напълно разбирането на полиморфизма отнема някои познания по програмиране, така че ние просто ще се придържаме към основните положения тук. Накратко, полиморфизмът позволява на програмистите да използват методи със същото име, но с различни обекти.
Например, нашият клас Piece може да има метод move (), който премества парче в едно пространство във всяка посока. Това работи за краля парче, но не за нищо друго. За да отстраним този проблем, можем да дефинираме новия метод move () в подклас Rook, който определя движението като неограничен брой интервали напред, назад, наляво или надясно.
Сега, когато програмист се позове на метода move () и използва парче като аргумент, програмата ще знае как точно трябва да се движи парчето. Това спестява много време над опитите да разберете кой от много различни методи трябва да използвате.
Обектно-ориентирано програмиране в ядка
Ако главата ви се върти малко след тези последни четири определения, не се притеснявайте твърде много. Ето основните неща, които трябва да запомните:
- Обектно-ориентираното програмиране събира информация в единични единици, наречени обекти.
- Всеки обект е единичен екземпляр от клас.
- Абстракцията крие вътрешната работа на обекта, когато не е необходимо да ги виждате.
- Капсулацията съхранява свързани променливи и методи в обектите и ги защитава.
- Наследяването позволява на подкласовете да използват атрибути от родителските класове.
- Полиморфизмът позволява на обекти и методи да се справят с множество различни ситуации с един интерфейс.
Ако можете да си спомните тези точки, ще се справите добре какво е обектно-ориентирано програмиране. Четирите основи на обектно-ориентираното програмиране, както споменах, могат да бъдат малко трудни за справяне. Но след като започнете да програмирате, те ще станат по-ясни.
Не забравяйте, че в тази статия сме обсъждали само общи положения. Различните обектно ориентирани езици ще имат свои странности и начини да направят нещата. Веднъж ти изберете подходящия за вас език Търсите най-добрите езици за програмиране? Започни тук!Независимо дали сте напълно нов в езиците за програмиране или искате да преминете към нов вид програмиране, един от най-важните въпроси, който трябва да зададете, е: „Кой език на програмиране е подходящ за мен?“ Прочетете още , ще започнете да научавате как прилага принципите на OOP на практика.
Дан е консултантска стратегия и маркетинг консултант, който помага на компаниите да генерират търсене и да водят. Той също така блогове за стратегия и маркетинг на съдържанието в dannalbright.com.