Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Формируем секунды в строку




Формируем минуты в строку

Формируем часы в строку

Константного метода

Class Time

Листинг 1.2. Определение методов

Определяем класс:

{

public:

void setTime(int h, int m, int s=0) //определение внутри класса

{

hours = h;

minutes = m;

seconds = s;

}

void setTime(const Time &t); // метод перегружен

void Display() const; // вывод на экран. Константный метод

Time nexthour(); // возврат определяемого типа

Time addhours(const Time &t); // параметр определяемого типа

void Read();

private:

int hours;

int minutes;

int seconds;

};

Определяем методы класса:

void Time::Display() const // определение вне класса

cout << hours << "." << minutes <<"."<<seconds;

}

void Time::Read()

{

cout <<"Hours: "; cin >> hours;

cout <<"Minutes: "; cin >> minutes;

seconds = 0;

}

void Time::setTime(const Time &t)

{

hours = t.hours;

minutes = t.minutes;

seconds = t.seconds;

}

Time Time::addhours(const Time &t)

{

Time r = *this;

r.hours += t.hours;

r.hours %= 24;

return r;

}

Time Time::nexthour()

{

hours ++;

hours %=24;

return *this;

}

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

#include <string>

Для показанного выше класса Time самая скромная реализация может выглядеть следующим образом:

string Time::toString()

{

string s = " ";

string Digits = "0123456789";

unsigned char d1, d2;

d1 = hours/10;

d2 = hours%10;

s = s + Digits[d1];

s = s + Digits[d2];

s += ".";

d1 = minutes/10;

d2 = minutes%10;

s = s + Digits[d1];

s = s + Digits[d2];

s += ".";

d1 = seconds/10;

d2 = seconds%10;

s = s + Digits[d1];

s = s + Digits[d2];

s += ".";

return s;

}

Метод возвращает текущее значение полей класса Time в виде строки – «чч.мм.сс».

Практические задания

Задание 1. Первое применение классов.

Убедитесь в том, что можно использовать класс точно так же, как структуру. Испытайте это в следующем консольном приложении:

#include "stdafx.h"

#include <iostream>

#include <conio.h>

using namespace std;

//---------------------------------

class CBox

{

public:

double m_length;

double m_width;

double m_height;

};

 

int main()

{

CBox box1; //

CBox box2; //

double boxValume = 0.0; //

 

box1.m_height = 18.0;

box1.m_length = 78.0;

box1.m_width = 24.0;

 

box2.m_height = box1.m_height - 10;

box2.m_length = box1.m_length/2;

box2.m_width = box1.m_length *0.25;

 

boxValume = box1.m_height*box1.m_length*box1.m_width;

cout << "Valume box1 = "<<boxValume<<endl;

cout << "box2 summa storon = "
<< box2.m_height+box2.m_length+box2.m_width
<< "cm"<<endl;

cout << sizeof box1<<" bayt"<<endl;

return 0;

}

 

Задание 2. Добавление функции-члена к классу CBox

Добавим к классу функцию, которая вычисляет объем объекта CBox.

 

#include "stdafx.h"

#include <iostream>

#include <conio.h>

 

using namespace std;

//---------------------------------

class CBox

{

public:

double m_length;

double m_width;

double m_height;

double Volume()

{

return m_length*m_width*m_height;

}

};

 

int main()

{

CBox box1; // Объявление box1 типа CBox

CBox box2; // Объявление box2 типа CBox

 

double boxVolume = 0.0; //

 

box1.m_height = 18.0;

box1.m_length = 78.0;

box1.m_width = 24.0;

 

box2.m_height = box1.m_height - 10;

box2.m_length = box1.m_length/2;

box2.m_width = box1.m_length *0.25;

 

boxVolume = box1.Volume();

cout<<"Volume box1 = "<<boxVolume<<endl;

cout<<"box2 summa storon = "<<box2.Volume<<" litr"<<endl;

cout<<sizeof box1<<" bayt"<<endl;

return 0;

}

 

 

Задание 3.Для самостоятельного выполнения

Для класса CBox реализовать следующие методы:

· Метод определения площади основания;

· Поле для хранения названия коробки.

Задание 5. Разработайте программу с использованием класса Time (см. листинг 1.2) и протестировать все методы класса. Добавить в определение класса метод преобразования полей класса в строку toString()и использовать его для вывода времени.

Задание 6. Создайте класс Int, имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int.

Напишите программу, в которой будут созданы три объекта класса Int, два из которых будут инициализированы. Сложите два инициализированных объекта, присвойте результат третьему, а затем отобразите результат на экране.




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 298; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.