Классы С++
Определение класса
Классы в С++
Структура объявления классов
Пример программы
Продолжение программы
SET и GET — функции классов
SET и GET — функции классов
Пример класса  CppStudio
Пример класса  CppStudio
Пример класса  CppStudio
Пример класса  CppStudio
Конструктор
Доработанная программа
Доработанная программа
Доработанная программа
Доработанная программа
Объявление класса в отдельном файле
Объявление класса в отдельном файле
написать программу для учета успеваемости студенто
Основные понятия
Основные понятия
Программа учета успеваемости
Программа учета успеваемости
Модификаторы доступа public и private
Модификаторы доступа public и private
Модификаторы доступа public и private
Модификаторы доступа public и private
Модификаторы доступа public и private
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
Программа учета успеваемости студентов
447.62K
Категория: ПрограммированиеПрограммирование

Классы С++

1. Классы С++

Воронова С.А.

2.

3.

Классы и объекты в С++ являются основными
концепциями объектно-ориентированного
программирования — ООП.
Объектно-ориентированное программирование —
расширение структурного программирования, в
котором основными концепциями являются понятия
классов и объектов.
Основное отличие языка программирования С++ от С
состоит в том, что в С нет классов, а следовательно
язык С не поддерживает ООП, в отличие от С++.

4. Определение класса

Классы — это
некоторые описания,
схемы, чертежи по
которым создаются
объекты.

5.

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

6.

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

7. Классы в С++

• Классы в С++ — это абстракция описывающая
методы, свойства, ещё не существующих
объектов.
• Объекты — конкретное представление
абстракции, имеющее свои свойства и
методы. Созданные объекты на основе одного
класса называются экземплярами этого класса.
Эти объекты могут иметь различное
поведение, свойства, но все равно будут
являться объектами одного класса.

8. Структура объявления классов

// объявление классов в С++
class /*имя класса*/
{
private:
/* список свойств и методов для использования внутри
класса */
public:
/* список методов доступных другим функциям и
объектам программы */
protected:
/*список средств, доступных при наследовании*/
};

9. Пример программы

// classes.cpp: определяет точку входа для консольного
приложения.
#include <iostream>
using namespace std;
// начало объявления класса
class CppStudio // имя класса
{
public: // спецификатор доступа
void message() // функция (метод класса) выводящая
сообщение на экран

10. Продолжение программы

{
Продолжение программы
cout << "website: cppstudio.com\ntheme: Classes
and Objects in C + +\n";
}
}; // конец объявления класса CppStudio
int main(int argc, char* argv[])
{
CppStudio objMessage; // объявление объекта
objMessage.message(); // вызов функции класса
message
system("pause");
return 0;
}

11.

Результат выполнения программы:

12. SET и GET — функции классов

Атрибуты объекта хранятся в переменных,
объявленных внутри класса, которому
принадлежит данный объект. Причём,
объявление переменных должно выполняться
со спецификатором доступа private. Такие
переменные называются элементами данных.
set и get функции позволяют манипулировать
элементами данных

13. SET и GET — функции классов

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

14. Пример класса  CppStudio

Пример класса CppStudio
// classes.cpp: определяет точку входа для консольного
приложения.
#include <iostream>
using namespace std;
class CppStudio // имя класса
{
private: // спецификатор доступа private
int day, // день
month, // месяц
year; // год
public: // спецификатор доступа public
void message() // функция (метод класса) выводящая
сообщение на экран

15. Пример класса  CppStudio

Пример класса CppStudio
{
cout << "\nwebsite: cppstudio.comntheme: Classes and
Objects in C + +\n";
}
void setDate(int date_day, int date_month, int date_year) //
установка даты в формате дд.мм.гг
{
day = date_day; // инициализация день
month = date_month; // инициализация месяц
year = date_year; // инициализация год
}

16. Пример класса  CppStudio

Пример класса CppStudio
void getDate() // отобразить текущую дату
{
cout << "Date: " << day << "." << month << "." << year
<< endl;
}
}; // конец объявления класса CppStudio
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "rus"); // установка локали

17. Пример класса  CppStudio

Пример класса CppStudio
int day, month, year;
cout << "Введите текущий день месяц и год!\n";
cout << "день: "; cin >> day;
cout << "месяц: "; cin >> month;
cout << "год: "; cin >> year;
CppStudio objCppstudio; // объявление объекта
objCppstudio.message(); // вызов функции класса message
objCppstudio.setDate(day, month, year); // инициализация
даты
objCppstudio.getDate(); // отобразить дату
system("pause");
return 0;
}

