Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наследственность классов, задача с наследственностю 
:(
    Опции темы
Ln78
Дата 15.5.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



zkv, если я правильно понял, у Вас океан не просто вышел из берегов, но и движется с постоянной скоростью? Это так ктулху разбушевался? Чтобы хоть как-то предотвратить неизбежность всемирного затопления написал свою (понятно что убогую, но здесь не до красоты) реализацию
Код

typedef double  Vector3[3];

class COcean
{
protected:
// В нашей задаче океан один (иначе - у каждой рыбы свой океан, для людей места не останется), поэтому его данные и методы - статические
//Координаты противоположных вершин "океана-куба"
    static Vector3 R0,R1; 
// Выдаёт скорость (векторная величина) течения в данной точке, в данный момент времени
// В реальных задачах - рассчитывается по сложнейшим дифференциальным уравнениям, моделируется система с обратными 
// связями, у нас проще - я задал 0, можно задать любую простую функцию, лучше с разумными ограничениями: океан не 
// выходит из берегов, сказали куб - значит куб, с отдельными внутренними течениями
   static void GetV( double t, const Vector3& Point, Vector3& V )
   {
      V[0] = V[1] = V[2] =0.0;
   }
};

Vector3 COcean::R0={0.0,0.0,0.0};
Vector3 COcean::R1={10.0e6,10.0e6,10.0e6};

class CFish : public COcean
{
public:
// Задание начальной координаты рыбы
   void Init ( Vector3 _R0, Vector3 _V )
   {
      for( int i=0; i<3; i++ ) 
      {
         R[i] = _R0[i];
         Vf[i] = _V[i];
      }
   }
// Текущее задание извне текущей скорости рыбы
   void SetVf( double Vx, double Vy, double Vz )
   {
      Vf[0] = Vx; Vf[1] = Vy; Vf[2] = Vz;
   }
// Движение рыбы на очередной шаг
   void Motion( double t, double dt )
   {
// Полная скорость рыбы получается суммированием её собственной скорости и скорости течения океана в месте её нахождения
// (чтобы был хоть какой-то смысл в наследовании).
// Для развития: можно контролировать, чтобы рыба не выплывала за пределы океана (по суху аки по морю)
      int i;
      Vector3 Vs;
      GetV( t, R, Vs );
      for( i=0; i<3; i++ ) 
      {
         R[i] += ( Vs[i] + Vf[i] )*dt;
      }
   }
private:
   Vector3 R,Vf; //Текущие координаты и собственная скорость рыбы
};


void TestFish ( void )
{
   Vector3 R0={1000.0, 2000.0, 3000.0}, R1={3000.0, 2500.0, 3000.0};
   Vector3 V0={0.1,0.0,0.0}, V1={0.0,0.0,0.2};
   CFish f[2];
   f[0].Init( R0, V0 ); f[1].Init( R1, V1 );
   double t0=0.0,t1=10.0,dt=0.1,t;
// По ходу движения меняем скорость рыб и вычисляем их координаты
   for( t=t0; t<=t1; t+=dt )
   {
      if( fabs(t-3.0) < dt ) 
      {
// В этот момент первая рыба сделала резкий манёвр
         f[0].SetVf( 0.2, 0.0, -0.1);
      }
      for(int i=0; i<2; i++ )
      {
         f[i].Motion(t, dt);
// В класс рыб - добавляем (в качестве самостоятельного упражнения) метод вывода на печать, здесь его вызываем
      }
   }
};

PM MAIL   Вверх
zkv
Дата 15.5.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Ln78 @  15.5.2007,  10:57 Найти цитируемый пост)
zkv, если я правильно понял, у Вас океан не просто вышел из берегов, но и движется с постоянной скоростью?

Уважаемый Ln78, вы не правильно меня поняли smile 

вы читали этот пост:
Цитата(cyrrus @  14.5.2007,  19:39 Найти цитируемый пост)
Я задание перевожу с литовского; ща попробую еще раз.

Написать програму с объектами и реализовать своиства наследования. Ситуация: океан с плавающими в нем рыбками, океан - это базовыи объект, рыбы - наследуемый.
1.Объект океана имеет такие данные: координаты (имея в виду что это куб с координатами вершин) и скорость течения.
2. Объект рыб имеет координаты (координаты точки) и скорость.
3.Посчитать координаты рыбы в определённое время (по истечении 1,2,3 секунд)
4. Результат на экран и в фаил результатов.


базовый класс я обозвал COceanicObject, подразумевая океанический объект (базовый для таких объектов как рыба, айсберг, корабль и пр.). К сожалению я не знаю литовского, но посчитал, что, возможно, подразумевалось такое задание, несостыковки я списал на возможную неточность перевода. Кстати, суть моего решения уже излагал кто-то выше.

