21. Дайте развернутое определение класса. Области видимости и действия классов в языке UML.
Классом (Class) называется описание совокупности объектов с общими атрибутами, операциями, отношениями и семантикой. Правильно сконструированный класс должен представлять одну и только одну абстракцию. Класс представляет не индивидуальный объект, а целую их совокупность.
У каждого класса есть имя, отличающее его от других классов. Атрибут – это именованное свойство класса, включающее описание множества значений, которые могут принимать экземпляры этого свойства. обладает вполне определенным значением.
Операцией называется реализация услуги, которую можно запросить у любого объекта класса для воздействия на поведение. Иными словами, операция – это абстракция того, что позволено делать с объектом. Операцию можно описать более подробно, указав ее сигнатуру, в которую входят имена и типы всех параметров, их значения, принятые по умолчанию, атприменительно к функциям – тип возвращаемого значения.
Обязанности (Responsibilities) класса – это своего рода контракт, которому должен подчиняться класс. Соответствующие атрибуты и операции являются теми свойствами, посредством которых выполняются обязанности класса.
Одна из деталей, наиболее существенных для атрибутов и операций классификаторов, – их видимость. Видимость свойства говорит о том, может ли оно использоваться другими классификаторами. В языке UML можно определить три уровня видимости:
- public (открытый) – любой внешний классификатор, который “видит” данный, может пользоваться его открытыми свойствами. Обозначается знаком + (плюс) перед именем атрибута или операции;
- protected (защищенный) – любой потомок данного классификатора может пользоваться его защищенными свойствами. Обозначается знаком # (диез);
- private (закрытый) – только данный классификатор может пользоваться закрытыми свойствами. Обозначается символом – (минус).
Видимость свойств классификатора определяют для того, чтобы скрыть детали его реализации и показать только те особенности, которые необходимы для осуществления обязанностей, продекларированных абстракцией.
Еще одной важной характеристикой атрибутов и операций классификатора является область действия (Scope). Задавая область действия некоторого свойства, тем самым указывают, будет ли оно проявлять себя по–разному в каждом экземпляре классификатора, или одно и то же значение свойства будет разделяться (то есть совместно использоваться) всеми экземплярами. В UML определены два вида областей действия:
- instance (экземпляр) – у каждого экземпляра классификатора есть собственное значение данного свойства;
- classifier (классификатор) – все экземпляры классификатора совместно используют общее значение данного свойства.