Испытания

java101 Создаем ссылки, объекты. Достаем значения их полей.

Введение в Java

Для решения этой задачи необходимо знать тему "Модуль 2. Урок 3. Работа с экземплярами в Java."

Это задание продемонстрирует возможности доступа к самим объектам и к их полям.

Вся ваша работа будет проходить именно в методе createObject в рамках //BEGIN .... //END.

Советы:

  • Прочтите все задание целиком. Если бегло - то раза два. А потом уже выполняйте его поэтапно.
  • Каждый раз для каждого поля представляейте себе схему и синтаксис доступа к этому полю.
  • Нарисуйте себе на бумаге схему "вложености" объектов в друг-друга, ответтье на вопрос: "Кто кому поле?".
  • попробуйте смотреть на поле как на адрес. только вместо страна/город/улица/дом/квартира у нас объекты, которые являются частью друг-друга. ___ Дополнительная информация: java Object nameObject = new Object(); //тип ссылки / имя ссылки / создание нового объекта Обратите внимание на детали в примере выше. Важно различать сам объект, ссылку на него, тип ссылки.

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

Имя ссылки nameObject может быть любым, которое не запрещает синтаксис языка. Но лучше использовать "говорящие" имена. Такие, что бы и через года было понятно что это за переменная, поле и т.д.

Тип ссылки определяет то какого типа объекты могут быть присвоенны этой ссылке. Более детально мы затронем это в теме про наследование.

Отдельно стоит упомянуть оператор присвоения =. Ему все равно что слева от него, а что справа. Он лишь вычесляет то что справа, а потом результат вычислений передает в то что слева от него. А точнее он передает адресс на кусочек оперативной памяти, где хранится этот результат вычеслений. И если программист не верно сопоставил типы в правой и левой половине вокруг = то вылетит соответствуящая ошибка.


Задание

В классе Main.java необходимо в методе createObject собрать объект, заполнить его поля.

Поэтапно:

1) создайте ссылку типа MyObject с именем myObject

Обычно это делают сразу под //BEGIN. Но можно и отступить.

2) создайте объект, на который эта ссылка будет указывать

Объект тоже должен быть типа MyObject; По сути это просто инициализация.

3) Ознакомтесь с содержимым класса MyObject.

Но ничего там не меняйте. Этот класс нходится в пакете com как и Main класс. Особенно обратите внимание на поле public OtherObject2 objectInObject = new OtherObject2();. Осознайте, что objectInObject это лишь поле, просто тип у него не String или int, а какой-то другой. А у этого типа есть свои поля, а возможно даже и методы...

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

4) Заполните все поля myObject, кроме поля objectInObject

Вы уже создали myObject в первых двух пунктах. Теперь наполним его четыре поля конкретными значениями. Где взять эти значения:

  • проявите любознательность к пятому полю objectInObject. Оно сложнее чем предыдущие. Это очередной объект в мире java как и myObject или nameObject.
  • у objectInObject есть свои поля, уже наполненные значениями. Архитектор класса просто создал уже этот класс с наполненными полями.
  • Вы уже должны знать как получить доступ к любым полям класов этого задания, если запомнили "Модуль 2. Урок 3.".
  • теперь просто: обращаемся к любому полю myObject, которое нужно заполнить значением и с помощью оператора присвоения = записываем в это поле содержимое поля из объекта objectInObject, который, как Вы уже должны были заметить, тоже всего лишь поле для myObject.
5) Создайте ссылку типа MyObject с именем returnObject

(на последней строке перед //END). И присвойте ссылке returnObject значение ссылки myObject.

Успешных завершений: 85%

Последние код-ревью

Автор Дата обновления Версий
user-72d9ac0818b6445d 06 сент., 18:50 1
user-7c38153c4dde49ca 05 сент., 15:07 3
user-8902322bc8d93b60 24 авг., 02:51 1
user-6d583c963c902858 15 авг., 21:15 1
padlik89 31 июля, 18:12 1