ps Вообще то я полагал, что мое решение довольно прозрачно, и не нуждается в комментариях, по этому не стал ничего пояснять.

Это сообщение отредактировал(а) zkv - 15.5.2007, 11:35
PM MAIL   Вверх
Ln78
Дата 15.5.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



Уважаемый zkv, я, собственно, откликнулся на 
Цитата(zkv @  15.5.2007,  09:08 Найти цитируемый пост)
конструктивная критика приветствуется

В литовском я также не силён. Понятно, что искать большой смысл в изначально непонятно поставленной задаче - занятие неблагодарное, однако из перевода я понял, что 
Цитата(zkv @  15.5.2007,  11:29 Найти цитируемый пост)
океан - это базовыи объект

Т.е. не какой-то там айсберг, а весь океан целиком, 
Цитата(zkv @  15.5.2007,  11:29 Найти цитируемый пост)
имеет такие данные: координаты (имея в виду что это куб с координатами вершин) и скорость течения

Т.е. одной точки для куба маловато, а скорость течения логичнее представлять локально для каждой точки (иначе как раз и получится движение океана, как цельного предмета, что, имхо, довольно странно). Ну и дополнительно, абстрагируясь от физического содержания и от единого стиля программирования, я попытался написать пример, понимание каждой строчки которого могло бы помочь cyrrus продемонстрировать свои знания в программировании преподавателю. 
PM MAIL   Вверх
v_nikolaev
Дата 15.5.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Цитата(Ln78 @ 15.5.2007,  12:43)
продемонстрировать свои знания в программировании преподавателю.

боюсь, препода интересует не это. не удивлюсь, если он ещё и диаграмму на uml-е попросит сделать на этот проект smile))
PM MAIL   Вверх
zkv
Дата 15.5.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Ln78 @  15.5.2007,  12:43 Найти цитируемый пост)
Т.е. одной точки для куба маловато,

да, тут явная несостыковочка. smile
Цитата(Ln78 @  15.5.2007,  12:43 Найти цитируемый пост)
а скорость течения логичнее представлять локально для каждой точки

ну если мы рассматриваем океан в некоторой локальной области, то можно считать что скорость течения постоянна (тоже, конечно, натяжка)

Согласен, что ваше решение подходит под условие задачи, но у меня просто рука не поднялась бы унаследовать рыбу от океана, вот и я предложил решение, на мой взгляд, демонстрирующее некоторые принципы наследования, а не извращающее их.

 Ну не верится мне что преподаватель, в качестве практического задания (обучающего принципам наследования!)  предложит унаследовать рыбу от океана smile Интересная, например, получается ситуация, когда рыба в качестве свойства объекта наследует размеры океана. 

Ln78, я не пытаюсь с вами спорить, просто мы решили разные задачи. 
А сами вы как считаете, такое проектирование имеет право на жизнь?
PM MAIL   Вверх
Ln78
Дата 15.5.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



Цитата(zkv @  15.5.2007,  13:48 Найти цитируемый пост)
я не пытаюсь с вами спорить, просто мы решили разные задачи. 
А сами вы как считаете, такое проектирование имеет право на жизнь?

Я тем более не пытаюсь с Вами спорить. Единствнное, по-моему, мы пытались решить одну задачу - помочь студенту (а не ограничиться указанием на то, что препод - дурак). В реальном проектировании это, конечно, недопустимо. Ситуацию, когда рыба в качестве свойства объекта наследует размеры океана я пытался использовать (указать, что это можно сделать) для контроля за выходом рыбы за пределы океана, ничего лучшего придумать не удалось. Просто здесь я действовал по принципу: сказали грузить люминий, нужно грузить люминий, а несогласные будут грузить чугуний. Хотя, возможно, что и преподавателя зря обидели, у нас на этот счёт мало информации. 


Это сообщение отредактировал(а) Ln78 - 15.5.2007, 14:13
PM MAIL   Вверх
adLucem
Дата 15.5.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



Цитата(zkv @  15.5.2007,  11:48 Найти цитируемый пост)
А сами вы как считаете, такое проектирование имеет право на жизнь? 


 smile Нда, почитав топик начал думать о заведении нового топика - "Проектирование сферических коней в космическом пространстве".

Вот интересно стали бы вы делать конфеты из г..., если бы вам сказал преподаватель-кондитер?
А рыб от океана вы наследуете, еще и спорите по поводу как их наследовать...
PM MAIL ICQ   Вверх
zkv
Дата 15.5.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(adLucem @  15.5.2007,  14:11 Найти цитируемый пост)
Вот интересно стали бы вы делать конфеты из г..., если бы вам сказал преподаватель-кондитер?

 smile А куда бы вы делись, если бы хотели стать кондитером?   smile 
