на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Простейшие часы на Java
p align="left">

2.1 Принципы объектно-ориентированного программирования

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

1. Абстракция-Описание каждой модели производится в виде одного или нескольких классов (classes). Класс можно считать проектом, слепком, чертежом, по которому затем будут создаваться конкретные объекты. Класс содержит описание переменных и констант, характеризующих объект. Они называются полями класса (class fields). Процедуры, описывающие поведение объекта, называются методами класса (class methods). Внутри класса можно описать и вложенные классы (nested classes) и вложенные интерфейсы. Поля, методы и вложенные классы первого уровня являются членами класса (class members). Разные школы объектно-ориентированного программирования предлагают разные термины, мы используем терминологию, принятую в технологии Java.

2. Иерархия объектов давно используете для их классификации. Особенно детально она проработана в биологии. Все знакомы с семействами, родами и видами. Мы можем сделать описание своих домашних животных (pets): кошек (cats), собак (dogs), коров (cows) и прочих следующим образом.

3. Модульность-Этот принцип утверждает -- каждый класс должен составлять отдельный модуль. Члены класса, к которым не планируется обращение извне, должны быть инкапсулированы.

4. Принцип KISS -Самый основной, базовый и самый великий : принцип программирования -- принцип KISS -- не нуждается в разъяснений : и переводе: "Keep It Simple, Stupid!"

Глава 3 Принципы построения графического интерфейса

Есть много различных графических систем: MS Windows, X Window System, Macintosh. В каждой из них свои правила построения окон и их компонентов: меню, полей ввода, кнопок, списков, полос прокрутки. Эти правила сложны и запутанны. Графические API содержат сотни функций.

Для облегчения создания окон и их компонентов написаны библиотеки классов: MFC, Motif, OpenLook, Qt, Tk, Xview, OpenWindows и множество других. Каждый класс такой библиотеки описывает сразу целый графический компонент, управляемый методами этого и других классов.

В технологии Java дело осложняется тем, что приложения Java должны работать в любой или хотя бы во многих графических средах. Нужна библиотека классов, независимая от конкретной графической системы. В первой версии JDK задачу рещили следующим образом: были разработаны интерфейсы, содержащие методы работы с графическими объектами. Классы библиотеки AWT реализуют эти интерфейсы для создания приложений. Приложения Java используют данные методы для размещения и перемещения графических объектов, изменения их размеров, взаимодействия объектов.

Библиотека классов Java, основанных на peer-интерфейсах, получила название AWT (Abstract Window Toolkit). При выводе объекта, созданного в приложении Java и основанного на peer-интерфейсе, на экран создается парный ему (peer-to-peer) объект графической подсистемы операционной системы, который и отображается на экране. Эти объекты тесно взаимодействуют во время работы приложения. Поэтому графические объекты AWT в каждой графической среде имеют вид, характерный для этой среды: в MS Windows, Motif, OpenLook, OpenWindows, везде окна, созданные в AWT, выглядят как "родные" окна.

Именно из-за такой реализации peer-интерфейсов и других "родных" методов, написанных, главным образом, на языке C++, приходится для каждой платформы выпускать свой вариант JDK.

В версии JDK 1.1 библиотека AWT была переработана. В нее добавлена возможность создания компонентов, полностью написанных на Java и не зависящих от peer-интерфейсов. Такие компоненты стали называть "легкими" (lightweight) в отличие от компонентов, реализованных через peer-интерфейсы, названных "тяжелыми" (heavy).

"Легкие" компоненты везде выглядят одинаково, сохраняют заданный при создании вид (look and feel). Более того, приложение можно разработать таким образом, чтобы после его запуска можно было выбрать какой-то определенный вид: Motif, Metal, Windows 95 или какой-нибудь другой, и сменить этот вид в любой момент работы.

Эта интересная особенность "легких" компонентов получила название PL&F (Pluggable Look and Feel) или "plaf.

