Разработка класса. Динамическое выделение памяти. Конструктор по умолчанию и деструктор, их назначение (Лабораторная работа № 1)

Страницы работы

Фрагмент текста работы

  • Данные-члены, типы и количество которых хорошо подходят для хранения и представления соответствующих значений.
  • Конструктор по умолчанию, конструктор с параметрами (возможно, не один), конструктор копирования и деструктор.
  • Методы установки значений и вывода значений на экран (использовать потоковый ввод/вывод).
  • Static-счетчик количества существующих объектов класса.
  • В подходящих для этого методах, используйте параметры по умолчанию.
  • Используйте в конструкторах список инициализации.

В файле методов реализуйте интерфейс класса.

2.4. Реализация пользовательского интерфейса.

1) После разработки класса можно протестировать правильность его работы, создав в функции void main() объект разработанного класса. Проверьте правильность работы его конструкторов, вызовите методы класса, убедитесь в том, что все они работают верно.

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

3) В программе должен присутствовать пользовательский интерфейс, в котором есть возможность выбрать любую из предоставляемых классом операцию (работа всех методов должна быть наблюдаема).

Пользовательский интерфейс должен обеспечивать возможность:

  • Создание нового объекта (со значениями по умолчанию, как копия уже существующего в массиве указателей, с вводом значений) и вставку его в массив.
  • Просмотра содержимого всех объектов массива (предусмотреть форматированный вывод).
  • Изменение содержимого объекта с заданным номером.
  • Удаление объекта с заданным номером (сдвиг массива указателей учитывать не обязательно).
  • Вызов любого метода для объекта с заданным номером.

3. Оформление отчета.

Отсчет оформляется индивидуально для каждого. Помимо титульного листа, он должен содержать(объём от 4 листов):

  1. Формулировка задания.
  2. Структурное описание (общая структура класса, общая структура программы).
  3. Функциональное описание (документирование функций класса, с указанием их назначения, входных и выходных параметров, кратким описанием алгоритма работы функции).
  4. Описание работы программы (скриншот программы + описание пользовательского интерфейса или общей последовательности работы с программой, ее возможностей).
  5. Код программы с комментариями.
  6. Выводы по работе.
  7. Чистый лист для ответов на вопросы.

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

1) Исправьте ошибки в следующих фрагментах:

а)  X << cout;

b)  int *p = new int*[10];

c)  class Date

{

Date x;

}

d)  class Man

{

public:

void Man();

void ~Man();

};

e)  class Fraction

{

int N;

int D;

public:

Fraction(Fraction copy);

~Fraction(void *p);

};

f)  class Point

{

int x;

int y;

public:

…..

static void Print() { cout << x << «:» << y; }   

};

2) Какой синтаксис объявления конструктора по умолчанию?

3) Что такое конструктор с параметрами?

4) Сколько формальных параметров может быть у конструктора? У деструктора?

5) Какой тип возвращаемого конструктором значения? Деструктором?

6) Сколько конструкторов и деструкторов может быть в классе?

7) Что такое указатель this?

8) Что произойдет, если объявить поле данных класса как static?

9) Что такое static-функции?

10) Как происходит отделение интерфейса и реализации класса?

11) Может ли класс содержать указатель на объект собственного типа?

12) Что такое список инициализации?

13) Что такое константные методы?

14) Зачем нужны константные объекты?

15) Как инициализируются константные данные-члены класса?

16) Что такое дружественная функция?

5. Варианты заданий.

Вариант № 1. Дата.

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

Вариант № 2. Библиотечная карточка.

Класс должен отражать состояние книги из библиотечного каталога, и включать в себя сведения: название книги, автор, выдана ли книга или находится в библиотеке.

Вариант № 3. Время.

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

Вариант № 4. Матрица.

Класс квадратной матрицы целых чисел. Вычисление определителя для размерности 3 и более не обязательно.

Вариант № 5. Дробь.

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

Вариант № 6. Сведения о сотруднике.

Данные-члены класса включают в себя основные сведения о сотруднике фирмы (ФИО, возраст). Предусмотреть инкремент лет. Реализовать функцию, возвращающую строковое представление содержимого

Похожие материалы

Информация о работе