Форум Сообщества Аналитиков

Общий раздел => Для всех => Тема начата: komarik от 10 Сентября 2009, 02:45:55

Название: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 10 Сентября 2009, 02:45:55
Собсно интересует, я один думаю не так, как думают создатели теста или нет =)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Alexei Rylov от 10 Сентября 2009, 09:13:34
А как думают создатели теста? Что за тест? И какой ответ является правильным "с научной точки зрения"?  ;)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 10 Сентября 2009, 10:14:40
Я ответил композиция. Хотя как мы понимаем и композиция тут не подходит. Может быть полиморфизм? Да наверное полиморфизм.

Почему не наследование.
Сущность - птица - имеет ряд свойств, в том числе умение летать
Сущность - ящерица - имеет ряд свойств, в том числе умение ползать.

Дракон - берет часть свойств птицы (крылья, умение летать) и ящерицы (4 ноги, плоское брюхо, умение ползать)

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

Если пойти от биологии, то вероятно - птица - это динозавр, но вот ящерица - далеко не факт, скорее пресмыкающее. Тогда мы можем выстроить другую цепочку: Дракон - это птица - это динозавр, тогда как бы ползать он как ящерица не может, так как у динозавров совершенно другое строение :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Григорий Печенкин от 10 Сентября 2009, 11:20:43
Это работодатели такие тесты раздают, что ли?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 10 Сентября 2009, 11:27:37
"Правильный" ответ - множественное наследование.
Как я понял, логика примерно такая:
класс "Летун";
класс "Ползун";
класс Птица : "Летун";
класс Ящерица : "Ползун";
класс Дракон : "Леутн", "Ползун";

Мой ответ: Композиция
класс УмениеЛетать;
класс УмениеПолзать;
Класс Дракон
{
УмениеЛетать
УмениеПолзать
}

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


Это работодатели такие тесты раздают, что ли?
нет, это просто тесты - http://www.quizful.net/test/oop_basics (http://www.quizful.net/test/oop_basics).
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Григорий Печенкин от 10 Сентября 2009, 11:35:13
Мне тоже множественное наследование не нравится. Если решать задачу в лоб, то полученная модель искажает реальность: драконы не являются птицами, а абстрактные классы летунов и ползунов сразу сильно усложняют модель.

Но вообще, такие задачи нельзя решать в отрыве от контекста.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Бабихин Максим от 10 Сентября 2009, 12:05:43
На мой взгляд все зависит от конкретной реализации...Можно представить, что дракон появился от скрещивания птицы и ящера, тогда одно решение. А можно представить, что это вообще отдельное создание, тогда рожденный ползать летать не может. У задачи просто не может быть правильного ответа.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 10 Сентября 2009, 12:50:30
Интересно, почему некоторые думают, что наследование - это только "is-a"? На сколько я понимаю, птица и ящерица приведены как пример.

В вопросе явно указаны слова "летать"  и "ползать" - это поведение. То есть некие классы (или интерфейсы) - не важно как их назвать (CanFly, Flyable, FlyAware) наделяют дракона новым поведением. Это наследование. А так как есть 2 таких поведения, то это множественное наследование.

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

Полиморфизм имеет смысл когда мы говорим о полиморфном поведении. То есть если бы задача стояла работать с птицей и драконом одинаковым образом (запускать их с балкона что ли), то полиморфизм бы подошел.

Учитывая, что нужно выбрать наиболее подходящий вариант, подходит именно множественное наследование.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Denis Beskov от 10 Сентября 2009, 13:10:08
боже мой, какая херня
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 10 Сентября 2009, 13:19:22
боже мой, какая херня
четко и многозначительно одновременно =)
это ответ на какой пост? (хотя интуитивно догадываюсь)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 10 Сентября 2009, 13:20:27
Интересно, почему некоторые думают, что наследование - это только "is-a"? На сколько я понимаю, птица и ящерица приведены как пример.
А что может быть еще?

Учитывая, что нужно выбрать наиболее подходящий вариант, подходит именно множественное наследование.
Если поступать формально - да множественное наследование. Дракон это и птица, и ящерица. А если вспомнить легенду, то и человек, так как умеет говорить и мыслить :)

