Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Наследственность классов |
Автор: cyrrus 13.5.2007, 18:09 |
Начел писать програму, но есть некоторые вопросы. задача: Написать програму используя обьекты и реализовать наследственность классов. Ситуация: Океан с плавающими в нем рыбками. Океан - базовыи обьект, рыбы наследующии. а. Обьект океан имеет такие данные: координаты (океан-как куб с определионными координатами вершин) и течение( скорость и направление выбераем сами). б. Обьект рыб имеет координаты ( берем как координаты точки), скорость и направление. в. Посчитать координаты рыб в определенные моменты (например: после 1,2,3 секунд), когда измениается скорост течения и направление течения океана. г. Все результаты на екран и в фаил результатов. вот. Чтоб мне кто нибуть показал на этом примере наследственност, а то я не очень с етим. И я так понимаю это нада вводить с клавиатуры начальную скорост рыб и океана, а направление это + или - просто? В общем разъесните пожалуиста. |
Автор: Lomir 13.5.2007, 18:50 | ||
Что-то мне такая структура не совсем нравиться. Может Океан это обьект контейнер рыбок? А то получается что рыбки это частный случай океана... |
Автор: Любитель 13.5.2007, 19:37 |
Мож всё-таки наследование? ![]() ![]() ЗЫ А вообще это в "центр помощи". |
Автор: cyrrus 13.5.2007, 20:40 |
Lomir, контеинеров я вообще не знаю. ![]() Любитель, Может и наследование, я не силён в языках ![]() |
Автор: Любитель 13.5.2007, 20:52 |
Это не правильно по своей сути. Почитай про объектно-ориентированное проектирование. Наследуемый класс имеет все поля и методы класса-предка. Скажем, океан имеет такое поле как солёность (это просто пример). Солёность рыбки - это несколько не то ![]() Здесь должно быть агрегирование, а не наследование. Океан - одно из полей рыбки (океан, в к-ром она живёт). А коллекций рыбок - поле океана. Можно также представлять сам океан как коллекцию рыбок, впрочем это не лучший вариант. |
Автор: Samotnik 13.5.2007, 21:22 |
2 cyrrus Не в обиду. Но мож лучше литературу почитай, чтоб иметь хоть маленькое представления об Обьектно ориентированном программировании. А потом сам и выбереш что лучше для тебя в данной ситуации наследование или лучше все в контейнер сгрузить ![]() Пэ.Эс. Ничего личного!!! ![]() |
Автор: Hurricane 13.5.2007, 23:40 | ||
Я бы даже сказал, что она намного важнее солености океана... ![]() По теме. Как уже сказали - с точки зрения наследования океан и рыбки имеют мало общего. Может, есть смысл сконцентрироваться на рыбках - травоядные, плотоядные и т.п. - т.е. базовый класс "рыба", реализующий интерфейс общий для любых типов рыб, и унаследованные от него классы с собственной реализацией методов кормежки, размножения, выживания и т.д., что там еще у рыб бывает. А океан - конечно же использовать как контейнер для рыб. |
Автор: cyrrus 14.5.2007, 00:41 | ||
Я вас понимаю, но веть задачи изменить я немогу ![]() Здесь просто имеется в виду что класс рыбок наследует класс океана ( координаты и скорость течения и все) Samotnik,
представление я именю, теоретически я понимаю, но практически не очень, и еще, сдесь смысл в том что бы просто использовать эту наследственност.. |
Автор: Smarts 14.5.2007, 01:44 |
Сделай отдельно класс рыб, а внутри океана объяви массив рыб + остальные параметры. В конструкторе Океана инициализируй массив с рыбами, и если надо - можно передать течение, координаты и прочее в качестве параметра конструктору класса рыб. Наследоват же Рыбу от Океана = ![]() |
Автор: sgrey 14.5.2007, 04:20 | ||
напиши сначала класс океан, потом открой книжку и посмотри как надо писать наследование. Твоих рыб будет не так сложно написать после того как океан будет готов. Там ничего сложного на самом деле нет, просто оба класса одни методы могут использовать п.с. рыба, которая имеет координаты океана.... это супергодзилла какая-то ![]() |
Автор: Любитель 14.5.2007, 13:11 |
cyrrus, ты уверен, что ты правильно понял задание. Либо преподы жутко тупят, либо ты что-то не так понял. Если можешь - уточни задание. |
Автор: cyrrus 14.5.2007, 19:39 |
Я задание перевожу с литовского; ща попробую еще раз. Написать програму с объектами и реализовать своиства наследования. Ситуация: океан с плавающими в нем рыбками, океан - это базовыи объект, рыбы - наследуемый. 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ą. |
Автор: nickless 14.5.2007, 20:23 |
cyrrus, не думаю, что тут действительно имеется ввиду наследование рыбами от океана, может просто формулировка странная, потому что это просто бессмыслено. Рыба, которая наследует от океана - это ктулху ![]() А если серьёзно, лучше переспроси что имеется ввиду. Прямо так и спроси, зачем рыбам иметь свойства океана? Например глубину в разных координатах, солёность и скорость течения итд. |
Автор: cyrrus 14.5.2007, 21:56 | ||
nickless, ок. A как можно реализовать такое:
|
Автор: Hurricane 14.5.2007, 22:06 |
А-а-а, я, кажется, понял. Пришлось напрячь третий глаз. ![]() Конечно же, наследовать рыб от океана - это бред. На самом деле видимо имелось ввиду вот что. Океан - это, конечно же, контейнер. Контейнер для ячеек (клеток, позиций, можно назвать как угодно). Каждая ячейка может быть пустая, или в ней может находиться рыба (несколько рыб?). Т.е. нужен базовый класс, определяющий интерфейс (пересчитать свои координаты, нарисовать себя и т.д.). Дальше от него наследуется класс "пустая ячейка" - координаты, скорость и направление течения. Дальше от него наследуется класс "рыба" - добавляются собственная скорость и направление движения. Дальше можно развивать мысль. Это оно, или я не угадал? |
Автор: Sartorius 14.5.2007, 22:08 | ||
На самом деле, если не вникать в смысл такой иерархии , то наследование вполне логично, ведь рыбы имеют также как и океан скорость и чего-то там еще... Но это же ужесно ![]() ЗЫ я бы сделал океан конвейером живых объектов-рыб. ЗЗЫ А препода самого отнаследовал бы от океана ![]() |
Автор: Anikmar 14.5.2007, 22:12 |
![]() Сколько раз?! ![]() ![]() |
Автор: Partizan 14.5.2007, 22:16 |
![]() Anikmar, =) одного думаю будет достаточно чтоб чёнить более логичное в следующий раз студентам предлагал) |
Автор: Hurricane 14.5.2007, 22:19 | ||
Двигаясь вместе с Землей вокруг Солнца? ![]() |
Автор: Anikmar 14.5.2007, 22:28 |
А для мертвых объектов рыб предусмотрели бы отдельный океан?! Добавлено через 1 минуту и 29 секунд Мда... Рыболовецкий траулер. Объект, принадлежащий океану и являющийся конвейером мертвых объектов рыб! |
Автор: Sartorius 14.5.2007, 22:40 |
Anikmar, это не шутка(( "Живой" или "активный" объект - это шаблон ЗЫ погуглите.... может пригодиться. прикольно многозадачность без нитей организовывать |
Автор: Hurricane 14.5.2007, 22:41 | ||
Почему же конвейером? Обычный контенер... Еще и фиксированного размера... std::vector вполне подойдет. ![]() ![]() |
Автор: Sartorius 14.5.2007, 22:59 |
Hurricane, конвейер - это не очередь . Это любой контейнер , обеспечивающий последовательную обработку, хранящихся в нем объектов |
Автор: Lomir 14.5.2007, 23:33 | ||
Про std::vector у нас преподы вопше думаю мало что знают (вовсяком случае там, где я учусь). И его использование может плохо кончиться. Если следовать описанию задания с оригинала, тогда так и получаеться Рыба унаследована у океана. Откуда тока такие преподы беруться. Повесил бы... 2 cyrrus:
Так вот, советую обьяснить преподу, что наследование сдесь не очень приемлимо с точки зрения ООП. П.С. Это во всех универах так или тока у нас...? |
Автор: Hurricane 14.5.2007, 23:56 | ||||||
Так мы вроде про траулер? А какая там обработка? Сложили дохлую рыбу в трюм и поплыли дальше. Говорю же - обычный контейнер. ![]() Добавлено через 7 минут и 15 секунд
А что там может плохо кончиться? Ставишь try-catch и ловишь std::exception ![]()
Ну я же где-то надцать постов выше уже высказал мысль, что рыба унаследована не от океана, а от ячейки океана. |
Автор: cyrrus 15.5.2007, 00:29 |
хех, вам смешно а мне задачу сдавать надо ![]() ![]() |
Автор: zkv 15.5.2007, 09:08 | ||
ну вот нечто приближенное к заданию (как я считаю):
конструктивная критика приветствуется ![]() подумал, что скорость можно задавать тоже объектом структуры POINT3d, где каждое поле - скорость в соответствующем направлении. Но с этим автор думаю сам справится ![]() |
Автор: cyrrus 15.5.2007, 09:32 | ||||
zkv,
наглядность как раз приветствуется ![]() И если можно объясните вот это:
|
Автор: zkv 15.5.2007, 09:41 | ||||||
ну тут понтов больше на самом деле чем пользы ![]()
но можно не перегружать, и выводить просто:
|
Автор: Ln78 15.5.2007, 10:57 | ||
zkv, если я правильно понял, у Вас океан не просто вышел из берегов, но и движется с постоянной скоростью? Это так ктулху разбушевался? Чтобы хоть как-то предотвратить неизбежность всемирного затопления написал свою (понятно что убогую, но здесь не до красоты) реализацию
|
Автор: zkv 15.5.2007, 11:29 | ||||
Уважаемый Ln78, вы не правильно меня поняли ![]() вы читали этот пост:
базовый класс я обозвал COceanicObject, подразумевая океанический объект (базовый для таких объектов как рыба, айсберг, корабль и пр.). К сожалению я не знаю литовского, но посчитал, что, возможно, подразумевалось такое задание, несостыковки я списал на возможную неточность перевода. Кстати, суть моего решения уже излагал кто-то выше. ps Вообще то я полагал, что мое решение довольно прозрачно, и не нуждается в комментариях, по этому не стал ничего пояснять. |
Автор: Ln78 15.5.2007, 12:43 | ||
Уважаемый zkv, я, собственно, откликнулся на В литовском я также не силён. Понятно, что искать большой смысл в изначально непонятно поставленной задаче - занятие неблагодарное, однако из перевода я понял, что Т.е. не какой-то там айсберг, а весь океан целиком,
Т.е. одной точки для куба маловато, а скорость течения логичнее представлять локально для каждой точки (иначе как раз и получится движение океана, как цельного предмета, что, имхо, довольно странно). Ну и дополнительно, абстрагируясь от физического содержания и от единого стиля программирования, я попытался написать пример, понимание каждой строчки которого могло бы помочь cyrrus продемонстрировать свои знания в программировании преподавателю. |
Автор: v_nikolaev 15.5.2007, 13:18 | ||
боюсь, препода интересует не это. не удивлюсь, если он ещё и диаграмму на uml-е попросит сделать на этот проект ![]() |
Автор: zkv 15.5.2007, 13:48 |
да, тут явная несостыковочка. ![]() ну если мы рассматриваем океан в некоторой локальной области, то можно считать что скорость течения постоянна (тоже, конечно, натяжка) Согласен, что ваше решение подходит под условие задачи, но у меня просто рука не поднялась бы унаследовать рыбу от океана, вот и я предложил решение, на мой взгляд, демонстрирующее некоторые принципы наследования, а не извращающее их. Ну не верится мне что преподаватель, в качестве практического задания (обучающего принципам наследования!) предложит унаследовать рыбу от океана ![]() Ln78, я не пытаюсь с вами спорить, просто мы решили разные задачи. А сами вы как считаете, такое проектирование имеет право на жизнь? |
Автор: Ln78 15.5.2007, 14:11 | ||
Я тем более не пытаюсь с Вами спорить. Единствнное, по-моему, мы пытались решить одну задачу - помочь студенту (а не ограничиться указанием на то, что препод - дурак). В реальном проектировании это, конечно, недопустимо. Ситуацию, когда рыба в качестве свойства объекта наследует размеры океана я пытался использовать (указать, что это можно сделать) для контроля за выходом рыбы за пределы океана, ничего лучшего придумать не удалось. Просто здесь я действовал по принципу: сказали грузить люминий, нужно грузить люминий, а несогласные будут грузить чугуний. Хотя, возможно, что и преподавателя зря обидели, у нас на этот счёт мало информации. |
Автор: adLucem 15.5.2007, 14:11 |
![]() Вот интересно стали бы вы делать конфеты из г..., если бы вам сказал преподаватель-кондитер? А рыб от океана вы наследуете, еще и спорите по поводу как их наследовать... |
Автор: zkv 15.5.2007, 14:19 | ||
![]() ![]() |
Автор: adLucem 15.5.2007, 14:36 |
Если вы считаете, что такой преподаватель мог бы сделать из вас кондитера, то у нас разные взгляды на жизнь. Постановка задачи не верна, причем при ее чтении возникают сомнения в том, что автор вообще понимает о чем говорит а не пишет "с канадчиковой дачи". Но проблема даже не в самой "задаче", а в том, что вы еще и дискуссию устроили по поводу отношения скорости океана к скорости рыб и так далее. Если коротко - бред или, если угодно, флейм. Остается только один вопрос - а зачем? |
Автор: zkv 15.5.2007, 15:08 | ||||
Получить диплом, и освоить профессию, по моему, разные вещи. И вообще, в жизни иногда приходится делать то, что нам делать не нравится ![]()
У вас видимо за плечами немалый опыт проектирования, что позволяет вам сразу сказать, что эта тема - бред. У меня опыта немного, поэтому стараюсь не пропустить чего то, что мне неизвестно. Именно по-этому, совершенно серьезно я задавал вопрос о практическом применении такого проектирования. Осмелюсь также заметить, что в большей мере, спор шел о постановке задачи, а не об "отношении скорости океана к скорости рыб и так далее". Простите, что потратил ваше время, на чтение моего флейма. ![]() |
Автор: adLucem 15.5.2007, 15:20 | ||
![]() Ага так и живем - приходят мальчики (как собственно и девочки), которые имея на руках диплом говорят - "Я ничего не знаю, но всему быстро научусь". А у меня вопрос - а что же вы все годы в университете делали? Что вы осваивали в университете? И зачем вы вообще его заканчивали? Да и кому нужен ваш диплом, если вокруг сотни (тысячи) точно таких же болванов с бесполезными бумажками. И еще как вы считаете откуда берутся такие преподаватели? они вырастают из мальчиков (девочек), которым мало того что их преподаватели говорят чушь (хотя возможно это мальчик не понял, что ему сказали), но и на форуме люди с готовностью подтверждают эту чушь.
Неужели вы считаете, что нужно иметь "немалый опыт проектирования", чтобы определить что рыба не может наследоваться от океана? Я понимаю, что в жизни часто нужно делать то что не нравиться, но делать хлам в угоду непонятно каким-целям, чтобы потом сказать что-то вроде диплом и профессия - это разные вещи, это не по мне. |
Автор: Ln78 15.5.2007, 15:54 |
![]() Так и данную задачу можно рассматривать в контексте: а как спроектировать, чтобы обеспечить и хотя бы какую-то разумность, и чтобы это было принято таким (а не другим) преподователем. Проектирование не только в знании современных языковых конструкций, но и в учёте, например, способностей реально cуществующей команды разработчиков. |
Автор: adLucem 15.5.2007, 16:17 | ||||||
Ln78, Если коротко, то по моему вы несете чушь, используя некоторый набор понятий
Проектирование - определения в Интернете: * деятельность, связанная с подготовкой к критической оценке проекта (см. также: критическая оценка проекта). 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, 16:33 |
adLucem, передо мной задача в которой предложено наследовать рыб от океана не стояла и не стоит. Я попытался решить другую задачу - помочь студенту. Задачу вести дискуссию на эту тему я не ставлю, это моё последнее сообщение на эту тему. Поиск дефиниций в интернете в данном контексте сродни выбору ответа на вопрос куда бросилась Анна Каренина из вариантов: под поезд, с моста и т.д. |
Автор: adLucem 15.5.2007, 16:46 | ||
А это ваш исходник - или у моего компьютера галлюцинации? Читайте басню "Медвежья услуга", раз уж вы так любите литературу. Не надо громких слов, просто несите ответственность за свои действия. И если уж перешли на флейм, то хотя бы читайте свой, перед генерацией нового ![]() |
Автор: Hurricane 15.5.2007, 17:29 | ||
adLucem, ну и чего буянишь? С постановкой задачи уже все выяснили:
Т.е. речь идет об объекте океана, это совсем не то, что весь океан. Океан - это контейнер, хранящий и обрабатывающий объекты океана. А вот объект океана - это может быть просто объем воды, это может быть скала, это может быть пароход, это может быть рыба-кит. Каждый из них обладает набором собственных свойств (скорость течения, собственная скорость, возможно - координаты, способен ли объект перемещаться). И собственной реализацией методов отрисовки на экране, вывода в файл, и пересчет своих координат. Сам океан - это контейнер для таких объектов, он вызывает с каким-то интервалом времени методы всех хранящихся в нем объектов для пересчета координат и отрисовки на экране/в файле. При этом он не должен знать, с каким именно объектом он работает в данный момент времени, они для него все - объекты океана (базовый класс). Но у каждого из них - своя реализация этих методов, поэтому рыба на экране будет нарисована не так, как объем воды, пароход может изменить свои координаты, а скала - нет. Т.е. в процессе флейма, здесь разобрались с постановкой задачи, определили состав того, что должно быть реализовано, определили требования к каждой составляющей, даже сделали прототип. Так чего не хватает? Документации? Ну вот и помог бы. Ну нельзя быть таким серьезным. Терпеть не могу форумы, где за шаг влево - шаг вправо от темы или за шутку юмора начинается расстрел на месте. А давление авторитетом нагугленных фраз и переход на личности - так это и совсем лишнее |
Автор: cyrrus 15.5.2007, 19:49 |
хм.. 1. Перевёл я правильно; 2. Препод если и дурак, то это скрывает (шутка); 3. Посмотрел остальные задачи и вот что в них: базовыи объект Окружение -> наследуемыи человек университет -> студент климат -> деревья 4. Я изучаю не програмирование (факультет електроники у меня), С++ у нас как стороннии предмент, вот нада написать 2 проги (одну я написал) чтоб отчитатся. |
Автор: Hurricane 15.5.2007, 20:10 | ||
Нда. Значит, качество образовательного процесса сильно ухудшилось по сравнению с тем временем, когда я учился. Маразм, да и только. cyrrus, тогда остается надеяться только на то, что, независимо от маразма данного преподавателя, ты сам понимаешь, что отношения типа "университет-студент" или "океан-рыба" с наследованием не имеют ничего общего. Типичные контейнеры и их содержимое. А "климат-деревья" - это вообще непонятно, из какой области. Сочувствую. Просто даже интересно, как ваш преподаватель сам представляет эти вещи. |
Автор: cyrrus 15.5.2007, 20:35 |
С климатом там: климат : температура воздуха, скорость верта, вложность Деревья: высота, толшчина ствола, скорость роста. Описать состояние дерева при пазных климатических условиях, на сколько дерево выростет за год, когда согнётся и треснет( при определённои скорости ветра) В общем буду спрашиват преподавателя что он таки имеет в виду. |
Автор: zkv 16.5.2007, 01:37 |
adLucem, предлагаю продолжить тему во http://forum.vingrad.ru/forum/Flame.html, чтобы не засорять пустыми сообщениями эту ветку форума, есть желание - отписывайтесь ко мне в личку, либо открывайте тему сами. |
Автор: cyrrus 21.5.2007, 18:02 | ||
В общем я вот так поправил:
но что такое R, R1, R0 и V, V0, V1? И почему выводится в HEXe? cout<<"va " , я так просто написал чтоб посмотрет как выводится. |
Автор: Ln78 21.5.2007, 19:20 | ||
Если в main-е, то что такое R и V (наверное, Vf), то не знаю, в моём примере их не было, непонятно, зачем ты их добавил. R0, R1, V0, V1 - начальные значения векторов координат и скорости рыб (просто для примера задал произвольные значения для двух рыб, можно было делать несколько рыб, здесь для примера я задал 2. cout в твоём примере просто выводит адрес начального элемента массива из трёх чисел, а тебе, нужны сами числа, вместо лучше что-то типа void Vyvod (Vector3 R, Vector3 Vf) { cout<<"R "<<R[0]<<','<<R[1]<<','<<R[2]<<"; V "<<Vf[0]<<','<<Vf[1]<<','<<Vf[2]<<endl; } |
Автор: cyrrus 21.5.2007, 19:37 | ||
Ln78,
просто я вместо TestFish написал main ![]() |
Автор: Ln78 21.5.2007, 19:56 | ||
cyrrus, так там строчки
вроде как не было |
Автор: cyrrus 21.5.2007, 20:04 | ||
А., это я что то эксперементировал, так, нету у меня этои строчки ![]()
|
Автор: Ln78 22.5.2007, 04:56 | ||
cyrrus, комментарии там рассчитаны были на тебя, а не на преподавателя. Так, что нужно добавить вывод на печать - уже неактуален, так как ты это сделал. Другой:
означает, что тебе желательно поставить ограничение, и проверить: поместить какую-нибудь рыбу недалеко от границы и задать скорость движения в сторону границы. Контроль можно делать совсем просто: если какая-либо координата вышла за допустимый диапазон (определяемый соответствующими координатами векторов COcean::R0 и COcean::R1, задать значением этой координаты. Метод GetV у океана попробуй написать тоже какой-нибудь поинтереснее, но чтобы на границах скорость была нулевой, а вне - хотя бы линейными функциями, можно кусочно-линейными. |
Автор: cyrrus 22.5.2007, 08:43 | ||
Ln78, ну допустим, но если вернутся к выводу результатов, в этои моеи версии выводится около ста (100) строк ![]()
|
Автор: v_nikolaev 24.5.2007, 10:00 | ||||||||
там у объекта океана имеются ещё его координаты - это кубический объём воды. плюс к тому, если б твоё рассуждение было верным, то, наверное, в задачи присутствовали бы и другие "объекты океана" добавим ещё то, что сказано топикстартером про другие задачи. так что достаточно статического члена объекта океана - если он единственнен, или указателя на него и т.п. нельзя всё-таки наследование где попало использовать, тем более, что тут как раз тот случай, когда следует использовать аггрегацию, ведь тут у нас не обобщение, не расширение, не ограничение и тп, а просто использование полей объекта... неужели где-то в программе рыбка будет играть роль океана? Добавлено через 2 минуты и 31 секунду
мне кажется, что координаты океана только для того и даны, что рыба за их пределы не должна выплывать то есть это изначально в задаче присутствует. |
Автор: Ln78 24.5.2007, 14:31 |
v_nikolaev, мы с cyrrus уже об этом договорились (в частом порядке) |
Автор: Promitheus 24.5.2007, 17:17 |
А если такой варинат: у океана есть x,y,z - начальные координаты в некой системе отсчета и xd,yd,zd - возможные перемещения по трём осям скажем у окена, 2-3% процента от габаритов, а у рыбки габариты окена т.к. наследует у класса океан такие свойства как габариты; считаем, что берега нет, только в окенане плавает и выкинуть её оттуда нельзя. Плюс еще само собой ваши задумки про скорость. Если повторяюсь, звиняйте. |
Автор: v_nikolaev 25.5.2007, 08:54 | ||
наверное, препод скажет им потом: "Понимаете теперь, где нельзя наследование использовать." ![]() |
Автор: Promitheus 25.5.2007, 19:02 |
v_nikolaev Я не предлагаю габариты наследовать ![]() ![]() |
Автор: df_3 25.5.2007, 21:56 |
А может рыбки просто движутся в пространстве под действием сил (океана)? |
Автор: Promitheus 26.5.2007, 11:01 |
df_3, Тут вся загвоздка в том, что надо с наследованием связать. Хорошая тема, автора уже пару дней нет . . . ![]() |
Автор: cyrrus 30.5.2007, 17:28 |
просто мне Ln78 написал свою версию програмы, и я отчитался уже ![]() |
Автор: v_nikolaev 31.5.2007, 13:43 | ||
думаю, все тут надеются на то, что ты понял, что это не тот случай, когда можно использовать наследование. наследование нужно в основном, когда у тебя объект имеет общее поведение. само неформальное определение подтипа гласит, что он может быть непосредственно подставлен вместо родительского там, где используется последний. |