CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Кофе подано

Геннадий ГАЛИСЕЕВ

(Продолжение, начало см. в МК № 50—52 (169—171))
Ранее я продемонстрировал вам незначительную часть возможностей языка Java, касающихся создания пользовательского интерфейса (UI, User Interface). Но это не сам язык, это только набор команд для обращения к каркасу приложений Swing. Понятно, что при этом используется синтаксис языка Java, а стало быть, какое-то впечатление от языка вы уже получили. Но чтобы хорошо понимать, зачем нужны все эти слова и почему они располагаются в таком порядке, необходимо более глубокое изучение, погружение в язык. Этим сейчас и займемся.

Класс, объект и другие мудреные понятия

Java — это объектно-ориентированный язык. Все современные языки, на которых пишут большие и сложные программы, являются объектно-ориентированными, ибо только на таком языке можно написать что-нибудь более-менее приличное. Поэтому сперва надо постараться как следует уразуметь ключевые принципы объектно-ориентированных языков — это всегда пригодится.

Базовым элементом в таких языках является класс. Термин «класс» в языках программирования хорошо ассоциируется с общеупотребительным значением этого слова: класс автомобилей, класс млекопитающихся, класс хвойных деревьев, рабочий класс и т. д. То есть, класс — это ряд отдельных элементов, отобранных по определенному признаку. Все эти признаки описаны в шаблоне, который, собственно, и называется «классом». Например, чтобы определить класс автомобилей, необходимо описать все основные признаки, по которым мы можем распознать автомобиль и не спутать его с чайником. Например, для автомобиля это может быть: колеса, руль, мотор, переключатель скоростей. Наличие этих базовых элементов у любого устройства дает нам право отнести его к классу автомобилей.

Любой класс (это тоже знакомо) может иметь подкласс. Полученный подкласс может делиться на еще более мелкие подклассы, и так до бесконечности. Например, класс автомобилей может быть разделен на два подкласса: легковые автомобили и грузовые автомобили. Класс грузовых автомобилей, в свою очередь, может быть разделен на тяжелые грузовики и легкие грузовики, и т. д. Класс легковых автомобилей можно разделить на класс «Мерседесов» и класс «Запорожцев» — то бишь машины для «буржуазного» и для «рабочего класса». Соответственно, для каждого нового подкласса мы создает свой шаблон (класс), где дополнительно описываем присущие только этому классу свойства. Например, в классе грузовых автомобилей, в дополнение к общим свойствам класса автомобилей, должен быть выделен такой отличительный признак, как наличие кузова. Видите, как удобно. Всего два слова: «грузовой автомобиль» — и мы уже представляет себе объект с колесами, рулем, мотором, переключателем скоростей и кузовом.

Именно такая логическая стройность и лаконичность необходима в языках программирования для получения хорошо работающих и легко читаемых программ. В Jav’е это реализовано на редкость хорошо, и потому она так привлекательна для программистов. Вот какой вид будет иметь описание класса автомобилей:

Надеюсь, вы осознаете степень условности — на Java все ключевые слова пишутся только английскими буквами. Но пока для лучшего понимания будем пользоваться русским шрифтом и русскими словами, располагая их в соответствии с синтаксисом Java. Каждое входящее в класс понятие должно обозначаться одним словом, поэтому если необходимо использовать словосочетание (например, «переключатель скоростей»), будем записывать его слитно, выделяя каждое слово, кроме первого, заглавной буквой. В отличие от этих элементов, имя любого класса всегда начинается с большой буквы.

Бросается в глаза и то, что набор этих элементов сам по себе не является автомобилем — это скорее куча металлолома. Автомобиль по крайней мере должен двигаться, и это тоже должно быть описано в классе. Поэтому необходимо ввести и понятия движения, изменения направления, переключения скоростей, остановки и т. д. То, что это не отдельные элементы, а какое-то действие —функция, — подчеркивается двумя круглыми скобками и двумя фигурными, которые идут за именем функции. Между скобками может находиться одно или несколько чисел или идентификаторов — это параметры функции. Не пугайтесь слова идентификатор — это просто строка символов, обозначающая некоторый элемент. Вот как будет выглядеть описание класса автомобилей с использованием всех необходимых элементов.

Это уже достаточно полное описание автомобиля. И если вы создадите у себя в программе класс «Автомобиль», то, давая команды:

вы заставите двигаться автомобиль вперед со скоростью 10 км/час. Но что значит «двигаться вперед»? Как это будет отображаться на экране? Пока никак. Ведь для этого не предусмотрено никаких действий. Все это надо еще описать. Пока мы поступим очень просто — в функцию «движение» вставим счетчик пройденного расстояния и будем его отображать. Полная функция «движение» будет выглядеть так:

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

Запишем класс полностью так, как он должен выглядеть на самом деле, и впоследствии испытаем его. Разумеется, все здесь записано английскими буквами — других компилятор Java просто не понимает.

Но не будем спешить запускать программу и управлять созданным автомобилем. Давайте еще раз остановимся на понятии «класс», формализуем некоторые моменты и определим новые понятия.

Вы видите, что класс представляет из себя набор идентификаторов, которым присваиваются некоторые значения (это «колеса», «руль», «мотор», «переключатель скоростей») и функций («движение», «руль повернуть»). Задумайтесь, только цифры и функции — вот вам и весь автомобиль!

Цифры, входящие в состав класса, на языке Java называются полями (в некоторых книгах —свойствами), а функции —методами. В дальнейшем будем использовать только такие определения. О том, что перед нами цифра, свидетельствует предлог int (от английского «integer»). Int — это одно из ключевых слов, используемых компилятором Java для анализа программы. Еще одно ключевое слово, которое встречается в написанной программе, — это слово public. Оно сигнализирует о том, что функцию, перед которой стоит такое слово, можно использовать за пределами класса. Это слово определяет одно из ключевых свойств класса —инкапсуляцию. То есть, по умолчанию все поля и методы можно использовать только в пределах класса, в котором они определены. Но какая польза от класса, с которым нельзя общаться? Оказывается, польза большая! Программист создает класс, создавая множество полей и методов, формирующих необходимые свойства класса и недоступных снаружи. А для тех, кто будет пользоваться данным классом, он открывает только те отдельные методы и поля, которые необходимы при использовании класса. Например, в нашем случае мы определили, что мощность двигателя равна 100 л. с., и никто не сможет больше ее переопределить. Точно так же никто не сможет изменить количество колес. Но переключатель скоростей и угол поворота руля изменить может кто угодно. Также кто угодно может воспользоваться и методами класса, так как перед ними стоит ключевое слово public. Все доступные поля и методы называются интерфейсом класса. Таким образом, программист скрывает от пользователей класса всю реализацию класса и открывает только то, что считает нужным, описывая для всех правила пользования классом — интерфейс класса. Если продолжить аналогию с автомобилем, вы можете только сесть за руль и поехать, но не сможете покопаться в моторе и сменить колесо. Это запрещено, и это очень правильно! Однажды хорошо разработанный класс должен всегда функционировать только так, как задумал разработчик, и никто не должен иметь возможности его изменить. Его необходимо поместить в библиотеку, и в дальнейшем его можно только дополнить. Но об этом поговорим в следующий раз.

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov