Задание к лабораторным работам по курсу “Объектно-ориентированное программирование”



Скачать 77.26 Kb.
Дата08.10.2012
Размер77.26 Kb.
ТипЛабораторная работа

Задание к лабораторным работам по курсу “Объектно-ориентированное программирование”

Лабораторная работа 1. Разработка основы класса.


Разработать структуру элементов данных класса в виде динамической структуры данных (динамический массив, список, массив указателей). Разработать:

  • конструкторы для различных типов входных данных (без параметров, параметр-строка, параметр-массив), конструктор копирования (объект из объекта) и деструктор;

  • методы вывода и ввода содержимого объекта в поток (на экран), в текстовую строку (из строки);

  • получения ссылки на внутренние данные объекта (например, на коэффициент матрицы);

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

В конструкторе и деструкторе предусмотреть трассировку - вывод адреса текущего объекта и его содержимого. Проследить последовательность вызова конструкторов и деструкторов при определении глобальных, локальных и динамических объектов, а также их массивов, при передаче объекта в виде формального параметра по значению и возврате его по значению в качестве результата.

  1. Целые произвольной длины со знаком во внешней форме представления в виде строки цифр в прямом коде. Знак представлен отдельным элементом данных.

  2. Целые произвольной длины со знаком во внешней форме представления в виде строки цифр в прямом коде. Знак представлен старшей цифрой (0/1).

  3. Целые произвольной длины со знаком во внешней форме представления в виде строки цифр в дополнительном коде.

  4. Целые произвольной длины во внутреннем двоичном представлении (динамический массив байтов) в прямом коде. Знак представлен отдельным элементом данных.

  5. Целые произвольной длины во внутреннем двоичном представлении (динамический массив байтов) в дополнительном коде.

  6. Матрица переменной размерности, представленная динамическим массивом указателей на строки матрицы (линейные динамические массивы).

  7. Матрица переменной размерности, представленная динамическим массивом, в котором строки матрицы расположены последовательно друг за другом.

  8. Разреженная матрица переменной размерности, ненулевые коэффициенты представлены динамическим массивом с элементами (x,y,v) – координаты, значение.

  9. Разреженная матрица переменной размерности, ненулевые коэффициенты представлены односвязным списком с элементами (x,y,v) – координаты, значение.

  10. Разреженная матрица переменной размерности, ненулевые коэффициенты представлены двусвязным циклическим списком с элементами (x,y,v) – координаты, значение.

  11. Степенной полином с динамическим массивом коэффициентов.

  12. Строка переменной размерности.

Лабораторная работа 2.
Разработка арифметики класса


Разработать и реализовать в виде методов операции над объектами класса: сложение, вычитание, умножение, сравнение, изменение отдельных частей и получение /изменение параметров объектов (арифметику класса). Результат выполнения – в текущем объекте.

Лабораторная работа 3. Переопределение операций


Арифметику класса реализовать в виде стандартного набора переопределенных операций с “арифметической” интерпретацией – результат операции – новый объект. Разработать конструктор копирования, переопределить арифметические операции, присваивание, сравнение, ввод/вывод в стандартные потоки.

Лабораторная работа 4. Шаблон структуры данных


Разработать шаблоны структуры данных в памяти. Тип хранимого элемента – параметр шаблона. Шаблон может содержать указатель на объект, либо сам объект (в зависимости от варианта). Реализовать операции включения/удаления по заданному логическому номеру, поиск минимального/максимального, включение с сохранением порядка, сортировки выбором или вставками, загрузки хранимых элементов в структуру данных из последовательного потока. Проверить работу шаблона на разработанном классе, используя его как параметр шаблона. Структуры данных:

  1. динамический массив указателей на объекты;

  2. односвязный список, элемент списка хранит указатель на объект;

  3. двусвязный список, элемент списка хранит указатель на объект;

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

  5. дерево с двумя потомками. Конечная вершина хранит массив указателей на объекты и счетчик объектов. Промежуточная вершина хранит указатели на потомков и количество объектов в поддереве, включение по логическому номеру производится с использованием ветвления.

  6. двоичное дерево;

  7. циклическая очередь объектов в динамическом массиве. При переполнении очереди ее размерность увеличивается (с использованием realloc).

  8. односвязный список, элемент списка хранит непосредственно объект;

  9. двусвязный список, элемент списка хранит непосредственно объект;

  10. циклический двусвязный список, элемент списка хранит непосредственно объект

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

  12. Шаблон – ссылка на объект произвольного класса. Объект шаблонного класса содержит указатель на объект хранимого класса и указатель на счетчик ссылок хранимого объекта. При конструировании объекта создается динамический хранимый объект со счетчиком ссылок, равным 1. Переопределить присваивание шаблон=шаблон и шаблон=хранимый объект и конструктор копирования. Деструктор уменьшает счетчик ссылок и при его обнулении уничтожает хранимый объект (Модель переменных в Java).

