Приложно-програмен интерфейс: Разлика между версии
Изтрито е съдържание Добавено е съдържание
PegasusTeam (беседа | приноси) Редакция без резюме |
PegasusTeam (беседа | приноси) Редакция без резюме |
||
Ред 80:
В този случай това API може да се интерпретира като два метода <code>pop()</code> и <code>push()</code>, или по-общо казано като идея, при която някой може да използва елемент от тип <code>Stack</code>, който имплементира (наследява) поведението на стека: една купчина, на която да се премахват. Втората интерпретация изглежда по-подходяща в духа на [[Обектно-ориентирано програмиране|обектното ориентиране]].
Тази концепция може да бъде приложена до там, докъдето интерфейса на класа в едно API няма методи като цяло, а има само поведения свързани с него. Например, API-тата на езиците [[Java language|Java]] и [[Lisp (език за програмиране)|Lisp]] съдържат интерфейс с името Serializable, който е маркерен интерфейс, изискващ всеки клас да го имплементира с поведението на класа
По същия начин поведението на обект в многонишкова среда не е задължително да се определя от конкретни методи, принадлежащи на имплементирания интерфейс, но все още принадлежащи и на API-то за обектите от този клас, и би трябвало а бъде описано в документацията.
Ред 120:
Когато отдалчението е на място, модификация на прокси обекта отговаря на модификация на отдалечение обект. Когато имаме само трансфер на обект, модификацията на локалното копие на обекта не е рефлектирано върху оригиналния обект, освен ако обекта не е изпратен към изпращаща система.
===Споделяне на API-та и преизползване чрез виртуална машина===
Някои езици, като тези, които се изпълняват върху [[виртуална машина]] (например .NET CLI компилиращите езици в CLR-а, и JVM-компилиращите езици в Java виртуалната машина) могат да споделят API. В този случай виртуалната машина позволява взаимодействието между езиците, правещ абстрактен програмния език, използвайки междинен байт
Например чрез байкод представяне, програма, която е написана на езиците [[Groovy (език за програмиране)|Groovy]] или [[Scala (programming language)|Scala]] имат обектен модел, който е superset на този, който е на езика Java, така, че всяко API, което е представено чрез Java обект е досъпно чрез Groovy и Scala с еквивалентно извикване на обект, преведено в байткод.
От друга страна първокласните обекти, които не присъстват в Java като [[Затваряне (информатика)|закривания]]. Тези обекти не могат да бъдат естествено представени в езика Java (Java 8 въведе концепцията за
== Видове ==
|