Была создана обширная библиотека "легких" компонентоэ Java, названная Swing. В ней были переписаны все компоненты библиотеки AWT, так что библиотека Swing может использоваться самостоятельно, несмотря на то, что все классы из нее расширяют классы библиотеки AWT.

Библиотека классов Swing поставлялась как дополнение к JDK 1.1. В состав Java 2 SDK она включена как основная графическая библиотека классов, реализующая идею "100% Pure Java", наряду с AWT.

В Java 2 библиотека AWT значительно расширена добавлением новых средств рисования, вывода текстов и изображений, получивших название Java 2D, и средств, реализующих перемещение текста методом DnD (Drag and Drop).

Кроме того, в Java 2 включены новые методы ввода/вывода Input Method Framework и средства связи с дополнительными устройствами ввода/вывода, такими как световое перо или клавиатура Бройля, названные Accessibility.

Все эти средства Java 2: AWT, Swing, Java 2D, DnD, Input Method Framework и Accessibility составили библиотеку графических средств Java, названную JFC (Java Foundation Classes).

Описание каждого из этих средств составит целую книгу, поэтому мы вынуждены ограничиться представлением только основных средств библиотеки AWT.

3.1 Компонент и контейнер

Основное понятие графического интерфейса пользователя (ГИП) -- компонент (component) графической системы. В русском языке это слово подразумевает просто составную часть, элемент чего-нибудь, но в графическом интерфейсе это понятие гораздо конкретнее. Оно означает отдельный, полностью определенный элемент, который можно использовать в графическом интерфейсе независимо от других элементов. Например, это поле ввода, кнопка, строка меню, полоса прокрутки, радиокнопка. Само окно приложения -- тоже его компонент. Компоненты могут быть и невидимыми, например, панель, объединяющая компоненты, тоже является компонентом.

Вы не удивитесь, узнав, что в AWT компонентом считается объект класса Component или объект всякого класса, расширяющего класс component. В классе component собраны общие методы работы с любым компонентом графического интерфейса пользователя. Этот класс -- центр библиотеки AWT.

Каждый компонент перед выводом на экран помещается в контейнер (container). Контейнер "знает", как разместить компоненты на экране. Разумеется, в языке Java контейнер -- это объект класса Container или всякого его расширения. Прямой наследник этого класса -- класс jcomponent -- вершина иерархии многих классов библиотеки Swing.

Создав компонент -- объект класса Component или его расширения, следует добавить его к предварительно созданному объекту класса container или его расширения одним из методов add ().

Класс Container сам является невидимым компонентом, он расширяет класс Component. Таким образом, в контейнер наряду с компонентами можно помещать контейнеры, в которых находятся какие-то другие компоненты, достигая тем самым большой гибкости расположения компонентов.

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

вия мыши и клавиатуры. В окне должны быть, как минимум, следующие стандартные компоненты.

· Строка заголовка (title bar), с левой стороны которой необходимо разместить кнопку контекстного меню, а с правой -- кнопки сворачивания и разворачивания окна и кнопку закрытия приложения.

· Необязательная строка меню (menu bar) с выпадающими пунктами меню.

· Горизонтальная и вертикальная полосы прокрутки (scrollbars).

· Окно должно быть окружено рамкой (border), реагирующей на действия мыши.

Окно с этими компонентами в готовом виде описано в классе Frame. Чтобы создать окно, достаточно сделать свой класс расширением класса Frame, как показано в листинге 8.1. Всего восемь строк текста и окно готово.

Глава 4 Апплеты

4.1 Апплеты

Кроме приложений, язык Java позволяет создавать апплеты (applets). Это программы, работающие в среде другой программы -- браузера. Апплеты не нуждаются в окне верхнего уровня -- им служит окно браузера. Они не запускаются JVM -- их загружает браузер, который сам запускает JVM для выполнения апплета. Эти особенности отражаются на написании программы апплета.