Возможны Вы правы в своих рассуждениях. Особенно если не принимать глубокий смысл задания :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 10 Сентября 2009, 13:29:24
Советую почитать о наследовании и о том, что кроме наследования реализации есть еще и наследование интерфейса (API).
Что то типа такого получается:
class Flyable {
    public: virtual void fly();
};
class Dragon : Flyable {
    public: void fly() { ... }
};
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: ida - брэнд с 14-летней историей от 10 Сентября 2009, 15:34:51
Выбрала множественное наследование, но я себе слабо представляю полиморфизм.
Первые два точно нет.
Насчет композиции - может быть в этом каверзность вопроса, но я бы сказала, что это вариант, который может подойти после дополнительных вопросов (ибо для каких целей будут использоваться методы летать и ползать, неясно). Именно в такой постановке - нет.

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

В-частности, возможно, это хороший способ оценить программиста, но для аналитика - человека, чьей ключевой задачей является взаимодействие - просто немыслимо дать ожидаемый ответ. И получается, что оценивается не твоя способность к взаимодействию, а то, угадал ты, что хотел сказать автор теста (видя обоих впервые), или нет.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Виталий Григораш от 10 Сентября 2009, 17:47:36
Вся страна играет в угадайку. И сюда добрались :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: alec7777 от 10 Сентября 2009, 17:55:27
Я бы выбирал между   наследованием и композицией, зависит от языка реализации.

Например  при реализации на Javа пришлось бы реализовавать как композицию.
Но никак не полиморфизм.

О и как следствие, композиция более общий случай, правильный вариант (IMXO) композиция.

Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 10 Сентября 2009, 18:03:02
Я бы выбирал между   наследованием и композицией, зависит от языка реализации.
да впринципе не зависит.
на сколько я знаю, java поддерживает реализацию нескольких интерфейсов, что впринципе можно назвать множественным наследованием.

тут вопрос в том, почему из данного вопроса, понятие "умение летать" должно однозначно восприниматься как поведение объекта(метод), а не как свойство объекта(поле, переменная, аттрибут).
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 10 Сентября 2009, 20:07:46
Наверное потому, что летать и ползать - это поведение.
Аттрибут - это, например, "крылья, ноги, хвост", в этом случае будет композиция.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 10 Сентября 2009, 20:19:39
летать - согласен, поведение
умение летать - это свойство
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 10 Сентября 2009, 20:24:53
летать - согласен, поведение
умение летать - это свойство
Я полагаю это вопрос трактовки фразы "умеют летать" - можно сформулировать летают как птицы или могут летать как птицы. Тогда вопрос умения отпадает :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Сергей Атрощенков от 10 Сентября 2009, 20:29:07
Я ответил бы: Множественное наследование. Первое что показалось похожим, не задумываясь о том, что сразу показалось очевидным, т.к. полет и ползанье - это действие.
а уж как это действие описано - нам в условии не сказано. "Перехитрять" себя - излишне в подобных задачах :)

Хотя, Денис ответил - точнее некуда.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Денис Иванов от 10 Сентября 2009, 20:45:56
Смотрю на результаты и вижу, что являюсь единственным кто ответил "инкапсуляция" :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 10 Сентября 2009, 20:58:39
Смотрю на результаты и вижу, что являюсь единственным кто ответил "инкапсуляция" :)
Аргументы? хотя понятно что без инкапсуляции тут тоже никуда:)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Денис Иванов от 10 Сентября 2009, 21:11:37
Как уже многократно написано, все зависит от контекста, который отсутствует.
Но тем не менее...

Мои аргументы таковы:
1) наследование подразумевает возможность подстановки дракона вместо птиц или ящериц во всех случаях, когда те используются. Контекст не известен, но я считаю вероятность выполнения принципа подстановки очень маленькой, поэтому отбрасываю этот вариант.
2) множественное наследование отправляется вслед за единичным
3) полиморфизм в ООП требует наследования. До свидания
4) Композиция? Это где здесь часть? Где целое? До свидания
Остается инкапсуляция:)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 10 Сентября 2009, 21:59:07
Остается инкапсуляция:)
а мне агрументы нравятся :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: ida - брэнд с 14-летней историей от 11 Сентября 2009, 01:08:31
Надо такие темы давать читать работодателям :)

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

