Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 06:36   #1
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
Смех С++ Интересный вопрос по объектам:

вот я делаю как-то
class CUp{
CLow a;
CLow b;
}

То что создаются объекты типа КЛоу итак ясно) но прикол в чем...
КАп как быы....является неким...управляющим классом?
Вот еще пример.
Есть бульдозер, погрузчик,самосвал.
Бульдозер нагребает землю
Погрузчик если видит рядом 2 кучи и пустой самосвал нагружается и т д

Вот,если сделать такой трюк с Бульдозером, т.к. этот объект ЗАПУСКАЕТ всю работу, вообще получится как-нить?
Ну....не знаю... Допустим, при создании бульдозера создается сразу погрузчик и самосвал...(оппа...а как к ним достучаться? через -> ? )
Бульдозер пашет...как только две кучи - вызывается метод погрузчика...ну что-то такое))

Вообще идея эта пришла, только как-то не пойму логики..что я получу этим
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 10.05.2009, 08:24   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Соберитесь с мыслями и напишите более понятным языком что Вам все-таки нужно.
Для примера: Вы создаете объект Бригада_Ух_работаем_до_двух
В его конструкторе создаете бульдозер, погрузчик и прораба (в стиле а_на_фига_нам_надо).
Добавляете метод Арбайтен - а в нем уже расписываете кто как работает (для прораба как халтурит).
И не забудьте в деструкторе уничтожить все созданные вами объекты (не забудьте про прораба).
Примерно так вот, исходя из того что я понял. Напоминаю четкое формулирование задачи и разделение ее на ряд независимых маленьких частей есть залог решения.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.05.2009, 08:48   #3
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Соберитесь с мыслями и напишите более понятным языком что Вам все-таки нужно.
С этим проблемы сразу,как начал прогировать))
Цитата:
Сообщение от Utkin Посмотреть сообщение
Для примера: Вы создаете объект Бригада_Ух_работаем_до_двух
шустро что-то... ну я напишу класс...
class CBrig_Uh{
Цитата:
Сообщение от Utkin Посмотреть сообщение
В его конструкторе создаете бульдозер, погрузчик и прораба (в стиле а_на_фига_нам_надо).
CBrig() {
CBul m_b;
CLod m_l;
CTruck m_t;
Цитата:
Сообщение от Utkin Посмотреть сообщение
Добавляете метод Арбайтен - а в нем уже расписываете кто как работает (для прораба как халтурит).
void work(int begin...);
}
}
не,я просто думал, чтоб создать бульдозер, а как он создался, сразу же,создаются остальные и тут же начинается работа бульдозера...просто как бы делать надкласс над тремя классами..не знаю) я не пойму тут смысла)думаю,и без этого можно приобойтись, заодно проявить хороший стиль программирования и не нагружать процессор лишним классом)


То есть идея - написать три класса соответственно. Все что надо засетить. То есть для бульдозера метод "работа" и погнал. Он не перекуривает а только пашет...еще вот думаю как заставить его так работать,ну не переставая...я думал в функции work() сразу делать цикл (нужна ли вообще эта функция? конструктором не обойдется? Ну не в функции делать а в конструкторе)

А вот там,дальше,в цикле уже затрудняюсь...
Ну попробую более абстрактно:
У нас есть бульдозер...он как альфа и омега...ну ладно...
Рядом стоит погрузчик, который проверяет(наверное в цикле?), есть ли рядом две кучи земли И есть ли рядом самосвал.
Если это все ТРУ - то минуты 3 загружается самосвал.И "уезжает" на 6... бульдозер нагребает...ну я просто не знаю. В моей работе там подзапущенно все с распределениями...

Просто идея пришла) решил пробить)))
Вот чего-то надумалось мне как-то сделать бульдозера каким-то доминирующим классом... Если (кучи %2 == 0) то посылается сообщение погрузчику и начинается работа... ну это немного иная версия... просто я не знаю как удобнее будет)) С точки зрения взаимодействия классов.
Да и вообще) реально ли это прогировать? или я изобретаю поломанный велосипед?


Цитата:
Сообщение от Utkin Посмотреть сообщение
четкое формулирование задачи и разделение ее на ряд независимых маленьких частей есть залог решения.
ИСТИНА !!! )))
С наилучшими пожеланиями.

Последний раз редактировалось Познающий; 10.05.2009 в 08:49. Причина: Скопки недоставил =)
Познающий вне форума Ответить с цитированием
Старый 10.05.2009, 09:10   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Познающий Посмотреть сообщение
не,я просто думал, чтоб создать бульдозер, а как он создался, сразу же,создаются остальные и тут же начинается работа бульдозера...просто как бы делать надкласс над тремя классами..не знаю) я не пойму тут смысла)думаю,и без этого можно приобойтись, заодно проявить хороший стиль программирования и не нагружать процессор лишним классом)
Ну в общем-то примерно так оно и есть, только создается бригада. Зачем Вам всякие надклассы и подклассы? Есть одна абсолютная истина - чем сложнее описание какого-либо явления, механизма, концепции, тем меньше в данном явлении понимают самыи авторы. Любая вещь должна укладываться в две страницы обычного печатного текста. Если нет, значит автор недостаточно силен в том что он написал (к программам данный принцип не относится).

