Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Понятие об объектах



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

Под объектом в узком смысле можно понимать некоторое формализованное описание рассматриваемой сущности, т.е. модель. Для такого описания нужен некоторый язык, например – язык программирования. В этом случае объект становится элементом языка, и именно в таком контексте он и будет рассматриваться далее. Моделирование реальных объектов – это важнейший этап разработки объектных программ, во многом определяющий успех всего проекта. Необходимо понимать, что любая модель – это только часть исходного моделируемого объекта, отражающая те свойства и атрибуты объекта, которые наиболее важны с точки зрения решаемой задачи. Изменение постановки задачи может привести к существенному изменению модели. Особенно это характерно для сложных объектов. Вряд ли имеет смысл строить всеобъемлющую модель “на все случаи жизни”, поскольку такая модель будет очень громоздкой и практически непригодной для использования. Поэтому один из важнейших принципов построения моделей – это принцип абстрагирования, т.е. выделение наиболее существенных черт исходного объекта и отбрасывание второстепенных деталей.

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

 
 


Например, для исходного объекта “человек” можно построить следующие информационные модели:

· человек как студент учебного заведения

· человек как сотрудник организации

· человек как пациент учреждений здравоохранения

· человек как подопечный органов внутренних дел и т.д.

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

· простейшие примитивные типы (целые, строковые, вещественные, логические);

· структурированные типы (массивы, записи или структуры);

· объектные свойства, представляющие объекты той же самой или другой природы.

Наличие объектных свойств является проявлением одного из способов взаимодействия объектов – так называемой агрегации, котораяболее подробно рассматривается в разделе 2.2.

Набор свойств объекта создается при описании объекта и в дальнейшем не изменяется. В качестве примеров свойств можно привести:

· объект-файл: имя, размер, дата создания, тип;

· объект-список: тип, число элементов, адрес первого элемента;

· объект-окно: положение на экране, размеры, тип, фон заполнения, тип рамки, оформление заголовка;

· объект-автомобиль: стоимость, тип, марка, мощность двигателя, цвет и т.д.;

· объект-студент: имя и фамилия, группа, специальность, оценки;

· объект-окружность: координаты центра, радиус, состояние видимости, цвет.

Поведение объекта описывается набором методов. Каждый метод – программный код, оформленный в виде некоторой функции. Объединение вместе обрабатываемых данных (свойств) и программного кода для их обработки (т.е. методов) называют принципом инкапсуляции. Этот принцип является одним из базовых в ООП. Если раньше данные и функции их обработки существовали независимо друг от друга, то в объектном подходе они образуют новую сущность – объект. Другими словами, объект сам отвечает за обработку своих данных. Это позволяет более четко распределять обязанности в объектной программе. Объект можно рассматривать как «черный ящик», выполняющий определенный набор функций. Реализация этих функций не должна интересовать пользователя-клиента, ему достаточно знать лишь набор предоставляемых объектом услуг.

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

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

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

2. Методы, с помощью которых можно узнать текущее значение тех или иных свойств. Обычно для каждого свойства создается свой метод доступа к хранящемуся в нем значению. Принято присваивать таким методам имена, состоящие из двух частей - префикса Get и имени соответствующего свойства, например – GetColor, GetName, GetPrice. Такие Get-методы обычно оформляются как функции, возвращающие значение соответствующего свойства.

3. Методы, отвечающие за изменение значения одного или нескольких свойств. Их принято начинать с префикса Set, например, SetColor, SetName, SetPrice. Новые значения свойств передаются как параметры Set-методов. Несмотря на некоторое синтаксическое сходство, необходимо различать действия, выполняемые конструкторами и Set-методами: конструктор создает новый объект, а Set-метод лишь изменяет значение одного или нескольких свойств для уже созданного объекта. Довольно часто Set-методы перед изменением значений свойств выполняют дополнительную работу, например – проверяют новые значения свойств.

Наличие Set/Get-методов объясняется тем, что в соответствии с принципом инкапсуляции свойства объекта должны быть закрыты для постороннего вмешательства. Доступ к свойствам должен осуществляться только через вызовы Get/Set-методов. В этом случае детали внутренней реализации хранения данных объекта полностью закрыты от пользователей. Набор методов доступа образует открытый интерфейс объекта.

Кроме перечисленных методов, объект чаще всего имеет еще и некоторое количество специфических уникальных методов, определяющих функциональность объекта. Например:

· объект-файл: копирование, удаление, перемещение;

· объект-список: добавление, удаление и поиск элемента;

· объект-окно: перемещение, изменение атрибутов, отображение;

· объект-автомобиль: запуск двигателя, разгон/торможение, поворот;

· объект-студент: посещение занятий, выполнение заданий, сдача контрольных точек, оплата обучения;

· объект-окружность: отображение, перемещение, растяжение/сжатие.

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





Дата публикования: 2014-11-02; Прочитано: 484 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...