Лабораторная работа 5. Работа с двоичным файлом


Используя класс BinFile, или непосредственно класс fstream, реализовать методы чтения и добавления объекта в заданный файл в виде записи переменной длины или в другом, определенном для него формате, допускающим переменную размерность объекта. Для структуры данных разработать методы сохранения и загрузки элементов данных в последовательный двоичный файл с заданным именем.

Лабораторная работа 6. Абстрактный базовый класс – интерфейс объектов


Разработать абстрактный базовый класс объектов object, для него предусмотреть виртуальные методы:

  1. загрузки объекта из текстовой строки;

  2. выгрузки объекта в текстовую строку в динамической памяти;

  3. добавления объекта в последовательный двоичный файл;

  4. чтения объекта из последовательного двоичного файла;

  5. возврата уникального идентификатора класса;

  6. возврата указателя на строку с именем класса;

  7. сравнения двух объектов;

  8. “сложения “(объединения) двух объектов;

  9. создание динамической копии объекта.

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

Лабораторная работа 7. Класс структуры данных


Разработать класс структуры данных в памяти. Тип хранимого элемента – указатель на объект базового класса object*. Реализовать операции включения/удаления по заданному логическому номеру, поиск минимального/максимального, включение с сохранением порядка, сортировки выбором или вставками, загрузки хранимых элементов в структуру данных из последовательного потока, используя исключительно виртуальные функции базового класса. Проверить работу структуры данных на объектах разработанного класса. Структуры данных:

  1. динамический массив указателей на объекты;

  2. односвязный список, элемент списка хранит указатель на объект;

  3. двусвязный список, элемент списка хранит указатель на объект;

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

  5. дерево с двумя потомками. Конечная вершина хранит массив указателей на объекты и счетчик объектов. Промежуточная вершина хранит указатели на потомков и количество объектов в поддереве, включение по логическому номеру производится с использованием ветвления.

  6. двоичное дерево;

  7. циклическая очередь объектов в динамическом массиве. При переполнении очереди ее размерность увеличивается (с использованием realloc).

  8. односвязный список, элемент списка хранит непосредственно объект;

  9. двусвязный список, элемент списка хранит непосредственно объект;

  10. циклический двусвязный список, элемент списка хранит непосредственно объект

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

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

Лабораторная работа 8. Демонстрационная программа


Демонстрационная программа должна иметь объект-структуру данных, содержимое которой (хранимые объекты двух типов) выводятся в виде списка (меню). Также должен быть задан набор операций в виде списка (меню): добавление объекта, удаление выбранного объекта, сохранение и загрузка объектов из двоичного файла, сортировка объектов и выбор минимального/максимального (если все они одного типа), а также сложение (объединение) двух любых выбранных объектов одного типа с сохранением результата в виде нового объекта. Все хранимые объекты – динамические.
Примерный (неполный) вариант окончательной реализации имеется в cprog_src\examples\charter7\class


Система форматирования документов .


Похожие:

Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” icon13. Основные принципы Объектно-Ориентированного Программирования (ооп) Объектно-Ориентированное Программирование
Объектно-Ориентированное Программирование это методология программирования, которая основана на представлении программы в виде совокупности...
Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconОбъектно-ориентированное программирование учебное пособие
Объектно-ориентированное программирование: Учебное пособие. Томск: Томский межвузовский центр дистанционного образования, 2000. 145...
Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconОбъектно-ориентированное программирование

Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconОбъектно-ориентированное программирование на языке Delphi
Методическое пособие предназначено для изучения основ объектно-ориентированного языка программирования Delphi (ооп) без ориентации...
Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconВизуальное объектно-ориентированное программирование. Графический интерфейс: форма и управляющие элементы

Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconСоздание web-сайтов, разработка программного обеспечения, объектно-ориентированное программирование, проектирование баз данных

Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconМетодические указания к лабораторным работам для студентов Казань 2004 Составители: М. Г. Габидуллин, Д. С. Смирнов удк 691: 620
Проектирование составов и испытания тяжелых бетонов и строительных растворов. Методические указания к лабораторным работам по курсу...
Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconИнтегрированная среда разработки языка Visual Basic
...
Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconМетодические указания к лабораторным работам
Дискретная математика: Методические указания к лабораторным работам / Рязанская государственная радиотехническая академия; Сост....
Задание к лабораторным работам по курсу “Объектно-ориентированное программирование” iconРабочий план практических занятий по курсу «Объектно-ориентированное программирование»
Причем и те и другие правы… Каждый со своей точки зрения… и это есть очень печально, особенно для нас, преподавателей этого курса....
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org