Понятно конечно, что сколько людей столько мнений, но чтоб вот так... Представляю, что нам накодят те, кто будет "умеет летать" обозначать атрибутом...
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 11 Сентября 2009, 01:43:05
Возможно топикстартер обиделся, что его ответ не засчитали как правильный. Но как показывает статистика голосования, большинство все же считает ответ правильным.
А судя по тому, что топикстартер знает, какой ответ считается правильным по мнению авторов теста, значит они показывают правильные ответы. Так это им плюс большой. А то прошел бы тест, увидел результат "пройден", ну или "не пройден", и даже и не задумался бы, что да как.
Что за тест хоть? Киньте ссылку, пожалуйста.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 03:18:50
"Перехитрять" себя - излишне в подобных задачах :)
если этого не делать, то правильных ответов нет.
в другом случае, правильных ответов, как минимум больше одного.

Понятно конечно, что сколько людей столько мнений, но чтоб вот так... Представляю, что нам накодят те, кто будет "умеет летать" обозначать атрибутом...
пример:
Допустим, существыуют драконы которые умеют летать, и которые не умеют.
"умеет летать" тогда атрибут и никак иначе.

вариант 2:
класс СистемаУправленияПолетами;
класс СистемаУправленияПолзанием;
класс Дракон
{
СистемаУправленияПолетами
СистемаУправленияПолзанием
}
класс Птица
{
СистемаУправленияПолетами
}
класс Ящерица
{
СистемаУправленияПолзанием
}
чем не аттрибуты?


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

Но как показывает статистика голосования, большинство все же считает ответ правильным.
статистика из 14 человек, это не статистика :)
да и отписалось всего 3 человека за множественное наследование. причем лучше довода, что глагол - это всегда метод/поведение я не увидел.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 03:21:31
Что за тест хоть? Киньте ссылку, пожалуйста.
ссылка есть на первой странице в 5-ом посте.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 11 Сентября 2009, 10:20:40
"на это обижаться можно лет в 13-14" + "статистика из 14 человек, это не статистика" = внимание вопрос: зачем было тогда здесь это все писать, просто убедиться, что еще хотя бы 1 человек думает так как и ты?

А что, прикольный сайт, еще и некоммерческий. В рунете таких больше не видел, ни платных, ни бесплатных. Кстати, админ там все нормально описал. Чего то мне кажется что ты реально не хочешь воспринимать чужие доводы, а говоришь не обиделся.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 10:37:38
зачем было тогда здесь это все писать
в основном, хотел увидить мнения Galogen'а и bas'а. ну и других людей, которые бы давайли интересные аргументы.
за множественное наследование, как за единственно правильный вариант, я тут интересных аргументов не увидил, поэтому остаюсь при своем мнении.
понравилась логика denis-itk.
логика "глагол всегда = поведение" мне не нравиться.
поведение вседа лучше записывать глаголом - это да, с этим я согласен.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 11 Сентября 2009, 10:51:16

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

Ситация. Наземное Транспортное средство, Водное транспортное средство, Амфибия.
Амфибия - это и наземное транспортное средство и водное транспортное средство - тут против концепция ООП возразить трудно.

На сайте где тест имеется, сам разработчик говорит о концепциях, а не конкретных языковых реализациях
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Денис Иванов от 11 Сентября 2009, 11:50:32
Нет, Эдуард.
Если дракон (подкласс) наследует птицу (суперкласс), то это значит, что он подписывается на ее контракт, т.е. может его выполнять. Или другими словами, дракон может быть подставлен вместо птицы и логика не поломается.

Ты пишешь, "имелось в виду - возможность подстановки вместо дракона птицы или ящерицы".
Как же можно подставить птицу вместо дракона, если она и понятия о нем (и его контракте) не имеет?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: ida - брэнд с 14-летней историей от 11 Сентября 2009, 12:01:30
пример:
Допустим, существыуют драконы которые умеют летать, и которые не умеют.
"умеет летать" тогда атрибут и никак иначе.
Возможно, где-то так учат. Возможно, это правильно с точки зрения реализации - я не программист.
С позиции аналитика "летать" это метод, а не атрибут. И если у вас есть драконы, которые умеют летать, и есть такие которые не умеют - то это два разных класса, имеющие родителем класс "дракон".
Почему это два разных класса - потому что поведение у них разное. И нельзя в один класс запихивать сущности, обладающие разным поведением. Сопровождать трудно будет такие классы. Что проще - добавить новый класс в систему или новый атрибут к существующему классу, который уже работает?...

