Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
1.Благодаря введению формы дети в школе не могут поразить друг друга именно одеждой – и для учебного процесса это большой плюс: ведь не для того они в...полностью>>
'Расписание'
платные Ломоносовский, 1 Арт-студия Ольги Орловой (Изобразительное искусство) (1-11 классы) дизайн декора По отдельному расписанию (все дни недели) Те...полностью>>
'Документ'
Пенсионный Фонд Российской Федерации объявил о начале четвертого ежегодного Всероссийского конкурса «Лучший страхователь года по обязательному пенсион...полностью>>
'Документ'
Внести в статью 12 части первой Налогового кодекса Российской Федерации (Собрание законодательства Российской Федерации, 1998, № 31, ст. 3824; 1 , № 2...полностью>>

Главная > Методические указания

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

Министерство связи и массовых коммуникаций РФ

Поволжская Государственный Университет Телекоммуникаций и Информатики

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к курсовому проекту по дисциплине

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

для студентов специальности 230105

Одобрено Методическим Советом ПГУТИ

Автор-составитель: НАЗАРЕНКО П.А., к.т.н.

Редактор: КОРАБЛИН М.А., д.т.н., профессор

Рецензент: АЛЕКСЕЕВ А.П., к.т.н., доцент

Самара 2009

Содержание

Введение 2

Задание 3

Цели курсового проекта 3

Рекомендации по выполнению курсового проекта 3

Описание предметной области 4

Разработка системы классов 4

Класс массива 4

Классы обрабатываемых массивов 7

Классы вывода результатов обработки 9

Класс программы 10

Иерархия классов 13

Дополнительные рекомендации 13

Выбор варианта 14

Требования к оформлению пояснительной записки 15

Защита курсового проекта 15

Рекомендуемая литература 15

Введение

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

Проект предназначен для выполнения студентами дневного и заочного отделений.

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

Проект ориентирован на использование языка Си++, в отдельных случаях допускается использование студентами других объектно-ориентированных языков (например, Object Pascal, Java, C#, Perl, Python и т.д.), при условии, что исполнители проекта в достаточной степени знакомы с этими языками.

Задание

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

Программа должна позволять контролировать своё выполнение, т.е. иметь некоторый пользовательский интерфейс.

Все компоненты программы, включая интерфейс, должны быть объектами соответствующих классов. При разработке программы допускается использовать RAD- и CASE-средства, например Borland C++ Builder или IBM Rational Rose.

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

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

Соответствующие базовые классы должны быть виртуальными.

При выполнении проекта студенты могут использовать шаблоны классов, включая библиотеку STL.

Цели курсового проекта

1. Цель разработки – создать с использованием технологии ООП программу, реализующую процессы в заданной предметной области, и удобную для пользователя.

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

При выполнении проекта должно быть продемонстрировано умение использовать перегрузку операций, включая operator=, operator[], виртуальные функции, абстрактные классы, взаимодействие между объектами разных классов.

Рекомендации по выполнению курсового проекта

Разработку программы можно вести в соответствии со спиральной моделью жизненного цикла ПО []. В этом случае сначала создаётся прототип – программа, обладающая минимально необходимым набором функциональных качеств и пользовательским интерфейсом начального уровня. Набор функций расширяется на следующих этапах разработки, одновременно может усложняться интерфейс.

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

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

Описание предметной области

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

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

Разработка системы классов

Класс массива

Разработку системы классов начнём с класса массива. Рассмотрим компоненты данных этого класса. Хранимые в массиве данные могут являться последовательностью целых чисел, действительных чисел или символов. Т.к. размер этого массива может быть заранее не известен, то будет использоваться динамический массив, адресуемый указателем. Таким образом, одно поле класса массива – указатель на тип данных, определяемый вариантом задания. Ещё одно поле – размер этого массива. С точки зрения состава полей класс массива оказывается аналогичным классу строки TString, рассмотренному в лекционном курсе. Аналогичным может быть и состав функций класса. Отличия у некоторых функций от функций класса TString в том, что не будут использоваться библиотечные функции работы со строками.

Определение класса будет размещаться в отдельном файле с именем, например, "mas0.h", который будет включаться в другие файлы, там где это необходимо, при помощи директивы препроцессора #include. Приведём файл с фрагментом определения класса массива:

#ifndef MAS0

#define MAS0

class AMas

{

protected:

char *data;

int N;

// …

};

#endif

Набор директив

#ifndef MAS0

#define MAS0

#endif

предотвращает возникновение ошибок типа «повторное определение программного объекта или типа данных» при многократном включении файла в общий текст программы при компиляции.

Класс массива будет использоваться в качестве базового, поэтому используется спецификатор protected. Набор конструкторов, деструктор и функции доступа к данным в этом классе могут совпадать (полностью или частично) с классом TString:

class AMas

{

protected:

char *data;

int N;

public:

int& GetN( ) { return N; }

AMas( ):data(NULL),N(0){}

AMas(int a):N(a) { data=new char[N]; }

int CopyData(char*,int);

// …

};

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

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

class AMas

{

// …

virtual float Calculate( ) = 0;

virtual ~AMas( );

// …

};

Теория по абстрактным классам и виртуальным функциям рассмотрена в соответствующих разделах конспекта лекций.

Полезными для этого класса могут оказаться перегруженные операции, например, операция индексации массива [ ]:

class AMas

{

// …

public:

char& operator[](int a) { return data[a]; }

// …

};

Необходимость использования других перегруженных операций, например = или <<, определяется студентом самостоятельно, исходя из использования объектов соответствующих классов. Методика реализации перегрузки операций рассмотрена в конспекте лекций.

Полное определения класса (и содержимое файла "mas0.h") оказывается следующим:

#ifndef MAS0

#define MAS0

class AMas

{

protected:

char *data;

int N;

public:

int& GetN( ) { return N; }

char& operator[](int a) { return data[a]; }

AMas():data(NULL),N(0){}

AMas(int a):N(a) { data=new mtype[N]; }

int CopyData(char*,int);

virtual float Calculate( ) = 0;

virtual ~AMas( );

};

#endif

Определения функций класса поместим в отдельный файл с именем, например, "mas0.cpp":

#include "mas0.h"

int AMas::CopyData(char* d,int n)

{

if(data==NULL)

return 0;

int i,n1;

if(n>=N) n1=N;

else n1=n;

for(i=0;i

data[i]=d[i];

return i;

}

AMas::~AMas()

{

delete[] data;

}



Похожие документы:

  1. Название Информатики

    Документ
    ... Программирование в Delphi для начинающих: [учебное пособие для студентов вузов, обучающихся по специальности 351400 "Прикладная информатика (по ... 2.0. Объектно-ориентированное моделирование ... методические указания к курсовому проектированию по дисциплине ...
  2. Программа итоговой

    Программа
    ... математика в одном месте. Дисциплина «Объектно-ориентированное программирование» Технологии объектно-ориентированного программирования. Понятия объектно-ориентированного программирования. Понятие программного проекта Этапы жизненного цикла ...
  3. Южно-уральский профессиональный институт

    Пояснительная записка
    ... Рабочая программа по преддипломной практике для студентов специальности 230105.65 Программное ... Объектно-ориентированное программирование. Функциональное, процедурное, модульное, логическое, структурное и концептуальное программирование. Студент ...
  4. Отчёт о результатах самообследования гбоу спо нрпк

    Отчет
    ... колледжа; Методические рекомендации по выполнению курсовых проектов (работ); Положение по организации выполнения и защиты курсовой работы (проекта) по специальностям СПО ...

Другие похожие документы..