ОБЗОР СИСТЕМЫ ИМЕНОВАНИЯ В JAVA - Студенческий научный форум

IX Международная студенческая научная конференция Студенческий научный форум - 2017

ОБЗОР СИСТЕМЫ ИМЕНОВАНИЯ В JAVA

Ланщикова М.П. 1
1Балаковский инженерно-технологический институт
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Обзор системы именования в Java.

Имена (names) используются в программе для доступа к объявленным (declared) ранее "объектам", "элементам", "конструкциям" языка (все эти слова-синонимы были использованы здесь в их общем смысле, а не как термины ООП). Конкретнее, в Java имеются имена:

* пакеты;* классы;* интерфейсы;* элементы (member) ссылочных типов:* поля;* методы;* внутренние классы и интерфейсы;* аргументы:* методов;* конструкторов;* обработчиков ошибок;* локальные переменные.

Простые и составные имена. Элементы

Имена бывают простыми (simple), состоящими из одного идентификатора (они определяются во время объявления) и составными (qualified), состоящими из последовательности идентификаторов, разделенных точкой.

У пакетов и ссылочных типов (классов, интерфейсов, массивов) есть элементы (members). Доступ к элементам осуществляется с помощью выражения, состоящего из имен, например, пакета и класса, разделенных точкой.

Далее классы и интерфейсы будут называться объединяющим термином тип (type).

Элементами пакета являются содержащиеся в нем классы и интерфейсы, а также вложенные пакеты. Чтобы получить составное имя пакета, необходимо к полному имени пакета, в котором он располагается, добавить точку, а затем его собственное простое имя. Например, составное имя основного пакета языка Java – java.lang (то есть простое имя этого пакета lang, и он находится в объемлющем пакете java). Внутри него есть вложенный пакет, предназначенный для типов технологии reflection, которая упоминалась в предыдущих главах. Простое название пакета reflect, а значит, составное – java.lang.reflect.

Простое имя классов и интерфейсов дается при объявлении, например, Object, String, Point. Чтобы получить составное имя таких типов, надо к составному имени пакета, в котором находится тип, через точку добавить простое имя типа. Например, java.lang.Object, java.lang.reflect.Method или com.myfirm.MainClass. Смысл последнего выражения таков: сначала идет обращение к пакету com, затем к его элементу – вложенному пакету myfirm , а затем к элементу пакета myfirm – классу MainClass. Здесь com.myfirm – составное имя пакета, где лежит класс MainClass, а MainClass — простое имя. Составляем их и разделяем точкой – получается полное имя класса com.myfirm.MainClass.

Для ссылочных типов элементами являются поля и методы, а также внутренние типы (классы и интерфейсы). Элементы могут быть, как непосредственно объявлены в классе, так и получены по наследству от родительских классов и интерфейсов, если таковые имеются. Простое имя элементов также дается при инициализации. Например, toString(), PI, InnerClass. Составное имя получается путем объединения простого или составного имени типа, или переменной объектного типа с именем элемента. Например, ref.toString(), java.lang.Math.PI, OuterClass.InnerClass.Имена и идентификаторы

Теперь, когда мы рассмотрели простые и составные имена, уточним разницу между идентификатором (напомним, что это вид лексемы) и именем.

Понятно, что простое имя состоит из одного идентификатора, а составное - из нескольких. Однако не всякий идентификатор входит в состав имени.

Во-первых, в выражении объявления (declaration) идентификатор еще не является именем. Другими словами, он становится именем после первого появления в коде в месте объявления.

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

country.getCity().getStreet();

В данном примере getStreet является не именем, а идентификатором, так как соответствующий метод вызывается у объекта, полученного в результате вызова метода getCity(). Причем country.getCity как раз является составным именем метода.

Наконец, идентификаторы также используются для названий меток (label). Пример:

num:for (int num = 2; num 0) {

mp.setMyX(mp.getMyX() - 5);

}

break;

case KeyEvent.VK_DOWN:

if (mp.getMyY() < 500 - 1.8*mp.getMySize()) {

mp.setMyY(mp.getMyY() + 5);

}

break;

case KeyEvent.VK_UP:

if (mp.getMyY() > 0) {

mp.setMyY(mp.getMyY() - 5);

}

break;

default:

throw new AssertionError();

}