PM MAIL   Вверх
adLucem
Дата 15.5.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



Цитата(zkv @  15.5.2007,  12:19 Найти цитируемый пост)
А куда бы вы делись, если бы хотели стать кондитером?


Если вы считаете, что такой преподаватель мог бы сделать из вас кондитера, то у нас разные взгляды на жизнь.

Постановка задачи не верна, причем при ее чтении возникают сомнения в том, что автор вообще понимает о чем говорит а не пишет "с канадчиковой дачи".

Но проблема даже не в самой "задаче", а в том, что вы еще и дискуссию устроили по поводу отношения скорости океана к скорости рыб и так далее.

Если коротко - бред или, если угодно, флейм. Остается только один вопрос - а зачем?
PM MAIL ICQ   Вверх
zkv
Дата 15.5.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(adLucem @  15.5.2007,  14:36 Найти цитируемый пост)
Если вы считаете, что такой преподаватель мог бы сделать из вас кондитера, то у нас разные взгляды на жизнь.

Получить диплом, и освоить профессию, по моему, разные вещи.
И вообще, в жизни иногда приходится делать то, что нам делать не нравится  smile 
Цитата(adLucem @  15.5.2007,  14:36 Найти цитируемый пост)
Постановка задачи не верна, причем при ее чтении возникают сомнения в том, что автор вообще понимает о чем говорит а не пишет "с канадчиковой дачи".

Но проблема даже не в самой "задаче", а в том, что вы еще и дискуссию устроили по поводу отношения скорости океана к скорости рыб и так далее.

Если коротко - бред или, если угодно, флейм. Остается только один вопрос - а зачем? 

У вас видимо за плечами немалый опыт проектирования, что позволяет вам сразу сказать,  что эта тема - бред. 
У меня опыта немного, поэтому стараюсь не пропустить чего то, что мне неизвестно. 
Именно по-этому, совершенно серьезно я задавал вопрос о практическом применении такого проектирования. 

Осмелюсь также заметить, что в большей мере, спор шел о постановке задачи, а не об "отношении скорости океана к скорости рыб и так далее".

Простите, что потратил ваше время, на чтение моего флейма. smile
PM MAIL   Вверх
adLucem
Дата 15.5.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



 smile 
Цитата(zkv @  15.5.2007,  13:08 Найти цитируемый пост)
Получить диплом, и освоить профессию, по моему, разные вещи.


Ага так и живем - приходят мальчики (как собственно и девочки), которые имея на руках диплом говорят - "Я ничего не знаю, но всему быстро научусь". А у меня вопрос - а что же вы все годы в университете делали? Что вы осваивали в университете? И зачем вы вообще его заканчивали? Да и кому нужен ваш диплом, если вокруг сотни (тысячи) точно таких же болванов с бесполезными бумажками.

И еще как вы считаете откуда берутся такие преподаватели? они вырастают из мальчиков (девочек), которым мало того что их преподаватели говорят чушь (хотя возможно это мальчик не понял, что ему сказали), но и на форуме люди с готовностью подтверждают эту чушь.

Цитата(zkv @  15.5.2007,  13:08 Найти цитируемый пост)
У вас видимо за плечами немалый опыт проектирования, что позволяет вам сразу сказать,  что эта тема - бред. 


Неужели вы считаете, что нужно иметь "немалый опыт проектирования", чтобы определить что рыба не может наследоваться от океана?

Я понимаю, что в жизни часто нужно делать то что не нравиться, но делать хлам в угоду непонятно каким-целям, чтобы потом сказать что-то вроде диплом и профессия - это разные вещи, это не по мне.


PM MAIL ICQ   Вверх
Ln78
Дата 15.5.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



 smile Раз уж пошёл флейм, скажу свою точку зрения. Человеку, позиционирующему себя как специалиста по проектированию, полезно шире смотреть на вещи. В больших проектах, в которых задействованы десятки институтов и заводов и десятки тысяч разработчиков (среди которых есть и программисты), неизбежны различные несуразности и, тем более, вещи, могущие такими показаться мальчикам с дипломами, считающими себя суперспециалистами.  Вряд ли кто с адекватной самооценкой здесь будет всерьёз утверждать, что как проектировщик он сильнее, например, А. Н. Туполева. Был случай, когда к нему пришли с предложением заменить спирт на другую жидкость, с лучшими техническими характеристиками и более экономичную. На что Андрей Николаевич ответил: «Поезжайте на полигон и посмотрите, какая очередь из техников выстраивается, когда приземляется ТУ с желанием обслуживать именно этот самолёт. Будет ли она такой, если не будет спирта?»
