Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Инкапсуляция. Классы и их компоненты. Объекты






Содержание

 

Введение...................................................................................................................................... 3

Рекомендуемая литература................................................................................................... 3

Требования к оформлению отчетов по лабораторным работам................................ 3

1. Инкапсуляция. Классы и их компоненты. Объекты.................................................. 3

2. Указатели на компоненты класса, статические поля и функции.......................... 5

3. Конструкторы и деструкторы классов......................................................................... 7

4. Перегрузка операций для классов................................................................................. 9

5. Простое наследование.................................................................................................... 10

6. Множественное наследование..................................................................................... 12

7. Виртуальное наследование.......................................................................................... 13

8. Полиморфизм. Виртуальные функции....................................................................... 15

9. Абстрактные классы. Виртуальные деструкторы.................................................. 16

 

Рекомендуемая литература

 

1. Подбельский В.В. Язык Си++. – М.: Финансы и статистика, 1995.

2. Фридман А.Л. Основы объектно-ориентированной разработки программных систем. – М.: Финансы и статистика, 2000.

3. Фридман А.Л. Основы объектно-ориентированного программирования на языке Си++. Учебный курс. – М.: Радио и связь, 1999.

4. Иванова Г. и др. Объектно-ориентированное программирование. – М.: МГТУ им. Баумана, 2001.

5. Глушаков С.В., Коваль А.В., Смирнов С.В. Язык программирования C++. Учебный курс. – Харьков: Фолио; М.: ООО «Издательство АСТ», 2001.

Требования к оформлению отчетов по лабораторным работам

 

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

 

 

Лабораторная работа №1

Инкапсуляция. Классы и их компоненты. Объекты

 

Подготовка к работе. По указанной литературе и конспекту лекций повторить темы «Инкапсуляция», «Классы», «Режимы доступа к членам классов», «Объекты».

Разработать программу в соответствии с заданием к лабораторной работе.

 

Задание.

1. Разработать класс, инкапсулирующий свойства одномерного динамического массива заданного размера, например, строку. Тип массива определяется по таблице 1 в соответствии с вариантом:

Таблица 1

Тип массива Тип массива
  Символьный массив   Массив плавающих чисел
  Массив целых чисел   Символьный массив
  Знаковый символьный массив   Массив целых чисел
  Массив длинных целых чисел   Массив типа double
  Массив типа float   Массив беззнаковых целых чисел
  Беззнаковый символьный массив   Массив типа float
  Массив коротких целых чисел   Знаковый символьный массив
  Массив типа double   Массив целых чисел

 

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

2. В классе предусмотреть функции, выполняющие следующие действия:

1. выделение памяти для динамического массива*;

2. ввод данных в каждое поле;

3. вывод данных из каждого поля**;

4. доступ по считыванию/записи в выбранный элемент массива;

5. освобождение памяти, занятой динамическим массивом.

____

*) Функция должна иметь аргумент для указания размера выделяемой области памяти.

**) Ввод и вывод данных в поле размера массива лучше выполнить единственной функцией.

 

Предусмотреть соответствующие режимы доступа для данных и функций.

Текст программы должен быть разделен на модули по следующему принципу: определение класса должно находиться в отдельном модуле, определения функций класса – также в отдельном модуле, точка входа в программу (функция main()) – также в отдельном модуле. Модули должны связываться друг с другом при помощи директивы препроцессора #include.

3. В функции main() создать автоматический объект разработанного класса, указатель на объект, динамический объект и массив объектов (из 3-4 элементов).

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

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

6. Создать до начала блока указатель на объект. В блоке при помощи этого указателя и операции new создать динамический объект. Повторить для этого объекта операции, указанные в п. 5. Сделать выводы.

Сохранить файлы с текстом программы для следующих работ.

Пример выполнения задания:

1. Создание класса:

class Mas {

private:

long float *mas; // Указатель для организации динамического массива

int Rmas; // Размер массива

public:

void SetRmas(int a) { Rmas = a; } // Функции доступа по записи

void SetMas(long float* p) { Mas = p; }

int GetRmas() { return Rmas; } // Функции доступа по чтению

long float* GetMas() { return Mas; }

};

 

 

Контрольные вопросы.

1. Что такое класс?

2. Чем класс отличается от структуры или записи?

3. Из каких компонентов может состоять класс?

4. Данные каких типов могут входить в состав класса?

5. Данные каких типов не могут входить в состав класса? Почему?

6. Какое количество данных может содержать класс?

7. Что представляют собой функции класса?

8. Для чего нужны функции класса? Как их можно классифицировать?

9. Какое количество функций может содержать класс?

10. Что означает понятие «режим доступа»?

11. Чем определяется режим доступа?

12. Какие бывают режимы доступа?

13. Могут ли функции иметь закрытый режим доступа?

14. Что такое объект класса?

15. Что означает понятие «инкапсуляция»?

16. Какое количество объектов одного класса может существовать в программе?

17. Каковы основные механизмы объектно-ориентированного программирования?

18. Могут ли существовать указатели на класс?

19. Могут ли существовать массивы объектов класса?

 

 

Лабораторная работа №2






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.