18.

Результат выполнения программы:

19. Конструктор

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

20. Доработанная программа

// classes.cpp: определяет точку входа для консольного
приложения.
#include <iostream>
using namespace std;
class CppStudio // имя класса
{
private: // спецификатор доступа private
int day, // день
month, // месяц
year; // год
public: // спецификатор доступа public
// конструктор класса
CppStudio(int date_day, int date_month, int date_year )

21. Доработанная программа

{
// вызов функции установки даты
setDate(date_day, date_month, date_year);
}
// функция (метод класса) выводящая сообщение на экран
void message()
{
cout << "\nwebsite: cppstudio.com\ntheme: Classes and
Objects in C + +\n";
}
// установка даты в формате дд.мм.гг
void setDate(int date_day, int date_month, int date_year)

22. Доработанная программа

{
day = date_day; // инициализация день
month = date_month; // инициализация месяц
year = date_year; // инициализация год
}
void getDate() // отобразить текущую дату
{
cout << "date: " << day << "." << month << "." << year <<
endl;
}

23. Доработанная программа

int main(int argc, char* argv[])
{
CppStudio objCppstudio(11,11,2011); // объявление объекта и
инициализация элементов данных
objCppstudio.message(); // вызов функции message
objCppstudio.getDate(); // отобразить дату
system("pause");
return 0;
}
}; // конец объявления класса CppStudio

24. Объявление класса в отдельном файле

Чтобы воспользоваться ранее разработанным классом,
необходимо подключить файл, в котором он объявлен.
Подключение файлов выполняется с помощью
препроцессорной директивы #include. Но, если подключить
файл с классом, появится новая проблема — так как в файле с
классом уже есть функция main(), то при построении проекта
компилятор выдаст ошибку.
Суть ошибки: «В проекте найдено несколько main() —
функций.» Именно поэтому класс необходимо объявлять в
отдельном файле, чтобы его можно было неоднократно
использовать.

25. Объявление класса в отдельном файле

Для этого необходимо выполнить 3 шага:
1. добавить в проект заголовочный файл *.h;
2. в заголовочном файле объявить
пользовательский класс,
в нашем случае — CppStudio;
3. подключить заголовочный файл к
программе, в нашем случае — #include
"CppStudio.h"

26. написать программу для учета успеваемости студенто

ПРИМЕР
НАПИСАТЬ ПРОГРАММУ ДЛЯ
УЧЕТА УСПЕВАЕМОСТИ СТУДЕНТО

27. Основные понятия

Объект класса: студент
Свойства: имя, фамилия, оценки и средний
балл.
У каждого студента есть имя — name и фамилия last_name .
Также, у него есть промежуточные оценки за весь семестр. Эти
оценки мы будем записывать в целочисленный массив из пяти
элементов. После того, как все пять оценок будут проставлены,
определим средний балл успеваемости студента за весь
семестр — свойство average_ball.

28. Основные понятия

Методы — это функции, которые могут
выполнять какие-либо действия над данными
(свойствами) класса. Добавим в наш класс
функцию calculate_average_ball(), которая будет
определять средний балл успеваемости
ученика.
Методы класса — это его функции.
Свойства класса — его переменные.

29. Программа учета успеваемости

class Students {
public:
// Функция, считающая средний балл
void calculate_average_ball()
{
int sum = 0; // Сумма всех оценок
for (int i = 0; i < 5; ++i) {
sum += scores[i];
}

30. Программа учета успеваемости

// считаем среднее арифметическое
average_ball = sum / 5.0;
}
std::string name; // Имя студента
std::string last_name; // Фамилия
// Пять промежуточных оценок студента
int scores[5];
private:
float average_ball; // Итоговая оценка за
семестр
};

31. Модификаторы доступа public и private

Закрытые данные класса размещаются после
модификатора доступа private. Если отсутствует
модификатор public, то все функции и
переменные, по умолчанию являются
закрытыми.
Обычно, приватными делают все свойства
класса, а публичными — его методы.
Все действия с закрытыми свойствами класса
реализуются через его методы.

32. Модификаторы доступа public и private

class Students {
public:
// Установка среднего балла
void set_average_ball(float ball)
{
average_ball = ball;
}
// Получение среднего балла
float get_average_ball()

33. Модификаторы доступа public и private

{
return average_ball;
}
std::string name;
std::string last_name;
int scores[5];
private:
float average_ball;
};