mp.repaint();

}

рис. 4

Листинг Листинг Maria.java

package maria;

public class Maria {

public static void main(String[] args) {

NewJFrame frame = new NewJFrame();

frame.setVisible(true);

}

}

Листинг NewJFrame.java

package maria;

import java.awt.Color;

import java.awt.event.KeyEvent;

public class NewJFrame extends javax.swing.JFrame {

MyPanel mp = new MyPanel();

public NewJFrame() {

super("Ланщикова М.П. Вартант №4");

initComponents();

setLocationRelativeTo(null);

mp.setBackground(Color.DARK_GRAY);

mp.setSize(500, 500);

mp.setLocation(0, 0);

add(mp);

}

@SuppressWarnings("unchecked")

//

private void initComponents() {

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setPreferredSize(new java.awt.Dimension(500, 500));

setResizable(false);

addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

formKeyPressed(evt);

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGap(0, 400, Short.MAX_VALUE)

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGap(0, 300, Short.MAX_VALUE)

pack();

}//

private void formKeyPressed(java.awt.event.KeyEvent evt) {

switch (evt.getKeyCode()) {

case KeyEvent.VK_RIGHT:

if (mp.getMyX() < 500 - 1.55*mp.getMySize()) {

mp.setMyX(mp.getMyX() + 5);

}

break;

case KeyEvent.VK_LEFT:

if (mp.getMyX() > 0) {

mp.setMyX(mp.getMyX() - 5);

}

break;

case KeyEvent.VK_DOWN:

if (mp.getMyY() < 500 - 1.8*mp.getMySize()) {

mp.setMyY(mp.getMyY() + 5);

}

break;

case KeyEvent.VK_UP:

if (mp.getMyY() > 0) {

mp.setMyY(mp.getMyY() - 5);

}

break;

default:

throw new AssertionError();

}

mp.repaint();

}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new NewJFrame().setVisible(true);

}

});

}

}

break; case KeyEvent.VK_LEFT: if (mp.getMyX() > 0) { mp.setMyX(mp.getMyX() - 5); } break; case KeyEvent.VK_DOWN: if (mp.getMyY() < 500 - 2*mp.getMySize()) { mp.setMyY(mp.getMyY() + 5); } break; case KeyEvent.VK_UP: if (mp.getMyY() > 0) { mp.setMyY(mp.getMyY() - 5); } break; default: throw new AssertionError(); } mp.repaint();

}

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new NewJFrame().setVisible(true); } });

}

Листинг MyPanel.java

package maria;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Panel;

public class MyPanel extends Panel{

private int MyX = 100;

private int MyY = 100;

private int MySize = 100;

public MyPanel() {

}

@Override

public void paint(Graphics g) {

g.setColor(Color.BLUE);

g.fillRect(MyX, MyY, MySize*3/2, MySize/2);

g.fillRect(MyX, MyY, MySize/2, MySize);

g.setColor(Color.RED);

g.fillOval(MyX, MyY+MySize/2, MySize, MySize);

}

public int getMyX() {

return MyX;

}

public void setMyX(int MyX) {

this.MyX = MyX;

}

public int getMyY() {

return MyY;

}

public void setMyY(int MyY) {

this.MyY = MyY;

}

public int getMySize() {

return MySize;

}

public void setMySize(int MySize) {

this.MySize = MySize;

}

}

Список используемых источников
  1. Программирование на Java: Информация/ Н. Вязовик - М.: На­ци­ональ­ный От­кры­тый Уни­вер­си­тет "ИН­ТУ­ИТ".

  2. Программирование на Java/Патрик Нимейер, Дэниэл Леук [пер. с англ. Райтмана М.А.]. – Москва: Эксмо, 2014. – 1216 с.

  3. Герман О.В., Герман Ю.О. Программирование на Java и C# для студентов – СПб.: БХВ-Петербург, 2005. – 512с.: ил.

  4. Гаврилов А.В., Клименков С.В., Цопа Е.А. Программирование на Java. Конспект лекций – СПб: СПбГУ ИТМО, 2010. – 130 с.

  5. NetBeans IDE - универсальная интегрированная среда разработки приложений – Интернет ресурс – URL доступа – http://hightech.in.ua/content/art-netbeans-ide
Просмотров работы: 247