Бонусное задание | 11 лекция | 1 уровень

1 уровень, 11 лекция
Открыта

— Здорово, боец!

— Здравия желаю, капитан Бобров!

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

6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
«Из ребра его»
Давайте создадим виртуального человека и назовём его, по традиции, Адамом. И чтобы ему не было одиноко, напишем ему класс-наследник по имени Ева. Может, у нас всё получается вовсе не так, как в библейской истории, но мы к этому и не стремимся. Мы просто начинаем постигать такую важную часть ООП, как наследование.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Заклятые друзья
В 2007 году Apple представила самый первый iPhone. Как и обещал Стив Джобс, это событие действительно изменило мир. Смартфоны стали такими, как они стали. И у iPhone появилось множество вынужденных подражателей. Или наследников. Унаследуем класс SamsungGalaxyS2 от AppleIPhone и да простит нас Google.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Играем в Дарвина
Скорее всего, во всех школах Вселенной проходили знаменитую дарвиновскую эволюционную цепочку. Ну там рыбка, птичка, земноводное, млекопитающее… Или всё было немного не так?.. Не важно. В программе создадим рыб, общий класс животных, обезьяну и человека. И унаследуем четвертых от третьих, третьих от вторых, вторых — от первых.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Все мировые религии
Еще немного земной истории на страницах JavaRush! Вы, вероятно, слышали о том, что Ислам произошёл от Христианства, а то, в свою очередь исходит из Иудаизма. Продолжаем изучать ООП и наследование. Создаем три «религиозных» класса, родительский, дочерний и дочерний для дочернего.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
От школьника до квалифицированного раба
Увы, порой жизнь напоминает постепенный переход от одной стадии рабства в другую. Сначала мы обязаны ходить в школу, потом — в университет, затем работать, работать, работать… пока из работника не превратимся в раба! Разумеется, это не наш путь, поэтому мы и учимся программировать. Пишем четыре класса и наследуем их друг от друга.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Цепочка наследования
Корабль Galaxy Rush доставил провизию на планету Канин в галактике Гончих Псов. За хорошую работу экипаж пригласили на лекцию по эволюции Канина. Скажете, скучно? Куда там! На этой славной планете собаки — венец эволюции — произошли от кошек. Но у нас-то всё было не так! В этой задачке мы составим обычную земную цепь эволюции.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Альтернативная цепочка наследования
У нас есть класс плотоядных животных, просто животных и их наследники — корова, собака и свинья. Представляете, какого шороху могла бы наделать плотоядная корова, существуй она в природе! Не допустим этого. Распишем цепочку наследования правильно!
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Городское хозяйство
ООП позволяет фантазировать, но порой полезно оставаться в рамках здравого смысла. Скажем, вы очень любите свою машину, но стоит ли считать её своим домашним питомцем или, того хуже, — возлюбленной? Давайте в программе составим наследование исходя из здравого смысла.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Четвертая правильная «цепочка наследования»
«Я думал об объектах как о живых клетках или как об отдельных компьютерах в сети, которые обмениваются сообщениями», — сказал тот, кто ввёл термин ООП (гуглите, если нужно!). Предлагаем и вам так делать. Расставьте правильно «цепочку наследования» в классах House (дом), Cat (кот), Dog (собака) и Car (машина).
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Пятая правильная «цепочка наследования»
Собаковод и кошковод Андре не умеет программировать. Он слёзно попросил вас написать программу, которая помогла бы ему разобраться с его подопечными и нажитым непосильным трудом имуществом. А вам то что, вам это легко. Вы как раз изучаете ООП и наследование.

— Те задания были для духов. Для дедушек я добавил бонусные задания повышенной сложности. Только для старослужащих.