34. Модификаторы доступа public и private

Напрямую нельзя обращаться к закрытым
данными класса. Работать с этими данными
можно только посредством методов этого
класса.
Функция get_average_ball() для получения
средней оценки студента,
и set_average_ball() для выставления этой
оценки.

35. Модификаторы доступа public и private

Функция set_average_ball() принимает средний
балл в качестве параметра и присваивает его
значение закрытой переменной average_ball.
Функция get_average_ball() просто возвращает
значение этой переменной.

36. Программа учета успеваемости студентов

1) Создается заголовочный файл students.h, в
котором будет находиться класс Students.
/* students.h */
#include <string>
class Students {
public:
// Установка имени студента
void set_name(std::string student_name)

37. Программа учета успеваемости студентов

{
name = student_name;
}
// Получение имени студента
std::string get_name()
{
return name;
}
// Установка фамилии студента
void set_last_name(std::string student_last_name)

38. Программа учета успеваемости студентов

{
last_name = student_last_name;
}
// Получение фамилии студента
std::string get_last_name()
{
return last_name;
}
// Установка промежуточных оценок
void set_scores(int student_scores[])

39. Программа учета успеваемости студентов

{
for (int i = 0; i < 5; ++i) {
scores[i] = student_scores[i];
}
}
// Установка среднего балла
void set_average_ball(float ball)
{
average_ball = ball;
}

40. Программа учета успеваемости студентов

// Получение среднего балла
float get_average_ball()
{
return average_ball;
}

41. Программа учета успеваемости студентов

private:
// Промежуточные оценки
int scores[5];
// Средний балл
float average_ball;
// Имя
std::string name;
// Фамилия
std::string last_name;
};

42. Программа учета успеваемости студентов

В класс добавлены новые методы, а также
сделаны приватными все его свойства.
Функция set_name() сохраняет имя студента в
переменной name, а get_name() возвращает
значение этой переменной. Принцип работы
функций set_last_name() и get_last_name()
аналогичен.
Функция set_scores() принимает массив с
промежуточными оценками и сохраняет их в
приватную переменную int scores[5].

43. Программа учета успеваемости студентов

Теперь создется файл main.cpp со следующим
содержимым.
/* main.cpp */
#include <iostream>
#include "students.h"
int main()
{
// Создание объекта класса Student
Students student;

44. Программа учета успеваемости студентов

std::string name;
std::string last_name;
// Ввод имени с клавиатуры
std::cout << "Name: ";
getline(std::cin, name);
// Ввод фамилии
std::cout << "Last name: ";
getline(std::cin, last_name);

45. Программа учета успеваемости студентов

// Сохранение имени и фамилии в объект
класса Students
student.set_name(name);
student.set_last_name(last_name);
// Оценки
int scores[5];
// Сумма всех оценок
int sum = 0;

46. Программа учета успеваемости студентов

// Ввод промежуточных оценок
for (int i = 0; i < 5; ++i) {
std::cout << "Score " << i+1 << ": ";
std::cin >> scores[i];
// суммирование
sum += scores[i];
}

47. Программа учета успеваемости студентов

// Сохраняем промежуточные оценки в
объект класса Student
student.set_scores(scores);
// Считаем средний балл
float average_ball = sum / 5.0;
// Сохраняем средний балл в объект класса
Students
student.set_average_ball(average_ball);

48. Программа учета успеваемости студентов

// Выводим данные по студенту
std::cout << "Average ball for " <<
student.get_name() << " "
<< student.get_last_name() << " is "
<< student.get_average_ball() << std::endl;
return 0;
}

49. Программа учета успеваемости студентов

В самом начале программы создается объект
класса Students. Класс Students является
описанием любого из студентов, у которого
есть имя, фамилия и возможность получения
оценок.
Объект класса Students характеризует
конкретного студента. Если мы захотим
выставить оценки всем ученикам в группе, то
будем создавать новый объект для каждого из
них.

50. Программа учета успеваемости студентов

После создания объекта student, мы вводим с
клавиатуры фамилию, имя и промежуточные оценки
для конкретного ученика.
Введенные данные мы передаем set-функциям,
которые присваивают их закрытым переменным
класса. После того, как были введены промежуточные
оценки, мы высчитываем средний балл на основе
этих оценок, а затем сохраняем это значение в
закрытом свойстве average_ball, с помощью
функции set_average_ball().
English     Русский Правила