Клас (програмиране): Разлика между версии
Изтрито е съдържание Добавено е съдържание
Termininja (беседа | приноси) {{Типове данни}}, форматиране: 11x А|А, 4x интервали, А|АБ (ползвайки Advisor.js) |
|||
Ред 22:
=== Наследственост ===
Въпреки че клас-ориентираните езици са често приемани, че поддържат наследяване, то не е присъща част от концепцията за класове. Някой езици, често сочени като [[обектно-ориентирани езици|„обектно-ориентирани езици“]], поддържат класове, но не поддържат наследяване. Примери за обектно-ориентирани езици включват по-ранните версии на [[
=== Асоцииране ===
В [[
Асоциативна роля е даден край на асоциация и описва ролята на съответния клас. Например ролята на „абонат“ описва начина, по който инстанциите от класа „Човек“, участват в „абониран за“ връзка с класа „Списание“. Също така, „Списание“ има „списания с абонамент“ роля със същата връзка. Множеството от асоциативни връзки описва колко инстанции взаимодействат с всяка инстанция от друг клас от асоциацията. Често срещаните множества са „0..1“, „1..1“, „1..*“ и „0..*“ където „*“ означава какъвто и да е брой на инстанциите.
Ред 34:
=== Абстрактни и конкретни ===
В език, който поддържа нследяването, <b>абстрактен клас</b> или абстрактен основен клас, е клас който не може да бъде наследен, защото е или осначен като абстрактен или просто използва [[
Повечето обектно ориентирани езици за програмиране позволяват на програмистите да уточняват кои класове се смятат за абстрактни и няма да позволят на такива да бъдат инстанцирани. Например в [[
Клас състоящ се само от виртуални методи се нарича Чисто Абстрактен Основен Клас (Pure ABC) в C++ и също е известен като [[интерфейс (програмиране)|интерфейс]] от потребителите на езика. Други езици, особено Java и C#, поддържат вариант на абстрактни класове, наричани interface (интерфейс) чрез ключовата дума в езика. В тези езици [[
Конкретния клас (concrete class) е такъв, който може да се [[инстанциране|инстанцира]], противоположно на абстрактните класове, които не могат.
Ред 53:
<b>Метакласовете</b> са класове чиито инстанции са класове. Метакласовете описват обща структура на колекция от класове и могат да имплементират [[Шаблони за дизайн (софтуер)|дизайн модел]] (design pattern) или да опишат определени видове класове. Метакласовете са често използвани за описване на [[Софтуерна рамка|фреймуърци]] (frameworks).
При някои езици, като [[
=== Ненаследими ===
''Ненаследимите'' класове (класове без подкласове) позволяват на програмистите да създават класове и архитектури от класове, които след дадено ниво да не могат да се разклоняват повече.(''Самостоятелните'' класове също може да се третират като ненаследими, защото не позволяват да се създават йерархични структури с тях). За сравнение ''абстрактните'' класове предполагат, насърчават и дори изискват разклоняване (създаване на подкласове), за да се използват въобще. ''Ненаследимите'' класове обаче са изрично фиксирани.
''Ненаследим'' клас се декларира с sealed в C# или final в Java.
Пример: В Java класът String е дефиниран като final.
''Ненаследимите'' класове позволяват на компилатора (в езиците ползващи компилатор) да направи оптимизации, които не са достъпни за наследимите класове.
Ред 71:
* Позволява да се отделя интерфейса на класа от работния му код
* Лесна навигация в големи класове с помощта на редактор
* Позволява разделяне на модули, подобно на аспектно-ориентираното програмиране, но без употребата на допълнителни инструменти
* Позволява няколко специалиста да работят едновременно по един клас без нуждата от последващо обединяване на техния код в един файл.
Ред 77:
=== Неинстантни ===
''Неинстантните'' класове позволяват на програмистите да групират полета и методи, които да са достъпни по време на изпълнение без нуждата да се създават инстанции на тези класове. Всъщност създаването на инстанции от тези класове е изцяло забранено.
Пример: в ''C#'', клас обозначен със ''"static"'', не може да се инстанциира, може да съдържа само статични членове (полета, методи, други), няма конструктор и е ''фиксиран/запечатън''.
Ред 89:
В допълнение класовете може да се асоциират или наследяват взаимно, което опростява модела на взаимосвързаност. Така по-лесно може да се проследи йерархията на обектите, връзките между тях и модела им на взаимодействие. Също така се намалява нужния код – ако например два класа споделят еднакви атрибути, но единия има допълнителни атрибути (описва частен случай), то може единия клас да се дефинира като подклас на другия и съвместните им атрибути да се запишат само веднъж. Като цяло добре изградена рамка от класове улеснява навигацията, разбирането и работата с компютърни програми.
{{Превод от|en|Class (computer programming)|568635094}}
{{Типове данни}}
[[Категория:Програмни конструкции]]
[[Категория:Обектно-ориентирано програмиране]]
|