6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Чужой код, незнакомый
Вы уже в курсе, что вам придется разбираться с чужим кодом довольно часто. И не только будучи «джуниором». К этой непростой задачке лучше привыкать смолоду, и в секретном центре JavaRush это прекрасно понимают. В задаче переставляем наследование в классах так, чтобы она компилировалась и работала.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Помощь шахматной школе
Мы на JavaRush любим интеллектуальные развлечения. В том числе и шахматы. Король и ферзь, слон, ладья и пешка — все они фигуры на доске. В этой задаче вам предстоит исправить дополнить чужой код, а именно — создать всем шахматным единицам общего родителя — фигуру.
6
Задача
Java Core,  1 уровень,  11 лекция
Недоступна
Минимакс
На вступительном экзамене в ясли упорядоченному изоморфу Васеньке с планеты Линейный Хаос задали задачку на нахождение максимума и минимума в массиве. Как вы помните (или нет), на этой планете все только и заняты упорядочиванием и сравнением. Васенька справился. А вы?
Комментарии (151)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Vasilii Cojocari13 уровень
вторник, 11:11
А где уровни easy/medium/hard?
Алексей16 уровень
12 марта, 10:47
Почему свинья не плотоядное? Авторам бы пересмотреть большой куш))
Роман19 уровень
14 марта, 12:33
Их надо с кабаном в лесу познакомить. Чтобы они этому кабану объяснили, что он, мол, не плотоядный и не должен их сожрать.
Владлен13 уровень, Санкт-Петербург
позавчера, 13:01
Во-во, тут же все смотрели Большой Куш))) Кроме авторов)
yury17 уровень, Москва
4 марта, 19:10
Унаследовал Car от House - валидатор не пропустил. Хотя по логике, класс Машина это очевидное расширение класса Дом. То есть Машина обладает всеми свойствами родительского класса (окна, двери, пол, потолок, мягкая мебель, замок на двери, кладовка и т.п.) плюс дополнительные фишки - колеса, мотор, руль...
Guseyn Mamedov15 уровень, Москва
10 марта, 19:39
Наследование должно соответствовать принципу "... IS A ...". По-вашему Машина - это Дом?) Если у дома и у машины есть окно, то это не значит, что стоит сразу делать им общего предка. Логика должна присутствовать. Этот момент, кстати, освещали в одной из лекций этого уровня.
yury17 уровень, Москва
10 марта, 22:40
Да, машина это дом. Некоторые бомжи живут в машинах. Приведи аргументы, почему машина это не дом или иди подучи булеву алгебру.
Роман19 уровень
14 марта, 12:40
Машина и дом имеют конструктивно разную основу. То, что у машины есть внешние признаки дома, не облегчает задачу построить машину по чертежам дома. Ты плохо понял смысл наследования. Смысл в том, чтобы облегчить задачу дальнейшего программирования, а не усложнить. Если ты наследуешь машину от дома, то тебе придётся много вещей переделывать. Например, у дома есть фундамент, который мешает машине. Есть подключение к канализации, воде, электричеству. Всё это не просто не нужно машине, а будет сильно мешать при постройке машины. То есть, при постройке машины на основе дома - тебе придётся всё это как-то выкинуть или заглушить. То есть - ты сам себе усложнишь задачу даже по сравнению с тем, чтобы сделать машину с нуля.
yury17 уровень, Москва
14 марта, 21:38
Вижу, тебе еще далеко до понимания принципов ООП. Ничего, все впереди. Фундамент дома переопределяется и превращается в кузов машины. Электричество и водопровод в машине имеется практически в неизменном виде. Канализации (от слова "каналы"-трубопроводы) в машине еще больше, чем в каком-то примитивном доме. Идея создания современной машины - сделать ее максимально похожей на дом, чтобы можно было ездить в тепле, в комфорте, сидя. Сиденья раскладываются и превращаются в кровати. Еще раз: родительский класс машины - дом, а не телега, как может показаться на первый взгляд. Иначе сейчас по улицам гоняли бы самоходные телеги, как предсказывали фантасты прошлого века. Выражаясь в терминах ООП: class Car extends House implements Movable {} Самый простой способ сделать машину - это взять дом и дополнить его. И все, можно ехать. Это и есть одна из основных плюшек ООП. А с нуля (или из примитивной телеги) ты будешь полгода создавать машину - заново изобретать электричество, окна, двери, крышу, зеркала, сиденья...
Роман19 уровень
15 марта, 08:35
Спасибо тебе за комментарий, поржал. Кажется я начинаю понимать, откуда берутся говнокодеры.
yury17 уровень, Москва
15 марта, 20:14
Вот только не опускай руки! Если будешь продолжать учиться, то станешь запросто понимать подобные абстракции.
Роман19 уровень
16 марта, 14:34
Эммм. Боюсь, я уже безнадёжен. Основы ООП я изучал в 1991 году. На С++. Но тебе удачи! Твой говнокод когда-нибудь обязательно превратится в нормальный. Главное в это верить.
yury17 уровень, Москва
16 марта, 14:42
Ну, если ты аж с 1991 года так ничему и не научился, то лучше брось это занятие. Не мучай себя, иди в Яндекс.еду работать. А ковнокодом я займусь.
Роман19 уровень
16 марта, 14:50
Ладно, объясню в чём ты катастрофически неправ. Машины, всё-таки, надо делать на основе телеги. Именно так абсолютно все производители машин в мире и поступают. Современная машина - это телега, в которую внесены дополнительные улучшения. Сделаны амортизаторы, сделаны мягкие колёса, улучшена центровка, переработан салон, добавлено освещение и так далее. То есть - взяли начальную идею - две оси, на которые прикреплены по колесу с каждой стороны, и соединены площадкой для размещения людей и грузов. И вот в эту идею начали вносить улучшения. А то, что ты ошибочно принимаешь за "основу" - комфорт, он привнесён уже потом. Если ты начнёшь смотреть на машины по годам, начиная с 19 века, то ты сможешь это заметить. Теперь смотри, что такое дом. Это офигенно тяжёлая конструкция - самый лёгонький дом будет весить несколько тонн. Это конструкция, которая не просто не умеет передвигаться, а которую вообще нельзя передвигать. Её корпус подразумевает ровный! и твёрдый! фундамент, который должен быть жёстко зафиксирован в земле, желательно закопан в землю. Далее. К этой конструкции подключены коммуникации, которые учитывают именно эти свойства дома - неподвижность. И которые привязаны к определённой точке нахождения этой конструкции. Если ты передвигаешь дом - то коммуникации надо прокладывать заново. И вот все эти, с точки зрения автомобиля, недостатки ты предлагаешь взять за основу построения автомобиля. Твоё предложение - это говнокод в чистом виде. Патамушта вместо того, чтобы взять уже работающую конструкцию и в неё внести улучшения, ты берёшь совершенно не предназначенную для целевого использования конструкцию и предлагаешь её, по сути, скрестить с телегой. И делаешь это ради того, чтобы диван и красивый интерьер не переписывать. Хотя тебе всё равно это придётся делать, так как интерьер любого дома не предназначен для тряски. А при передвижении тряска будет. И тебе всё равно всё придётся переделывать.
Роман19 уровень
16 марта, 14:50
Короче. По твоим рассуждениям - если ты хочешь построить домик в деревне, то ты возьмёшь чертёж небоскрёба ради красивого пентхауса. И закопаешь его в землю до пентхауса, ради того, чтобы получить домик в деревне.
yury17 уровень, Москва
16 марта, 15:15
Ты, похоже, не понял моих расуждений, поэтому начинаешь приписывать мне свой бред. При чем здесь небоскреб? Небоскреб - это вообще дальний наследник дома, если уж проводить аналогии. И дом с фундаментом - это тоже наследник дома. Пещера первобытного человека - это тоже дом. Шалаш на лодке - тоже дом. Яхта - дом. Где там фундамент? Где коммуникации? То есть дом на самом деле очень широкое понятие. Если подходить с точки зрения ООП, то лучше класс Дом сделать вообще абстрактным, и наследоваться как удобно. Но тебе до абстракций еще предстоит дойти. Вижу, пока рано объяснять. Почитай определения слова Дом в википедии. Расширь кругозор. https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BC
Роман19 уровень
16 марта, 17:11
Мальчик. Удачи тебе в твоих начинаниях. И терпение твоему будущему тимлиду, когда дорастёшь до реальной работы.
yury17 уровень, Москва
16 марта, 17:41
Везде, где можно было облажаться, ты облажался. А сейчас просто эпически облажался. ))))))) Ты не понимаешь ни в программировании, ни в людях.
stoletovdk15 уровень, Санкт-Петербург
19 февраля, 19:53
Эх, с огнем играете с такими провокационными задачами)
Nubas13 уровень
14 февраля, 21:18
то чувство, когда на прочтение условия тратишь больше времени чем на написание решения... все жду подвоха)
7 февраля, 17:25
public class SamsungGalaxyS2 extends AppleIPhone как тролят прогеры с айфоном прогеров с андроидом
Руслан14 уровень, Уфа
13 февраля, 20:15
на винде компилятор пишет java.lang.assertionException: next time I'll break you whole code, small f...
Alexey28 уровень, Минск
5 февраля, 12:33
Расставь правильно "цепочку наследования" в классах: House (дом), Cat (кот), Dog (собака), Car (машина). Правильное решение сразу понятно, НО! ...но ведь дом может иметь хозяина и адрес, которые могут наследоваться коту, собаке и техпаспорту машины, не? Логика этих наследственных связей может быть совершенно разная в зависимости от контекста задачи.
Андрей14 уровень, Новосибирск
15 февраля, 09:55
при том, что перед этим они учат наследовать корову от свиньи, а свинью от курицы...
Alexey28 уровень, Минск
15 февраля, 11:03
Точно, было такое)))
Zeonlan14 уровень, Минск
1 февраля, 13:30
Т.е. вы считаете, что свиньи не являются плотоядными??? Они всё жрут!
Сергей17 уровень, Киев
1 февраля, 23:04
тут, конечно, разрабы в корне неправы. Свинья не то, что мясо сожрет, она и уголь лопает, и мел, и одежду сожрет, не подавившись. Та еще плотоядная тварь.... хоть и вкусная :)
Zeonlan14 уровень, Минск
5 февраля, 08:06
Вспомнил фильм "Большой куш" сразу XD
Андрей14 уровень, Новосибирск
15 февраля, 08:55
Для того, чтобы за раз избавиться от одного трупа надо как минимум 16 свиней, поэтому остерегайтесь владельцев свиноферм. Тело весом в 200 фунтов свиньи сожрут примерно минут за восемь. Это значит, что одна свинья сжирает 2 фунта сырого мяса в минуту. Именно отсюда происходит поговорка — жадный, как свинья Наиболее приемлемая часть цитаты
Владимир15 уровень, Москва
26 февраля, 08:11
Свинья - одно из немногих животных, способных питаться как растительной, так и животной пищей. В их же числе медведь и... человек. (Горе от ума - задача решена со второй попытки :) )
Алексей15 уровень
7 марта, 03:57
Свиньи как и медведи и люди всеядны. А именно плотоядные т.е. едят преимущественно пищу животного происхождения собаки.
Fergana Karatova22 уровень, Москва
24 января, 19:27
Заклятые друзья Изменить два класса AppleIPhone и SamsungGalaxyS2. Унаследовать SamsungGalaxyS2 от AppleIPhone. Не буду выполнять это задание, оскорбление чувств пользователей андроидом
Nick15 уровень
23 ноября 2018, 21:56
Кстати, может кому понадобится, в предпоследней задаче нужно было в каждый класс добавить одну и ту же строку "extends ChessFigure". Чтобы сэкономить время, есть shortcut в intellij Idea(shift + alt + клик в нужных местах). Это дает вам несколько кареток (курсоров), где вы можете набирать текст, чтобы не тратить время на копипаст
UnNameD16 уровень, Москва
27 ноября 2018, 22:53
что-то не нашел я такой шорткат, можно поподбронее о чем речь и как сделать?
Nick15 уровень
27 ноября 2018, 23:49
Это не совсем shortcut, хотя я его так и обозвал. Штука называется multiple selection, например тут есть статья о том, как пользоваться. Она правда на англ, но там все интуитивно. shift+alt зажимаешь, а дальше оперируешь мышкой. Можно выставить несколько кареток, можно выделить пару строк одновременно и отредактировать. К примеру, есть у тебя переменные delMose(удалить лося), а ты хотел написать delMouse(удалить мышь), и что ты делаешь в этом случае? Если переменных не слишком много и они не разбросаны - ты просто используешь эту функцию.
Nick15 уровень
27 ноября 2018, 23:57
я вообще бы всем новичкам в intellijIDEA посоветовал выделить для себя нужные шорткаты и просто интересные фунуции idea. У меня к примеру висит простой листок-сноска (который уже почти не нужен) на котором куча полезных функций, вроде live templates и shortcuts. Вот к примеру, я так выучил как сделать line duplicate, добавление пустой строки перед или после текущей, замена текста, оптимизация импортов, поиск конкретной строки по номеру и т.д. и кучу live template`ов. Live template это как когда ты пишешь короткое слово(к примеру sout), а после нажатия tab, enter или space у тебя появляется развернутый вариант "System.out.println();" и т.д. Поищи в инете по запросу "макросы"
Даниил 12 уровень, Минск
16 декабря 2018, 11:36
Вроде ещё можно же курсором указать нужные места и зажать "Ctrl". Ведь так? Не помню просто, сейчас попробую..
Сергей14 уровень
20 декабря 2018, 11:31
За "shift + alt + курсор" спасибо, но пример про delMouse некорректный. В случае с исправлением переменных нужно использовать рефакторинг: shift + f6 на переменной и переменная меняется по всему классу.
Nick15 уровень
24 декабря 2018, 23:12
рефакторинг эффективен, когда мест исправлений много и они могут быть разбросаны, а когда ты знаешь конкретное положение ошибки и этих мест 1-2, то ты дольше в окне рефакторинга будешь все копаться и вызывать его же =)
Shamil20 уровень
6 января, 20:41
Спасибо, все не как не мог до гугла доити шоб вспомнить
Кирилл Манжос15 уровень
29 января, 12:45
Крутая штука, спасибо
whitei.v.sky15 уровень, Москва
8 февраля, 12:32
Множественное выделение хорошая штука, но в конкретном примере я бы посоветовал Shift+F6 т.к. в большинстве случаев идея предлагает новое имя переменной исходя из класса и не обязательно искать в тексте кода все повторы этой переменной.