Приведем простейший пример, на котором видно, как вообще осуществляется работа с классами и объектами в Java. Создалим программу BoxDemo. Она будет включать в себя два класса. В первом классе Box мы определим структуру коробки, определим поля этого класса и его методы. А во втором классе BoxDemo мы создадим несколько объектов класса Box и попытаемся увидеть, как с ними можно работать.


//Файл BoxDemo.java
package boxdemo;

//Создаем новый класс Box, который будет описывать коробку
class Box {
    //Поля класса
    //тип double - это тип, который позволяет хранить дробные числа
    double width; //ширина (переменная width будет хранить значение ширины)
    double height; //высота
    double depth; //глубина
    
    // Методы класса
    // Конструктор - это метод для создания объекта класса
    // Конструктор не имеет возвращаемого типа данных (даже void не пишется),
    // а имя конструктора совпадает с именем класса.
    // Конструкторов может быть несколько. Мы пока сделаем два. Один будет получать
    // 1 параметр. Второй будет получать 3 параметра. Первый будет делать куб,
    // а второй - коробку произвольных пропорций. При вызове, если мы вызовем
    // конструктор и передадим ему 1 параметр, то автоматически выберется первый конструктор, 
    // а если параметров будет 3 - то вызовется второй конструктор
    
    //Первый коструктор
    Box(double size) {
        width = size;
        height = size;
        depth = size;
    }
    //Второй конструктор
    Box(double w, double h, double d) {
        width = w;
        height = h;
        depth = d;
    }
    //В конструкторах мы присваиваем значениям полей класса значений параметров,
    //которые передаем им при вызове
    
    //Ну и определим еще 1 метод, который подсчитывает объем коробки.
    //Он будет возвращать такой же дробный тип double, поскольку 
    //перемножает 3 дробных числа. Параметры мы ему не передаем (), он сам будет брать
    //значения полей.
    double volume() {
        double v;
        v= width * height * depth;
        return v;
    }
}

//А вот наш главный класс, с него запускается программа
public class BoxDemo {
    //C этого метода    
    public static void main(String[] args) {
        //Создадим переменную для объема
        double vol=0;
        //Создадим первую коробку, используя первый тип конструктора с 1 параметром        
        Box FirstBox = new Box(4); 
        //Объект с именем FirstBox класса Box создается выделением памяти (new) и
        //вызовом конструктора Box(4), где 4 - это параметр size.
        //Вызов метода сопровождается указанием объекта, 
        //и отделяется от его имени оператором точка "."
        vol = FirstBox.volume(); // тут мы вызвали для объекта FirstBox 
        //метод, который ему достался от порождающего его класса Box;
        //Выведем объем на экран
        System.out.println(vol);//объем равен 64
        //а теперь, изменим один из паказателей height нашего куба
        FirstBox.height=5;
        vol = FirstBox.volume(); // снова считаем объем, только уже 4*5*4=80
        System.out.println(vol); //вывод объема 80
        //Создадим новую коробку вторым конструктором
        Box SecondBox = new Box(2, 4, 6); //2 4 6 то подставится вместо w h d
        vol = SecondBox.volume(); //объем второй коробки
        System.out.println(vol); //вывод объема 48
        //Можно не пользоваться переменной vol, написать так
        System.out.println(SecondBox.volume()); //вывод объема        
    }
}

Результат выполнения программы будет следующим:
вывод программы BoxDemo
Каждое из чисел — результат выполнения инструкций System.out.println(); В зависимости от текущего значения переменной vol (а в последнем случае мы сразу подставили возвращаемое значение метода SecondBox.volume()), команда вывода печатает разные значения.

Продолжение: Шаг 5. Объектно-ориентированное программирование «на пальцах»
Начало: Шаг 3. Подробное рассмотрение программы FirstProgram

Хотя программа созданнная нами в предыдущей статье (проект FirstProgram) небольшая, с ней связано несколько важных особенностей, характерных для всех программ на языке Java. Полный текст программы представлен на листинге ниже.

 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package firstprogram;

/**
 *
 * @author Андрей
 */
