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

Поиск:

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


Новичок



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

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



Начел писать програму, но есть некоторые вопросы.
задача:
Написать програму используя обьекты и реализовать наследственность классов.
Ситуация:
Океан с плавающими в нем рыбками. Океан - базовыи обьект, рыбы наследующии.

а. Обьект океан имеет такие данные: координаты (океан-как куб с определионными координатами вершин) и течение( скорость и направление выбераем сами).

б. Обьект рыб имеет координаты ( берем как координаты точки), скорость и направление.

в. Посчитать координаты рыб в определенные моменты (например: после 1,2,3 секунд), когда измениается скорост течения и направление течения океана.

г. Все результаты на екран и в фаил результатов.

вот.

Чтоб мне кто нибуть показал на этом примере наследственност, а то я не очень с етим.
И я так понимаю это нада вводить с клавиатуры начальную скорост рыб и океана, а направление это + или - просто?
В общем разъесните пожалуиста.
PM MAIL   Вверх
Lomir
Дата 13.5.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 30.1.2007
Где: Lithuania::Kaunas

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



Цитата
Океан с плавающими в нем рыбками. Океан - базовыи обьект, рыбы наследующии.

Что-то мне такая структура не совсем нравиться.
Может Океан это обьект контейнер рыбок? А то получается что рыбки это частный случай океана...
PM MAIL ICQ Skype   Вверх
Любитель
Дата 13.5.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Цитата(cyrrus @  13.5.2007,  18:09 Найти цитируемый пост)
наследственность

Мож всё-таки наследование? smile А то прям генная инженерия на плюсах  smile 

ЗЫ А вообще это в "центр помощи".


--------------------
PM MAIL ICQ Skype   Вверх
cyrrus
Дата 13.5.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Lomir
контеинеров я вообще не знаю.  smile 
Любитель
Может и наследование, я не силён в языках smile
PM MAIL   Вверх
Любитель
Дата 13.5.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Цитата(cyrrus @  13.5.2007,  18:09 Найти цитируемый пост)
Океан - базовыи обьект, рыбы наследующии

Это не правильно по своей сути. Почитай про объектно-ориентированное проектирование. Наследуемый класс имеет все поля и методы класса-предка. Скажем, океан имеет такое поле как солёность (это просто пример). Солёность рыбки - это несколько не то  smile

Здесь должно быть агрегирование, а не наследование. Океан - одно из полей рыбки (океан, в к-ром она живёт). А коллекций рыбок - поле океана. Можно также представлять сам океан как коллекцию рыбок, впрочем это не лучший вариант.


--------------------
PM MAIL ICQ Skype   Вверх
Samotnik
Дата 13.5.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



2 cyrrus 

Цитата(cyrrus @  13.5.2007,  20:40 Найти цитируемый пост)
контеинеров я вообще не знаю.  


Цитата(cyrrus @  13.5.2007,  20:40 Найти цитируемый пост)
Может и наследование, я не силён в языках 

Не в обиду. Но мож лучше литературу почитай, чтоб иметь хоть маленькое представления об Обьектно ориентированном  программировании.

А потом сам и выбереш что лучше для тебя в данной ситуации наследование или лучше все в контейнер сгрузить  smile 

Пэ.Эс.
Ничего личного!!!     smile 
PM MAIL   Вверх
Hurricane
Дата 13.5.2007, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Любитель @ 13.5.2007,  12:52)
Солёность рыбки - это несколько не то  smile

Я бы даже сказал, что она намного важнее солености океана...  smile 

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

А океан - конечно же использовать как контейнер для рыб.

PM MAIL   Вверх
cyrrus
Дата 14.5.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я вас понимаю, но веть задачи изменить я немогу smile
Здесь просто имеется в виду что класс рыбок наследует класс океана ( координаты и скорость течения и все)

Samotnik
Цитата

чтоб иметь хоть маленькое представления об Обьектно ориентированном  программировании.

