
- •Министерство образования и науки украины
- •Лабораторная работа № 1
- •Ход работы
- •Требования к отчетам
- •Отчёт должен содержать
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №2
- •Символы типа
- •Ход работы
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №3 Разработка программ со скалярными типами данных (2 часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №4 Разработка программ с циклическими вычислительными процессами
- •Теоретические сведения
- •Алгоритм работы оператора цикла for ():
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №5 Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:), оператор switch, оператор break, оператор goto (2 часа)
- •Теоретические сведения
- •Условная тернарная операция (?:)
- •Оператор варианта switch
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №6 Операции с, их приоритеты и использование. Преобразование типов (4 часа)
- •Теоретические сведения
- •Приоритет операций и порядок выполнения (ассоциативность)
- •Преобразование типов
- •(Новый_тип) операнд
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №7
- •Синтаксис определения функций в с
- •Использование локальных и глобальных переменных в функциях. Вызов функции
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №8 Разработка программ с указателями (2 часа)
- •Теоретические сведения
- •Основные операции с указателями
- •Указатели и целые величины
- •Динамическое размещение указателей в памяти
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №9 Массивы. Селективная обработка массивов
- •Теоретические сведения
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №10
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №11
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 12
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 13
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 14
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 15 Использование указателей для работы с составными типами данных (2часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 16
- •Указатели как параметры функции
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №17
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 18
- •Использование администратора проектов
- •Lab18.Cpp- Основной файл проекта
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 19
- •Доступ к пикселям
- •Графические примитивы
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №20 Разработка программ с использованием классов (2 часа)
- •Теоретические сведения
- •Объявление и определение класса
- •Тело класса
- •Использование класса
- •Инкапсуляция. Управление доступом к членам класса
- •Классы памяти для объектов
- •Использование данных-членов класса
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №21
- •Инициализация объектов класса
- •Деструкторы
- •Вызов деструкторов
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №22 Использование наследования для создания иерархии классов (2 часа)
- •Теоретические сведения
- •"Друзья" классов (friend)
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №23 Использование виртуальных и указателей для работы с объектами классов (2 часа)
- •Теоретические сведения
- •Виртуальные базовые классы
- •Виртуальные деструкторы
- •Ход работы
- •Литература
- •Выходные данные
Классы памяти для объектов
Класс, в смысле распределения памяти, рассматривается как вид структуры. Как и структуры, классы могут быть объявлены с такими классами памяти, как автоматический (auto), внешний (extern) или статический (static).
Переменные (Идентификаторы), объявленные внутри класса, видимы только в сочетании с объектами класса. При неоднозначном толковании должен использоваться оператор разрешения области видимости (::).
Использование данных-членов класса
Инкапсуляция позволяет скрыть какие-то данные и функции внутри класса. Данных может быть столько, сколько нужно и сколько позволяет память. Однако их может и не быть вообще.
Попытка инициализировать данные внутри объявления класса ошибочна. Класс - это не объект и память для него не будет выделена до тех пор, пока не будет создан экземпляр этого класса. Данные, объявленные в классе, следует рассматривать как поля структуры, а не как переменные. Как и для структуры, нужно объявить объект с типом (именем) класса, а затем инициализировать данные члены.
Данные-члены создаются с тем же классом памяти, что и объект класса. Если объект объявляется автоматическим, то все его данные будут автоматическими. Статические данные-члены являются исключением из этого правила: когда создаётся объект со статическими членами (данными), память под них не выделяется, потому что это приведёт к появлению нескольких копий статических данных. Если в классе данное объявляется статическим (static), то все экземпляры класса будут разделять одно и тот же данное-член. Статический член данных, как и глобальная переменная, размещается в фиксированной области памяти на стадии компоновки. Для объявления или инициализации статических данных используется в точности та же нотация, что и для глобальных переменных (ехtern).
Если данное-член класса объявлен как статический, то компоновщик выделяет под него память только один раз, когда производится объявление этого данного в классе. Поэтому инициализировать статическую переменную можно в момент её объявления. Статические элементы всегда остаются статическими.
Привилегии доступа к статическим данным отличаются от привилегий доступа к нестатическим. К статическому данному необходимо всегда обращаться через имя класса и оператор разрешения области видимости (::), независимо от того, объявлен он как приватный, общедоступный или защищенный.
Оператор разрешения области видимости (::) – используется для доступа к данным- членам:
через функцию-член класса;
через класс, объявленный дружественным для данного класса.
Для доступа к открытым членам класса используется оператор точка (.) с объектами или оператор (->) с указателями на объекты класса.
Для доступа к закрытым и защищённым членам класса используются функции-члены открытой части класса.
Ход работы
Изучить теоретические сведения.
В соответствии с индивидуальным заданием разработать структуру класса, сделать определение функций-членов класса (class), разработать алгоритм использования объектов и указателей на объекты класса для доступа к данным и функциям- членам. Проверить возможность доступа к членам класса в разделах private, public, protected. В разделах объявить минимум по одному данному-члену, включая статические (static).
Набрать программу на компьютере.
Устранить ошибки.
Получить результат.
Оформить отчет.
Подготовиться к защите лабораторной работы, изучив контрольные вопросы по данной теме.
Индивидуальное задание к лабораторной работе №20.
Составить программу для объявления и использования данных типа класс согласно индивидуальному заданию, приведенному в таблице 20.1.
Таблица 20.1 - индивидуальные задания
Базовый класс |
Производный класс |
Производный класс |
|
костёр |
фонарь |
|
зернохранилище |
элеватор |
|
кран |
мостовой кран |
|
кот |
кот сиамский |
|
дерево |
дуб |
|
самолет |
дельтоплан |
|
автомобиль |
легковой автомобиль |
|
корабль |
танкер |
|
нефть |
бензин |
|
книга |
журнал |
|
жесткий диск |
дискета |
|
электронно-лучевая трубка |
жидкокристаллический экран |
|
солнце |
костер |
|
батарея |
аккумулятор |
|
овощи |
картофель |
|
часы |
часы наручные |
|
рыба |
колбаса |
|
ручка |
шариковая ручка |
|
нож |
ножницы |
|
хлеб |
батон |
|
напильник |
надфиль |
|
сталь |
закалённая сталь |
|
кресло |
стул |
|
цех |
кузнечный цех |
|
кирпич |
фасонный кирпич |
|
куртка |
пиджак |
|
редуктор |
червячный редуктор |
|
ботинки |
кеды |
|
шапка |
папаха |
|
дождь |
ураган |
|
лыжи |
санки |
|
телефон |
радиотелефон |
|
зубчатое колесо |
косозубое колесо |
|
море |
водохранилище |
|
труба |
бинокль |
|
лес |
куст |
|
кастрюля |
тарелки |