public class FirstProgram {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Привет, мир!");        
    }
}

Рассмотрим каждую часть программы подробно.

 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

Данная часть кода — комментарий. Подобно большинству других языков программирования, Java позволяет включать примечания в исходный текст программы. Они нужны для того, чтобы программисту было легче ориентироваться в текстах большого проекта, выделять логически законченные фрагменты программы, а также, для того, чтобы программу написанную одним человеком, мог понять другой программист.
Комментарии в Java бывают трёх видов. В данном случае применён комментарий заключённый между между /* и */. Как только компилятор встречает связку символов /*, он игнорирует все символы пока не встретит */. Приемущество такого коментария: он может располагаться в произвольном количестве строк. Второй тип комментария в языке программирования Java — это комментарий, начинающийся с символов // и продолжается до конца строки. Третий тип комментария — это комментарии документирования, про которые нам знать пока необязательно. Однако, они по форме похожи на комментарии первого типа, за исключением того, что в них используются связки символов /** и */. Кстати данный комментарий присутствует в нашей программе:

/**
 *
 * @author Андрей
 */

Далее по тексту программы мы видим строку:

package firstprogram;

В этой строке показывается, что данный исходный файл программы включён в пакет с названием firstprogram. Пока мы не будем задаваться вопросами о пакетах. Придет время и мы узнаем для чего они нужны, а пока нам достаточно знать, что в начале каждого исходного файла как правило указывается его принадлежность к пакету.
Итак, мы дошли до самого интересного. Следующая строка кода имеет такой вид.

public class FirstProgram {

В этой строке ключевое слово class используется для объявления о том, что выполняется определение нового класса. Модификатор доступа public показывает, что определяемый класс будет доступен для любого кода: как классов этого же проекта, так и любых других. В частности, поскольку этот класс главный, то при запуске программы среда исполнения Java получит доступ к этому классу. FirstProgram — это идентификатор, являющийся именем класса. Поскольку наша программа имеет всего один класс, то его имя, как легко заметить, совпадает с именем проекта и главное файла FirstProgram.java. Далее по тексту программы мы видим открывающую фигурную скобку «{«. Она является началом тела класса. Всё, что находится до закрывающей скобки «}» является телом класса. Мы рассмотрим классы, объекты и объектно-ориентированный подход позже, но сейчас нам достаточно знать, что классы обычно содержат поля и методы. Поля задают типы данных, которые содержит класс, а методы (функции-члены в других языках программирования) — представляют собой фрагменты управляющих конструкций, которые позволяют выполнять какие-либо действия.
Следующие строки выглядят так.

        public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Привет, мир!");        
    }

Они представляют собой метод main. Модификатор доступа public показывает, что определяемый метод будет доступен для любого кода. Модификатор static показывает, что метод является статическим, то есть доступным для исполнения даже в классе, объекты которого не созданны. Позже мы уясним, что работа с классом осуществляется путем создания конкретных реализаций этого класса — объектов или экземпляров класса. Однако, в нашей простейшей программе, мы не создаем объекты класса FirstProgram. Мы используем лишь его единственный статический метод, в котором выполняются все действия программы.
Все переменные и/или поля классов обязательно имеют типы данных. Целочисленные типы, логические и т.д. Так же и методы, являясь по сути функциями имеют тип возвращаемого значения. Если метод не возвращает никакого значения, применяется ключевое слово «void«.
В скобках после имени метода () мы видим список параметров, которые может принять метод от вызывающего его объекта. В нашем случае, метод main будет вызываться средой исполнения Java. В качестве параметров он может принимать аргументы командной строки, разделённые пробелом, для чего указан массив типа String (Строковый тип данных) и именем args. В данной программе, да и в большинстве других, мы не будем использовать аргументы командной строки, однако форма есть форма. Далее между открывающей и закрывающей фигурными скобками располагается тело метода.

        System.out.println("Привет, мир!");       

