Соглашение | Публикация статей
Красивые рольшторы - roll-service.by / Ремонт в Минске tvoi-master.by

Объектная модель Java
Категория: Статьи

Классы
Класс есть языковая конструкция, определяющая поля данных объектов данного класса (instance variables) и их поведение (methods). Практически класс в Java сам по себе не является объектом. Это лишь шаблон, который определяет, из каких частей будет состоять объект, созданный с помощью этого класса, и как он будет себя вести.
Простейший пример описания класса
class Point extends Object {
public double x;
public double y;
}
Создание объекта определенного класса
Создать объект описанного выше класса можно декларацией
Point myPoint; // объявление переменной типа Point
myPoint = new Point(); // инициализация,
а обратиться к полям данных следующим образом
myPoint.x = 10.0;
myPoint.y = 25.7;

Конструкторы
При объявлении класса возможно указать методы специального вида, называемые конструкторами и предназначенные для инициализации созданного объекта. Имя этих методов должно совпадать с именем класса, они могут иметь какое-то количество аргументов, например:
class Point extends Object {
Point() {
x = 0.0;
y = 0.0;
}
Point(double x, double y) {
this.x = x;
this.y = y;
}
public double x;
public double y;
}
а использованы они могут быть следующим образом
Point a;
Point b;
a = new Point();
b = new Point(1.0, 2.0);
Имя this в определении конструктора с аргументами используется для обозначения самого объекта, в методе которого мы находимся, в тех случаях, когда ссылка на этот объект не подразумевается неявно.
Методы и посылка сообщений
Если один объект в программе заставляет другой выполнить какую-то операцию, то принято говорить, что он посылает сообщение другому объекту. Например, можно переопределить класс следующим образом:
Pclass Point extends Object {
private double x;
private double y;
public void setX(double x) {
this.x = x;
}
public void setY(double y) {
this.y = y;
}
...
}
Поля x и y теперь недоступны извне класса, но для изменения их состояния предусмотреys специальные методы setX и setY.

Финализаторы
Специальное имя finalize зарезервировано для метода, который будет вызван сборщиком мусора перед тем, как объект будет уничтожен. В силу того, что Java освобождает разработчиков от необходимости самим следить за освобождением памяти, занимаемой объектами, необходимость в таких методах обычно возникает лишь тогда, когда надо освободить какие-то внешние ресурсы, например, закрыть открытый файл:

protected void finalize() {
try {
file.close();
} catch (Exception e) {
}
}

Производные классы
Наследование классов позволяет создавать новые типы объектов, эффективно использующие функциональность уже существующих типов. Новый тип обычно называется производным классом, а тот, чьи свойства наследуются -- базовым классом.
Например, можно описать новый класс, соответствующий координатам точки в трехмерном пространстве, на основе уже описанного класса для точки на плоскости.
class ThreePoint extends Point {
protected double z;
ThreePoint() {
super();
z = 0.0;
}
ThreePoint(double x, double y, double z) {
super(x, y);
this.z = z;
}
}
Здесь была добавлена новая координату z, а поля x и y (и методы доступа к ним) унаследовали от класса Point.

Контроль доступа
Контроль доступа к данным и методам объекта в Java несколько отличается от С++. Помимо трех уровней доступа, имеющихся в С++ (public, private, protected) имеется четвертый, находящийся где-то между уровнями public и protected. Он не имеет имени и используется по умолчанию, когда явно не указан другой уровень. Поля этого типа доступны внутри только одного программного пакета. Пакет представляет группу классов, объединенных в одну логическую группу. Например, классы, описывающие точку и прямоугольник в графическом пакете, могут иметь прямой доступ к полям данных друг друга, запрещенный обычно для остального мира.
Также следует отметить, что контроль доступа в C++ помогает программисту лишь при построении программы. Различия между полями, помеченными public и private, отсутствуют в выполняемом модуле, созданном с использованием этого языка. В Java контроль доступа реален, т.к. он осуществляется не только при компиляции, но и непосредственно перед запуском кодов на выполнение виртуальной машиной.

