Обектно ориентирано програмиране: Разлика между версии

Изтрито е съдържание Добавено е съдържание
Samii7o (беседа | приноси)
мРедакция без резюме
Ред 8:
* [[Абстракция (компютърни науки)|Абстракция]] — Способността на една програма да игнорира някои аспекти на информацията, с която работи — способността да се съсредоточава върху същественото. Всеки обект в системата служи като модел на един абстрактен „агент“, който може да извършва дадена работа, да променя състоянието си и да докладва за него, и да „общува“ с други обекти в системата без да разкрива ''как'' са реализирани тези свойства. Процесите, функциите или методите също подлежат на абстракция и когато те са абстрактни се използват разнообразни техники за разширяване на една абстракция:
* [[Капсулиране]] — наричано също „скриване на информация“: Прави невъзможно за потребителите на даден обект да променят неговото вътрешно състояние по неочакван начин; само вътрешните методи на обекта имат достъп до неговото състояние. Всеки [[клас (програмиране)|клас]] има ''интерфейс'', който определя как другите класове могат да взаимодействат с него като по този начин се явява [[черна кутия]] за другите класове и останалата част от програмите, които го използват. Това предпазва потребителите от разстройване на [[инвариант]]ите на класа, което е полезно, защото позволява реализацията на един клас обекти да бъде променена в аспекти, които не са достъпни чрез интерфейса без това да изисква промени в потребителските програми. Дефинициите за капсулиране се съсредоточават по-скоро върху групирането и пакетирането на сродна информация ([[кохезия (програмиране)|кохезия]]) отколкото върху сигурността. Обектно-ориентираните езици за програмиране обикновено не предлагат формални ограничения с цел сигурност на вътрешното състояние на обектите. Използването на един метод за достъп е въпрос на конвенция за дизайна на интерфейса.
* [[полиморфизъм (информатика)|Полиморфизъм]] - Различни неща или обекти могат да имат еднакъв интерфейс или да отговарят на едно и също (по наименование) съобщение и да реагират подходящо в зависимост от природата или типа на обекта. Това позволява много различни неща да бъдат взаимозаменими. Например, ако една птица получи съобщение „движи се бързо“, тя ще маха с крила и ще лети. Ако един лъв получи същото съобщение, той ще тича, използвайки краката си. И двете животни отговарят на една и съща молба по начини, които са подходящи за всяко от тях. По този начин, една променлива в програмния текст може да съдържа различни обекти по време на изпълнение на програмата и да извиква различни методи по различно време на изпълнение.
* [[Наследяване (информатика)|Наследяване]] - Организира и подпомага полиморфизма и капсулирането, като позволява да бъдат дефинирани и създавани обекти, които са специализирани варианти на вече съществуващи обекти. Новите обекти могат да използват (и разширяват) вече дефинираното поведение, без да е необходимо да реализират това поведение отново. Това обикновено се прави чрез групиране на обектите в ''класове'' и дефиниране на нови [[клас (програмиране)|клас]]ове, които [[разширение|разширяват]] съществуващи класове и подреждане по този начин на класовете в ''дървета'' или ''решетки'', отразяващи сходствата в тяхното поведение. Докато използването на класове е най-популярната техника за наследяване, има и друга известна техника, наречена [[Прототипно-базирано програмиране]].
 
Това е всъщност редица идеи, повечето от които съществуват от отдавна. Те са събрани заедно, заедно със свързаната с тях терминология, за да бъде създадена методика за програмиране. Говори се, че идеите зад обектно-ориентираното програмиране заедно са толкова силни, че те са създали [[смяна на парадигмата]] в програмирането.