Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

РассылкиАрхив Java programmingВыпуск 22-й

Java programming выпуск 22-й

Здравствуйте дорогие читатели!

Начинающим

Продолжаем разговор о классах.

К сожалению никто из вас не прислал классов для дальнейшего рассмотрения примеров (в прошлом номере я просил вас об этом). Поэтому придется ограничится примитивным классам Point и рассматривать все примеры на нем.

Объявление методов

Методы - это подпрограммы, присоединенные к кон­кретным определениям классов. Они описываются внутри определения класса на том же уровне, что и переменные объектов. При объявлении метода задаются тип возвращаемого им результата и список параметров. Общая форма объявления метода такова:

тип имя_метода (список формальных параметров)
{
тело метода:
}

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


class Point 
{ 
 int х, у; 
 void init(int a, int b)
 { 
  х = а; 
  У = b; 
 }
} 

Вызов метода

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

Скрытие переменных представителей

В языке Java не допускается использование в одной или во вложен­ных областях видимости двух локальных переменных с одинаковыми именами. Интересно отметить, что при этом не запрещается объявлять формальные параметры методов, чьи имена совпадают с именами переменных представителей. Давайте рассмотрим в качестве примера иную версию метода init, в которой формальным пара­метрам даны имена х и у, а для доступа к одноименным переменным текущего объекта используется ссылка this.


class Point 
{ 
 int х, у; 
 void init(int х, int у)
 { 
  this.x = х; 
  this.у = у 
 } 
} 

class TwoPointsInit
{ 
 public static void main(String args[])
 { 
  Point p1 = new Point(); 
  Point p2 = new Point(); 
  p1.init(10,20); 
  p2.init(42,99); 
  System.out.println("x = " + p1.x + " у = •• + p-l.y); 
  System.out.printlnC'x = " + p2.x + " у = •• + p2.y); 
 } 
} 

Конструкторы

Инициализировать все переменные класса всякий раз, когда создается его очередной представитель — довольно утомительное дело даже в том случае, когда в классе имеются функции, подобные методу init. Для этого в Java предусмотрены специальные методы, называемые конструкторами. Конструктор — это метод класса, который инициали­зирует новый объект после его создания. Имя конструктора всегда со­впадает с именем класса, в котором он расположен (также, как и в C++). У конструкторов нет типа возвращаемого результата - никакого, даже void. Заменим метод init из предыду­щего примера конструктором.


class Point 
{ 
 int х, у; 
 Point(int х, int у)
 { 
  this.x = х; 
  this.у = у; 
 }
} 

class PointCreate
{ 
 public static void main(String args[])
 { 
  Point p = new Point(10,20); 
  System.out.println("x = " + p.x + " у = " + p.у); 
 }
} 

Тема "на заказ"

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

И так работа зашевелилась. На данный момент проект находится на заключительной стадии проектирования, но только с моей стороны. По завершении проектирования я выложу проект на сайте, и уже потом после всех ваших дополнений, поправок и замечаний мы вместе придем к окончательному варианту проекта.

Хотя проект находится в стадии проектирования, некоторые части (задачи), которые уже имеют явные очертания и необходимы на первом этапе уже разработки, поступили в разработку. К таким задачам относятся: AI-парсер, SVG-парсер, различные фильтры растровой графики.

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

Теперь хотелось бы разрешить некоторые вопросы.

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

  1. программисты;
  2. cпециалисты в компьютерной графике;
  3. дизайнеры;
  4. переводчики;
  5. HTML-кодеры;
  6. тестеры;
  7. и еще один менеджер для продвижения проекта за рубежом.

Что это за формат SVG? На сайте я уже выложил краткое описание возможностей формата.

И относительно сроков реализации проекта – пока они не установлены, так как еще не сформирована команда.

Вопрос - ответ

Вопрос: Меня интересует тема "Ява для мобильных телефонов" Будет ли на сайте информация по этой теме?
Антон

Ответ: Да информация уже появилась. Открылся раздел "Мобильная Java" который уже пополнился статьями.

Вопрос:> Как можно динамически подключить пакет, который записан в .jar файле? То есть есть сервер, которому через socket передают из другой JVM .jar файл и он сохраняет его локально на диске. Потом, посредством RMI, вызывается метод класса, который находится в этом .jar файле. Как "сказать" серверу, что этот метод находится в свежепринятом .jar файле? Вступают ли в этом случае в игру хитрые заморочки classloader-а?
Евгений

Ответ: методами RMI вы этого сделать не сможете, по тому что методы доступны только из запущенного класса. Можно с помощью класслоадера подгрузить этот класс и вызвать его метод. Или с помощью того же класслоадера подгрузить этот класс, запустить его и средствами RMI вызвать метод. Как видите в этом случае первый вариант проще.

Вопрос: Как переменной присвоить значение ровное текущему году. Другими словами как системный год узнать?
Артем Золочевский

Ответ:

Есть в пакете java.util класс Date.

Класс Date используется для операций с датой и временем. Через него вы можете получить доступ к дате, месяцу, году, дню недели, часам, минутам, секундам.

Класс Date включает в себя набор методов для получения и установки отдельных атрибутов, хранящихся в объекте. Каждая из функций семейства get — getYear, getMonth, getDate, getDay, getHours, getMi-nutes и getSeconds — возвращает целое значение. Каждой из функций семейства set — setYear, setMonth, setDate, setHours, setMinutes и setSeconds — в качестве параметра передается целое значение. Вы также можете получить представление объекта Date в виде значения типа long с помощью метода getTime. Возвращаемое этим методом значение представляет собой число миллисекунд, прошедших после 1 января 1970 года.

Вопрос: Как в Java осуществляется операция ввода с клавиатуры(Какой функцией)?

Ответ:

Насколько я знаю нет такой функции. Можно воспользоваться подобной конструкцией:


