Родственные связи кошек

  • 4
  • Недоступна
Готовая задача: у кошки есть имя и кошка-мама. Создать класс, который это описывает. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран. Новая задача: У каждой кошки есть имя, кот-папа и кошка-мама. Изменить Cat так, чтобы он мог описать эту ситуацию. Создать 6 объектов: дедушку (папин папа), бабушку (мамина мама), папу, маму, сына, дочь.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (269)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Mihai Mihai9 уровень, Chisinau
четверг, 13:43
Очень прикольная задача. Надо работать с конструкторами и с toString. Ну и дальше создовать всех котов.
Александр10 уровень, Kemerovo
12 июля, 10:17
Пока что первая задача, которая заставила меня посидеть над ней...во первых null...во вторых все запятые и в принципе много кода(по сравнению с другими задачами), где легко ошибиться. Но в итоге все получилось....спасибо комментариям(про null...долго не мог понять/вспомнить как отделить отца от матери, ведь конструктора 2 подобных нельзя создать...)
Кирилл7 уровень, Москва
7 июля, 02:49
Задачу решил. Убил на неё уйму времени. Но так и остался не раскрытый нюанс, а это как через метод tostring я вывел на экран все эти запланированные письмена. Получается порядок вывода на печать семьи (не всю, а только ту у которой одинаковые условия вывода) я задал порядком указанном в System.out.print (что для меня очень непонятно). Могу так же подозревать, что там участвуют конструкторы, но без понятия каким образом. Может, кто сориентирует на эту тему, если есть понимает о чём я имею ввиду, ну или ссылочку хорошую бросит?
Oleg Yev7 уровень, Минск
четверг, 10:47
Насколько я всю эту кухню понимаю, вызывая, например, команду System.out.println(catMother), мы в параметрах указываем конкретный объект "catMother", который имеет тип "Cat" (т.е. относится к классу "Cat"). Далее машина смотрит, что там у нас в классе "Cat". А там у нас конструктор с параметрами "имя, мама, папа" (их мы указали в скобках при создании нашего объекта "catMother"), а также (тут самое важное) переопределенный метод toString(), в котором мы указали условия вывода на печать (мол, "если папа и мама в параметрах объекта == null, выводим 'no mother, no father'", и т.д.). В конце концов, когда мы вызываем команду System.out.println(catMother), машина смотрит параметры нашего объекта catMother, сравнивает их с условиями переопределенного метода toString() в классе "Cat" (к нему относится наш объект) и выводит соответствующий текст. Именно System.out.println определяет, что у нас будет на экране и в каком порядке (можно попробовать ввести его только для бабушки и дочки, или в другом порядке, типа папа-сын-бабушка-мать...). Вот здесь можно вкратце почитать про переопределение метода toString(): https://www.internet-technologies.ru/articles/ispolzovanie-metoda-tostring-v-java.html Там очень по-простецки, но мне понравилось, т.к. соответствует моему уровню:) Однако я никак не могу понять, в чем разница между командами System.out.println(b) и System.out.println(b. toString()) - выводит все равно одно и то же. А вызвать этот метод просто введя b.toString() не получается. Как-то так я все это понимаю, наверняка не очень корректно, может кто исправит.
Maria8 уровень, Москва
4 июля, 17:27
Первая победа, с первой попытки. Вселяет уверенность после того, как ты с начала курса "решил задачу лучше, чем 5% учеников". Я вообще убрала первый конструктор, который просто с именем, чтобы не отвлекал, оставила (имя, мама, папа).
steff8 уровень
4 июля, 12:31
Из примера вывода я понял что дедушка и бабушка изменяли друг другу, а остальные были верные.
Mykhailo Ryzak8 уровень
15 июля, 15:22
это разные дедушки и бабушки =))) если б это была пара, то их сын и дочь путём инцеста сделали бы внуков. Поэтому дедушка по папиной линии, а бабушка по маминой линии
Maxim Volkov7 уровень
30 июня, 18:20
Решил за минут 5-7, и большую часть решения печатал код, а не думал. Не увидел ничего сложного. Просто меняем toString метод, делая больше условий с вариантами родни. Используя два конструктора создаем объекты, где у котов есть имена, или и имена, и родители. Отсутствующего родителя просто как null отмечаем, что бы toString правильно работал потом.
Илья8 уровень
четверг, 09:04
А нет, сейчас работает без лишнего кота. Похоже, ошибка была в том, что я лишний конструктор не убрал, где два аргумента на вход подаются
Александр8 уровень, Минск
29 июня, 12:12
это не задача, это анигилятор мозга, но... как говорится "утро вечера мудренее..." потратил день, кучу мозга и нервов.. но сделал.. всем добра и удачи в качестве подсказок могу сказать вот что: к маме и папе в конструктор передавал null для соответствующих значений котПапа и котМама; делал 2 конструктора - стандартный для бабушки и дедушки и с 3 параметрами для остальных, в параметрах передавал имя, папу и маму.
Вадим Роготнев9 уровень, Екатеринбург
25 июня, 17:16
через подсказки к ошибкам к ИДЕЕ решил задачу, но без них - хрен бы когда эта задача решилась.
Iurii Brazhko 16 уровень
17 июня, 02:28
Конструкторы с одним и тремя аргументами, null, если нет одного из родителей, порядок ввода имен допер сам, но запутался с оверрайдами. Правда, находясь на 6 уровне, я эту задачу пропустил. Решение было правильным на 100%. Всем советую поступать так же!
Евгений11 уровень, Харьков
16 июня, 13:04
Когда был на 6 уровне, решение этой задачи казалось чем-то недостижимым. Я даже и не пытался разбираться в ней, т.к. не знал, с чего начинать, все эти нагромождения кодов и хитросплетения родственных кошачьих связей вызывали чувство подавленности, и я отложил задачу до лучших времен. Прошел блок из 10 уровней, израсходовав всю материю, поэтому можете представить, сколько нерешенных задач я оставил (где-то в силу лени. где-то в силу нвозможности их решить). Начал смотреть видосы alishev'a (тут его часто хвалят), попутно решая нерешенные задачи ранних уровней. 4... 5... 6 уровень. Уже набрал 155 материи. И тут задачка-босс - родственные связи кошек. Именно она должна была показать, тварь я дрожащая или право имею. Перескакивать уже не имею права. Окинув взором задачу, понял, что уже лучше вижу код и ситуацию, которая в нем происходит, словно гроссмейстер, глядя на доску, может оценить свою позицию в шахатной игре. Уже предвосхищая то, как я буду писать этот отзыв, я поэтапно начал создавать объекты и прочее. Но малой кровью отделаться не вышло. Гроссмейстер оказался обладателем третьего юношеского разряда. Один конструктор в упор не хотел перегружаться, поэтому добавил к нему бесполезную переменную age (потом, впоследствии, забыв про нее, искренне удивлялся. почему маму зовут дядя вася, верно отрабатывающий конструктор - попросту не вызывался..Где-то this'ы не в том порядке. Шаманил с ифами, null'ом. В общем, суммарно ушло часа 1.5-2 неспешной работы. Код писал в валидаторе ЖР, потом, когда он не захотел запускать класс Cat (требовал отдельного файла), перешел в idea, там класс Cat из класса Solution было тупо не видно, не найдя выхода из ситуации, плюнул и вернулся в валидатор, благо чисто случайно увидел возможность создавать несколько классов отдельными файлами. Но вопрос про классы в idea остается открытым, кто знает - ПАМАГИТИ. (вроде бы solution.java и cat.java в одной папке лежат).
Евгений11 уровень, Харьков
16 июня, 13:12
Выводы: - если вы чего-то не понимаете, это не значит, что вы тупой (по крайней мере. настолько, чтобы не освоить вот это вот всё), возможно вы просто не нашли книги/видео/статьи с оптимальной для себя подачей материала. многие не удручают себя адекватным объяснением - всё тайное рано или поздно становится явным (но лучше, конечно, рано, чем поздно). изучив тему n раз под разными углами, рано или поздно найдете понятное объяснение непонятных тем. ну и время положительно влияет на "устаканивание" знаний в голове. в принципе, мне говорили подобные вещи, но когда сам проходишь через них - они по-другому воспринимаются