Форум программистов, компьютерный форум CyberForum.ru

Попытка разобраться с классами в C++ - C++

Восстановить пароль Регистрация
 
 
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 10:34     Попытка разобраться с классами в C++ #1
Доброго времени суток
Читаю книгу Дейтел С++ дошел до классов и в первом же упражнении впал в ступор
Помогите кто чем сможет
Текст задания:
"Создайте конструктор способный использовать текущее время, даваемое функцией time(), объявленной в заголовочном файле time.h стандартной библиотеки С, чтобы задавать начальные значения объекту класса Time".

поиск по форуму конечно что то похожее выдает но разобраться я так и не смог
как разбить то что выдает time и присвоить время (часы минуты секунды) трем разным переменным класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Redzep
170 / 106 / 42
Регистрация: 21.12.2014
Сообщений: 312
05.10.2015, 10:38     Попытка разобраться с классами в C++ #2
Как-то так.
C++
1
2
3
4
ClassName::ClassName () : Object (time())
{
// Тело конструктора
}
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 10:45  [ТС]     Попытка разобраться с классами в C++ #3
все равно не понят ничего
я представляю себе задачу как то так
вот есть конструктор
C++
1
2
3
4
5
6
7
8
9
class Time
{
public:
  Time();
private:
  int hour;
  int minute;
  int second;
};
теперь как то с помощью time нужно присваивать значения трем переменным
Redzep
170 / 106 / 42
Регистрация: 21.12.2014
Сообщений: 312
05.10.2015, 10:46     Попытка разобраться с классами в C++ #4
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
как разбить то что выдает time и присвоить время (часы минуты секунды) трем разным переменным класса
Тут примеры есть https://ru.wikipedia.org/wiki/Time.h
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 10:55  [ТС]     Попытка разобраться с классами в C++ #5
Redzep, я это тоже находил и читал
но так и не разобрался как все в итоге привести к рабочему виду программы

Добавлено через 5 минут
Redzep, я даже нашел рабочую программу но как она работает не понимаю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Time
{
public:
  Time();
private:
  int hour;
  int minute;
  int second;
};
 
Time::Time()
{
    time_t rawtime;
    struct tm * timeinfo;
 
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
 
    second = timeinfo->tm_sec;
    minute = timeinfo->tm_min;
    hour = timeinfo->tm_hour;
}
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
05.10.2015, 11:05     Попытка разобраться с классами в C++ #6
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
Redzep, я даже нашел рабочую программу но как она работает не понимаю
1) Конструктор имеет указатель this указывающий на конструируемый объект.
2) this->bla_bla_bla - синоним bla_bla_bla, если в объекте есть это bla_bla_bla. Соответственно, строчка second = timeinfo->tm_sec; - синоним this->second = timeinfo->tm_sec; и пишет внутрь конструируемого объекта.
3) Если работа строчки second = timeinfo->tm_sec; все равно не ясна, вам рано лезть в конструкторы.
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:09  [ТС]     Попытка разобраться с классами в C++ #7
Renji, я так понимаю timeinfo это как экземпляр класса и c помощью -> мы через указатель обращаемся к его переменным?

не понятны вот эти 4 строки

C++
1
2
3
4
5
 time_t rawtime;
 struct tm * timeinfo;
 
 time ( &rawtime );
 timeinfo = localtime ( &rawtime );
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
05.10.2015, 11:13     Попытка разобраться с классами в C++ #8
time (с маленькой буквы) - функция. timeinfo - указатель на структуру типа tm. А структура да, тоже самое что класс, только у нее все по умолчанию публичное.
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:20  [ТС]     Попытка разобраться с классами в C++ #9
Renji, вы написали
"1) Конструктор имеет указатель this указывающий на конструируемый объект." а если я буду делать это присвоение в методе main то мне получается нужен будет метод типа settшme() так как доступа я иметь не буду из main к ним?

ну предварительно создав экземпляр класса конечно
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
05.10.2015, 11:21     Попытка разобраться с классами в C++ #10
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
теперь как то с помощью time нужно присваивать значения трем переменным
кокретно в том случае можно так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
class Time
{
public:
  Time(const int x, const int y, const int z):hour(x),minute(y),second(z){};
  void Show();
private:
  int hour;
  int minute;
  int second;
};
 
void Time::Show(){
    std::cout<<hour<<":"<<minute<<":"<<second<<"\n";
}
 
int main(){
   Time T ={5,23,99};
   T.Show();
}
А в задаче
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
class Time
{
public:
  Time();
  void Show();
private:
  int hour;
  int minute;
  int second;
};
 
/*Тут забираете нужные значения и отдаете их в переменные класса*/
Time::Time(){
    this->hour = 12;   
    this->minute = 26;
    this->second=55;
}
 
