Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

События. Виды событий. Иерархия классов событий. Команда и источник. Адаптеры. (читаем картинки слева направо, потом на новую строку)

Читайте также:
  1. B. Менюдегі Вид > Очистить командасын таңдау керек
  2. Battle Team vs Team (Баттл Команда на Команду)
  3. Ангельская иерархия и королева ангелов
  4. Априорные и апостериорные вероятности классов объектов
  5. Библиотека классов Java - обзор
  6. БОЛЬНОЕ ПЬЯНОЕ ПОТОМСТВО
  7. В домах, где жили наши предки, было темно, потому что прозрачные стекла стоили очень дорого. Чаще всего окна затягивали промасленной бумагой.

Java. Основные синтаксические структуры языка Java. Типы данных Java. Массивы.

Между Java-программистами заключено соглашение, называемое "Code Conventions for the Java Programming Language", несколько пунктов этого соглашения:

Имена классов начинаются с прописной буквы; если имя содержит несколько слов, то каждое слово начинается с прописной буквы; public class MyNewClass { }

Имена методов и переменных начинаются со строчной буквы; если имя содержит несколько слов, то каждое следующее слово начинается со строчной буквы;
public double getAirTemperature() { }

Имена констант записываются полностью прописными буквами; если имя состоит из нескольких слов, то между ними ставится знак подчеркивания. double airTemperature;

8 базовых типов данных (Тип данных / Размер занимаемой области памяти / Значение по умолчанию):
Целочисленные типы:

Boolean / 8 / false

Byte / 8 / 0

Char / 16 / ‘x0’

Short / 16 / 0

Int / 32 / 0

Long / 64 / 0

Вещественные типы:

Float / 32 / 0.0F

Double / 64 / 0.0D

Массив - это индексированная совокупность переменных одного типа. Каждой переменной в массиве присвоен индекс, начиная с нуля. int[] array = new int[]{1, 4, 22};

Концепции ООП. Классы и объекты. Ключевые свойства объектов. Инкапсуляция. Время жизни объектов. Конструкторы.

Объектно-ориентированное программирование (ООП) - парадигма программирования, в которой основными концепциями являются понятия классов и объектов (экземпляров класса).

Основные понятия ООП:

Класс состоит из данных и методов, работающих с данными.

Объект является конкретным экземпляром класса.

Абстракция - это придание объекту характеристик, которые чётко определяют его концептуальные границы, отличая от всех других объектов.

Инкапсуляция - это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.

public class HelloWorld {

public static String hello = "Hello, World!";

public static void main(String[] args) {

System.out.println(hello);

}

}

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

Полиморфизм - это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

 

Объекты создаются при помощи ключевого слова new, которое вызывает конструктор класса с соответствующим списком аргументов.

Объект не уничтожается явно. Сборщик мусора автоматически утилизирует объекты, которые больше не используются.

Если конструктор в классе не определен, то автоматически создается конструктор по умолчанию.

Доступ к членам объекта (переменным и методам) осуществляется с помощью оператора <<точка>>, размещаемого между именем объекта и именем переменной.

Время жизни объектов:

Объект удаляется из памяти, когда в программе не остается ссылок на этот объект.

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

Наследование и полиморфизм. Спецификаторы доступа (private, protected, public). Иерархия классов. Перечисления. Интерфейсы и абстрактные классы.

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

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

Java предоставляет следующие модификаторы доступа (от самого разрешающего до самого ограничивающего):

public - элемент доступен из любого класса

protected - элемент доступен из подкласса или из любого класса пакета того класса, в котором находится элемент

default - элемент доступен из из любого класса пакета того класса, в котором находится элемент

private - элемент доступен лишь из того класса, в котором находится

Для ограничения множества допустимых значений для некоторого типа данных, предусмотрен тип данных – перечисление (enum).

Описание: enum Season { WINTER, SPRING, SUMMER, AUTUMN } Элементы класса enum статические.

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

public interface Mylnterface

{

public void myMethod(int x,int y);

}

Абстрактный класс - базовый класс, который не предполагает создания экземпляров. Абстрактный класс может содержать абстрактные методы и свойства.

abstract class А {

abstract void callme ();

void callmetoo() {

System.out.println("Это конкретный метод.");

}

}

Иерархия классов:

