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

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