ВВЕДЕНИЕ
В последние несколько десятилетий компьютерная технология развивалась поразительными темпами. Компьютеры используются для решения все более и более сложных задач. Но для создания программ, решающих эти задачи, недостаточно одной вычислительной мощи. Объектно – ориентированное программирование (ООП) приносит с собой новый подход к решению задач.
В отличие от процедурного программирования, где внимание уделяется алгоритмам, в ООП основное внимание направлено на данные. При использовании ООП проблему не решают с помощью процедурного подхода, заложенного в языке, а приспосабливают язык для решения этой проблемы. Идея заключается в создании таких форм данных, которые соответствовали бы основным характерным чертам проблемы.
Целью данного курсового проекта является разработка и реализация программного кода с применением классов встроенного типа данных int и разных типов контейнеров: multimap и list. Для выполнения данного курсового проекта необходимо разработать алгоритм решения, по итогам его реализации получить результат.
Шаги, которые необходимо выполнить для достижения цели курсового проекта:
1. Написать программу, которая будет демонстрировать использование контейнерных классов для хранения встроенных типов данных. Необходимо выполнить следующие действия:
· Создать объект-контейнер в соответствии с вариантом задания и заполнить его данными.
· Просмотреть контейнер.
· Изменить контейнер, удалив из него одни элементы и заменив другие.
· Просмотреть контейнер, используя для доступа к его элементам итераторы.
· Создать второй контейнер этого же класса и заполнить его данными того же типа, что и первый контейнер.
· Изменить первый контейнер, удалив из него n элементов после заданного и добавив затем в него все элементы из второго контейнера.
· Просмотреть первый и второй контейнеры.
2. Написать программу, которая будет демонстрировать использование контейнерных классов для хранения пользовательских типов данных. Необходимо выполнить следующие действия:
· Создать объект-контейнер в соответствии с вариантом задания и заполнить его данными.
· Просмотреть контейнер.
· Изменить контейнер, удалив из него одни элементы и заменив другие.
· Просмотреть контейнер, используя для доступа к его элементам итераторы.
· Создать второй контейнер этого же класса и заполнить его данными того же типа, что и первый контейнер.
· Изменить первый контейнер, удалив из него n элементов после заданного и добавив затем в него все элементы из второго контейнера.
· Просмотреть первый и второй контейнеры.
3. Написать программу, которая будет демонстрировать использование алгоритмов STL. Необходимо выполнить следующие действия:
· Создать контейнер, содержащий объекты пользовательского типа. Тип контейнера выбирается в соответствии с вариантом задания.
· Отсортировать его по убыванию элементов.
· Просмотреть контейнер.
· Используя подходящий алгоритм, найти в контейнере элемент, удовлетворяющий заданному условию.
· Переместить элементы, удовлетворяющие заданному условию в другой (предварительно пустой) контейнер. Тип второго контейнера определяется вариантом задания.
· Просмотреть второй контейнер.
· Отсортировать первый и второй контейнеры по возрастанию элементов.
· Просмотреть их.
· Получить третий контейнер путем слияния первых двух.
· Просмотреть третий контейнер.
· Подсчитать, сколько элементов, удовлетворяющих заданному условию, содержит третий контейнер.
· Определить, есть ли в третьем контейнере элемент, удовлетворяющий заданному условию.
АНАЛИТИЧЕСКАЯ ЧАСТЬ
Объектно–ориентированное программирование
Основополагающей идеей объектно-ориентированного подхода является объединение данных и действий, производимых над этими данными, в единое целое, которое называется объектом.
Функции объекта, называемые в C++ методами или функциями-членами, обычно предназначены для доступа к данным объекта. Если необходимо считать какие-либо данные объекта, нужно вызвать соответствующий метод, который выполнит считывание и возвратит требуемое значение. Прямой доступ к данным невозможен. Данные сокрыты от внешнего воздействия, что защищает их от случайного изменения. Говорят, что данные и методы инкапсулированы.
Термины сокрытие и инкапсуляция данных являются ключевыми в описании объектно-ориентированных языков. Если необходимо изменить данные объекта, то, очевидно, это действие также будет возложено на методы объекта. Никакие другие функции не могут изменять данные класса. Такой подход облегчает написание, отладку и использование программы.
Типичная программа на языке C++ состоит из совокупности объектов, взаимодействующих между собой посредством вызова методов друг друга. Объектно-ориентированное программирование никак не связано с процессом выполнения программы, а является лишь способом ее организации. Большая часть операторов C++ идентична операторам процедурных языков, в частности языка С.
Внешне метод класса в C++ очень похож на обычную функцию языка C, и только по контексту программы можно определить, является ли функция частью процедурной С-программы или объектно-ориентированной программы на C++. Когда вы подходите к решению задачи с помощью объектно-ориентированного метода, то вместо проблемы разбиения задачи на функции вы сталкиваетесь с проблемой разбиения ее на объекты. Мышление в терминах объектов оказывается гораздо более простым и наглядным, чем в терминах функций.