Разработка приложения на языке программирования C++
Класс может определить свои собственные операции new и delete (new и delete для массива объектов). New — оператор языка программирования C++, обеспечивающий выделение динамической памяти. Оператор delete возвращает память выделенный оператором new, чтобы избежать утечки памяти. Деструктор является противоположностью конструктора. Он вызывается при уничтожении объектов и должен производить… Читать ещё >
Разработка приложения на языке программирования C++ (реферат, курсовая, диплом, контрольная)
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
" НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМ. Н.И. ЛОБАЧЕВСКОГО"
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ УПРАВЛЕНИЯ И ПРЕДПРИНИМАТЕЛЬСТВА
КУРСОВАЯ РАБОТА
по дисциплине: «Информационные технологии и платформы разработки информационных систем»
на тему: «Разработка приложения на языке программирования C++»
Выполнил: студент группы 123−1И Петров Владислав Алексеевич Проверил: Преподаватель Майорова Ирина Владимировна Н. Новгород, 2014 г.
- Введение
- Постановка задачи
- Теоретическая часть
- Практическая часть
- Результат выполнения программы
- Заключение
- Список литературы
C++ представляет собой объектно-ориентированный низкоуровневый язык программирования, отвечающий стандартам ANSI и Международной организации стандартов (International Standards Organization — ISO). Объектная ориентированность C++ означает, что он поддерживает стиль программирования, упрощающий кодирование крупномасштабных программ и обеспечивающий их расширяемость. Будучи низкоуровневым языком, C++ может генерировать весьма эффективные высокоскоростные программы. Сертификация ANSI и ISO обеспечила переносимость C++: написанные на нем программы совместимы с большинством современных сред программирования. Уже в самом названии содержится намек на то, что C++ является следующим поколением языка программирования C — результатом добавления новых веяний академической компьютерной мысли к старому доброму C. На C++ можно делать все то же, что и на C, и даже таким же образом. Но это нечто большее, чем просто C, наряженный в новые одежды. Дополнительные возможности C++ весьма значительны и требуют не только некоторых размышлений, но и привычки, однако результат того заслуживает.
Объектно-ориентированное программирование (ООП) — подход к программированию, при котором основными концепциями являются понятия объектов и классов.
Постановка задачи
1. Описать класс с именем COLLABORATE (сотрудник), содержащий следующие члены-данные открытого типа (можно закрытого типа — более сложный вариант):
· фамилия сотрудника;
· год рождения;
· пол.
2. Описать класс с именем FIRM (фирма), содержащий следующие члены-данные закрытого типа:
· количество сотрудников;
· указатель на массив сотрудников.
3. Класс FIRM должен содержать следующие члены-функции:
· конструктор без параметров;
· конструктор с параметрами;
· конструктор копирования;
· деструктор, выводящий сообщение о своей работе;
· функцию ввода данных в объект класса с клавиатуры (можно из файла);
· функцию вывода данных из объекта класса на дисплей;
· функцию добавления сотрудника в массив;
· функцию удаления сотрудника из массива;
· функцию подсчета количество женщин пенсионного возраста (возраст? 55 лет);
· функцию подсчета количество мужчин пенсионного возраста (возраст? 60 лет);
· функцию, формирующую массив сотрудников в зависимости от пола;
· другие функции, если они необходимы.
4. Написать программу, демонстрирующую работу с этим классом.
Теоретическая часть
класс конструктор деструктор программирование
Формат класса
Для хранения разнотипной информации о физическом объекте нужна специальная структура. Эта структура называется классом.
class COLLABORATE
{
public:
char fio [15];
int dat;
char pol [15];
};
Объявление класса начинается с ключевого слова class, после которого идет имя класса и пара фигурных скобок. После открывающейся скобки находится ключевое слово public (public делает все находящиеся за ним члены класса открытыми; private (закрытый, внутренний член класса) — обращение к члену допускается только из методов того класса, в котором этот член определен). После ключевого слова идет описание полей класса.
Функции
void Get_FIRM () const; // Функцию вывода данных из объекта класса на дисплей;
void Set_FIRM (); // Функцию ввvода данных в объект класса с клавиатуры;
По историческим причинам функции-члены называются также методами.
Полное имя функции пишется как void FIRM: Set_FIRM (). Имя класса в начале полного имени означает, что эта функция является членом класса NKI (: — оператор разрешения видимости).
Синтаксис вызова функции-члена такой же, как и синтаксис обращения к переменной-члену класса.
a. Set_FIRM ();
Создание указателя на объект
Указатель — это переменная, которая содержит адрес другого объекта. Этим объектом может быть некоторая переменная, динамический объект или функция. Говорят, что указатель ссылается на соответствующий объект
COLLABORATE *pMas;
Между массивами и указателями существует тесная связь. Имя массива без индекса эквивалентно указателю на его первый элемент. К указателю можно прибавлять или отнимать от него целочисленные выражения, при этом значение указателя изменяются в соответствии с размером объектов, на которые он указывает.
Специальные элементы-функции класса
Специальными функциями класса называют функции, которые могут вызываться компилятором неявно. Это может происходить при создании и удалении представителей класса, при их копировании и преобразовании в другие типы. К таким функциям относятся:
· Конструктор. Инициализирует представителей класса.
· Конструктор копии. Инициализирует новый представитель, используя значения существующего объекта.
· Операция присваивания. Присваивает содержимое одного представителя класса другому.
· Деструктор. Производит очистку уничтожаемого объекта.
· Оператор new. Выделяет память для динамически создаваемого объекта.
· Оператор delete. Освобождает память, выделенную под динамический объект.
Конструктор
Конструктор имеет тоже имя, что и класс. Он вызывается компилятором всегда, когда создается новый представитель класса.
// Конструктор
FIRM: FIRM ()
{
n = 0;
pMas = NULL;
}
// Конструктор с параметром
FIRM: FIRM (int n)
{
int i;
this->n = n;
pMas = new COLLABORATE [n];
for (i = 0; i < n; i++)
{
pMas [i]. fio = 0;
pMas [i]. dat = 0;
pMas [i]. pol = 0;
}
}
Относительно конструкторов имеют место такие правила:
· Для него не объявляется тип возвращаемого значения
· Он не может возвращать значений оператором return
Конструктор копирования
Конструктор копии является конструктором специального вида, который принимает в качестве параметра ссылку или константную ссылку на объект данного класса. Он автоматически вызывается компилятором, когда вновь создаваемый объект инициализируется значениями существующего объекта.
// Конструктор копирования
FIRM: FIRM (const FIRM& b)
{
n = b. n;
pMas = new COLLABORATE [n];
for (int i = 0; i < n; i++)
pMas [i] = b. pMas [i];
}
Деструктор
Деструктор является противоположностью конструктора. Он вызывается при уничтожении объектов и должен производить необходимую очистку объекта перед освобождением занимаемой им памяти. Именем деструктора должно быть имя класса, которому предшествует тильда (~).
// Деструктор
FIRM: ~FIRM ()
{
if (pMas)
delete [] pMas;
cout << «dectructor» << endl;
}
Операции класса new и delete
Класс может определить свои собственные операции new и delete (new [] и delete [] для массива объектов). New — оператор языка программирования C++, обеспечивающий выделение динамической памяти. Оператор delete возвращает память выделенный оператором new, чтобы избежать утечки памяти.
pMas = new COLLABORATE [n];
delete [] pMas;
Практическая часть
Файл COLLABORATE. h
#ifndef COLLABORATE_H
#define COLLABORATE_H
#include
#include
#include
using namespace std;
class COLLABORATE
{
public:
char fio [15];
int dat;
char pol [15];
};
class FIRM
{
private:
int n;
COLLABORATE *pMas;
public:
FIRM (); // Конструктор
FIRM (int n); // Конструктор с параметром
FIRM (const FIRM& b); // Конструктор копирования
~FIRM (); // Деструктор
FIRM operator = (const FIRM & coll); // перегрузка оператора =
void Get_FIRM () const; // Функцию вывода данных из объекта класса на дисплей;
void Set_FIRM (); // Функцию ввvода данных в объект класса с клавиатуры (можно из файла);
FIRM ADD_FIRM (); // функцию добавления сотрудника в массив;
FIRM DEL_FIRM (); // функцию удаления сотрудника из массива;
int Get_FIRM_W (char *pol); // функцию подсчета количество женщин пенсионного возраста (возраст? 55 лет);
int Get_FIRM_M (char *pol); // функцию подсчета количество мужчин пенсионного возраста (возраст? 60 лет);
FIRM Get_FIRM_POL (); // функцию, формирующую массив сотрудников в зависимости от пола;
};
#endif
Файл COLLABORATE. cpp
#include «COLLABORATE. h»
// Конструктор
FIRM: FIRM ()
{
n = 0;
pMas = NULL;
}
// Конструктор с параметром
FIRM: FIRM (int n)
{
int i;
this->n = n;
pMas = new COLLABORATE [n];
for (i = 0; i < n; i++)
{
pMas [i]. fio = 0;
pMas [i]. dat = 0;
pMas [i]. pol = 0;
}
}
// Конструктор копирования
FIRM: FIRM (const FIRM& b)
{
n = b. n;
pMas = new COLLABORATE [n];
for (int i = 0; i < n; i++)
pMas [i] = b. pMas [i];
}
// Деструктор
FIRM: ~FIRM ()
{
if (pMas)
delete [] pMas;
cout << «dectructor» << endl;
}
// перегрузка оператора =
FIRM FIRM: operator = (const FIRM & coll)
{
if (pMas)
delete [] pMas;
pMas = new COLLABORATE [n = coll. n];
for (int i = 0; i < n; i++)
pMas [i] = coll. pMas [i];
return *this;
}
// Вывод массива на экран
void FIRM: Get_FIRM () const
{
cout << «Вывод массива с клавиатуры: «<< endl;
cout << «—————————————-» << endl;
for (int i = 0; i < n; i++)
{
cout << pMas [i]. fio << ««;
cout << pMas [i]. dat <<" «;
cout << pMas [i]. pol << «» << endl;
}
cout<< endl << endl << endl;
}
// Ввод массива с клавиатуры
void FIRM: Set_FIRM ()
{
cout << «Ввод массива с клавиатуры: «<< endl;
cout << «—————————————» << endl;
for (int i = 0; i < n; i++)
{
cout << «Фамилия: «<< endl;
cin >> pMas [i]. fio;
cout << «Год рождения: «<< endl;
cin >> pMas [i]. dat;
cout << «Пол сотрудника: «<< endl;
cin >> pMas [i]. pol;
cout<< endl;
}
}
// функцию добавления сотрудника;
FIRM FIRM: ADD_FIRM ()
{
cout << «Добавление сотрудника: «<< endl;
cout << «———————————-» << endl;
FIRM c (*this);
if (pMas)
delete [] pMas;
n = n + 1;
pMas = new COLLABORATE [n];
for (int i = 0; i < n-1; i++)
pMas [i] = c. pMas [i];
cout << «Фамилия: «;
cin >> pMas [n-1]. fio;
cout << «Год рождения: «;
cin >> pMas [n-1]. dat;
cout << «Пол сотрудника: «;
cin >> pMas [n-1]. pol;
return *this;
}
// Функцию удаления сотрудника;
FIRM FIRM: DEL_FIRM ()
{
int i, p = - 1;
char kon [10];
cout << «Удаление сотрудника» << endl;
cin >> kon;
for (i = 0; i < n; i++)
{
if (strcmp (pMas [i]. fio, kon) == 0)
p=i;
}
if (p == - 1)
return *this;
else
{
FIRM q (*this);
if (pMas)
delete [] pMas;
n = n — 1;
pMas = new COLLABORATE [n];
for (i = 0; i < p; i++)
pMas [i] = q. pMas [i];
for (i = p; i < n; i++)
pMas [i] = q. pMas [i+1];
return *this;
}
}
FIRM FIRM: Get_FIRM_POL ()
{
char pol [15];
cout << «Vvedite pol sotrudnika: n» ;
cin >> pol;
int i, k, n1=0;
for (i =0; i < n; i++)
if (strcmp (pMas [i]. pol, pol) ==0) n1++;
FIRM c (n1);
k=0;
for (i =0; i < n; i++)
if (strcmp (pMas [i]. pol, pol) ==0)
c. pMas [k++] =pMas [i];
return c;
}
// функцию подсчета количество женщин пенсионного возраста (возраст? 55 лет);
int FIRM: Get_FIRM_W (char *pol)
{
int i;
int kol=0;
for (i =0; i < n; i++)
{
if (strcmp (pMas [i]. pol, pol) ==0)
if (2014;pMas [i]. dat>=55)
kol++;
}
return kol;
}
// функцию подсчета количество мужчин пенсионного возраста (возраст? 60 лет);
int FIRM: Get_FIRM_M (char *pol)
{
int i;
int kol=0;
for (i =0; i < n; i++)
{
if (strcmp (pMas [i]. pol, pol) ==0)
if (2014;pMas [i]. dat>=60)
kol++;
}
return kol;
}
Файл Main. cpp
#include «COLLABORATE. h»
int main () {
setlocale (LC_ALL," RUS");
FIRM a (5);
a. Set_FIRM ();
a. Get_FIRM ();
a. ADD_FIRM ();
a. Get_FIRM ();
a. DEL_FIRM ();
a. Get_FIRM ();
FIRM b = a. Get_FIRM_POL ();
b. Get_FIRM ();
a. Get_FIRM ();
cout<<" Колличество женщин пенсионного возраста: «<<
cout<<" Колличество мужчин пенсионного возраста: «<<
_getch ();
return 0;
}
Результат выполнения программы
Заключение
Класс представляет собой главное инструментальное средство C++ для объектно-ориентированного программирования.
Объектно-ориентированное программирование (ООП) — это способ организации кода в программе путем его группировки в виде объектов, то есть отдельных элементов, которые включают информацию (значения данных) и функции. Объектно-ориентированный подход к организации программы позволяет группировать определенные фрагменты информации вместе с часто используемыми функциями или действиями, связанными с этой информацией.
В ходе выполнения курсовой работы мной были закреплены знания по созданию, разработке и оформлению классов в C++.
1. Язык программирования C++. Базовый курс, 5-е издание, Стенли Б. Липпман
2. С++ Программирование на языке высокого уровня. Учебник для вузов. Павловская Т.А.