Классы в Java-коде существуют в иерархии. Классы, находящиеся выше данного класса в иерархии, являются суперклассами этого класса. Этот конкретный класс является подклассом каждого класса, находящегося выше в иерархии. Подкласс наследует свойства своих суперклассов. На вершине иерархии каждого класса находится объект Object.

 

Статические поля и методы. Порождающие методы. Блоки инициализации. Статические внутренние классы.

Поля данных, объявленные в классе как static, являются общими для всех объектов класса и называются переменными класса. Если один объект изменит значение такого поля, то это изменение увидят все объекты. Для работы со статическими атрибутами используются статические методы, объявленные со спецификатором static. Такие методы являются методами класса, не привязаны ни к какому объекту. Статические поля и методы не могут обращаться к нестатическим полям и методам напрямую, так как для обращения к статическим полям и методам достаточно имени класса, в котором они определены.

public static int variable;

public double myMethod() {}

Порождающий метод — статический метод, возвращающий экземпляр класса.

NumberFormat percentFormatter= NumberFormat.getPercentInstance();

Для чего нужны такие методы:

Конструктору нельзя присвоить имя

Для создания различных экземпляров классов (фабрика)

Блок инициализации будет выполняться при создании объекта. Он располагается между фигурными скобками, например:

class MyString

{

String NameString

{ // блок инициализации(начало)

NameString = “Hello”;

}// блок инициализации(конец)

}

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

Вложенный класс - это класс, который объявлен внутри объявления другого класса. Вложенные классы делятся на статические и нестатические. Статические вложенные классы, не имеют доступа к нестатическим полям и методам обрамляющего класса, что в некотором роде аналогично статическим методам, объявленным внутри класса. Доступ к нестатическим полям и методам может осуществляться только через ссылку на экземпляр обрамляющего класса.

 

Внутренние, локальные и анонимные классы. Пакеты. Компиляция классов. Jar-файлы.

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

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

· они видны только в пределах блока, в котором объявлены;

· они не могут быть объявлены как private, public, protected или static;

· они не могут иметь внутри себя статических объявлений (полей, методов, классов); исключением являются константы (static final);

Анонимный класс - это локальный класс без имени.

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

new Class() {

}

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

Компиляция классов:

При первом запуске программы в папке проекта в папке bin создаются файлы с расширением.class для каждого класса описанного в проекте.

JAR файл - это Java-архив (Java ARchive). Представляет собой ZIP-архив, в котором содержится часть программы на языке Java. Чтобы JAR файл был исполняемым, он должен содержать файл MANIFEST.MF в каталоге META-INF, в котором должен быть указан главный класс программы (такой класс должен содержать метод main и задаётся параметром Main-Class)

Преимущества:

Повышение эффективности загрузки. Вместо нескольких файлов отдельных классов загружается единственный файл JAR-архива.

Улучшенное хранилище файлов, так как файлы классов хранятся в одном сжатом файле архива.

Повышение защищённости. В JAR-файл можно поместить цифровую подпись, дающею конечному пользователю гарантии, что файл архива не изменился с момента её внесения. Если конечный пользователь доверяет вашей фирме, он может предоставить подписанным вами аплетам право доступа к его жестким дискам или другим важным ресурсам системы.

Независимость от платформы. Построение JAR-архивов базируется на использовании популярной программы PKZIP сжатия файлов. Однако JAR-файлы могут создаваться и сохраняться на любой компьютерной платформе.

Расширяемость. В спецификацию JAR-файлов внесены некоторые дополнения, обеспечивающие возможность дальнейших расширений.

 

6. Создание графических приложений. Принципы. Фреймы, компоненты, рендеринг.
Для поддержки пользовательских интерфейсов язык Java содержит библиотеки классов, позволяющие создавать и поддерживать окна, использовать элементы управления (кнопки, меню, полосы прокрутки и др.), применять инструменты для создания графических приложений. Графические инструменты и интерфейсы пользователя в языке Java реализованы с помощью двух библиотек:

· Пакет AWT (загружается java.awt) содержит набор классов, позволяющих выполнять графические операции и создавать элементы управления. Этот пакет поддерживается последующими версиями языка, однако считается весьма ограниченным и недостаточно эффективным.

· Пакет Swing (загружается javax.swing, имя javax обозначает, что пакет не является основным, а только расширением языка) содержит улучшенные и обновленные классы, по большей части аналогичные AWT. К именам этих классов добавляется J (JButton, JLabelи т.д.). Пакет является частью библиотеки JFC (Java FoundationClasses), которая содержит большой набор компонентов JavaBeans, предназначенных для создания пользовательских интерфейсов.

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

