ООП 01 Пример Создание класса
.doc
Пример программы № 1
-
Создание класса
В приведённом примере решена следующая задача:
Вычислить вес тела заданной массы.
Код файла newton.h
// newton.h: interface for the newton class.
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_NEWTON_H__A13E976D_1909_4821_9393_944F2EC2459D__INCLUDED_)
#define AFX_NEWTON_H__A13E976D_1909_4821_9393_944F2EC2459D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
////////////////////////////////////////////////// подключение библиотек ///////////////////////////////////////////////
#include<iostream.h> // содержит функции ввода-вывода
#include<windows.h> // содержит функцию CharToOem
#include <math.h> // содержит математические функции
///////////////////////////////////////////////// интерфейс класса newton /////////////////////////////////////////////////
class newton
{ // закрытые члены класса
float m ; // масса тела
float F ; // сила тяжести, действующая на тело
const float g; // ускорение свободного падения, константный член класса
public: // общедоступные члены класса
newton ( ) : g ( 9.8f ) { } // конструктор по умолчанию; использует список инициализации
void Title ( ) ; // вывод на экран заголовка
void Input ( ) ; // ввод данных с клавиатуры
void Calc ( ) { F = m * g ; } // вычисление силы
void Print ( ) ; // вывод на экран результатов расчёта
} ;
#endif // !defined(AFX_NEWTON_H__A13E976D_1909_4821_9393_944F2EC2459D__INCLUDED_)
В код файла newton.h добавлены команды подключения библиотек iostream.h и windows.h
В объявление класса добавлен:
-
раздел закрытых членов класса, с переменными членами-класса – m, F, и константным членом класса – g ;
-
общедоступные функции-члены класса: title ( ), input ( ), calc ( ), print ( ).
Из объявления класса удалено объявление деструктора, поскольку класс не содержит динамических данных.
Код файла newton.cpp
// newton.cpp: implementation of the newton class.
#include "newton.h"
// Construction/Destruction
/////////////////////////////////// РЕАЛИЗАЦИЯ функциЙ-членОВ класса newton //////////////////////////////////////////
// функция-член класса newton выводит на экран заголовок программы
void newton :: Title ( )
{ // объявляет и инициализирует строку заголовка
char S [ ] = ”\t\tПрограмма вычисляет вес тела заданной массы \n”
”\t\tпо второму закону Ньютона, F = m g \n”
”\t\tПрограмма составлена Незнайкой.\n ”
”\t\tВсе права принадлежат Ньютону.\n\n”;
CharToOem ( S , S ) ; // преобразует символы строки в кириллицу
cout << S ; // выводит на экран строку заголовка
}
// функция-член класса newton вводит данные с клавиатуры
void newton :: Input ( )
{
char S [ ] = " \tВведите массу тела, кг \t"; // объявляет и инициализирует строку приглашения
CharToOem ( S , S ) ; // преобразует символы строки в кириллицу
cout << S ; // выводит на экран строку приглашения
cin >>m ; // вводит массу тела с клавиатуры
}
// функция-член класса newton вводит на экран результатов расчёта
void newton :: Print ( )
{
char S [ ] = "\t\tВес тела равен \t\t"; // объявляет и инициализирует строку ответа
CharToOem ( S , S ) ; // преобразует символы строки в кириллицу
cout << S << F ; // выводит на экран строку ответа и значения силы
CharToOem (" ньютон \n\n" , S ) ; // преобразует строку единицы измерения
cout << S ; // выводит на экран единицы измерения
}
Код файла main.cpp
#include "newton.h"
///////////////////////////////////// прототипы глобальных функциЙ /////////////////////////////////////////////////
bool Repeat ( ) ; // прототип функции диалога с пользователем
/////////////////////////////////////////////// ОСНОВНАЯ ПРОГРАММА ////////////////////////////////////////////////////////////
void main ( )
{
newton A ; // создаёт объект с помощью конструктора по умолчанию
A.Title ( ) ; // вывод на экран заголовка
A.Input ( ) ; // ввод данных с клавиатуры
A.Calc ( ) ; // вычисление силы
A.Print ( ) ; // вывод на экран результатов расчёта
// объявляет указатель на объект класса newton, выделяет память для объекта класса Newton,
// создаёт объект с помощью конструктора по умолчанию, размещает его в выделенной памяти
// и инициализирует указатель адресом объекта
newton* pB = new newton ;
do
{
pB->Input ( ) ; // ввод данных с клавиатуры
pB->Calc ( ) ; // вычисление силы
pB->Print ( ) ; // вывод на экран результатов расчёта
}
while ( Repeat ( )) ; // запрос о продолжении работы и повтор программы
delete pB ; // уничтожает объект, расположенный по адресу pB
// и освобождает выделенную память
}
///////////////////////////////////// РЕАЛИЗАЦИЯ глобальных функциЙ ////////////////////////////////////////////
// глобальная функция выводит на экран запрос о продолжении работы и
// если пользователь нажал клавишу ’Y’, то возвращает true
// если пользователь нажал любую другую клавишу, то возвращает false
bool Repeat ( ) // реализация функции диалога с пользователем
{
char S [ ] = ”\t\t\tПродолжить ? (Y/N) ” ; // объявляет и инициализирует строку запроса
CharToOem ( S , S ) ; // преобразует символы строки в кириллицу
cout << S ; // выводит на экран запрос о продолжении работы
char C ; // объявляет переменную для ответа пользователя
cin >> C ; // получает значение клавиши, нажатой пользователем
if ( C == ’Y’ || C == ’y’ ) return true ; // если пользователь нажал клавишу ’Y’, то возвращает true
else return false ; // если пользователь нажал любую другую клавишу, то возвращает false
}
Результат работы программы
Программа вычисляет вес тела заданной массы
по второму закону Ньютона, F = m g
Программа составлена Незнайкой.
Все права принадлежат Ньютону.
Введите массу тела, кг 10
Вес тела равен 98 ньютон
Продолжить ? (Y/N)
Выжол Ю.А. Объектно-ориентированное программирование