Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Состояние объекта. Сообщения и методы




Атрибуты

Объекты описываются их атрибутами, называемыми переменными экземпляра (instance variables). Каждый атрибут имеет уникальное имя и тип данных.

Традиционные типы данных, называемые базовыми типами данных (base data types) или договорные типы данных (conventional data types), используются в большинстве языков программирования и включают типы real (вещественный), integer (целый), string (строковый) и т.д.

Для атрибутов определены домены – логические группы, представляющие собой набор возможных значений данного атрибута. Типы данных определяют базовые домены, т.е. тип real представляет собой все вещественные числа, тип integer – все целые числа, тип date – все возможные даты, тип string – любые комбинации символов и т.д. Однако домены базовых типов данных представляют собой лишь основу, используемую для создания более ограниченных именованных доменов на более высоком логическом уровне. Например, мы можем создать домен SRTEMP (средняя температура). Для точного определения домена атрибута SRTEMP мы должны создать домен с именем ‘SRTEMP’. Каждый домен имеет имя и описание, включая базовый тип данных, размер, формат и ограничения на значения домена. Поэтому мы можем определить домен ‘SRTEMP’ как любое вещественное число с двумя знаками после запятой. Домен может также определяться как список возможных значений, разделенных запятыми. Например, домен ‘STUDENT’ может быть определен как (NSTUD, FIO, GR, LANGUAGE).

Атрибут объекта может быть однозначным или многозначным, т.е. атрибут может получить из своего домена одно или несколько значений. Например, в домене STUDENT атрибут NSTUD получает из домена только одно значение, т.к. студент имеет только один номер студенческого билета, а атрибут LANGUAGE может иметь несколько значений, т.к. студент может изучать несколько языков. Атрибуты объекта могут ссылаться на один или более объектов. На уровне реализации для ссылки на объект используется его OID, что позволяет реализовать связи между двумя и более объектами. Объект, содержащий в себе список других объектов, называется объект-набор (collection object).

 

Состояние объекта (object state) представляет собой набор значений атрибутов объекта в данный момент времени. При изменении состояния объекта его OID остается неизменным. Если нужно изменить состояние объекта, то мы должны изменить значения атрибутов объекта. Для этого надо послать объекту сообщение, которое будет инициировать метод.

Метод (method) представляет собой код, выполняющий определенные операции над данными, принадлежащими объекту. Методы защищают данные от прямого и неавторизированного доступа из других объектов.

Схема объекта представления на рисунке

Рис. Представление объекта.

Все операции, выполняемые объектом реализуются с помощью методов. Методы используются для изменения значений атрибутов объекта или для получения значений указанных атрибутов. Методы представляют собой реальные действия, такие, например, как изменение специализации студента, добавление студента в группу, распечатка адресов студентов и т.д. Можно сказать, что методы эквивалентны процедурам в традиционных языках программирования. В терминах ОО методы определяют поведение объекта.

Для каждого метода определяются имя (name) и тело (body). Тело состоит из компьютерных инструкций на некотором языке программирования, описывающих некоторое реальное действие. Например, можно определить метод AvegSRTEMP, возвращающий среднюю температуру по месяцам. Метод AvegSRTEMP выполняет следующие преобразования. Если в январе 31 день, средняя температура была -5°, в феврале 28 дней, средняя температура была -10° и т.д., то возвращаемое методом AvegSRTEMP значение будет

((-10)+(-5)+…)/12=число

Для инициализации метода объекту посылается сообщение. При отправлении сообщения (message) задаются объект-адресат, имя метода и все необходимые параметры. Отправитель сообщения (другой объект) не может обратиться напрямую к внутренней структуре объекта. Запрет доступа к внутренней структуре объекта гарантирует целостность состояния объекта и скрывает детали внутренней реализации объекта. Скрытие внутренних деталей объекта (атрибутов и методов) называется инкапсуляцией (encapsulation).

Объект может также посылать сообщения для изменения состояния или опроса текущего состояния объекта. Опрос состояния (interrogate) означает выяснение у целевого объекта текущих значений экземпляров объекта. Для выполнения этих задач тело метода может содержать ссылки на методы других объектов.

Рис.1.15. Обмен сообщениями между объектами

 

Классы

В ОО-системах объекты классифицируются в соответствии с их схожестью и различием. Объекты, имеющие общие свойства, группируются в классы. Т.е. класс представляет собой набор подобных объектов с разделяемыми структурой (атрибутами) и поведением (методами).

Класс содержит подробное описание структуры данных и реализации методов для объектов данного класса. Поэтому все объекты в классе используют одинаковую структуру и отвечают на одинаковые сообщения. Кроме того, класс действует на буфер памяти для схожих объектов. Каждый объект в классе представляет собой экземпляр класса (class instance) или экземпляр объекта (object instance).

Рис.1.16. Пример класса

Определим класс с именем STUDENT для хранения объектов-студентов. Все объекты класса STUDENT используют одинаковую структуру (атрибуты) и отвечают на одинаковые сообщения (с помощью методов). Каждый экземпляр класса представляет собой объект с уникальным OID и каждый объект ‘знает’, какому классу он принадлежит.

Рис.1.17. Представление класса STUDENT

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 518; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.