Что такое объект в JavaFX? Как создать объект? Урок знакомит вас с понятием объекта, литерала объекта, а также демонстрирует как вызывать функции объекта. |
Содержание
Что такое объект? Объект - это самостоятельный элемент программы, характеризуемый состоянием и поведением. Говоря в общем:
- Состояние объекта выражается через переменные
- Поведение объекта выражается через функции
C помощью объекта можно смоделировать всё, что угодно, начиная с элементов графического интерфейса (кнопки, флажки, текстовые метки), заканчивая такими абстракциями как данные о температуре, финансовые записи, информация о регистрации.
Примечание: Для более подробной информации о понятии объекта, читайте урок What
is an Object, в курсе
The Java Tutorials.
В языке JavaFX Script объект создается с помощью литерала объекта.
Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
|
Мы создали объект Address , который используется в воображаемом приложении, имитирующем адресную книгу. Чтобы скомпилировать эту программу, сохраните код в файл AddressBook.fx , скачайте архив Address.zip и извлеките 2 файла с расширением .class из архива. (В архиве также содержится файл AddressBook.fx .)
Примечание: В файлах Address.class (Address.class и Address$Intf.class ) содержится информация, необходимая компилятору для создания объектов типа Address . Изначально, мы создали файл Address.fx и определили в нем класс Address , затем скомпилировали его и получили Address.class . Язык JavaFX Script, также как и в язык Java, содержит большое количество встроенных файлов типа .class , которые можно применять при разработке программ. Это позволяет создавать объекты для решения широкого спектра задач, включая разработку графического интерфейса со сложными визуальными эффектами. Подробнее о том, как создавать свои классы, мы расскажем в уроке Создание классов. Пока же, для демонстрации таких примеров как этот, мы просим вас скачать и использовать готовые .class файлы.
Скомпилируйте скрипт: javafxc AddressBoox.fx . Программа не имеет выходных данных, но тот факт, что она скомпилировалась, указывает на успешное создание объекта.
Примечание: Говоря техническим языком, переменные в данном примере называются переменными экземпляра класса. Переменные экземпляра - это набор встроенных атрибутов, которыми располагает каждый объект. Вообще, термин "атрибут" уже использовался в ранних версиях языка (его еще можно случайно встретить в документах и демонстрационных программах). В мире объектно-ориентированного программирования термины "экземпляр класса " и "объект" являются синонимами, отсюда и понятие переменной экземпляра.
Синтаксис литерала объекта прост и его легко запомнить. Первое слово (в примере ниже это Address ) определяет тип объекта, который вы создаете. Открывающие и закрывающие фигурные скобки содержат тело объекта. Остальные слова (street , city , state , zip ) инициализируют переменные экземпляра класса.
Этим способом можно создать несколько объектов, например:
Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
Address {
street: "200 Pine Street";
city: "San Francisco";
state: "CA";
zip: "94101";
}
|
Примечание: При объявлении литерала объекта, переменные экземпляра можно разделять запятыми, пробелом или точкой с запятой. Объявление ниже корректно:
Address {
street: "1 Main Street"
city: "Santa Clara"
state: "CA"
zip: "95050"
}
Address {
street: "200 Pine Street",
city: "San Francisco",
state: "CA",
zip: "94101",
}
|
В уроках в основном используется точка с запятой. Точку с запятой необходимо ставить при объявлении функции.
Вы также можете объявлять созданные объекты в качестве переменных, чтобы в дальнейшем их можно было использовать в программе::
def addressOne = Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
def addressTwo = Address {
street: "200 Pine Street";
city: "San Francisco";
state: "CA";
zip: "94101";
}
|
Вы также можете вкладывать один объект в другой объект:
def customer = Customer {
firstName: "John";
lastName: "Doe";
phoneNum: "(408) 555-1212";
address: Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
}
|
В данном примере в объекте Customer объявляется несколько новых переменных. Также, в переменной address содержится уже известный объект Address . Структура вложенных объектов очень распространена и показывает как программист (или среда разработки) форматирует код, используя отступы, когда один объект вложен в другой. С помощью отступа переменные объекта Address визуально отделяются от переменных объекта Customer . Чтобы скомпилировать этот пример, скачайте архив Customer.zip , распакуйте содержимое, поместите все файлы в одну директорию и используйте стандартную команду для компиляции.
В языке JavaFX Script многие классы характеризуются определенным поведением. Это поведение реализуется с помощью функций объектов. Подробно написание функций для объектов будет рассмотрено в уроке Создание классов. Сейчас мы только покажем как использовать встроенные функции.
Функция экземпляра вызывается с помощью структуры следующего вида: имя переменной (в данном случае customer ), далее следует точка ("."), и затем функция, которую вы хотите вызвать:
def customer = Customer {
firstName: "John";
lastName: "Doe";
phoneNum: "(408) 555-1212"
address: Address {
street: "1 Main Street";
city: "Santa Clara";
state: "CA";
zip: "95050";
}
}
customer.printName();
customer.printPhoneNum();
customer.printAddress();
|
В результате вы получите следующие выходные данные:
Name: John Doe
Phone: (408) 555-1212
Street: 1 Main Street
City: Santa Clara
State: CA
Zip: 95050
|
Вы спросите: "Откуда все эти функции? Как понять, какие переменные и функции есть у экземпляра класса (объекта)?". При использовании библиотеки или класса, рекомендуется обращаться к спецификации языка (API документации) . Спецификация - это формализованный список переменных и функций объекта. Обращение к документации - единственный способ убедиться, что объект располагает необходимой функциональностью. Вы научитесь пользоваться такого рода документацией в следующих уроках, когда начнете разрабатывать графические приложения.
|
|