Автор работы: Пользователь скрыл имя, 23 Мая 2015 в 17:34, курсовая работа
В данной курсовой работе целью является закрепление материала по объектно-ориентированному программированию, в частности:
углубленное изучение материала по теме работы;
овладение навыками системного подхода к решению вопросов, связанных с разработкой приложений;
совершенствование навыков самостоятельной работы с литературой, умение делать выводы по результатам анализа материала;
совершенствование навыков разработки объектно-ориентированных моделей предметных областей;
Введение 4
Глава I. Объектно-ориентированное программирование 5
Понятие и свойства ООП 5
Классы 7
Описание класса 8
Указатель this 10
Конструкторы и деструкторы 10
Функции 12
Дружественные функции 13
Перегрузка операций 14
Глава II. Проектирование приложения, содержащего класс
DailySchedule 16
Постановка задачи 16
Реализация класса DailySchedule 18
Реализация методов класса DailySchedule 20
Заключение
Список используемой литературы
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФИЛИАЛ
ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПРИБОРОСТРОЕНИЯ И ИНФОРМАТИКИ»
в г. Ставрополе
Кафедра «автоматизированные системы управления»
Специальность 230100 «Информатика и вычислительная техника»
КУРСОВОЙ ПРОЕКТ
по дисциплине программирование
На тему: Разработка объектно-ориентированного
приложения с
использованием класса DailySchedule
Вариант №10
Выполнил:
Студент группы ИВТ-131
______________
Шиляева Н.А. (подпись)
Проверил:
Кандидат технических наук, доцент
_______________
г. Ставрополь 2014 г.
ЗАДАНИЕ ПО КУРСОВОМУ ПРОЕКТУ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФИЛИАЛ
ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПРИБОРОСТРОЕНИЯ И ИНФОРМАТИКИ»
в г. Ставрополе
КАФЕДРА «автоматизированные системы управления»
Специальность 230100 «Информатика и вычислительная техника»
ГРУППА ИВТ-131
ЗАДАНИЕ
ПО КУРСОВОМУ ПРОЕКТУ
СТУДЕНТ Шиляева Н.А.
1. Тема проекта:
Разработка объектно-ориентированного приложения с использованием класса DailySchedule
2. Срок сдачи
студентом законченного
3. Исходные данные по проекту
Одна запись в списке запланированных дел представляет собой структуру DailyItem, которая содержит время начала и окончания работы, описание и признак выполнения. Реализовать класс DailySchedule, представляющий собой план работ на день. Реализовать методы добавления, удаления и изменения планируемой работы. При добавлении проверять корректность временных рамок (они не должны пересекаться с уже запланированными мероприятиями). Реализовать метод поиска свободного промежутка времени. Условие поиска задает размер искомого интервала, а также временные рамки, в которые он должен попадать. Метод поиска возвращает структуру DailyItem с пустым описанием вида работ. Реализовать операцию генерации объекта Redo (еще раз), содержащего список дел, не выполненных в течение дня, из объекта типа DailySchedule.
4. Содержание разделов курсового проекта (наименование разделов)
______________________________
______________________________
______________________________
______________________________
______________________________
______________________________
______________________________
______________________________
7. Дата выдачи задания: 13 февраля 2014
Руководитель курсового проекта _________________(____
Студент _________________(_
СОДЕРЖАНИЕ
Введение 4
Глава I. Объектно-ориентированное программирование 5
Глава II. Проектирование приложения, содержащего класс
DailySchedule 16
Заключение
Список используемой литературы
ВВЕДЕНИЕ
В данной курсовой работе целью является закрепление материала по объектно-ориентированному программированию, в частности:
Глава I. Объектно-ориентированное программирование
Понятие и свойства ООП
В окончательном виде любая программа представляет собой набор инструкций процессора. Все, что написано на любом языке программирования, — более удобная, упрощенная запись этого набора инструкций, облегчающая написание, отладку и последующую модификацию программ.
С ростом объема программы становится невозможным удерживать в памяти все детали, и становится необходимым структурировать информацию, выделять главное и отбрасывать несущественное. Этот процесс называется повышением степени абстракции программы.
Первым шагом к повышению абстракции является использование функций, позволяющее после написания и отладки функции отвлечься от деталей ее реализации, поскольку для вызова функции требуется знать только ее интерфейс. Следующий шаг — описание собственных типов данных, позволяющих структурировать и группировать информацию, представляя ее в более естественном виде. Для работы с собственными типами данных требуются специальные функции. Объединение в модули описаний типов данных и функций, предназначенных для работы с ними, со скрытием от пользователя модуля несущественных деталей, является дальнейшим развитием структуризации программы. Введение понятия класса является естественным развитием идей модульности. В классе структуры данных и функции их обработки объединяются. Класс используется только через его интерфейс — детали реализации для пользователя класса несущественны. Идея классов отражает строение объектов реального мира — ведь каждый предмет или процесс обладает набором характеристик или отличительных черт. Класс является типом данных, определяемым пользователем.
Идея классов является основой объектно-ориентированного программирования. ООП – это моделирование объектов посредством иерархически связанных классов. Переход от традиционного программирования к ООП на начальном этапе характерен тем, что под объектами в программе подразумеваются конкретные физические объекты. В этом случае легче дается понимание различных действий над ними. Суть объектно-ориентированного программирования в том, что оно позволяет выражать различия общих свойств фигур или свойств конкретной фигуры и использует их. Язык, который имеет конструкции для выражения и использования подобных различий, поддерживает объектно-ориентированное программирование.
Основными свойствами ООП являются инкапсуляция, наследование и полиморфизм.
Инкапсуляция – это объединение данных с функциями их обработки в сочетании со скрытием ненужной для использования информации. Эта идея не нова и применялась в структурном и модульном программировании, а в ООП получила свое логическое завершение. Инкапсуляция позволяет изменить реализацию класса без модификации основной части программы, а простота модификации, является важным критерием качества программы. Кроме того, она позволяет использовать класс в другом окружении и быть уверенным, что он не испортит не принадлежащие ему области памяти, а так же создавать библиотеки классов для применения во многих программах.
Наследование – возможность создания иерархии классов, когда потомки наследуют все свойства своих предков, могут их изменять и добавлять новые. Свойства при наследовании повторно не описываются, что сокращает объем программы.
Иерархия классов представляется в виде древовидной структуры, в которой более общие классы располагаются ближе к корню, а более специализированные — на ветвях и листьях. В C++ каждый класс может иметь сколько угодно потомков и предков. Иногда предки называются надклассами или суперклассами, а потомки — подклассами или субклассами.
Полиморфизм — возможность использовать в различных классах иерархии одно имя для обозначения сходных по смыслу действий и гибко выбирать требуемое действие во время выполнения программы. Понятие полиморфизма используется в С++ весьма широко. Чаще всего понятие полиморфизма связывают с механизмом виртуальных методов.
1.2 Классы
Класс является абстрактным типом данных, определяемым пользователем, и представляет собой модель реального объекта в виде данных и функций для работы с ними.
Объекты – конкретное представление абстракции, имеющее свои свойства и методы. Созданные объекты на основе одного класса называются экземплярами этого класса. Эти объекты (поля и методы) могут иметь различное поведение, свойства, но все равно будут являться объектами одного класса.
Классы могут быть глобальными, то есть объявленными вне любого блока, либо локальными, объявленными внутри блока. Ниже перечислены некоторые особенности локального класса:
1.3 Описание класса
Объявление класса начинается с зарезервированного ключевого слова class, после которого пишется имя класса. В фигурных скобках объявляется тело класса, причём после закрывающейся скобки обязательно нужно ставить точку с запятой. В теле класса объявляются три метки спецификации доступа, после каждой метки нужно обязательно ставить двоеточие:
class имя_класса {
private:
// Список свойств и методов для использования внутри класса
public:
// Список методов, доступных другим функциям и объектам программы
protected:
// Список средств, доступных при наследовании
};
Кроме того, для класса можно задать его базовые классы (предки) и ряд необязательных атрибутов и спецификаторов, определяющих различные характеристика класса.
Public, private и protected – это спецификаторы доступа, управляющие видимостью элементов класса. Интерфейс класса описывается после спецификатора public (открытый член класса), все методы и свойства класса, объявленные после него будут доступны другим функциям и объектам.
Все методы и свойства класса, объявленные после спецификатор доступа private (закрытый, внутренний член класса) будут доступны только внутри класса, то есть функциям-членам данного класса и друзьям класса, как функциям, так и классам. Этот вид доступа принят в классе по умолчанию.
Спецификатор protected (защищенный, внутренний член иерархии классов) предоставляет доступ классам, производным от данного.
Действие любого спецификатора распространяется до следующего спецификатора или до конца класса. Можно задавать несколько секций private и public, порядок их следования значения не имеет.
Рисунок 1. – Наследование классов.
Поля класса:
Инициализация полей при описании не допускается.
1.4 Указатель this
Каждый объект содержит свой экземпляр полей класса. Методы класса находятся в памяти в единственном экземпляре и используются всеми объектами совместно, поэтому необходимо обеспечить работу методов с полями именно того объекта, для которого они были вызваны. Это обеспечивается передачей в функцию скрытого параметра this, в котором хранится константный указатель на вызвавший функцию объект. Указатель this неявно используется внутри метода для ссылок на элементы объекта. В явном виде этот указатель применяется в основном для возвращения из метода указателя (return this;) или ссылки (return *this;) на вызвавший объект.