представление я именю, теоретически я понимаю, но практически не очень,
и еще, сдесь смысл в том что бы просто использовать эту наследственност..
PM MAIL   Вверх
Smarts
Дата 14.5.2007, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сделай отдельно класс рыб, а внутри океана объяви массив рыб + остальные параметры. В конструкторе Океана инициализируй массив с рыбами, и если надо - можно передать течение, координаты и прочее в качестве параметра конструктору класса рыб.
Наследоват же Рыбу от Океана =  smile 
PM MAIL   Вверх
sgrey
Дата 14.5.2007, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(cyrrus @ 14.5.2007,  00:41)
Я вас понимаю, но веть задачи изменить я немогу smile
Здесь просто имеется в виду что класс рыбок наследует класс океана ( координаты и скорость течения и все)

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

п.с. рыба, которая имеет координаты океана.... это супергодзилла какая-то  smile 

Это сообщение отредактировал(а) sgrey - 14.5.2007, 04:21
PM MAIL   Вверх
Любитель
Дата 14.5.2007, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



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


--------------------
PM MAIL ICQ Skype   Вверх
cyrrus
Дата 14.5.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я задание перевожу с литовского; ща попробую еще раз.

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

Я сдесь видел кто то из Литвы, может оригинал задания не помешает:

Parašyti programą su objektais ir realizuoti klasių paveldimumo savybes. Situacija: vandenynas su jame plaukiojančiomis žuvimis. Vandenynas – tai bazinis objektas, žuvys, paveldimas objektas.
1.Vandenyno objektas turi tokius duomenis: koordinates (laikome, kad tai kubas su tam tikromis viršūnių koordinatėmis) bei tėkmę (greitį ir kryptį pasirenkate patys)
2.Žuvų objektas turi koordinates (laikyti, kad tai taško koordinates) ir plaukimo greitį ir kryptį.
3.Apskaičiuoti žuvų koordinates tam tikrais laiko momentais (pvz. Po 1,2,3 sekundžių), kai pakinta vandenyno tėkmės greitis ar kryptis.
4.Visi rezultatai išvedami į ekraną ir rezultatų failą.

PM MAIL   Вверх
nickless
Дата 14.5.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


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

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



cyrrus, не думаю, что тут действительно имеется ввиду наследование рыбами от океана, может просто формулировка странная, потому что это просто бессмыслено. Рыба, которая наследует от океана - это ктулху smile 
А если серьёзно, лучше переспроси что имеется ввиду. Прямо так и спроси, зачем рыбам иметь свойства океана? Например глубину в разных координатах, солёность и скорость течения итд.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
cyrrus
Дата 14.5.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



nickless, ок.

A как можно реализовать такое:
Цитата

Сделай отдельно класс рыб, а внутри океана объяви массив рыб + остальные параметры. В конструкторе Океана инициализируй массив с рыбами, и если надо - можно передать течение, координаты и прочее в качестве параметра конструктору класса рыб.

PM MAIL   Вверх
Hurricane
Дата 14.5.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А-а-а, я, кажется, понял. Пришлось напрячь третий глаз.  smile 

Конечно же, наследовать рыб от океана - это бред. На самом деле видимо имелось ввиду вот что.

Океан - это, конечно же, контейнер. Контейнер для ячеек (клеток, позиций, можно назвать как угодно). Каждая ячейка может быть пустая, или в ней может находиться рыба (несколько рыб?).

Т.е. нужен базовый класс, определяющий интерфейс (пересчитать свои координаты, нарисовать себя и т.д.). Дальше от него наследуется класс "пустая ячейка" - координаты, скорость и направление течения. Дальше от него наследуется класс "рыба" - добавляются собственная скорость и направление движения. Дальше можно развивать мысль.

Это оно, или я не угадал?

PM MAIL   Вверх
Sartorius
Дата 14.5.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Цитата

не думаю, что тут действительно имеется ввиду наследование рыбами от океана, может просто формулировка странная, потому что это просто бессмыслено. Рыба


 На самом деле, если не вникать в смысл такой иерархии , то наследование вполне логично, ведь рыбы имеют также как и океан скорость и чего-то там еще... Но это же ужесно  smile  Это даже на has-a не похоже.

 ЗЫ я бы сделал океан конвейером живых объектов-рыб. 

 ЗЗЫ А препода самого отнаследовал бы от океана  smile 
