Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

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

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Описание используемых понятий и механизмов объектно-ориентированного программирования. Разработка и описание необходимых классов. Демонстрационный модуль с кратким описанием использованных стандартных компонентов. Внешний вид и листинг программы.
Краткое сожержание материала:

Размещено на

Курсовая работа

по дисциплине

"Объектно-ориентированное программирование"

на тему:

"Реализация специализированного контейнера на базе списка на основе массива со сдвигом элементов и очереди на основе адресных указателей"

Оглавление

  • Введение
  • 1. Описание используемых понятий и механизмов ООП
  • 2. Разработка и описание необходимых классов
  • 3. Описание демонстрационного модуля с кратким описанием использованных стандартных компонентов
  • Краткое описание использованных стандартных компонентов
  • Описание внешнего вида программы
  • Листинг программы
  • Вывод
  • Список литературы

Введение

Очередь представляет собой линейный список данных, доступ к которому осуществляется по принципу "первый вошел, первый вышел" (иногда сокращенно его называют методом доступа FIFO). Элемент, который был первым поставлен в очередь, будет первым получен из нее. Элемент, поставленный в очередь вторым, при поиске будет получен также вторым и т.д. Существует два способа реализации очереди - статический и динамический. При статической реализации элементы очереди хранятся в обычном массиве. Память под массив выделяется сразу и не изменяется по мере заполнения очереди. Преимуществом данного способа является скорость работы с очередью, т.к. элементы очереди располагаются в памяти друг за другом. Недостатком является возможность переполнения очереди при слишком большом количестве добавленных элементов. При динамической реализации каждый элемент очереди состоит из двух частей - информационной части и указателя на следующий элемент очереди. При этом в отдельных переменных хранятся указатели на первый и последний элементы очереди. При таком способе реализации элементы располагаются в памяти произвольным образом. Преимуществом данного способа является то, что размеры очереди ограничены лишь размерами памяти и пустые элементы не хранятся в очереди, а освобождаются из памяти. Недостатком является медленная скорость работы с элементами при большом их количестве. Основные операции с динамической очередью: добавление, поиск и удаление элементов. Для унифицирования операций добавления и удаления элементов в начало очереди вводится фиктивный элемент-заголовок, который всегда остается в памяти и содержит указатель на первый элемент очереди.

программа объектный ориентированный программирование

1. Описание используемых понятий и механизмов ООП

Объемктно-ориентимрованное программирование (ООП) - современный подход к программированию программ и систем, в котором основные операции совершаются с некими объектами и описывающими их классами. Объектно-ориентированная программа является совокупностью объектов и способов их взаимодействия.

Класс - это тип, описывающий устройство объектов. В классах описываются свойства объекта, его методы и события, на которые он может реагировать. Объект - это экземпляр класса. Объект можно определить, как некую совокупность данных и способов работы с ним. При объектно-ориентированном программировании объект состоит из двух частей: набора данных (или свойств объекта) и программного кода обработки этих данных (или методов объекта).

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

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

Основные понятия

Контейнер

Контейнером называется объект, позволяющий хранить и обрабатывать набор некоторых объектов. Вариантами реализации контейнера могут быть на основе: массива, динамических списков разных типов, хеш-таблиц.

Взаимодействие объектов и классов

Любая программа в объектно-ориентированном программировании реализует ту или иную поставленную задачу с помощью взаимодействия объектов разных классов.

Различают два способа взаимодействия:

агрегация (композиция)

обобщение (наследование)

Агрегация возникает в тех случаях, когда один объект включает в себя в качестве

составных частей другие объекты, т.е. моделирует отношение часть - целое.

Абстракция данных

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

Инкапсуляция

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

Сокрытие данных - неотделимая часть ООП, управляющая областями видимости. Является логическим продолжением инкапсуляции. Целью сокрытия является невозможность для пользователя узнать или испортить внутреннее состояние объекта.

Наследование

Наследованием называется возможность порождать один класс от другого с сохранением всех свойств и методов класса-предка (прародителя, иногда его называют суперклассом) и добавляя, при необходимости, новые свойства и методы. Набор классов, связанных отношением наследования, называют иерархией. Наследование может быть двух видов: простое и множественное.

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

Полиморфизм

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

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

Переопределение методов основано на двух важных понятиях:

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

информация о переопределенных в классе методах, доступная механизму динамической компоновки

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

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

Интерфейсные классы

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

Другие файлы:

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

Напоминание о датах
Создание приложения "Напоминание о датах" на языке Pascal. Элементы работы с классом "список и процедуры". Прямой доступ к элементам массива. Перенос...

Определение, описание и вызовы функций
Изучение определения, описания и вызова функций, указателей и ссылок на них. Написание функции умножения произвольного столбца двумерного массива на c...

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

Графическая и программная реализация алгоритмов обработки сложных структур данных
Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание а...