Работа с окнами и графикой в Java осуществляется в апплетах и графических приложениях. Апплеты – это небольшие программы, встраиваемые в Web-документ и использующие для своей визуализации средства Web-браузера. Графические приложения сами отвечают за свою прорисовку. Апплеты используют окна, производные от класса Panel, графические приложения используют окна, производные от класса Frame, порожденного от класса Window.

Суперкласс java.awt.Component является абстрактным классом, инкапсулирующим все атрибуты визуального компонента. Класс содержит большое число методов для создания компонентов управления и событий, с ними связанных. Порожденный от него подкласс Container содержит методы типа add(), которые позволяют вкладывать в него другие компоненты (объекты) и отвечает за размещение любых компонентов, которые он содержит. Класс Container порождает классы Panel и Window – фундаментальные классы при создании апплетов и фреймов.

Класс Panel используется апплетом, графический вывод которого рисуется на поверхности объекта Panel - окна, не содержащего области заголовка, строки меню и обрамления. Основу для его отображения предоставляет браузер.Графические приложения используют класс Window (окно верхнего уровня), который является основой для организации фрейма, но сам непосредственно для вывода компонент не используется. Для этого применяется его подкласс Frame. С помощью объекта типа Frame создается стандартное окно со строкой заголовка, меню, размерами.

Аналогично классы из пакета Swing используют для вывода графических изображений окна JPanel и JFrame. Еще один используемый для вывода класс Canvas, представляющий пустое окно, в котором можно рисовать, является наследником класса Component.

В Java окно верхнего уровня (не содержащееся в другом окне) называется фреймом. В отличие от апплетов (апплет – это приложение встраиваемое в веб-страницу и исполняемое на компьютере пользователя в тот момент, когда пользователь эту страницу посещает (т. е. Просматривает через свой браузер).) графические приложения, расширяющие класс java.awt.Frame или его подкласс jawax.swing.JFrame, не нуждаются в браузере. Для создания графического интерфейса приложения необходимо предоставить ему в качестве окна для вывода объект Frame или JFrame, в который будут помещаться используемые приложением компоненты GUI (Graphics User Interface). Большинство своих методов класс Frame наследует по иерархии от классовComponent, Container и Window. Класс JFrame из библиотеки Swing является подклассом класса Frame.Такое приложение запускается с помощью метода main() и само отвечает за свое отображение в окне Frame или JFrame.

Рендеринг – процесс отрисовки всех объектов

7. Работа с графикой. Рисование примитивов, вывод текста в окно программы.

При создании компонента, т. е. объекта класса Component, автоматически формируется его графический контекст (graphics context). В контексте размещается область рисования и вывода текста и изображений. Контекст содержит текущий и альтернативный цвет рисования и цвет фона — объекты класса color, текущий шрифт для вывода текста — объект класса Font.

В контексте определена система координат, начало которой с координатами (0, 0) расположено в верхнем левом углу области рисования, ось Ох направлена вправо, ось Оу — вниз. Точки координат находятся между пикселами. Управляет контекстом класс Graphics или новый класс Graphics2D, введенный в Java 2. Поскольку графический контекст сильно зависит от конкретной графической платформы, эти классы сделаны абстрактными. Поэтому нельзя непосредственно создать экземпляры класса Graphics или Graphics2D. Однако каждая виртуальная машина Java реализует методы этих классов, создает их экземпляры для компонента и предоставляет объект класса Graphics методом getGraphics () класса Component или как аргумент методов paint() И update(). Посмотрим сначала, какие методы работы с графикой и текстом предоставляет нам класс Graphics.

Методы класса Graphics

При создании контекста в нем задается текущий цвет для рисования, обычно черный, и цвет фона области рисования — белый или серый. Изменить текущий цвет можно методом setcoior (Color newCoior), аргумент newcoior которого — объект класса Color.

Узнать текущий цвет можно методом getcolor (), возвращающим объект класса color.

Как задать цвет

Цвет, как и все в Java, — объект определенного класса, а именно, класса color. Основу класса составляют семь конструкторов цвета. Самый простой конструктор:

Color(int red, int green, int blue) создает цвет, получающийся как смесь красной red, зеленой green и синей blue составляющих. Эта цветовая модель называется RGB. Каждая составляющая меняется от 0 (отсутствие составляющей) до 255 (полная интенсивность этой составляющей).