PM MAIL ICQ   Вверх
Anikmar
Дата 14.5.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(Sartorius @  14.5.2007,  22:08 Найти цитируемый пост)
ЗЗЫ А препода самого отнаследовал бы от океана    

 smile 
Сколько раз?!  smile    smile 
PM MAIL ICQ   Вверх
Partizan
Дата 14.5.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



 smile 
Anikmar, =) одного думаю будет достаточно чтоб чёнить более логичное в следующий раз студентам предлагал)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Hurricane
Дата 14.5.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Sartorius @ 14.5.2007,  14:08)
... ведь рыбы имеют также как и океан скорость и чего-то там еще...

Двигаясь вместе с Землей вокруг Солнца?  smile 
PM MAIL   Вверх
Anikmar
Дата 14.5.2007, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(Sartorius @  14.5.2007,  22:08 Найти цитируемый пост)
ЗЫ я бы сделал океан конвейером живых объектов-рыб. 

А для мертвых объектов рыб предусмотрели бы отдельный океан?!

Добавлено через 1 минуту и 29 секунд
Мда... Рыболовецкий траулер. Объект, принадлежащий океану и являющийся конвейером мертвых объектов рыб!
PM MAIL ICQ   Вверх
Sartorius
Дата 14.5.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Anikmar, это не шутка((
"Живой" или "активный" объект - это шаблон

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

Это сообщение отредактировал(а) Sartorius - 14.5.2007, 22:42
PM MAIL ICQ   Вверх
Hurricane
Дата 14.5.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Anikmar @ 14.5.2007,  14:28)
Мда... Рыболовецкий траулер. Объект, принадлежащий океану и являющийся конвейером мертвых объектов рыб!

Почему же конвейером? Обычный контенер... Еще и фиксированного размера... std::vector вполне подойдет.  smile Но лучше - многомерный массив...  smile 

Это сообщение отредактировал(а) Hurricane - 14.5.2007, 22:50
PM MAIL   Вверх
Anikmar
Дата 14.5.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(Hurricane @  14.5.2007,  22:41 Найти цитируемый пост)
Почему же конвейером? Обычный контенер... Еще и фиксированного размера... std::vector вполне подойдет.   Но лучше - многомерный массив...   

Потому, что в ответ на:
Цитата(Sartorius @  14.5.2007,  22:08 Найти цитируемый пост)
 ЗЫ я бы сделал океан конвейером живых объектов-рыб. 

 smile 
PM MAIL ICQ   Вверх
Sartorius
Дата 14.5.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



 
Hurricane, конвейер - это не очередь . Это любой контейнер , обеспечивающий последовательную обработку, хранящихся в нем объектов

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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 30.1.2007
Где: Lithuania::Kaunas

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



Про std::vector у нас преподы вопше думаю мало что знают (вовсяком случае там, где я учусь). И его использование может плохо кончиться.

Если следовать описанию задания с оригинала, тогда так и получаеться Рыба унаследована у океана.
Откуда тока такие преподы беруться. Повесил бы...
2 cyrrus:
Цитата
теоретически я понимаю, но практически не очень

Так вот, советую обьяснить преподу, что наследование сдесь не очень приемлимо с точки зрения ООП.

П.С. Это во всех универах так или тока у нас...?
PM MAIL ICQ Skype   Вверх
Hurricane
Дата 14.5.2007, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Sartorius @ 14.5.2007,  14:59)
Hurricane, конвейер - это не очередь . Это любой контейнер , обеспечивающий последовательную обработку, хранящихся в нем объектов

Так мы вроде про траулер? А какая там обработка? Сложили дохлую рыбу в трюм и поплыли дальше. Говорю же - обычный контейнер.  smile

Добавлено через 7 минут и 15 секунд
Цитата(Lomir @ 14.5.2007,  15:33)
Про std::vector у нас преподы вопше думаю мало что знают (вовсяком случае там, где я учусь). И его использование может плохо кончиться.


А что там может плохо кончиться? Ставишь try-catch и ловишь std::exception  smile 

Цитата(Lomir @ 14.5.2007,  15:33)
Если следовать описанию задания с оригинала, тогда так и получаеться Рыба унаследована у океана.
Откуда тока такие преподы беруться. Повесил бы...


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


