- •Министерство образования российской федерации Воронежский государственный технический университет а.Г. Остапенко г.А. Кащенко и.В.Давыдов Морев д.Е.
- •Воронеж 2001
- •Рецензенты: Остапенко г.А.
- •Введение
- •Методы разработки программного обеспечения
- •Подходы к разработке программного обеспечения
- •Планирование разработки программного обеспечения
- •Основные типы языков программирования.
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентрованное программирование
- •Процедуры.
- •Модули.
- •Абстрактные типы данных.
- •Построение программного обеспечения по объектно-ориентированной методике
- •2.1. Функционирование объектно-ориентированного программного обеспечения
- •2.2. Классы. Отношения между классами
- •Этапы построения программного обеспечения
- •2.4. Объектно-ориентированный анализ
- •Информационные модели
- •Жизненные циклы
- •Модели процессов
- •2.5. Нотация для объектно-ориентированного проектирования
- •2.6. Объектно-ориентированное проектирование – ood
- •2.7. Заключительное замечание
- •Основные недостатки:
- •3. Средства объектно-ориентированного программирования
- •Средства объектно-ориентированного рограммирования Turbo-Pascal
- •Понятие “объект”
- •Статические и виртуальные методы. Полиморфизм Статические методы
- •Виртуальные методы. Полиморфизм
- •Конструкторы и деструкторы
- •3.1.5. Сравнимость данных типа объект
- •3.1.6. Динамический вызов объектов
- •3.2. Средства объектно-ориентированного
- •Понятие “класс”
- •Компоненты классов. Доступ к ним.
- •Дружественные функции
- •Конструкторы и деструкторы
- •Статические члены классов
- •3.2.6. Перегрузка операций
- •3.2.7. Виртуальные функции
- •3.2.8. Динамическое создание объектов
- •3.2.9. Проверьте свои знания!
- •Литература:
- •Оглавление
- •Воронежский государственный технический университет,
- •394026 Воронеж, Московский просп. 14
3.2. Средства объектно-ориентированного
программирования С++
Язык С++ - это знакомый многим язык С, дополненный средствами ООП. С++ внес значительный вклад в понятие класса – особой структуры, членами которой могут быть как данные, так и функции. Кроме классов, этот язык добавил к стандартному С встраиваемые и перегружаемые функции, перегрузку операторов, новую технику управления памятью.
На сегодняшний день С++ - самый распространенный язык для ООП среди универсальных языков програмирования.
Понятие “класс”
Классом в С++ называется именованный набор компонентов, включающий структуры данных и связанные с ними функции их обработки. Классы бывают трёх видов:
структуры;
объединения;
классы (в узком смысле)
Структура – это произвольный тип данных, обычно представляющий собой определяемый пользователем набор именованных компонентов. Эти компоненты могут быть любого типа как фундаментального, так и производного (с некоторыми ограничениями). Пример:
Struct
Mystr
{ int i;
char str [21];
double d;};
mystr s, *ps=&s, arr[10];
/* s имеет тип структуры mystr, ps указатель на тип структуры mystr с начальным значением адрес s, arr массив структур */
s.i=3; // присвоение
ps->d=1.23; // компонентам mystr
Объединеие является производным типом, разделяющим многие синтаксические и функциональные свойства типов структур. Главное отличае между ними состоит в том, что объединение позволяет быть “активным” только одному компоненту. Размер объединения равен размеру своего максимального по размеру компонента. Одновременно в памяти может находиться только один компонент объединения. Пример. Union
Myun
{int i; // 2 байта
double d; // 8 байтов
char ch; // 1 байт
} mu, *myptr=μ
sizeof(mu) возвращает значение 8, все 8 байтов используются только тогда, когда хранится значение d. Доступ к компонентам объединения выполняется при помощи операций выбора компоненты структуры (.и->), но требуется соблюдать осторожность (какому именно компоненту было присвоено значение).
Класс – это уникальное объединение данных и опереаций (правил), а также преобразований, используемых для создания, манипулирования и уничтожения таких объектов. Могут быть объявлены производные классы, наследующих компоненты одного или более базовых классов. Как было сказано выше, в С++ структуры и объединения рассматриваются как разновидности классов. Синтаксис объявления класса:
<ключ-класса> <имя-класса> [:базовый список]
{[список компонентов]};
<ключ-класса> это class, struct, union.
Имя-класса это любой идентификатор, уникальный в пределах своей сферы действия.
Базовый список (необязательный) перечисляет базовый класс или классы, из которого данный класс наследует данные и правила. Если объявлены базовые классы, то класс имя-класса называется производным классом.
Примечание. Объединение (union) не могут быть производными от класса или быть базовым классом.
<Список-компонентов> - это последовательность объявлений данных и функций.
Объявление класса создаёт уникальный тип, тип класса имя-класса. Это позволяет объявлять следующие объекты-класса (или экземпляры класса) данного типа. Пример:
class X{…};
X x, *xptr, xarr[10], &xr; // объявлены объекты х типа Х,
// указатель на Х (без начального значения)
// массив объектов класса Х
// ссылка на Х
С++ допускает неполное объявление класса
class X; // еще нет
struct Y; // компонентов
union Z;
Неполные объявления допускают некоторые ссылки к именам X, Y, Z до того как классы будут полностью определены. Разумеется, прежде объявить и использовать объекты классов, необходимо выполнить полное объявление классов со всеми их компонентами.