[Назад]   [Вперед]

Виктор Кон,   vkBook, Java-First

Первый класс

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

Открываем редактор текстов и начинаем файл с названием "First.java" в папке "First". Как я уже писал, сначала должны идти строки типа
import *;
Но так как мы не знаем еще какие классы мы будем использовать, то оставим их на потом. Начнем писать головной класс. И вспомним о входных параметрах. Можно все определить в тексте программы, а можно сделать более гибко, оставить себе свободу выбора параметров. Один из путей так сделать - открыть файл "First.ini" и записать туда несколько строк текста. Есть еще один путь - указать параметры на командной строке, запускающей файл. Это можно красиво сделать в виде командного (batch) файла. Java предоставляет такую возможность и иногда ей можно пользоваться. Но метод с ini-файлом более гибкий и более удобный, поэтому мы пойдем этим путем. Итак запишем первый класс
public class First {
  public static void main(String[] args) throws IOException {
    MyPro.mtit=MyPro.readLine("First.ini",1);
    MainForm mf = new MainForm(); mf.make();
    mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    final String plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
    try{ UIManager.setLookAndFeel(plaf); SwingUtilities.updateComponentTreeUI(mf); }
    catch(Exception e){e.printStackTrace();}
    mf.setVisible(true);
}}
А теперь комментарии. К первой строке я могу лишь добавить, что в Java, как и в языке C, блоки кода, которые обрабатываются как один оператор, отмечаются фигурными скобками. Кто никогда так не делал, поначалу не очень одобряют такую грамматику. Я могу сказать только, что ко всему быстро привыкаешь. Иногда довольно противно считать сколько скобок открыли и забыли закрыть. Тогда пишите каждую скобку на отдельной строке и будет все видно. И очень полезно делать отступы текста, отмечающие вложения блоков. Я делаю отступ на 1 символ, используя моноширинный шрифт. Этого вполне достаточно. Редактор Мясникова позволяет быстро переключать шрифты, если необходимо и это очень удобно. В вэб-странице отступы делаются сложнее, но здесь текст написан только для иллюстрации.

Итак, после объявления класса его тело открывает фигурная скобка. Затем идет объявление стандартного метода main(). Это обязательная первая функция, с которой начинает работу Java RE. У нее есть аргумент в виде массива строк args. Каждая строка этого массива принимает значение, полученное из фрагмента текста на командной строке при вызове программы. Если на командной строке ничего не будет, то этот массив будет пустой. Пустой или отсутствующий объект в Java называется null. Так как функция main ничего не возвращает, то она пишется с приставкой void (пустая).

Далее идут слова "throws IOException". Они означают, что мы будем читать или записывать файлы, а все такие действия Java заставляет принудительно обрабатывать на предмет возможной ошибки в процессе работы программы. Данная запись просто задает режим такой обработки. Рассмотрим следующую строку.
MyPro.mtit=MyPro.readLine("First.ini",1);
Здесь мы определяем статическую переменную (строку) класса MyPro с названием "mtit", используя при этом статическую функцию того же класса MyPro c названием readLine. У нее два аргумента - имя "First.ini" нашего файла и номер строки. Класса MyPro в Java нет. Нам его надо будет написать. Сейчас нам важно, что функция readLine() считала первую строку из нашего файла и запомнила ее в переменной mtit. На самом деле mtit - это объект класса String, но я буду иногда объекты называть переменными, так понятнее для тех, что программировал на примитивных языках, да и в школе математику учат. В этой строке мы будем писать титульный заголовок нашего главного окна программы. Следующая строка
MainForm mf = new MainForm(); mf.make();
объявляет объект класса MainForm с именем mf. Это и есть наше главное окно. Конструктор не содержит аргументов, но скобки писать обязательно, чтобы отличить метод от поля (функцию от переменной). Более того, он будет совсем пустой. А все то, что обычно пишут в конструкторе, мы перенесем в метод make. Это не обязательно, но я специально так делаю, чтобы показать, что один и тот же результат можно получить разными способами. Итак метод make() организовал окно, но не полностью. Далее идет
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Что здесь. Хотя класс MainForm в Java отсутсвует, но мы его напишем как наследник класса JFrame. И следовательно к нему применимы все методы этого класса, так как классы в Java имеют родителей и потомков. Один из методов setDefaultCloseOperation со статической константой класса JFrame как арумент задает режим закрытия окна при нажатии на крестик в правом верхнем углу. Если это не задать, то крестик будет, а закрывать окно он не будет. Далее идут строки
final String plaf = "javax.swing.plaf.metal.MetalLookAndFeel";
try{ UIManager.setLookAndFeel(plaf); SwingUtilities.updateComponentTreeUI(mf); }
catch(Exception e){e.printStackTrace();}
Рассматривайте их как заклинание. Они заказывают типичный для Java внешний вид нашего окна. Он отличается от вида ОС Windows и сразу показывает, что мы к Windows имеем слабое отношение. Практически все, кто работают на Java, используют этот режим. Он непривычен поначалу, но к нему тоже быстро привыкаешь. Важно, что он показывает одинаково во всех ОС. И если вдруг вас заставят работать в Linux, вам не придется испытывать дискомфорт из-за изменения внешнего вида. Он останется тем же. Вот теперь мы определили все что требуется. Осталось только показать окно на экране. Это как раз делает функция
mf.setVisible(true);
Если заменить здесь true на false, то окно мы никогда не увидим. Вот такой короткий оказался первый класс. Но программа не написана. Мы объявили два новых класса MyPro и MainForm, и нам еще надо написать эти классы. Вообще говоря, класс MainForm можно было написать включив туда функцию main() и не делать короткого класса. Но я так не люблю - это не чистый синтаксис, хотя в Java возможны такие навороты, что трудно разобраться. Некоторые это любят, другие нет. Так как все начинается с функции main(), то я только ее и пишу в головном классе. Этот класс просто задает имя программы и все. В любом случае мы имеем полное право написать класс MainForm в том же файле. А вот класс MyPro лучше написать в отдельном файле.


[Назад]   [Вперед]
Hosted by uCoz