ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ
Методические указания к выполнению курсового проекта
для студентов специальности
1 – 40 05 01 – 01 Информационные системы и технологии
(в проектировании и производстве)
ЦЕЛЬ КУРСОВОГО ПРОЕКТА
Курсовая работа по дисциплине «Объектно-ориентированное программирование» ставит своей целью закрепление и углубление навыков использования объектно-ориентированного подхода к программированию, полученных в процессе изучения дисциплины «Объектно-ориентированное программирование».
ЗАДАЧИ КУРСОВГО ПРОЕТКТА
Для достижения поставленной выше цели, студентам предлагается, пользуясь средствами объектно-ориентированного языка Visual С++, разработать программу в среде Microsoft Visual Studio в соответствии с выбранным вариантом задания. В результате выполнения данной работы студенты осваивают приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта:
· реализующего выбранную (в соответствии с вариантом) тему курсового проекта,
|
|
· обладающего графическим интерфейсом пользователя (допускается разработка консольного приложения).
Исходные данные к курсовому проекту
В проекте необходимо выполнить следующие этапы разработки, которые должны быть отражены в пояснительной записке:
1) изучение необходимых теоретических сведений в соответствии с заданием;
2) выявление действующих субъектов системы (описание объектов и классов);
3) построение и описание диаграммы классов (Class Diagram);
4) создание программы, ее отладка и тестирование.
Содержание расчетно-пояснительной записки (перечень подлежащих разработке вопросов):
ВВЕДЕНИЕ
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 Постановка задачи
1.2 Описание объектно-ориентированного подхода
1.3 Описание предметной области
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Описание объектов системы, их свойств и методов
2.2 Результаты тестирования программного продукта
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЯ
Теоретическая часть должна включать: постановку задачи, описание объектно-ориентированного подхода (понятие класса, конструктора, деструктора, наследования и т.д.), а также описание предметной области и применяемых алгоритмов (если применимо) в соответствии с заданием.
Практическая часть должна включать: построенную с помощью языка UML диаграмму классов, их описание, описание конструкторов/деструкторов, методов и полей класса (с указанием атрибутов доступа), а также результаты работы и тестирования приложения.
ПРИЛОЖЕНИЕ А
(справочное)
1. Классы (язык C++)
|
|
Важнейшие концепции объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм) отражены в новом типе данных – class, который был разработан в С++,.
Классы служат для того, чтобы свойства (данные-члены) и методы для обработки этих свойств (функции-члены) объединить в один тип данных. Классы могут предоставить различные права доступа к отдельным своим членам, они могут создавать иерархии классов посредством наследования.
Объектно-ориентированное программирование характеризуется тремя основными свойствами:
1. Инкапсуляция – это комбинирование записей с процедурами и функциями, манипулирующими полями этих записей. Объединение в одном классе свойств и методов называется инкапсуляцией. С данным термином тесно связаны понятия сокрытия информации и хорошо разработанного интерфейса.
Классы должны общаться к своим свойствам преимущественно через свои методы. Эти методы образуют интерфейс между классом и программой. После выполнения описания класса для программиста важно, чтобы он мог использовать класс только через его интерфейс. О корректной обработке вызова функции и корректном поведении класса заботится сам класс.
2. Наследование. Определение класса и его дальнейшее использование для построения иерархии порожденных классов с возможностью для каждого порожденного класса, относящегося к иерархии, доступа к коду и данным всех порождающих классов.
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии классов, причем каждый класс иерархии выполняет это действие способом, именно ему подходящим.
Объявление класса:
Тип_класса имя_класса [: базовые классы]
{ список_членов_класса
};
Базовые классы — список классов, разделяемых запятыми, элементы которых наследуются определяемым (производным) классом.
Свойства класса
Классы содержат собственные поля данных. Если образуется объект класса, то в его распоряжение предоставляется память для свойств (данных-членов). Каждый объект, следовательно, имеет собственную копию свойств. Одновременно создание объекта используется для того, чтобы инициализировать данные-члены. Эту задачу берет на себя конструктор класса. Классы задают свою собственную область определения, т.е. свойства уничтожаются вместе с объектом, эти действия выполняет деструктор класса.
Свойства класса:
· могут быть описаны с атрибутом доступа public, protected или private;
· могут быть описаны как static; статические члены класса не копируются при создании объекта, а остаются в единственном экземпляре для всех объектов класса; статические члены класса должны определяться где-либо в программе, но не в рамках описания класса, и к ним можно обращаться не только через объекты, но и через имена классов:
имя_класса:: static_член_класса;
· могут быть описаны как const; члены класса, которые описываются как const, могут быть инициализированы только один раз и после этого больше не могут быть изменены (следовательно, они должны инициализироваться конструктором);
· описание класса заканчивается точкой с запятой.
Классы, описываемые в рамках определения какой-либо функции, называются локальными.
Внутри класса разрешается определять типы, следовательно, один класс может быть описан внутри другого.
Методы класса
Методы класса:
· имеют доступ ко всем свойствам класса;
· представляют единственную возможность доступа к private- свойствам своего класса;
· могут быть описаны как public, protected или private;
· могут быть описаны как static;
· могут быть описаны как const; методы класса, описанные как const, не могут изменять значения свойств и могут возвращать указатель или ссылку только на свойства класса, описанные как const. Они являются единственными методами класса, которые могут вызываться для свойства-константы;
|
|
· методы могут быть определены как внутри класса, так и за его рамками.
Атрибуты доступа
Атрибуты доступа public, private и protected регулируют возможность доступа к членам класса изнутри или извне класса (табл.1). Следовательно, они являются важным инструментом инкапсуляции. Прежде всего, с помощью этих атрибутов доступ к отдельным членам класса может быть ограничен.
Таблица 1— Атрибуты доступа к членам класса
Атрибут доступа | Значение |
public | Член класса может использоваться любым методом, который является членом данного или производного класса. Доступ извне осуществляется через имя объекта и оператор расширения области видимости: имя_о6ъекта.имя_члена_класса ссылка_на_объект.имя_члена_класса указатель_на_объект->имя_члена_класса |
private | Член класса может использоваться только методами данного класса и функциями-«друзьями» того класса, в котором он описан |
protected | To же, что иprivate. Но дополнительно член класса с данным атрибутом доступа может использоваться методами и функциями-«друзьями» классов, производных от описанного класса. Если нет производных классов, тоprivate и protectedидентичны. |