Здавалка
Главная | Обратная связь

Общая характеристика классов.

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

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

 
 

 


Принято различать внутреннее представление класса (реализация) и внешнее (интерфейс).

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

Реализация – внутреннее устройство класса, по большей части состоящее в определении операций, объявленных в интерфейсе класса.

 

Описание класса без учета синтаксиса конкретного языка выглядит следующим образом:

 

Класс <имя класса>

интерфейс

<объявление полей и методов класса, к которым возможно обращение извне>

реализация

< объявление полей и методов класса, к которым невозможно обращение извне>

Конец описания.

 

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

 

Пример про файл:

Файл должен реагировать наследующие сообщения: «Открыть», «Добавить запись», «Найти запись».

Сообщение «Открыть» должно сопровождаться передачей имени файла.

Сообщение «Добавить запись» должно сопровождаться передачей текста записи.

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

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

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

Метод Найти так же в начале должен проверять, открыт ли файл. Если файл открыт, метод выполняет поиск информации в файле.

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

 

Класс Файл:

интерфейс

конструктор Инициализировать;

метод Открыть(имя файла);

метод Добавить(фамилия, телефон);

метод Найти(фамилия);

деструктор Закрыть_файл;

реализация

поле Файловая_переменная;

поле Состояние_файла;

метод Проверка_открытия;

Конец описания.

 

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

 

Мы можем разделить интерфейс класса на три части:

1. открытую (public) – видимую всем клиентам;

2. защищенную (protected) – видимую самому классу, его подклассам и друзьям;

3. закрытую (private) – видимую только самому классу и его друзьям.

 

Все методы объекта обязательно имеют доступ ко всем полям своего объекта.

 

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

 

Виды отношений между классами:

 

Ассоциация – семантическое (смысловое) соединение классов. Выделяется на этапе анализа предметной области. Является наиболее общим и неопределенным видом отношений. Обычно аналитик констатирует наличие ассоциации и, постепенно уточняя проект, превращает ее в какую-то более специализированную связь.

 
 

 


По умолчанию, ассоциация не имеет направления, подразумевает двухстороннюю связь . Характеристикой ассоциации является ее мощность. На практике важно различать три случая мощности ассоциации:

 

  1. "один-к-одному"

  2. "один-ко-многим"

  3. "многие-ко-многим".

 

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

 

Если непосредственный родитель единственный, то наследование называется простым, а если таких классов несколько - то множественным. Наличие механизма наследования позволяет повторно не определять в классе уже описанные параметры и свойства объектов, производный класс их просто «наследует».

 

 

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

 

 





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.