Новичок



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

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



хех, вам смешно а мне задачу сдавать надо  smile ; черт процитав про контеинеры с дохлыми рыбами и мне смешно.  smile 
PM MAIL   Вверх
zkv
Дата 15.5.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(cyrrus @  15.5.2007,  00:29 Найти цитируемый пост)
хех, вам смешно а мне задачу сдавать надо

ну вот нечто приближенное к заданию (как я считаю):
Код

#include <iostream>

struct POINT3d
{
    int x;
    int y;
    int z;
};

class COceanicObject
{
private://не обязательно, но я ставлю для наглядности 
  int      m_iSpeed;
  POINT3d m_ptPlace;
//по любому еще надо направление указывать 
public: 
    COceanicObject( POINT3d ptPlace, int iSpeed )
        : m_ptPlace( ptPlace ), m_iSpeed( iSpeed )
    {}
    virtual POINT3d GetCoord( int iTime)const
    {
        //расчет надо делать с учетом направления
        POINT3d ptRet;
        ptRet.x = m_ptPlace.x + iTime * m_iSpeed;      
        ptRet.y = m_ptPlace.y + iTime * m_iSpeed;
        ptRet.z = m_ptPlace.z + iTime * m_iSpeed;
        return ptRet; 
    }
};

class CFish : public COceanicObject
{
private://не обязательно, но я ставлю для наглядности
  int m_iSpeed;
//понятия не имею, какие еще координаты сюда можно запихать :(
//по любому еще надо направление указывать 
public:
    CFish( POINT3d ptPlace, int iOceanSpeed, int iFishSpeed )
        : COceanicObject( ptPlace, iOceanSpeed ), 
        m_iSpeed( iFishSpeed )
    {}
    
    virtual POINT3d GetCoord( int iTime)const
    {
        //расчет надо делать с учетом направления
        POINT3d ptRet = COceanicObject::GetCoord( iTime );
        ptRet.x += iTime * m_iSpeed;      
        ptRet.y += iTime * m_iSpeed;
        ptRet.z += iTime * m_iSpeed;
        return ptRet;
    }
};

std::ostream &operator<<( std::ostream &oStr, const POINT3d &point3d )
{
    return oStr<<"( "<<point3d.x<<", "<<point3d.y<<", "<<point3d.z<<" )";
}

int main()
{
    POINT3d ptPlace = {0,0,0};
    CFish fish( ptPlace, 1, 2 );
    std::cout<<"\n 1 sek - "<<fish.GetCoord( 1 );
    std::cout<<"\n 2 sek - "<<fish.GetCoord( 2 );
    std::cout<<"\n 3 sek - "<<fish.GetCoord( 3 );

    std::cin.get();
}

конструктивная критика приветствуется smile

подумал, что скорость можно задавать тоже объектом структуры POINT3d, где каждое поле - скорость в соответствующем направлении. Но с этим автор думаю сам справится smile

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


Новичок



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

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



zkv
Цитата

private://не обязательно, но я ставлю для наглядности 

наглядность как раз приветствуется  smile 
И если можно объясните вот это:
Код

std::ostream &operator<<( std::ostream &oStr, const POINT3d &point3d )
{
    return oStr<<"( "<<point3d.x<<", "<<point3d.y<<", "<<point3d.z<<" )";
}


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



****


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

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



Цитата(cyrrus @  15.5.2007,  09:32 Найти цитируемый пост)
std::ostream &operator<<( std::ostream &oStr, const POINT3d &point3d )
{
    return oStr<<"( "<<point3d.x<<", "<<point3d.y<<", "<<point3d.z<<" )";
}

ну тут понтов больше на самом деле чем пользы smile это перегрузка оператор << для потока вывода, проще говоря, чтобы потом мы могли вывести точку таким образом:
Код

   std::cout<<"\n 1 sek - "<<fish.GetCoord( 1 );

но можно не перегружать, и выводить просто:
Код

POINT3d point3d = fish.GetCoord( 1 );
std::cout<<"\n 1 sek - "<<"( "<<point3d.x<<", "<<point3d.y<<", "<<point3d.z<<" )";