Цитата:
То есть идея - написать три класса соответственно. Все что надо засетить. То есть для бульдозера метод "работа" и погнал. Он не перекуривает а только пашет...еще вот думаю как заставить его так работать,ну не переставая...я думал в функции work() сразу делать цикл (нужна ли вообще эта функция? конструктором не обойдется? Ну не в функции делать а в конструкторе)
Тебе нужно не три, а четыре класса - бульдозер, погрузчик, прораб (халявить кто-то же должен? и пусть смотрит, чтобы другие не халявили) и бригада. Лучше отделять кислое от пресного, теплое от мягкого и пр. Похоже, но не одно и тоже. В этом и заключается структурный подход к решению задач. Поэтому создавайте отдельно функцию work и конструктор тоже отдельно (и что трудно таки сделать? на пять-шесть строк кода больше и всего то делов, половина из которых скобки).

Цитата:
А вот там,дальше,в цикле уже затрудняюсь...
Ну попробую более абстрактно:
У нас есть бульдозер...он как альфа и омега...ну ладно...
Рядом стоит погрузчик, который проверяет(наверное в цикле?), есть ли рядом две кучи земли И есть ли рядом самосвал.
Если это все ТРУ - то минуты 3 загружается самосвал.И "уезжает" на 6... бульдозер нагребает...ну я просто не знаю. В моей работе там подзапущенно все с распределениями...
Ну если прораб сообразительный, то команды может раздавать он (проще отлаживать), если место досталось по блату, а не по образованию, то они могут давать команды по цепочке - нагреб бульдозер кучу, сказал погрузчику (вызов функции погрузчика), тот проверил - да куча и причем не куча навоза, нет не приснилось и самосвал рядом и грузит кучу. Нагрузил и орет водиле - ехай, а то к обеду не успеем. Тот смотрит, да сегодня понедельник, самосвал полный, самосвал полный и он водитель самосвала и поехал.
Приехает смотрит все нагрузили? (типа цикла с постусловием), нет тогда матом на бульдозериста, пусть грузит, а то к обеду не успеют и т.д. и т.п., пока обед не наступит (или кучи все увезут).

Цитата:
Просто идея пришла) решил пробить)))
Вот чего-то надумалось мне как-то сделать бульдозера каким-то доминирующим классом... Если (кучи %2 == 0) то посылается сообщение погрузчику и начинается работа... ну это немного иная версия... просто я не знаю как удобнее будет)) С точки зрения взаимодействия классов.
Да и вообще) реально ли это прогировать? или я изобретаю поломанный велосипед?
Ну примерно, так и описано выше, только я бы на твоем месте все-таки прораба погонял, а не бульдозериста (а че ему все равно за это не платят)
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.05.2009, 09:57   #5
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
Хорошо


Только вопрос,который я так и не осилил своим умом, и все-таки заблудился... прораб..это интерфейс чтоли?
Я не совсем понял прораба и бригаду. То есть в бригаде у нас что?
С наилучшими пожеланиями.

Последний раз редактировалось Познающий; 10.05.2009 в 10:00. Причина: Перечитал пару раз
Познающий вне форума Ответить с цитированием
Старый 10.05.2009, 10:42   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну не то чтобы интерфейс, отбрось ты пока эту муру, в данном примере тебе это не требуется. Бригада это класс, который содержит в себе другие три объекта (ну ты понял, бригадира не забудь ).
Он вызывает бригадира, а тот проверяет состояние системы (кому грузить и когда обед) и раздает команды (осуществляет вызовы функций бульдозера, погрузчика и пр.).
Спрашивается, а какого им вообще бригадир нужен? Так чтобы через него отслеживать и отлаживать твою прогу. Если тот сказал этому, там тот тому, то если что не так без бутылки не разберешься. А здесь сразу ковыряешь бригадира и наши победили.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 11.05.2009, 11:34   #7
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию Такое ощущение,будто понял :)

то есть,получается...
Код HTML:
class CBrig{
    CBul m_b;
    CLoad m_l;
    CTruck m_t;
    CBrig(){ CBul m_b; CLoad m_l; CTruck m_t;}
};

void main(){
    CBrig b;
    b.m_b.begin(); //только,так можно?

    if (b.m_b.m_land%2==0 && b.m_t.m_dest=0 ){ //вот думаю,завести переменную,которая означает что грузовик есть/нету

           b.m_l.load();
           b.m_l.rest();
    } 
Ну вот такая часть...на 1 операцию))
Пока без цикла.
Но по сути...так можно? или надо было что-то добавить в СБриг ?
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 11.05.2009, 14:13   #8
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
Хорошо ДА!!

Получилось)))
А я сомневался))
вот
class CLow{
public:
int a;
void Set_a(int f){a=f;}
};
class CUp{
public:
CLow low;
};

#include<iostream>
#include<windows.h>

using namespace std;
int main()
{

CUp up;
up.low.Set_a(6);
cout<<up.low.a;
}

доступ к подобъекту запросто))
Я попробую это всё графически в диаграмме классов юмл изобразить...посмотрим
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Старый 11.05.2009, 16:27   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я рад за тебя . Хочу отметить что С++ не мой конек (пробовал - не вставило и вернулся на Делфи) и практически ты сам до всего дошел, если ты заметил, я не привел ни одной строчки кода.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 11.05.2009, 16:54   #10
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

Аа...сори,не проследил)...
Так тут в общем...
Ну я создал класс Бригада. Внутри три объекта...
Это оно?
Еще думаю объявить три класса друзьями, Бригады, чтоб был свободный доступ...
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный вопрос I'van Microsoft Office Excel 2 13.04.2009 12:15
Delphi + Сеть + БД, интересный вопрос... Cyn4uk Свободное общение 10 11.07.2008 19:31
Маленький но интересный вопрос davechefirst Свободное общение 4 11.06.2008 17:38