Так и данную задачу можно рассматривать в контексте: а как спроектировать, чтобы обеспечить и хотя бы какую-то разумность, и чтобы это было принято таким (а не другим) преподователем. Проектирование не только в знании современных языковых конструкций, но и в учёте, например, способностей реально cуществующей команды разработчиков.

PM MAIL   Вверх
adLucem
Дата 15.5.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



Ln78, Если коротко, то по моему вы несете чушь, используя некоторый набор понятий
Цитата(Ln78 @  15.5.2007,  13:54 Найти цитируемый пост)
Проектирование не только в знании современных языковых конструкций, но и в учёте, например, способностей реально cуществующей команды разработчиков.


Проектирование - определения в Интернете:

    * деятельность, связанная с подготовкой к критической оценке проекта (см. также: критическая оценка проекта).
      www.osp.ru/cio/2001/03/030.htm

    * процесс создания проекта.
      www.sch56.1class.ru/page27/

    * процесс создания проекта - прототипа, прообраза предполагаемого или возможного объекта, состояния. Наряду с традиционными видами (архитектурно-строительным, машиностроительным, технологическим и т.д. ...
      in-vi.spb.ru/design/about/terms.jaw

    * разработка комплексной технической документации, содержащей технико-экономические обоснования, расчеты, чертежи, макеты, сметы, пояснительные «тиски и другие материалы.
      www.exploitation.ru/glossary/17/

    * преобразование информации для получения документа, который генетически определяет или создание изделия (технологии, материала), или построение техноценоза, или прогнозы на перспективу (соответственно различаются: конструирование изделий, проектирование техноценозов ...
      orel3.rsl.ru/nettext/russian/gnatyuk/func/opred.htm


Ни в одном из понятий речь не идет ни о "языковых конструкциях", ни уж тем более о "способностей реально cуществующей команды разработчиков".

Конечно нельзя не согласиться, что балбесы ничего хорошего не спроектируют. Да и проблема не в этом, а в том, что эти балбесы не упустят возможности поговорить о проетировании даже не поинтересовавшись, что это такое.

Цитата(Ln78 @  15.5.2007,  13:54 Найти цитируемый пост)
Человеку, позиционирующему себя как специалиста по проектированию, полезно шире смотреть на вещи

Широта не менее опасна чем узость.

О каких 
Цитата(Ln78 @  15.5.2007,  13:54 Найти цитируемый пост)
больших проектах, в которых задействованы десятки институтов и заводов и десятки тысяч разработчиков (среди которых есть и программисты)

вы рассуждаете - перед вами стоит задача в которой предложена наследовать рыб от океана. И вы решаете эту чушь, а потом еще и говорите, что так и должно быть, аргументируя это тем, что бред рожденный в одной голове должен не восприниматься как бред только на основании того, что голова эта преподавательская. А ссылаетесь на какие-то абстрактные большие проекты.

Кстати а при чем тут рассказы про спирт?

Это сообщение отредактировал(а) adLucem - 15.5.2007, 16:27
PM MAIL ICQ   Вверх
Ln78
Дата 15.5.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



adLucem, передо мной задача в которой предложено наследовать рыб от океана не стояла и не стоит. Я попытался решить другую задачу - помочь студенту. Задачу вести дискуссию на эту тему я не ставлю, это моё последнее сообщение на эту тему. Поиск дефиниций в интернете в данном контексте сродни выбору ответа на вопрос куда бросилась Анна Каренина из вариантов: под поезд, с моста и т.д.

Это сообщение отредактировал(а) Ln78 - 15.5.2007, 16:34
PM MAIL   Вверх
adLucem
Дата 15.5.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 17.4.2007
Где: Украина, Донецк

Репутация: нет
Всего: 5



Цитата(Ln78 @  15.5.2007,  14:33 Найти цитируемый пост)
adLucem, передо мной задача в которой предложено наследовать рыб от океана не стояла и не стоит. 

А это ваш исходник - или у моего компьютера галлюцинации?
Цитата(Ln78 @  15.5.2007,  08:57 Найти цитируемый пост)
class CFish : public COcean



Цитата(Ln78 @  15.5.2007,  14:33 Найти цитируемый пост)
Я попытался решить другую задачу - помочь студенту

Читайте басню "Медвежья услуга", раз уж вы так любите литературу.

Не надо громких слов, просто несите ответственность за свои действия.
И если уж перешли на флейм, то хотя бы читайте свой, перед генерацией нового  smile 

Это сообщение отредактировал(а) adLucem - 15.5.2007, 16:47
PM MAIL ICQ   Вверх
Страницы: (5) Все 1 2 [3] 4 5 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.