вторник, 11 августа 2015 г.

Немного о классах, объектах и методах

Вводная статья о структуре java приложения. Она поможет тем, кто не может разобраться как написать и запустить самое простое приложение. В этой статье мы создадим простейшую десктоп программу и запустим ее с консоли.


И так начнем с самого начала. Java приложение состоит из классов. Класс это основная структурная единица языка. Классы это кирпичики из которых состоит приложение. На моем текущем проекте их кол-во превышает 2000. У класса есть какая-то своя ответственность, например класс отвечающий за подключение к базе данных или обработку пользовательских данных. Классы также могут описывать какую-то сущность системы (например User, Order, Discount) и содержать информацию о сущности. И так создадим для начала класс Person.
public class Person {
}
Важно что имя класса должно совпадать с именем файла Person.java.
Класс может содержать поля. Поле это некий параметр класса. Поле может быть как простого типа (int, double, boolean и.т.д) так и ссылочного типа (String, BigInteger и.т.д). Все поля класса также называются состоянием класса. Создадим поля для имени и возраста.

public class Person {
   public String name;
   public int age;
}
Вторая составляющая класса это его методы. Метод может возвращать какое-то значение, либо не возвращать ничего - void. Метод это двигатель класса, вся логика что реализуется классом разбивается  на методы. Он может получать входные параметры. Методы называются поведением класса. Давайте подумаем что может делать человек. Предполагаю что говорить какую-то фразу. Фраза будет входным параметром, ведь она может и будет меняться. И сделаем еще один метод getInfo() который будет возвращать информацию о человеке (имя+возраст).  
public class Person {
    public String name;
    public int age;

    public void saySomething(String phrase) {
        System.out.println(phrase);
    }

    public String getInfo() {
        return new String(name + " " + age);
    }
}
Обращаю ваше внимания что тело класса как и тело метода заключается в скобочки {}.  Итак мы создали класс с методами и полями. Но как же создать экземпляр класса, в нашем случае конкретного человека ? Для этого мы должны создать объект класса Person. Что бы не путать класс с объектом представьте что класс это формочка для печенья, а объект это печенька которую мы можем испечь используя ее. Очевидно что используя формочку ты можешь приготовить сколько угодно печенья.  Что бы создать объект, нужно вызвать его конструктор.
Конструктор - это метод который создает объект в памяти и возвращает ссылку на него. Конструктор вызывается с помощью оператора new.
    Person person = new Person();
В нашем случае переменная person содержит ссылку на новосозданный объект.
Добавим имя и возраст нашему человек, это можно сделать указав через точку имя поля.
    person.name = "Jack";
    person.age = 17;
Но куда же это все добавлять ? Для этого есть в java так называемый main метод. Он автоматически вызываеться при запуске нашей программы. Это точка входа в нвшу программу.
    
public static void main(String[] args) {
        Person person = new Person();
        person.name = "Jack";
        person.age = 17;
    }
Почему метод main принимает на вход массив строк я объясню чуть позже. А пока советую запомнить важное определение, набор параметров что принимает метод называется его сигнатурой . Вызовем наши методы для объекта person. Приведу полный листинг программы.
    
public class Person {
    public String name;
    public int age;

    public void saySomething(String phrase) {
        System.out.println(phrase);
    }

    public String getInfo() {
        return new String(name + " " + age);
    }

    public static void main(String[] args) {
        Person person = new Person();
        person.name = "Jack";
        person.age = 17;

        String info = person.getInfo();
        System.out.println(info);
        person.saySomething("hi guys!");
    }
}
На экране увидим: 
>> Jack 17 
>> hi guys! 

Обратите внимание что метод getInfo() возвращает строку, мы записываем ее в переменную info и после этого выводим на экран. Это приложение можно легко запустить использую любую IDE, но давайте сделаем по стариковски запустим приложение из командной строки. И для того что бы объяснить почему метод main получает на вход массив немного модифицируем нашу логику.
    

    public static void main(String[] args) {
        Person person = new Person();
        person.name = args[0];
        person.age = 17;

        String info = person.getInfo();
        System.out.println(info);
        person.saySomething("hi guys!");
    }
}
По шагово, как запустить нашу программу из консоли:
  1. Запускаем команд. строку. (Win+R -> cmd-> Enter)
  2. Переходим в дерикторию с нашим файликом Person.java. Как правило это папка src.(cd путь к файлу)
  3. Компилируем наш класс командой javac Person.java . После этого шага у нас в исходной папке должен появится файлик Person.class это байт код, откомпилированый наш класс.
  4. Запускаем нашу программу с параметром java Person Ben.
И что же мы видим:
>> Ben 17
>> hi guys!

Массив что приходит в метод main как параметр, это набор строк которые мы передаем при запуске нашего приложения. Мы можем передать сколько угодно параметров через пробел и каждый параметр будет в массиве отдельным элементом. В нашем случае в массиве один элемент, и значение этого эл. определяет имя нашего экземпляра класса Person.
Я думаю эта статья будет полезна начинающим кто путает метод с классом. И поможет расставить все точки над и. Всем мир!     

   

Комментариев нет:

Отправить комментарий