PM MAIL   Вверх
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   Вверх
Hurricane
Дата 15.5.2007, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



adLucem, ну и чего буянишь? С постановкой задачи уже все выяснили:

Цитата

...
1.Объект океана имеет такие данные:
...

Т.е. речь идет об объекте океана, это совсем не то, что весь океан. Океан - это контейнер, хранящий и обрабатывающий объекты океана. А вот объект океана - это может быть просто объем воды, это может быть скала, это может быть пароход, это может быть рыба-кит. Каждый из них обладает набором собственных свойств (скорость течения, собственная скорость, возможно - координаты, способен ли объект перемещаться). И собственной реализацией методов отрисовки на экране, вывода в файл, и пересчет своих координат.

Сам океан - это контейнер для таких объектов, он вызывает с каким-то интервалом времени методы всех хранящихся в нем объектов для пересчета координат и отрисовки на экране/в файле. При этом он не должен знать, с каким именно объектом он работает в данный момент времени, они для него все - объекты океана (базовый класс). Но у каждого из них - своя реализация этих методов, поэтому рыба на экране будет нарисована не так, как объем воды, пароход может изменить свои координаты, а скала - нет.

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

Ну нельзя быть таким серьезным. Терпеть не могу форумы, где за шаг влево - шаг вправо от темы или за шутку юмора начинается расстрел на месте. А давление авторитетом нагугленных фраз и переход на личности - так это и совсем лишнее
PM MAIL   Вверх
cyrrus
Дата 15.5.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хм.. 
1. Перевёл я правильно;
2. Препод если и дурак, то это скрывает (шутка);
3. Посмотрел остальные задачи и вот что в них:
 базовыи объект Окружение -> наследуемыи человек
              университет -> студент
                   климат -> деревья
4. Я изучаю не програмирование (факультет електроники у меня), С++ у нас как стороннии предмент, вот нада написать 2 проги (одну я написал) чтоб отчитатся.
 
PM MAIL   Вверх
Hurricane
Дата 15.5.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(cyrrus @ 15.5.2007,  11:49)
3. Посмотрел остальные задачи и вот что в них:
 базовыи объект Окружение -> наследуемыи человек
              университет -> студент
                   климат -> деревья

Нда. Значит, качество образовательного процесса сильно ухудшилось по сравнению с тем временем, когда я учился. Маразм, да и только.

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

Просто даже интересно, как ваш преподаватель сам представляет эти вещи.
PM MAIL   Вверх
cyrrus
Дата 15.5.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С климатом там: 
климат : температура воздуха, скорость верта, вложность
Деревья: высота, толшчина ствола, скорость роста.
Описать состояние дерева при пазных климатических условиях, на сколько дерево выростет за год, когда согнётся и треснет( при определённои скорости ветра)
В общем буду спрашиват  преподавателя что он таки имеет в виду.
PM MAIL   Вверх
zkv
Дата 16.5.2007, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



adLucem,  предлагаю продолжить тему во флейме, чтобы не засорять пустыми сообщениями эту ветку форума, есть желание - отписывайтесь ко мне в личку, либо открывайте тему сами.
PM MAIL   Вверх
cyrrus
Дата 21.5.2007, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В общем я вот так поправил:
Код

#include <math.h>
#include <iostream>
using namespace std;

typedef double  Vector3[3];

class COcean
{
protected:

    static Vector3 R0,R1; 

   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;
      }
   }
   
   void Vyvod (Vector3 R, Vector3 Vf)
    {
        cout<<"va "<<R<<endl;
    }

   Vector3 R,Vf; //Текущие координаты и собственная скорость рыбы
};


void main ( void )
{  Vector3 R, Vf;
   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);
         f[i].Vyvod(R,Vf);

// В класс рыб - добавляем (в качестве самостоятельного упражнения) метод вывода на печать,
// здесь его вызываем.
      }
      
   }
};



но что такое R, R1, R0 и V, V0, V1?
И почему выводится в HEXe?
cout<<"va " , я так просто написал чтоб посмотрет как выводится.
PM MAIL   Вверх
Ln78
Дата 21.5.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(cyrrus @  21.5.2007,  18:02 Найти цитируемый пост)
но что такое R, R1, R0 и V, V0, V1?
И почему выводится в HEXe?
cout<<"va " , я так просто написал чтоб посмотрет как выводится