поведение вседа лучше записывать глаголом - это да, с этим я согласен.
И тут же предлгаете записать поведение атрибутом :) странное у вас согласие.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 11 Сентября 2009, 12:08:06
Нет, Эдуард.
Если дракон (подкласс) наследует птицу (суперкласс), то это значит, что он подписывается на ее контракт, т.е. может его выполнять. Или другими словами, дракон может быть подставлен вместо птицы и логика не поломается.
Спасибо за разъяснение. Все понял :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Сергей Атрощенков от 11 Сентября 2009, 12:10:06
"Во многой мудрости много печалей"© Экклезиаст
более простой пример вопроса, в котором лишнюю головную боль, создают ненужные размышления:
9 женщин рожают 9 детей за 9 месяцев, сколько детей родят полторы женщины за полтора месяца?
Решать используя только арифметические методы.

Лишнее задумывания о том, как вообще может полтора человека родить - здесь ненужны. :) совершенно лишнее.
На мой взгляд - подобный вопрос из такого же разряда.
обладая только полученной информацией:

нельзя ли перефразировать задание так:
"Lalala умеет складывать, как 'SumValue', и печатать, как 'Print'. С точки зрения ООП, примером чего является данная ситуация?"

Как можно заменить глагол, глаголом, что бы получить поле, а не метод, я не могу сообразить с ходу.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 12:42:52
И тут же предлгаете записать поведение атрибутом :) странное у вас согласие.
аналогия: все пингвины являются птицами, но не все птицы являються пингвинами.
любое поведение - это глагол, но не любой глагол - это поведение. - я воспринимаю это так.
не вижу ничего странного.

Как можно заменить глагол, глаголом, что бы получить поле, а не метод, я не могу сообразить с ходу.
если взять c++, то примеров хватает. например, как глагол, вставить елемент в конец массива, превращается в сущность back_inserter_iterator.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 11 Сентября 2009, 13:17:15
любое поведение - это глагол, но не любой глагол - это поведение. - я воспринимаю это так.
не вижу ничего странного.
Можете привести пример глагола - не действия?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Водолей от 11 Сентября 2009, 13:18:16
даже не один такой есть :о)) лениться, спать, ничего-не-делать
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 13:20:08
еще интересен один момент.
хочу добавить вариант ответа: правильных ответов нет или правильных ответов больше чем один.
интересно измениться ли и как, если изменится, статистика голосования.
в данном опросе можно переголосовать.

для истории:
икапсуляция: 1
множественное наследование: 10
композиция: 3
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 11 Сентября 2009, 13:21:25
даже не один такой есть :о)) лениться, спать, ничего-не-делать
т.е. приведенные тобой слова - не поведение или действие?
Глагол отвечает на вопрос - Что делать? Ну так для справки
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 13:21:41
добавил вариант ответа, пришлось сбросить статистику, т.к. после добавления нельзя было удалить свой голос.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 13:26:38
Можете привести пример глагола - не действия?
сам глагол без контекста - нет.
глагол, который встречается в описании задания, который потом превращается в сущность - уже привел (back_inserter_iterator).
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Сергей Атрощенков от 11 Сентября 2009, 15:42:18
если взять c++, то примеров хватает. например, как глагол, вставить елемент в конец массива, превращается в сущность back_inserter_iterator.
Разве "вставить элемент в конец массива" - это глагол? Предложение - да. Описывающие действие да. Но кроме глагола содержит ещё и другие части речи.

Added: из задания дополнительные действия и доосмысления - на сколько я вижу, не требуются. ???
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 15:53:38
Разве "вставить элемент в конец массива" - это глагол?
ответ постом выше.
Added: из задания дополнительные действия и доосмысления - на сколько я вижу, не требуются. ???
ответ: множественное наследование
домысл: существуют и необходимы сущности летун (flyable), ползун (думаю от птицы и ящерици наследоваться никто не собирается)
ответ: композиция
домысл: сущностей летун и ползун не существует, или нет необходимости в их создании. умения летать и ползать можно воспринимать как свойства.

Added: это я к тому, что на любой вариант ответа надо будет домысливать.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 11 Сентября 2009, 19:20:34
>> хочу добавить вариант ответа: правильных ответов нет или правильных ответов больше чем один. интересно измениться ли и как, если изменится, статистика голосования.
Предыдущий вариант голосования был неудовлетворительным, поэтому решил переформулировать? Прикольный подход. А вариант "правильных ответов нет или правильных ответов больше чем один" - это вообще перл.
Тогда давай уже так, есть 2 варианта - "множественное наследование" и "другое", или какой ты там вариант опустить хочешь.