Наша программа состоит из одной единственной строки. Эта строка выводит на экран строку текста «Привет, мир!«, за которой следует новая строка. В действительности вывод выполняется встроенным методом println(). Как будет показано, этот метод можно применять для отображения и других типов информации. Строка начинается с идентификатора потока System.out. Хотя он слишком сложный, чтобы его можно было подробно пояснить на данном этапе, достаточно пока сказать, что System — это предопределенный класс, который предрставляет доступ к системе, а его переменная-член out — выходной поток, связанный с консолью.

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

Продолжение: Шаг 4. Пример работы с классами и объектами
Начало: Шаг 2. Первый пример простейшей программы

Рассмотрим простейшую программу на языке Java. Исходные коды программ на языке Java оформляются в виде текстовых файлов с расширением *.java. Каждый текстовый файл может содержать один или более классов. Мы подробно рассмотрим правила оформления каждого файла *.java позже. В общем случае: создание, редактирование и другие действия с файлами *.java производятся, используя любой текстовый редактор, позволяющий сохранять неформатированный текст, например Блокнот или Notepad++. В нашем случае, мы используем среду NetBeans, поэтому файлы в ней будут создаваться автоматически.
Начнем с создания проекта в среде NetBeans. Запустим среду NetBeans и выберем пункт меню «Файл->Создать проект…»
2.создать проект
В открывшемся окне выберем тип проекта «Приложение Java»» и нажмём кнопку «Далее»
2.выбор типа проекта
В следующем окне укажем в качестве имени проекта «FirstProgram», установим флажок на пунктах «Использовать отдельную папку для хранения библиотек» и «Создать главный класс». Остальные параметры — оставляем как есть. Нажимаем кнопку «Готово».
2.параметры проекта
Итак проект создан. В левой части программы отображается структура проекта. Мы можем видеть, что файл FirstProgram.java входит в пакет firstprogram. Для чего нужны пакеты мы узнаем позже, а пока перейдем к правой части окна, где уже создан главный класс FirstProgram и в нем определен метод main, с выполнения которого всегда начинается выполнение программы на Java.
2.текст программы созданный автоматически
Изменим код программы добавив строку «System.out.println(«Привет, мир!»);» (без кавычек!) в тело метода main. Полный код программы приведён ниже.

 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package firstprogram;

/**
 *
 * @author Андрей
 */
public class FirstProgram {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Привет, мир!");        
    }
}

Теперь, программа в главном окне приняла следующий вид:
2.измененный вариант
Запустим написанную программу. При этом, проект автоматически сохраняется и происходит компиляция программы в байт-код, который, в последствии, исполняется на любой платформе с установленной средой исполнеия Java (JRE). В нашем случае, в папке проекта создастся файл FirstProgram.class. Результат работы программы мы увидим сразу в нижней части основного окна среды NetBeans.
2.запуск
2.результат
Как можно видеть, программа выводит в консоль фразу «Привет, мир!».
Подробное рассмотрение данной программы произведем в следующей статье.

Продолжение: Шаг 3. Подробное рассмотрение программы FirstProgram
Начало: Шаг 1. Установка среды разработки NetBeans + JDK

Начнем изучение языка программирования Java с установки интегрированной среды разработки NetBeans и комплекта разработчика приложений на языке Java (JDK).

Проект NetBeans IDE поддерживается и спонсируется компанией Oracle, однако разработка NetBeans ведется независимым сообществом разработчиков-энтузиастов (NetBeans Community) и компанией NetBeans Org.

  1. Для получения дистрибутива Oracle NetBeans необходимо перейти по ссылке. Выбираем и скачиваем «JDK 7 + NetBeans«. Рекомендуется использовать 32-разрядную версию продукта.
  2. После этого запускаем скачанный файл (в моём случае файл имеет имя jdk-7u21-nb-7_3-windows-i586.exe, однако версии продукта меняются достаточно быстро и в вашем случае название может меняться).
  3. Следуем инструкциям программы установки:

01

02

03

04

05

06

07

После этого мы имеем установленную среду разработки NetBeans и Java Development Kit (JDK) — бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).

В следующей статье мы создадим свой первый проект на Java в среде NetBeans.

Продолжение: Шаг 2. Первый пример простейшей программы

Lady Java