Переменные и методы класса
Как и С++ язык Java позволяет использовать переменные и методы, принадлежащие классу целиком. Для определения их используется ключевое слово static. Естественно, что методы самого класса не могут оперировать данными и методами объекта класса, т.к. они не относятся ни к какому определенному объекту. Например, версия реализации класса Rectangle может быть задана следующим образом:
class Rectangle extends Object {
static final int version = 2 ;
static final int revision = 0 ;
}
Ключевое слово final означает, что значение поля окончательное и изменению не подлежит (это константа).

Абстрактные методы
Абстрактные методы -- это методы, для которых в данном классе не определена их реализация. Мы указываем лишь на необходимость наличия методов с данным протоколом. Конкретная реализация должна быть осуществлена классами-наследниками. В то же время остальная, "неабстрактная" часть класса может содержать конкретную информацию, которая может быть использована производными классами.
Например:
abstract class Graphical extends Object
{
protected Point lowerLeft;
protected Point upperRight;
...
public void setPosition(Point ll, Point ur)
{ lowerLeft = ll;
upperRight = ur;
}
abstract void drawMyself();
}
class Rectangle extends Graphical
{ void drawMyself()
{ ....
}
}
Здесь был описан класс Graphical. В нем объявлено свойство всех графических элементов иметь какое-то положение на плоскости. Каждый элемент обязан также иметь метод для рисования самого себя, однако никакого метода рисования по умолчанию быть не может. Класс Rectangle, представляющий собой конкретную реализацию для типа Graphical, реализует также этот метода для объекта прямоугольной формы.
Класс, содержащий хотя бы один абстрактный метод, должен быть объявлен как абстрактный. Создание экземпляров такого класса невозможно.


Статьи по теме:

Интеграция Ibm Rational Clearquest И Microsoft Project - Ключ К Успешному Планированию
ПРОБЛЕМА ПРЕДСТАВЛЕНИЯ ЗНАНИЙ В КОМПЬЮТЕРНЫХ СИСТЕМАХ
Учет Клиентов, Учет Заказов - Самое Востребованное Программное Обеспечение
Права собственности
Сети
WordPad: Выделение текста начертанием
Темп развития CompactPCI
Вход в систему с полномочиями администратора
Линукс привелось в действие приборы: Теперь в рынке
ПРИНЦИПЫ ПОСТРОЕНИЯ САПР
Линейная Магнитная Запись Dlt (Dlt-V/Sdlt/Dlt-S4)
Политика конфиденциальности Microsoft Internet Explorer
МИНИМАЛЬНЫЙ НАБОР ТИПОВЫХ ОПЕРАЦИЙ ПРИ ПОДГОТОВКЕ ТЕКСТА
Графические интерфейсы пользователя
Анализ содержимого CMOS-памяти
Устройства ввода
Горизонтальная подсистема
Порты контроллера НГМД
Глобальный уровень
Софт (Программы) Для Counter - Strike
Мониторы и видеоконтроллеры
КОМПЬЮТЕРНЫЕ ПРЕСТУПЛЕНИЯ
Модуль F_Anti
Описание построения требуемых графиков и диаграмм
Работа с дисками по средствам MS-DOS
Универсальный мультисенсор SVEA совмещает в себе датчик освещенности и присутствия
Устройство Netping Cooler Board Поступило На Склад Компании Зао «Лайт Коммуникейшн»
Воспроизведение аудио- и видеофайлов
Работа накопителя
Что такое сжатые диски
Технический аспект социальных условий и предпосылок
Задачи, реализуемые на квантовых компьютерах
Как Поставить Ударение В Редакторе Word 2007
Появление перцептрона
Государственное регулирование информатизации Украины
Бесплатный софт для всех!
Дата создания или изменения файла
Решение функциональных и вычислительных задач средствами пакета прикладных программ MathCAD2000
Нарушение правил эксплуатации ЭВМ, системы ЭВМ или их сети (ст. 274 УК)
Graycatsoft - Сайт Программного Обеспечения
Черный Баннер - История его обнаружения
Создание загрузочной дискеты
Изменение формата графического файла
Загрузочная запись
Операторы Turbo Pascal
Совершенная Система Цифрового Видеонаблюдения Uniteco Dvs
Функции BIOS для работы с дисками
ВОЗМОЖНОСТИ ТЕКСТОВОГО РЕДАКТОРА
Почему именно Vista?
Интерфейсные места кабельной системы
Передача файлов (ftp)
Конверт
Мышление и информация
Теория фреймов
Компоненты, модули, мамботы в CMS Joomla