>> существуют и необходимы сущности летун (flyable), ползун
Привязался же к словам летун и ползун. Посмотри как дизайнят библиотеку классов, например в Java. Есть интерфейс например Runnable с одним методом run(), это что по твоему - запускалка или бегалка? Runnable наделяет класс новым поведением, а именно возможностью выполняться.
Аналогично Flyable наделяет класс новым поведением - способносью летать. Это не что иное как наследование.

Напомню еще тебе твои же слова:
>> вот прошел человек такой тест, и отложилось у него в памяти, если две сущности умеют летать, то это полюбому наследование. и попробуй потом ему объяснить, что это далеко не всегда так, и в решаемой задачи наследование не подходит.

Вот ты сейчас именно это и делаешь: пытаешься отбросить все точки зрения кроме своей и не воспринимаешь конструктивную критику.
Ну если тебе от этого легче - пусть будет так.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 11 Сентября 2009, 20:05:25
Предыдущий вариант голосования был неудовлетворительным, поэтому решил переформулировать? Прикольный подход.
Назовоем этот подход исследовательским. Данные предыдущего опроса сохранена, какие притензии?
правильных ответов нет или правильных ответов больше чем один
вообще, хотел из начально добавить эти варианты ответов, правда как 2 разных пунтка. но потом решил привести вопрос в оригинале.
Есть интерфейс например Runnable с одним методом run(), это что по твоему - запускалка или бегалка? Runnable наделяет класс новым поведением, а именно возможностью выполняться.
это абстрактная сущность. впринципе, да, запускалка.
что означание предложение "наделяет класс новым поведением" в контексте ООП, я не понимаю.

Вот ты сейчас именно это и делаешь: пытаешься отбросить все точки зрения кроме своей и не воспринимаешь конструктивную критику.
Ну если тебе от этого легче - пусть будет так.
в процессе обсуждения прозвучало как минимум 4 точки зрения:
-множественное наследование
-композиция
-инкапсуляция
-правильного ответа нет.

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

вы же критично относитесь ко всем точкам зрения, кроме одной: единственно правильный ответ множественное наследование. и кто не воспринимает конструктивную критику?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Сергей Атрощенков от 11 Сентября 2009, 20:33:02
А с автором опроса не пробовали связаться?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 11 Сентября 2009, 20:34:55
1. Фраза в вопросе "выберите наиболее точный вариант" подразумевает один ответ. Так что твое утверждение "я критично отношусь только к точки зрения, что на данный вопрос всего один правильный ответ" звучит как минимум глупо.

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

3. Уже говорил, что некоторые восприняли наличие слов "птица" и "ящерица" как ключевые, хотя таковыми являются "летать" и "ползать". Из-за этого некоторые подумали, что так как дракон не является птицей, то наследование тут не подходит. Если мыслить чуть шире и принять во внимание слова "летать" и "ползать", то тут подходит множественное наследование, а ты его отметаешь.

4. Никто не говорит, что композицией нельзя это сделать. Прикольная штука иметь возможность менять вопросы и комментарии, не так ли? Вопрос сначала звучал по-одному (выбрать наиболее точный вариант), а теперь по-другому, потому что ты "проводишь исследования".
Так что все доводы всех участников дискуссии на трех страницах теперь искажены. Имел бы хоть уважение к людям...
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Григорий Печенкин от 11 Сентября 2009, 20:38:11
Очень хорошо, что вы пришли с этим вопросом на форум аналитиков. Давайте попробуем "додумать" контекст задачи.

1) Мы моделируем конструктор "Лего", из которого можно собирать разных зверей. Например, птиц, ящериц и драконов. Драконы умеют летать, как птицы, и ползать, как ящерицы. Для каждого моделируемого животного нужно написать свой класс. Какой принцип ООП следует использовать?

2) Мы разрабатываем компьютерную игру-шутер, используя библиотеку, с помощью которой написан Doom. Игроку необходимо уничтожить монстров-мутантов, в число которых входят птицы, ящерицы и драконы.  Драконы умеют летать, как птицы, и ползать, как ящерицы. Для каждого моделируемого монстра нужно написать свой класс. Какой принцип ООП следует использовать при моделировании монстров?