Во втором конструкторе интенсивность составляющих можно изменять более гладко вещественными числами от 0.0 (отсутствие составляющей) до 1.0 (полная интенсивность составляющей): Color(float red, float green, float blue) Например: Color someColor = new Color(O.OSf, 0.4f, 0.95f);

Третий конструктор

Color(int rgb) и т.п.

Как нарисовать чертеж

Основной метод рисования drawLine(int xl, int yl, int х2, int y2) вычерчивает текущим цветом отрезок прямой между точками с координатами (xl, yl) и (х2, у2).

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

Другие графические примитивы:

· drawRect(int x, int у, int width, int height) — чертит прямоугольник со сторонами, параллельными краям экрана, задаваемый координатами верхнего левого угла (х, у), шириной width пикселов и высотой height пикселов;

· draw3DRect(int x, int у, int width, int height, boolean raised) — чертит прямоугольник, как будто выделяющийся из плоскости рисования, если аргумент raised равен true, или как будто вдавленный в плоскость, если аргумент raised равен false;

· drawOval(int x, int у, int width, int height) — чертит овал, вписанный в прямоугольник, заданный аргументами метода. Если width == height, то получится окружность;

· drawArc(int x, int у, int width, int height, int startAngle, int arc) — чертит дугу овала, вписанного в прямоугольник, заданный первыми четырьмя аргументами. Дуга имеет величину arc градусов и отсчитывается от угла startAngle. Угол отсчитывается в градусах от оси Ох. Положительный угол отсчитывается против часовой стрелки, отрицательный — по часовой стрелке;

· drawRoundRect (int x, int у, int width, int height, int arcWidth, int arcHeight) — чертит прямоугольник с закругленными краями. Закругления вычерчиваются четвертинками овалов, вписанных в прямоугольники шириной arcwidth и высотой arcHeight, построенные в углах основного прямоугольника;

Класс Polygon

Этот класс предназначен для работы с многоугольником, в частности, с треугольниками и произвольными четырехугольниками.

Объекты этого класса можно создать двумя конструкторами:

Polygon () — создает пустой объект;

Polygon(int[] xPoints, int[] yPoints, int nPoints) — задаются вершины многоугольника(xPoints[i], yPoints[i]) и их число nPoints

После создания объекта в него можно добавлять вершины методом addPoint(int x, int у)

Как вывести текст

Для вывода текста в область рисования текущим цветом и шрифтом, начиная с точки (х, у), в, классе Graphics есть несколько методов:

· drawstring (String s, int x, int y> — выводит строку s;

· drawBytes(byte[] b, int offset, int length, int x, int у) — выводит length элементов массива байтов ь, начиная с индекса offset;

· drawChars(chart] ch, int offset, int length, int x, int у) — выводит length элементов массива символов ch, начиная с индекса offset.

Как установить шрифт

Метод setFont(Font newFont) класса Graphics устанавливает текущий шрифт для вывода текста.

Метод getFont () возвращает текущий шрифт.

Как и все в языке Java, шрифт — это объект класса Font. Посмотрим, какие возможности предоставляет этот класс.

Как задать шрифт

Объекты класса Font хранят начертания (glyphs) символов, образующие шрифт. Их можно создать двумя Конструкторами:

· Font (Map attributes) — задает шрифт с заданными аргументом attributes атрибутами. Ключи атрибутов и некоторые их значения задаются константами класса TextAttnbute из пакета java.awt.font. Этот конструктор характерен для Java 2D и будет рассмотрен далее в настоящей главе.

· Font (String name, int style, int size) — задает Шрифт ПО имени name, со стилем style и размером size типографских пунктов. Этот конструктор характерен для JDK 1.1, но широко используется и в Java 2D в силу своей простоты.

События. Обработка событий. Модель делегирования событий. Использование одного обработчика событий для нескольких объектов. Использование внутренних, локальных и анонимных классов для обработки событий.

События. Виды событий. Иерархия классов событий. Команда и источник. Адаптеры. (читаем картинки слева направо, потом на новую строку)

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


Дата добавления: 2015-10-29; просмотров: 179 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Как задать шрифт| Принципы создания пользовательского интерфейса. Контейнеры, панели. Основные компоненты библиотеки Swing.

mybiblioteka.su - 2015-2024 год. (0.021 сек.)