 BufferedReader in = new 
 BufferedReader(new InputStreamReader(System.in));
 String readl;

 while ((readl = in.readLine())!=null)
 {
  out.println(readl);
  if (readl.equalsIgnoreCase("close")) break;
  if (readl.equalsIgnoreCase("exit")) break;
 }

 in.close();

Вопрос: Как из jsp или сервлета передать клиенту бинарный файл? Как заставить броузер выводить запрос на сохранение или открытие этого файла?
gRIDmER

Ответ: На этот вопрос gRIDmER нашел ответ сам и описал его в небольшом примере: Передача бинарного файла клиенту из JSP

Вопрос: Почему на базовый тип данных отводится только определенный размер памяти а небольше или меньше , вдруг его нехватит?
ivan

Ответ: :)) Размер области памяти, занимаемой переменными стандартных типов, различный на разных платформах - а это одна из основных проблемы при переносе программ на различные платформы.

Вопрос: Как запретить в JTable возможность менять местами столбцы?

Ответ:


jTable1.getTableHeader().setReorderingAllowed(false);

Вопрос: Хотелось узнать реально ли осуществить на JAVA рассылку по результатам заполнения некоторой формы.
Barishev

Ответ: Конечно можно!!! Java это мощный язык программирования, на нем можно сделать практически все!

Программный код…

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

Так как код получился давольно большой предлагаю посмотреть его на сайте: Пример реализации игры пятнашки.

JavaScript

Вопрос: Подскажите пожалуйсто можно ли сделать на javascript чтобы отрисовывалась одна таблица и по нажатию на определенную кнопку или ссылку отображалась либо скрывалась строка(строки) в таблице
Alex

Ответ: Мне не видится это возможным, можно только спрятать строку используя свойство visibility, но если строка содержит текст, между строчками (верхней и нижней от строки которую прячем) останется промежуток высотой в спрятанную строку. А так как строка содержит текст, высоту строки мы не сможем сделать меньше высоты текста.

Вопрос: Как сделать двойное меню. Расскажите пожалуйста поподробней.
PASHA

Ответ: Данный вопрос уже проскакивал в рассылке, вот посмотрите реализацию меню.

Вопрос: Как перерисовать окно или фрейм после события на кнопке(чтобы после нажатия отобразилась картинка отобразилась картинка)?
Porsh

Ответ: Я не совсем вас понял. Если вам надо отобразить новую картинку, то достаточно сделать следующее:


document.images[name].src="URL"
Если вам надо перерисовать окно или фрейм можно сделать так:

nameframe.document.location.href="URL"

nameframe.document.location.href=nameframe.document.location.href
или если нужно оставить текущею страницу

Вопрос: Hеподскажите, как сделать что б чеpез опpеделенное вpемя загpyжался опpеделенный фон.
Andrew

Ответ: Вот посмотрите маленький скрипт: Смена фона через определенное время.

Вопрос: Помогите написать игру сапер на JavaScript.
Игорь

Ответ: Можете посмотреть реализацию сапера на любом сайте с онлайн играми. Например, тут: http://games.tooyoo.ru/saper/index.shtm





Вопросы присылайте на E-mail [email protected] с пометкой "Вопрос по Java".

Жду вопросов и предложений.

Юрий Ладик.

Подписаться на эту рассылку и посмотреть архив можно тут /subs/subs.html


Дэвид Флэнаган
"Java в примерах. Справочник"
Подробнее>>
Заказать>>


Н. А. Вязовик
"Программирование на Java. Курс лекций"
Подробнее>>
Заказать>>

Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun переводит мобильные устройства с Java ME на Java SE
Хакерская атака!



Выпуск 29-й
Выпуск 28-й
Выпуск 27-й
Выпуск 26-й
Выпуск 25-й
Выпуск 24-й
Выпуск 23-й
Выпуск 22-й
Выпуск 21-й
Выпуск 20-й
Выпуск 19-й
Выпуск 18-й
Выпуск 17-й
Выпуск 16-й
Выпуск 15-й
Выпуск 14-й
Выпуск 13-й
Выпуск 12-й
Выпуск 11-й
Выпуск 10-й
Выпуск 9-й
Выпуск 8-й
Выпуск 7-й
Выпуск 6-й
Выпуск 5-й
Выпуск 4-й
Выпуск 3-й
Выпуск 2-й
Выпуск 1-й