в,Из,как inout,обратно параметр в UML

Как я прочитал следующие концепции через спецификацию UML, продвигаемую OMG 2.5 (Beta) как:

in: указывает, что значения параметров передаются абонент.

inout: указывает, что значения параметров передаются вызывающим абонентом, а затем возвращаются вызывающему абоненту.

out: указывает, что значения параметров передаются вызывающему объекту.

return: указывает, что значения параметров передаются как возвращаемые значения назад к звонящему.

означает ли это, что" in " является вызовом по значению а "inout" как назвать по ссылке?

не могли бы вы немного прояснить каждую из этих концепций?

4 ответов


* in-входной параметр (не может быть изменен).

* out-выходной параметр (может быть изменен для передачи информации вызывающему абоненту).

• inout-входной параметр, который может быть изменен.

* return-возвращаемое значение вызова.


вызов по ссылке является одной из возможных реализаций inout и out да.

помните, что UML описывает поведение нейтральным языком. Это зависит от реализации данного интерфейса на фактическом языке, чтобы определить, что это означает.

на таком языке, как Ada, с уровнем языка in , out и in out параметры, это может быть выражено непосредственно в язык, и компилятор может решить, где ссылка или копирование-лучшая реализация. На таком языке, как Python, где все параметры передаются по ссылке (вроде), это обозначение намерение на уровне UML не приводит к каким-либо различиям на уровне реализации. И в таком языке, как C, с явными типами указателей и всеми параметрами, передаваемыми по значению, эти намерения, выраженные в UML, превращаются в явные ссылки на адреса и разыменования указателей.

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


главное, что нужно помнить об UML, - это то, что он предназначен для универсальная, Он предназначен для независимости от платформы реализации. В частности, это PIM, независимая от платформы модель. Таким образом, неправильно использовать семантику реализации конкретной платформы, такую как "по значению" и "по ссылке".

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

архитектура управляемая моделью (MDA) плюс Профиль Платформы = Специфический Дизайн Платформы.


при взгляде в официальная спецификация UML, мы находим небольшое изменение:

in: указывает, что значения параметров передаются абонент.

inout: указывает, что значения параметров передаются вызывающим абонентом и (возможно, разных) переданные значения к звонящему.

out: указывает, что значения параметров передаются вызывающему объекту.

return: указывает, что Значения параметров передаются вызывающему объекту в виде возвращаемых значений.

и он содержит примечание: в качестве возвращаемого параметра может быть отмечен не более одного параметра.

Я не смог найти никаких дополнительных определений/разъяснений по этому перечислению ParameterDirectionKind.

т. е. UML не хочет указывать это далее. И, конечно же, он не указывает ни одного из них как pass by reference или pass by value.