Я читаю книгу «Введение в java-программирование и структуру данных». В главе, объясняющей абстракцию и инкапсуляцию классов, говорится:

avatar
Kareem Hassan
9 августа 2021 в 02:17
55
1
0

"Создатель класса описывает функции класса и позволяет пользователю узнать, как можно использовать класс. Коллекция общедоступных конструкторов, методов и полей, доступных извне класса, вместе с описанием ожидаемое поведение этих членов служит контрактом класса. "

Что такое групповой контракт? Мне нужен кто-нибудь, кто объяснит мне этот абзац

Источник
Sweeper
9 августа 2021 в 02:18
0

Что именно вам в нем не понятно?

Hovercraft Full Of Eels
9 августа 2021 в 02:18
0

Что вам не понятно в утверждении?

Elliott Frisch
9 августа 2021 в 02:20
0

Есть много пуха. Попробуйте «открытые конструкторы, методы и поля»… «служить контрактом класса». Описание (если оно есть) может быть полно лжи (или полуправды). Но вещи, которые вы можете вызывать, составляют контракт класса.

Gilbert Le Blanc
9 августа 2021 в 03:39
0

Спецификация API Java™ Platform, Standard Edition является примером договора между разработчиками Java и пользователями Java (разработчиками). Для данного класса вам предоставляется список общедоступных конструкторов и методов, которые вы можете использовать.

Ответы (1)

avatar
Stephen C
9 августа 2021 в 05:28
0

"Создатель класса описывает функции класса и сообщает пользователю, как можно использовать класс. Набор общедоступных конструкторов, методов и полей, доступных извне класса, вместе с описание ожидаемого поведения этих членов служит контрактом класса."

Что такое групповой контракт?

Буквально... это "Набор общедоступных конструкторов, методов и полей, доступных извне класса, вместе с описанием ожидаемого поведения этих членов..."

Эти вещи представляют собой вещи, от которых пользователь класса должен иметь возможность зависеть; то есть то, что в классе не будет изменено ...

Это понятие "контракт" относится к Проектированию по контракту, первоначально описанному Бертраном Мейером в 1980-х годах.

Это аналог юридического контракта.


Теперь... очевидно... кто-то может изменить класс таким образом, что контракт будет нарушен. Они могут переименовывать или удалять методы, изменять типы аргументов или результатов, изменять способ работы методов в противоречии javadocs.

Но последствия нарушения контракта, скорее всего, будут плохими для кода, использующего API. Он может перестать работать. Он может не скомпилироваться. И обратите внимание, что это может быть не ваш код, который ломается.