С точки зрения языка Java, апплет -- это всякое расширение класса Applet, который, в свою очередь, расширяет класс panel. Таким образом, апплет -- это панель специального вида, контейнер для размещения компонентов с дополнительными свойствами и методами. Менеджером размещения компонентов по умолчанию, как и в классе Panel, служит FiowLayout. Класс Applet находится в пакете java. applet, в котором кроме него есть только три интерфейса, реализованные в браузере. Надо заметить, что не все браузеры реализуют эти интерфейсы полностью.

Поскольку JVM не запускает апплет, отпадает необходимость в методе main (), его нет в апплетах.

В апплетах редко встречается конструктор. Дело в том, что при запуске первого создается его контекст. Во время выполнения конструктора контекст еще не сформирован, поэтому не все начальные значения удается определить в конструкторе.

Начальные действия, обычно выполняемые в конструкторе и методе mamo, в апплете записываются в метод inito класса Applet. Этот метод автоматачески запускается исполняющей системой Java браузера сразу же после загрузки апплета. Вот как он выглядит в исходном коде класса Applet:

public void init(){}

Негусто! Метод init () не имеет аргументов, не возвращает значения и должен переопределяться в каждом апплете -- подкласре класса Applet. Обратные действия -- завершение работы, освобождение ресурсов -- записываются при необходимости в метод destroy о, тоже выполняющийся автоматически при выгрузке апплета. В классе Applet есть пустая реализация этого метода.

Кроме методов init() и destroy() в классе Applet присутствуют еще два пустых метода, выполняющихся автоматически. Браузер должен обращаться к методу start() при каждом появлении апплета на экране и обращаться к методу stop(), когда апплет уходит с экрана. В методе stop() можно определить действия, приостанавливающие работу апплета, в методе start() -- возобновляющие ее. Надо сразу же заметить, что не все браузеры обращаются к этим методам как должно.

4.2 Параметры тега <applet>

Перечислим все параметры тега <appiet>.

Обязательные параметры:

· code -- URL-адрес файла с классом апплета или архивного файла;

· width и height -- ширина и высота апплета в пикселах.

Необязательные параметры:

· codebase -- URL-адрес каталога, в котором расположен файл класса апплета. Если этот параметр отсутствует, браузер будет искать файл в том же каталоге, где размещен соответствующий HTML-файл;

· archive -- файлы всех классов, составляющих апплет, могут быть упакованы архиватором ZIP или специальным архиватором JAR в один или несколько архивных файлов. Параметр задает URL-адреса этих файлов через запятую;

· align -- выравнивание апплета в окне браузера. Этот параметр имеет одно из следующих значений: ABSBOTTOM, ABSMIDDLE, BASELINE, BOTTOM, CENTER, LEFT, MIDDLE, RIGHT, TEXTTOP, TOP;

· hspace и vspace -- горизонтальные и вертикальные поля, отделяющие апплет от других объектов в окне браузера в пикселах;

· download -- задает порядок загрузки изображений апплетом. Имена изображений перечисляются через запятую в порядке загрузки;

· name -- имя апплета. Параметр нужен, если загружаются несколько ап-плетов с одинаковыми значениями code и codebase ;

· style -- информация о стиле CSS (Cascading Style Sheet); title -- текст, отображаемый в процессе выполнения апплета;

· alt -- текст, выводимый вместо апплета, если браузер не может загрузить его;

· mayscript -- не имеет значения. Это слово указывает на то, что апплет будет обращаться к тексту JavaScript.

Метод getCodeBase () возвращает URL-адрес каталога, в котором лежит файл класса апплета.

4.3 Сведения об окружении апплета

Метод getoocumentBase () возвращает URL-адрес каталога, в котором лежит HTML-файл, вызвавший апплет.

Браузер реализует интерфейс Appletcontext, находящийся в пакете java.applet. Апплет может получить ссылку на этот интерфейс методом getAppletContext().

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.