Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
19-22,37.docx
Скачиваний:
7
Добавлен:
21.09.2019
Размер:
44.88 Кб
Скачать
  1. Языковые средства описания классов и объектов (умк);

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

Тип_класса имя_класса [ : базовые классы ] {

список членов класса

} [ объекты ] ;

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

Так, несмотря на то, что мы реально делаем в объектно-ориентированном программировании – это создание новых типов, фактически все объектно-ориентированные языки используют ключевое слово class. Когда вы видите слово “тип”, то думайте “класс” и наоборот.

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

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

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

Рисунок 4.1 Класс «Лампочка»

Пример создания экземпляра лампочки и запроса на включение:

Light lt = new Light();

lt.on();

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

В этом промере имя типа/класса - Light, имя этого обычного объекта Light - lt, а запросы, которые вы можете сделать для объекта Light - это включить его, выключить, сделать ярче или темнее. Вы создаете объект Light, определяя “ссылку” (lt) для объекта и вызываете new для запроса нового объекта этого типа. Для отправки сообщения объекту вы объявляете имя объекта и присоединяете его к сообщению запроса, разделив их (точкой). С точки зрения пользователя, предварительное определение класса - более красивый способ программирования с объектами.

Диаграмма, показанная выше, следует формату Унифицированного Языка Моделирования (Unified Modeling Language (UML). Каждый класс представляется ящиком, с именем типа в верхней части ящика и членами - данными, которые вы описываете в средней части ящика, а члены - функции (принадлежащие объекту функции, которые принимают сообщения, которые вы посылаете этому объекту) в нижней части ящика. Чаще всего только имя класса и публичные члены - функции показаны в диаграмме разработки UML, так что средняя часть не показывается. Если вы интересуетесь только именем класса, нижние части нет необходимости показывать.

В качестве типа класса могут быть использованы ключевые слова class, struct и union. Базовые классы - это список имен классов, разделяемых запятыми, элементы которых наследуются вновь определяемым классом. Доступ производного класса к наследуемым элементам родительского может указываться модификатором доступа - public, protected и private.

Пример описания класса:

class example {

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]