3) Мы моделируем эволюционное развитие животного мира Земли, чтобы оценить интенсивность мутаций. Нужно довести модель до определённого временного среза, на котором на планете существуют наземные пресмыкающиеся (ящерицы), летающие ящеры (драконы) и первые птицы. Драконы умеют летать, как птицы, и ползать, как ящерицы. Каждому виду должен соответствовать свой класс.  Какой принцип ООП следует использовать при моделировании видов?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 11 Сентября 2009, 21:39:30
Очень хорошо, что вы пришли с этим вопросом на форум аналитиков. Давайте попробуем "додумать" контекст задачи.
+1. Единственное замечание. Ящер не ящерица по определению, ибо ящер не пресмыкающееся. При этом птица - это ящер. :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: leinsoo от 11 Сентября 2009, 22:36:54
Если забыть все, о чем учит зоология (в части систематизации видов - раздел так и называется - систематика), и буквально читать написанное задание - то по определению - множественное наследование.

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

У кого какие мысли???
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Сергей Атрощенков от 11 Сентября 2009, 23:40:18
мысль такая: а зачем усложнять?
Разве концепция ООП подразумевает усложнение описываемого?
Усложнять - это человеческий фактор. :)
Или это у Вас исследовательский интерес?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 12 Сентября 2009, 01:37:01
А с автором опроса не пробовали связаться?
есть мнение, что javenue является автором, соавтором или другим лицом, непосредственно связанным с данным тестом. даже если это не так, то на сайте с тестом, есть ссылка на данный пост в коментариях.

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

Если мыслить чуть шире и принять во внимание слова "летать" и "ползать", то тут подходит множественное наследование, а ты его отметаешь.
как из предложения:
и на данный момент, я критично отношусь только к точки зрения, что на данный вопрос всего один правильный ответ.
можно сделать вывод, что наследование я отметаю?

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

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

2: greesha +1.

Разве концепция ООП подразумевает усложнение описываемого?
если учесть высказывание leinsoo:
Если забыть все, о чем учит зоология (в части систематизации видов - раздел так и называется - систематика), и буквально читать написанное задание - то по определению - множественное наследование.
то дракона придется наследовать от птицы и от ящерицы.
если я правильно понял.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Сергей Атрощенков от 12 Сентября 2009, 02:07:20
...
то на сайте с тестом, есть ссылка на данный пост в коментариях.

Да, вижу ссылку на обсуждение. Спасибо.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 12 Сентября 2009, 12:46:16
Очень хорошо, что вы пришли с этим вопросом на форум аналитиков. Давайте попробуем "додумать" контекст задачи.
интересно, правильно ли я мыслю на данные три задачи:
1) композиция (собираем из кусочков "Лего" целое)
2) полиморфизм (полиморфное поведение монстров-мутантов)
3) наследование (как описание иерархии видов)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Виктор Малышко от 12 Сентября 2009, 15:19:09
вопрос построен на примере из известной книги по Java, рассказывающем о том, как "реализовать" множественное наследование без множественного наследования, отсюда вывод, что имелось в виду множественное наследование :)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: javenue от 12 Сентября 2009, 15:53:33
2 komarik:
о проекте Quizful узнал только благодаря оставленной тобой ссылке. Проект понравился, так как идею community сервиса по онлайн тестированию встречаю впервые. И не буду отрицать, что в будущем может и составлю для них какой-то тест. Уже пару вопросов им добавил, правда не по ООП.

Если уже приводишь цитаты, то привод их полностью - "Наследование может наделять новосозданную сущность новым поведением, которое собственно достается ему от сущности-предка." Что тут не понятно?

>> интересно, правильно ли я мыслю на данные три задачи
После очередного редактирования комментария, уже правильно

Жду твоего одобрительного коммента на счет комментария Виктора.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 12 Сентября 2009, 17:51:35
вопрос построен на примере из известной книги по Java, рассказывающем о том, как "реализовать" множественное наследование без множественного наследования, отсюда вывод, что имелось в виду множественное наследование :)
Жду твоего одобрительного коммента на счет комментария Виктора.
извените, книжки по Java не читал, и всегда думал что ООП не привязано ни к какому языку.

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

тока я до сих пор не понимаю, почему единственно верный вариант - множественное наследование.

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

аргументов того, что правильный вариант всего один я не видел не там не тут. кроме одного - "глагол всегда поведение".
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 12 Сентября 2009, 21:16:04
Я, конечно, не глубокий знаток ОО программирования, но мне кажется, что тут есть некоторое смешивание. Наследование интерфейсов безусловно есть. Однако класс не наследует интерфейсы, а реализует их. Таким образом некий интерфейс (ЛетатьПолзать) множественно наследует интерфейсы Летать и Ползать, а класс Дракон реализует интерфейс ЛетатьПолзать. Учитывая варианты ответа, скорее всего нужно выбрать множественное наследование :) Но наличие интерфейсов тут сбивает, потому и возникла такая дискуссия (на пустом вообщем месте)