int main(){
   Time T2; //Они уже здесь
}
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
05.10.2015, 11:23     Попытка разобраться с классами в C++ #11
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
"1) Конструктор имеет указатель this указывающий на конструируемый объект." а если я буду делать это присвоение в методе main то мне получается нужен будет метод типа settшme() так как доступа я иметь не буду из main к ним?
В main есть доступ через имя_объекта.имя_поля=новое_значение. Только "private:" перед этим полем убрать надо, иначе компилятор ругаться будет.
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:32  [ТС]     Попытка разобраться с классами в C++ #12
Renji, ну да то что private если убрать то я знаю что доступ будет
но если его оставить то менять данные только с помощью метода setTime
я правильно думаю или заблуждаюсь?
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
05.10.2015, 11:37     Попытка разобраться с классами в C++ #13
Ну да, если данные - private, то менять их можно только через public методы. По крайней мере, "легальными" методами. Так то, при желании, ограничение можно легко обойти. Но это уже будет из серии "в гамаке и стоя" (сам себе преграду поставил, сам ее мужественно преодолеваешь).
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,719
Записей в блоге: 3
05.10.2015, 11:39     Попытка разобраться с классами в C++ #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include "time.h"
using namespace std;
struct MyTime{
time_t curTime64;
int day;
int month;
int year;
int hours;
int minutes;
int seconds;
MyTime(){
curTime64=time(NULL);
tm  *tm_struct_now = localtime(&curTime64);
day=tm_struct_now->tm_mday;
month=tm_struct_now->tm_mon;
year=tm_struct_now->tm_year+1900;
hours=tm_struct_now->tm_hour;
minutes=tm_struct_now->tm_min;
seconds=tm_struct_now->tm_sec;
}
void printFormatRusSimplified()
{
cout<<day <<"/";
cout<<month <<"/";
cout<<year  <<endl;
cout<<hours <<":";
cout<<minutes <<":";
cout<<seconds;
}
};
 
int main() {
MyTime mytime;
mytime.printFormatRusSimplified();
cout<<endl;
system("pause");
return 0;
}
Sibmax1988, вообще классы в c++ это не последняя тема и тут лучше тренироваться на кошках. Fricky - очень неплохой кошак. Думаю его "Meow" успели полюбить все кто его слышал. Даже не весной.
А попытка смешать вступление в классы с разбором Си-шной библиотеки time.h не красит авторов книги (имхо).

Не по теме:

ps вечно я опаздываю
Ну да пусть лежит, как вариант

Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:44  [ТС]     Попытка разобраться с классами в C++ #15
Renji, я наверное уже надоел поэтому задам последний вопрос
посоветуй книгу где ооп на c++ написано для таких как я?
т е которые только знакомятся с ооп и тп

Добавлено через 4 минуты
IGPIGP, может книгу можешь посоветовать?
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
05.10.2015, 11:45     Попытка разобраться с классами в C++ #16
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
Renji, я наверное уже надоел поэтому задам последний вопрос
посоветуй книгу где ооп на c++ написано для таких как я?
Тут целый раздел с литературой есть. Ничего конкретного порекомендовать не могу, так как основы учил в кружке, а не самостоятельно по книгам.
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:46  [ТС]     Попытка разобраться с классами в C++ #17
IGPIGP,
потому что про это не слышал

Sibmax1988, вообще классы в c++ это не последняя тема и тут лучше тренироваться на кошках. Fricky - очень неплохой кошак. Думаю его "Meow" успели полюбить все кто его слышал. Даже не весной.

Добавлено через 1 минуту
Renji, на русском?
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
05.10.2015, 11:50     Попытка разобраться с классами в C++ #18
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
Renji, на русском?
А по русским заглавиям книг не ясно?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,719
Записей в блоге: 3
05.10.2015, 12:00     Попытка разобраться с классами в C++ #19
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
посоветуй книгу где ооп на c++ написано для таких как я?
Тут же ключевое "для таких как я". Вам и карты в руки. В шапке раздела о литературе сказано достаточно внушительно, а дальше - пробуйте. Я порекомендую авторов для пробы:
Т.А. Павловская
Герберт Шилдт
Но что Вам будет лучше никто не знает. Пробуйте как можно больше разных книг.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2015, 12:29     Попытка разобраться с классами в C++
Еще ссылки по теме:

C++ Не могу разобраться с классами и освобождением памяти
C++ Не могу разобраться с функциями и классами
C++ Первая попытка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3122 / 1348 / 167
Регистрация: 20.02.2013
Сообщений: 3,864
Записей в блоге: 18
05.10.2015, 12:29     Попытка разобраться с классами в C++ #20
Sibmax1988, Стивен Прата - Язык программирования C++. Лекции и упражнения, 6-е изд. - 2012
Yandex
Объявления
05.10.2015, 12:29     Попытка разобраться с классами в C++
Ответ Создать тему
Опции темы

Текущее время: 21:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru