LAB2PPPO (Лабораторная работа №2)
Описание файла
Файл "LAB2PPPO" внутри архива находится в следующих папках: Лабораторная работа №2, [ООП - 2 курс] Лабораторная работа №2. Документ из архива "Лабораторная работа №2", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.
Онлайн просмотр документа "LAB2PPPO"
Текст из документа "LAB2PPPO"
5
ООП – Большаков С.А. 2008/2009Требования к ЛР № 2 по курсу ООП
(3 курс ИУ5 5 семестр 2008 г.)
“Изучение классов ARRAY и ARRAYITERATOR”
-
Цель работы
Целью лабораторной работы является продвинутое изучение оболочки (IDE) системы программирования BC 3.1 C++ и классов с массивами (ARRAY и ARRAYITERATOR) библиотеки CLASSLIB. В результате студенты должны изучить классы семейства ARRAY и приобрести навыки работы со стандартными классами (по материалам лекций, документации, литературе, справочной информации BC 3.1 и исходным файлам ARRAY.CPP , ARRAY.H, ARRAYS.H, ABSTARRY.CPP и ABSTARRY.H). Нужно детально изучить их состав и структуру, освоить приемы описания классов простой контейнерной структуры, а также научиться строить диаграммы классов и диаграммы объектов. В процессе ознакомления с данными классами обучающийся должен уметь описывать объекты данных классов и использовать их методы для управления объектами (модель поведения). Студенты в данной ЛР первоначально знакомятся с понятиями абстрактный класс и наследование (на примере классов OBJECT и ABSTARRAY) , а также получают навыки поиска информации о классах по исходным текстам программ и с помощью броузера классов (автоматическое построение диаграмм классов).
-
Изучаемые вопросы объектного программирования
В процессе лабораторной работы (она рассчитана на 6 часов плюс время на оформление отчета) необходимо изучить и практически выполнить следующие действия и операции (общие вопросы, подлежащие изучению в ЛР):
-
Повторить и углубленно освоить порядок и особенности работы с оболочкой BC++ 3.1:
-
подключение стандартных классов; создание проектов (в программе должен быть создан проект, содержащий минимально 2 исходных файла - *.CPP);
-
Выполнять настройку среды программирования и подключаемых библиотек (знать назначение всех режимов настройки);
-
Уметь запускать процессы трансляции и редактирования;
-
Освоить работу с отладчиком для систем классов;
-
Применять основные приемы тестирования программ с классами.
Примечание: предпочтительно для выполнения работы использовать средства ориентированные на WINDOWS (BCW.EXE). В некоторых операционных системах отладчик под WINDOWS не всегда правильно работает, так как в этой системе он принципиально функционирует под управлением в режиме эмуляции среды ДОС. Можно скомбинировать так, что подготовка и тестирование программ выполняется под WINDOWS, а отладка выполняется в среде эмуляции ДОС (под TD.exe). Если так не получается, то вводите, проверяйте и отлаживайте программу в режиме эмуляции ДОС. Для перекодировки из ДОС в Windows, и обратно я разместил на сайте специальную программу (trans.exe /?).
-
Изучить контейнерные классы и работу с ними (класс ARRAY и его базовые классы). Классы изучаются по листингам программ заголовочных и исходных файлов ( Для этого нужно инсталлировать ВС в полном объеме).
-
Изучить элементные классы (String или Date или Time по варианту) для включения объектов этих классов в массивы.
-
Изучить детально файлы ARRAY.CPP , ARRAY.H, ABSTARRY.CPP и ABSTARRY.H, содержащие описание класса ARRAY. Все свойства и методы, все базовые классы (Файлы располагаются по пути - <путь к BC>\CLASSLIB\INCLUDE\ и <путь к BC>\CLASSLIB\SOURCE\);
-
Освоить создание новых объектов типа ARRAY и элементных классов для включения в массивы (по варианту);
-
Продемонстрировать добавление элементов в массив с помощью метода add и других в программе;
-
Продемонстрировать работу с функциями printContentsOn и printOn в программе;
-
Продемонстрировать создание нового массива на основе другого;
-
Обратить внимание на недостатки и особенности использования класса массивов BC 3.1 C++. Зафиксировать основные недостатки класса ARRAY в отчете по ЛР.
-
Изучить использование класса ARRAYITERATOR и его методов для навигации по массивам типа ARRAY (всех методов);
-
Освоить методы удаления и добавления элементов из массива (объектов членов в объект контейнер). При этом нужно показать различные способы удаления элементов, в том числе на основе:
-
Нового порожденного класса от Array класса, в котором делается доступным метод removeEntry из класса AbstractArray ( Там он защищен – protected);
-
И при использовании метода detach из класса AbstractArray при указании типа удаления TShouldDelete :: Delete для 2-го параметра метода.
-
Для уточнения процедур удаления и добавления нужно посмотреть и изучить файлы библиотеки классов: Abstarry.h, Abstarry.cpp, Shddel.h, Array.h.
-
Порядок работы
Для выполнения лабораторной работы в полном объеме студенты должны выполнить следующие действия и пункты:
-
Продолжить изучение оболочки BC 3.1 C++ в интерактивном режиме, включая (всех пунктов меню и окон настройки работы оболочки, изучение броузера классов)
-
Построить диаграммы классов для изучаемых классов и диаграммы объектов, создаваемых в программе.
-
Написать программы в соответствии с требованиями (см. выше и ниже), состоящей как минимум из двух исходных файлов (.cpp).
-
Создать (Project-> Open Project -> <новое имя>, Project-> Add Item -> <выбор модуля> и кнопка Add), включив в него оба исходных файла (для работы под Windows нужно добавить и файл описания *.DEF) и грамотно настроить проектный файл для программы ЛР (option -> directories, option ->compilers->Code generation <small>), во втором файле должна быть описана функция для вывода справки о программе (на COUT) с номером варианта, группой и ФИО студента. Эта функция должна быть вызвана в самом начале программы ЛР.
-
Освоить редактирование текстов в среде многооконного редактора оболочки для модульных программ (вызов окна проектов WINDOWS->PROJECT, и исходных модулей из окна проекта ).
-
Отладить программу с помощью отладчика с просмотром классов, используемых для создания объектов программы. Прогнать программу в пошаговом режиме с просмотром переменных и объектов программы.
-
Сформировать листинг программы и листинг результатов.
-
Оформить отчет по ЛР.
-
Требования к работе
При выполнении лабораторной работы в изложенном ниже порядке должны быть реализованы следующие требования:
Обязательные требования без выполнения которых сдать ЛР невозможно:
-
Описать массивов А и В (см. 1-й пункт вариантов);
-
Ввести данные с консоли типа строка или дата или время ( стандартные классы: String – описание в файле strng.h, или Date - описание в файле ldate.h, или Time -описание в файле Ltime.h ) и занести их в массив A (см. 2-й пункт вариантов). Минимально в массив А заносится 5 элементов.
-
Распечатать массив А с помощью метода printContentsOn;
-
Распечатать массив А с помощью цикла и метода printOn;
-
Распечатать пустой массив В с помощью метода printContentsOn;
-
Сформировать массив В как копию массива А (необходим цикл копирования);
-
Распечатать заполненный массив В с помощью метода printContentsOn;
-
Распечатать массивы А и В с помощью цикла и использования класса ARRAYITERATOR для этих массивов. Нужно описать итераторы и использовать функции/методы этого класса - printOn, restart и current.
-
Выполнить добавление одного элемента массива и снова его распечатать (см. 3-й пункт вариантов).
-
Выполнить удаление одного элемента массива и снова его распечатать (см. 4-й пункт вариантов). На основе:
-
Нового порожденного от Array класса, в котором делается доступным метод removeEntry из класса AbstractArray. Там он защищен – protected;
-
Использованием метода detach из класса AbstractArray при указании типа удаления TShouldDelete :: Delete для 2-го параметра. Для уточнения процедур удаления и добавления нужно посмотреть файлы: Abstarry.h, Abstarry.cpp, Shddel.h, Array.h.
-
Дополнительные требования (выполняются по желанию сильными студентами, выполнение дополнительных сребований учитывается при сдаче зачета по курсу):
-
Распечатать массивы с помощью нового перегруженного оператора для нового класса наследника от ARRAY ("<<"); Новый класс назвать MyArray.
-
Перегрузить самостоятельно операцию “=” для присваивания массивов( A = B; - элементы непустого массива А при выполнении операции должны быть корректно удалены ) и операцию “+” для сложения массивов ( C = A + B; - интерпретируется так: в новый массив С последовательно включаются элементы массива А и В, а элементы непустого С предварительно при выполнении этой операции должны быть удалены).
-
Выполнить перегрузку метода printOn для элементных объектов (String, Date, Time), включаемых в массив, при этом изменить формат распечатки отдельных объектов по сравнению со стандартным форматом. Для этого на основе элементного класса нужно создать новый класс c перегруженным методом. Править исходные тексты файлов BC++ не допускается. Продемонстрировать распечатку массива с новыми элементами с помощью методов printOn и printContentsOn для массива.
-
Оформление и состав отчета
В отчет по ЛР должно быть включено:
-
Титульный лист, цель и порядок работы
-
Перечень ошибок при отладке, перечень недостатков классов массивов.
-
Диаграммы классов ARRAY и ARRAYITERATOR (или нового).
-
Описание изучаемых и созданных классов (назначение, свойства и методы).
-
Описание создаваемых объектов, диаграмма объектов программы ЛР для указанной в листинге точки выполнения программы.
-
Листинг программы ЛР и листинг результатов ее работы.
-
Варианты (см. таблицу вариантов)
Для индивидуализации задания студента введены вариантные требования, смысл которых раскрывается ниже. Окончательный вариант задания выделен в таблице.
Вариантные требования:
-
Создание массива В с помощью указателя или без указателя обычным описанием имени массива (1 – использование имени без указателя, 1В – с указателем)
-
Использование для ввода с консоли следующих типов данных (2В):
-
Времени (2.1В) – класс - Time
-
Даты (2.2В) – класс - Date
-
Строки (2.3В) – класс - String
-
Динамическое добавление элемента в массив (3В):
-
1-го (3.1В)
-
Последнего (3.2В)
-
3-го (3.3В)
Выполнить удаление элементов из массивов А и В(4В):
-
Из В - 1-го (4.1В)
-
Из А - 3-го (4.2B)
-
Из А - последнего (4.3В)
-
Из В - 3-го (4.4В)
-
Из А - 1-го (4.5В)
-
Из В – последнего (4.6В)
Варианты по списку | 1,2,5,6,9,12,16,20, 21,27 * | 3,4,10,15,18,22,23,26, 28, 30 * | 7,8,11,13,14,17,19,24,25,29 * |
ИУ5- 61 | 1В, 2.1В, 3.2В, 4.5В | 1, 2.2В, 3.1В, 4.4В | 1В, 2.2В, 3.1В, 4.1В |
ИУ5- 62 | 1, 2.2В, 3.1В, 4.4В | 1, 2.3В, 3.1В, 4.3В | 1В, 2.2В, 3.3В, 4.6В |
ИУ5- 63 | 1, 2.3В, 3.1В, 4.3В | 1В, 2.1В, 3.2В, 4.6В | 1, 2.2В, 3.2В, 4.2В |
ИУ5- 64 | 1В, 2.3В, 3.2В, 4.4В | 1, 2.1В, 3.3В, 4.1В | 1, 2.3В, 3.3В, 4.5В |
* - номер по списку в группе