Мне кажется, что если авторы теста предполагали проверить понимания множественного наследования, то можно было бы предложить более очевидный вопрос, типа:
Амфибия умеет ездить как автомобиль и плавать как катер (судно)
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Сергей Атрощенков от 13 Сентября 2009, 05:17:49
Эдуард, а чем предложенный пример отличается от оригинала?
Я просто, скоипровал оба варианта. Один под другой. Вроде то на то и выходит, нет?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: Galogen от 13 Сентября 2009, 10:47:55
Эдуард, а чем предложенный пример отличается от оригинала?
Я просто, скоипровал оба варианта. Один под другой. Вроде то на то и выходит, нет?

Ну хотя бы тем, что в этом случае происходит реальное наследование свойств, а не надуманное выборочное наследование элементов поведения.

говоря амфибия вполне можно говорить о наземном транспортном средстве, которое имеет до 4 колес, ездит по дорогам и т.п. При этом совершенно не вызывает отторжения фраза - амфибия - это машина(автомобиль). Да мы понимаем - это особый автомобиль, но тем не менее.

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

Т.е.
Амфибия особый тип автомобиля умеющего плавать как катер
Амфибия особый тип катера умеющего ездить по дорогам
Вполне нормальная картина, согласны?


Дракон это особый тип птицы, которая умеет ползать
Дракон это особый тип ящерицы, которая умеет летать как птица
А тут как? С Вашей точки зрения глубокой и не очень?
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: komarik от 13 Сентября 2009, 14:27:30
Я, конечно, не глубокий знаток ОО программирования, но мне кажется, что тут есть некоторое смешивание. Наследование интерфейсов безусловно есть. Однако класс не наследует интерфейсы, а реализует их. Таким образом некий интерфейс (ЛетатьПолзать) множественно наследует интерфейсы Летать и Ползать, а класс Дракон реализует интерфейс ЛетатьПолзать. Учитывая варианты ответа, скорее всего нужно выбрать множественное наследование :) Но наличие интерфейсов тут сбивает, потому и возникла такая дискуссия (на пустом вообщем месте)
насколько я понимаю, OOP - это умение записать в коде то, что является выходом OOA/OOD.
или другой вариант: OOP включает в себя OOA, OOD, и умение закодить. не знаю, какой вариант будет более точный.
в контексте OOA/OOD нет принципиального различия между наследованием интерфейса и наследованием класса. тут не уверен, поправте, если не прав.
при реализации и на Java, и на C++ не обязательно создавать сущность "ЛетатьПолзать"(если нет в этом необходимости).
выглядеть оно может, например, так (Java):
class Dragon : extends Animal, impliments Flyable, Crowable;
как по мне, это множественное наследование от 3 сущностей.
поэтому наличие интерфейсов меня тут не сбивает.
и всеравно не понимаю почему только множественное наследование. точнее почему на данный вопрос надо думать в русле того, что существуют сущности Flyable и Crowable. Почему нельзя додумывать в сторону композиции:
класс Крылья - позволяет летать.
класс Ноги - позволяет ползать
класс Дракон
{
   Крылья
   Ноги
}

Амфибия умеет ездить как автомобиль и плавать как катер (судно)
не знаю, все равно композиция возможна.
по отдельности оно звучит не плохо:
Амфибия особый тип автомобиля умеющего плавать как катер
Амфибия особый тип катера умеющего ездить по дорогам
а если сказать, амфибия является как автомобилем, так и катером, то мне это не очень нравится.
т.е. по моему, все равно необходимы интерфейсы "УмеетПлавать", "УмеетЕздить".

оффтопик:
я бы лучше вместо этого одного вопроса, добавил бы 3 вопроса предложенных greesha.
потому что множественное наследование это просто. это наследование больше чем от одной сущности.
а вот термины: наследование, композиция, полиморфизм, необходимо понимать.
Название: Re: Вопрос из теста. Интересно, как бы вы на него ответили.
Отправлено: qpayct от 20 Февраля 2010, 02:03:48
Ответил так : правильного ответа нет. ИМХО, Речь в задаче идет о наборе интерфейсов. Это из ПХП5.