Если в main-е, то что такое R и V (наверное, Vf), то не знаю, в моём примере их не было, непонятно, зачем ты их добавил. R0, R1, V0, V1 - начальные значения векторов координат и скорости рыб (просто для примера задал произвольные значения для двух рыб, можно было делать несколько рыб, здесь для примера я задал 2.
cout в твоём примере просто выводит адрес начального элемента массива из трёх чисел, а тебе, нужны сами числа, вместо

Цитата(cyrrus @  21.5.2007,  18:02 Найти цитируемый пост)
   
Код

void Vyvod (Vector3 R, Vector3 Vf)
    {
        cout<<"va "<<R<<endl;
    }


лучше что-то типа
void Vyvod (Vector3 R, Vector3 Vf)
    {
        cout<<"R "<<R[0]<<','<<R[1]<<','<<R[2]<<";  V "<<Vf[0]<<','<<Vf[1]<<','<<Vf[2]<<endl;
    }


Это сообщение отредактировал(а) Ln78 - 21.5.2007, 19:22
PM MAIL   Вверх
cyrrus
Дата 21.5.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ln78
Цитата

в моём примере их не было, непонятно, зачем ты их добавил.

просто я вместо TestFish написал main smile
PM MAIL   Вверх
Ln78
Дата 21.5.2007, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



cyrrus, так там строчки
Код

Vector3 R, Vf;

вроде как не было
PM MAIL   Вверх
cyrrus
Дата 21.5.2007, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А., это я что то эксперементировал, так, нету у меня этои строчки smile
Код

#include <math.h>
#include <iostream>
using namespace std;

typedef double  Vector3[3];

class COcean
{
protected:

    static Vector3 R0,R1; 

   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;
      }
   }
   
   void Vyvod ()
   { 
        cout<<"R"<<R[0]<<','<<R[1]<<','<<R[2]<<";  V "<<Vf[0]<<','<<Vf[1]<<','<<Vf[2]<<endl;
        
    }

   Vector3 R,Vf; //Текущие координаты и собственная скорость рыбы
};


void main ( 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);
         f[i].Vyvod();

// В класс рыб - добавляем (в качестве самостоятельного упражнения) метод вывода на печать,
// здесь его вызываем.
      }
      
         
      
   }

};


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


Опытный
**


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

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



cyrrus, комментарии там рассчитаны были на тебя, а не на преподавателя. Так, что нужно добавить вывод на печать - уже неактуален, так как ты это сделал. Другой: 
Цитата(cyrrus @  21.5.2007,  20:04 Найти цитируемый пост)
// Для развития: можно контролировать, чтобы рыба не выплывала за пределы океана (по суху аки по
// морю)

