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

Вопрос по ООП - C++

Восстановить пароль Регистрация
 
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
14.01.2011, 13:24     Вопрос по ООП #1
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class time
{
    private:
    int hours;
    int minutes;
    public:
    int sum_time(time object,  days day);
};
 
class days
{
    private:
    int day_num;
};
 
int time::sum_time(time object,  days day)
{
   int total_hours;
   total_hours = this.hours + object.hours;
   object.hours = total_hours;
   day.day_num = 0;
   return total_hours;
}
В методе sum_time правомерны ли действия, которые в нём указаны? Я постарался все моменты подччеркнуть,
а именно: можно ли из метода одного объекта прочесть данные из объекта этого же класса, но находящиеся
в секцие private; можно ли из метода объекта записать данные в свойство объекта этого же класса, но
находящиеся в секцие private; и можно ли записать данные из метода одного класса в свойства объекта другого
класса, находящиеся в секцие private?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2011, 13:24     Вопрос по ООП
Посмотрите здесь:

C++ Вопрос по массивав, "институтский" вопрос.
C++ ООП
C++ вопрос по ооп
C++ ООП - вопрос про деструктор
Вопрос по ООП C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.01.2011, 14:02     Вопрос по ООП #2
у вас нету прямого доступа к day_num, потому что это поле скрыто
добавьте интерфейс к классу day, что-то типа GetDay() и SetDay()
также вас указатель this никуда не указывает
в классе time лучше объявить приватное поле days day

Добавлено через 24 минуты
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
class CDays
{
    int day_num;
 
public:
    int GetDay() const {return day_num;}
    void SetDay(int number){ day_num = number;}
};
 
class CTime
{
private:
    CDays day;
    int hours;
    int minutes;
 
public:
 
    int sum(CTime object, CDays day);
};
 
int CTime::sum(CTime object, CDays day)
{
    int total_hours = 0;
    total_hours = object.hours + 24*day.GetDay();
    object.hours = total_hours;
    day.SetDay(0);
    return total_hours;
}
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
14.01.2011, 15:02  [ТС]     Вопрос по ООП #3
Спасибо, но меня интересует не реализация. Я только учу ООП и мне непонятно к каким элементам у
меня есть доступ, а к каким нету. В вопросе эти моменты уточнены.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
14.01.2011, 15:26     Вопрос по ООП #4
В методе time::sum_time ты модифицируешь поля переменной "object". Эта переменная является локальной переменной в функции и после выхода из функции уничтожается, т.е. запись в object.hours - по сути мёртвое действие

По поводу доступа. В методе класса можно обращаться к любым полям этого класса
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
14.01.2011, 16:05  [ТС]     Вопрос по ООП #5
да понимаю я, что из метода имеется доступ к полям этого класса. Мне не понятно другое. Вот код, скажите правомерен он или нет, а остальное меня не интересует,это просто пример.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class TIME
{
    private: 
    int hours;
    public:
    int sum_time(TIME object)
    {
         int result_time;
         result_time = object.hours + this.hours;
         object.hours = 10; // ВОТ ЗДЕСЬ ОЧЕНЬ ИНТЕРЕСУЕТ
         return result_time;
    }
};
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
14.01.2011, 16:19     Вопрос по ООП #6
Код правомерен. В методе класса можно обращаться к полям класса не только в собственном экземпляре (this), но и в любом другом.

Кстати, название темы звучит как "Вопрос по ООП", а это скорее относится конкретно к вопросу о Си++. Теоретически в других объектных языках этот код может оказаться неправомерным
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2011, 17:47     Вопрос по ООП
Еще ссылки по теме:

ООП ВОПРОС C++
C++ ООП
C++ Вопрос к знатокам (ООП + ассемблер)

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

Или воспользуйтесь поиском по форуму:
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
14.01.2011, 17:47  [ТС]     Вопрос по ООП #7
спасибо
Yandex
Объявления
14.01.2011, 17:47     Вопрос по ООП
Ответ Создать тему
Опции темы

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