Пусть определены классы Book, Page, Paragraph, моделирующие понятия "книга", "страница книги", "абзац". Пусть определен объект my_book, задающий некоторую книгу. Рассмотрим фрагмент кода на языке Eiffel:Console.show(my_book.pages(j).paragraphs(i).text)
Является ли этот фрагмент синтаксически корректным, если да, то какова его возможная семантика?
(Отметьте один правильный вариант ответа.)
Варианты ответа
этот фрагмент синтаксически корректен. Метод show, вызываемый предопределенным объектом Console, выводит на консоль значение, переданное методу в качестве аргумента. Аргументом является некоторый текст, формируемый цепочкой запросов. Началом цепочки является заданный объект my_book – объект класса Book. У этого класса есть запрос pages с целочисленным аргументом, задающим номер страницы. Запрос возвращает объект класса Page – страницу книги с указанным номером. У класса Page есть запрос paragraphs с целочисленным аргументом, задающим номер абзаца. Запрос возвращает объект класса Paragraph – i-й абзац страницы. Запрос text в классе Paragraph возвращает текст абзаца. Таким образом на консоль будет выведен текст i-го абзаца j-й страницы книги, которую в момент выполнения обозначает объект my_book(Верный ответ)
этот фрагмент синтаксически корректен, и будет выполняться. В результате на консоль будет выведен текст двух страниц книги с номерами I и j
этот фрагмент синтаксически некорректен, поэтому ошибка возникнет еще на этапе компиляции
этот фрагмент синтаксически корректен, но ошибка возникнет на этапе выполнения, поскольку запросы не могут иметь аргументов