означает, что тебе желательно поставить ограничение, и проверить: поместить какую-нибудь рыбу недалеко от границы и задать скорость движения в сторону границы. Контроль можно делать совсем просто: если какая-либо координата вышла за допустимый диапазон (определяемый соответствующими координатами векторов COcean::R0 и COcean::R1, задать значением этой координаты. Метод GetV у океана попробуй написать тоже какой-нибудь поинтереснее, но чтобы на границах скорость была нулевой, а вне - хотя бы линейными функциями, можно кусочно-линейными.
PM MAIL   Вверх
cyrrus
Дата 22.5.2007, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ln78, ну допустим, но если вернутся к выводу результатов, в этои моеи версии выводится около ста (100) строк smile , в общем я на этом и застрял. За 
Цитата

Для развития: можно контролировать, чтобы рыба не выплывала за пределы океана (по суху аки по
// морю)
 еще не брался.
PM MAIL   Вверх
v_nikolaev
Дата 24.5.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Hurricane @ 15.5.2007,  17:29)
adLucem, ну и чего буянишь? С постановкой задачи уже все выяснили:

Цитата

...
1.Объект океана имеет такие данные:
...

Т.е. речь идет об объекте океана, это совсем не то, что весь океан. Океан - это контейнер, хранящий и обрабатывающий объекты океана. А вот объект океана - это может быть просто объем воды, это может быть скала, это может быть пароход, это может быть рыба-кит. Каждый из них обладает набором собственных свойств (скорость течения, собственная скорость, возможно - координаты, способен ли объект перемещаться). И собственной реализацией методов отрисовки на экране, вывода в файл, и пересчет своих координат.

Сам океан - это контейнер для таких объектов, он вызывает с каким-то интервалом времени методы всех хранящихся в нем объектов для пересчета координат и отрисовки на экране/в файле. При этом он не должен знать, с каким именно объектом он работает в данный момент времени, они для него все - объекты океана (базовый класс). Но у каждого из них - своя реализация этих методов, поэтому рыба на экране будет нарисована не так, как объем воды, пароход может изменить свои координаты, а скала - нет.

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

Ну нельзя быть таким серьезным. Терпеть не могу форумы, где за шаг влево - шаг вправо от темы или за шутку юмора начинается расстрел на месте. А давление авторитетом нагугленных фраз и переход на личности - так это и совсем лишнее

там у объекта океана имеются ещё его координаты - это кубический объём воды.
плюс к тому, если б твоё рассуждение было верным, то, наверное, в задачи присутствовали бы и другие "объекты океана"
добавим ещё то, что сказано топикстартером про другие задачи.



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

Добавлено через 2 минуты и 31 секунду
Цитата(cyrrus @ 22.5.2007,  08:43)
Ln78, ну допустим, но если вернутся к выводу результатов, в этои моеи версии выводится около ста (100) строк smile , в общем я на этом и застрял. За 
Цитата

Для развития: можно контролировать, чтобы рыба не выплывала за пределы океана (по суху аки по
// морю)
 еще не брался.

мне кажется, что координаты океана только для того и даны, что рыба за их пределы не должна выплывать то есть это изначально в задаче присутствует.
PM MAIL   Вверх
Ln78
Дата 24.5.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



v_nikolaev, мы с cyrrus уже об этом договорились (в частом порядке) 
PM MAIL   Вверх
Promitheus
Дата 24.5.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А если такой варинат:

у океана есть x,y,z - начальные координаты в некой системе отсчета
и xd,yd,zd - возможные перемещения по трём осям скажем у окена, 2-3% процента от габаритов, а у рыбки габариты окена т.к. наследует у класса океан такие свойства как габариты; считаем, что берега нет, только в окенане плавает и выкинуть её оттуда нельзя.

Плюс еще само собой ваши задумки про скорость.

Если повторяюсь, звиняйте.



Это сообщение отредактировал(а) Promitheus - 24.5.2007, 17:19
PM MAIL ICQ   Вверх
v_nikolaev
Дата 25.5.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Promitheus @ 24.5.2007,  17:17)
 а у рыбки габариты окена т.к. наследует у класса океан такие свойства как габариты;

наверное, препод скажет им потом: "Понимаете теперь, где нельзя наследование использовать." smile
PM MAIL   Вверх
Promitheus
Дата 25.5.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



v_nikolaev Я не предлагаю габариты наследовать  smile , апредлагаю лишь свойства наследовать. Про постановку задачи уже было флуда на 3 странцы написано.  smile 
PM MAIL ICQ   Вверх
df_3
Дата 25.5.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А может рыбки просто движутся в пространстве под действием сил (океана)?



--------------------
ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ!
PM MAIL WWW MSN   Вверх
Promitheus
Дата 26.5.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



df_3, Тут вся загвоздка в том, что надо с наследованием связать. Хорошая тема, автора уже пару дней нет . . .  smile 
PM MAIL ICQ   Вверх
cyrrus
Дата 30.5.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



просто мне  Ln78 написал свою версию програмы, и я отчитался уже smile
PM MAIL   Вверх
v_nikolaev
Дата 31.5.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(cyrrus @ 30.5.2007,  17:28)
просто мне  Ln78 написал свою версию програмы, и я отчитался уже smile

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

наследование нужно в основном, когда у тебя объект имеет общее поведение. само неформальное определение подтипа гласит, что он может быть непосредственно подставлен вместо родительского там, где используется последний.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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