Заведём жабу? Часть 3

В этом занятии мы будем создавать объекты. Объект — это некая логическая сущность, которая имеет свои характеристики и умеет что-то выполнять. Каждый объект создаётся по какой-то логике, преследует определённые цели. На программном уровне объект — это область памяти, которую он занимает при выполнении программы виртуальной машиной java. В оперативную память записываются все объекты, которые участвуют в программе. Объекты записываются в память во время непосредственного выполнения программы, а не во время написания кода. 

Теперь созданим первый объект в среде Netbeans.

  1. Запустите редактор Netbeans.
  2. Нажмите ПКМ (Правая Кнопка Мыши) по строке Пакеты исходных кодов (слева) — в открывшемся окне выберите Создать — Пакет java (в некоторых версиях Новый — Пакет java)
  3. В графе «имя пакета» введите testobject. Нажмите готов.
  4. Нажмите ПКМ на созданном пакете testobject. Выберите Создать — Класс Java
  5. В открывшемся окне в графе Имя класса введите Computer. Нажмите «Готово».

Мы создали класс Computer, который находится в пакете testobject.

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package testobject;

/**
 *
 * @author пк
 */
public class Computer {
    
}

Комментарии можно удалить. Структура кода простейшая. Объявление пакета и объявление публичного класса.Теперь следует добавить какие-то характеристики нашему объекту Computer. Характеристики в программном коде представляют собой переменные, объявленные внутри класса. По другому их называют ПОЛЯМИ КЛАССА или свойствами класса. То есть эти переменные находятся внутри класса. Давайте добавим новое поля, которое будет характеризовать модель нашему компьютера. public String name;


package testobject;

public class computer {

    public String name;    
        
}

public — модификатор доступа. Говорит нам о том, что переменная name будет доступна из любого места программы.
String — тип переменной (тип данных). String предназначен для хранения строк текста.
name — имя переменной, в этом контейнере будет храниться имя компьютера. Может быть любым, но желательно, чтобы подходило по смыслу. Мы могли бы написать и так — «imia.»

Добавим ещё одну характеристику к нашему компьютеру. Оперативная память измеряется у нас в целых числах, значит тип переменной (тип данных) у нас будет целое число — int. Пишем public int ram;


package testobject;

public class computer {

    public String name;    
    
    public int ram;     
}

Добавим характеристику жесткого диска. public int hdd; И характеристику веса. Вес может содержать числа с двойной точностью (числа после запятой), значит тип переменной будет double. public double weight;


package testobject;

public class Computer {
    
    public String name;    
     
    public int ram;  
        
    public int hdd;
    
    public double weight;
}

Мы создали 4 поля или 4 характеристики объекта Computer, которые будут характеризовать его своими значениями. Теперь давайте добавим какие-либо действия для нашего объекта Computer. Действия в программном коде представляют собой обычные МЕТОДЫ. Добавим метод «Включиться» (on).

 public void on(){
        
    }

Разберём данные строки.

public — модификатор доступа. Говорит нам о том, что метод будет доступен из любого места программы.

void — говорит нам о том, что метод не будет возвращать никаких значений.

on — название метода (может быть любым).
on() — скобки. В скобках мы можем передавать какие-то параметры в данный метод. Пока мы ничего не будем передавать — оставим их пустыми.

Каждый метод обрамляется фигурными скобками { }.

Мы создали одно действие для компьютера — on, то есть включить. По аналогии создадим метод выключить (off).

 public void off(){
        
    }

Добавим метод загрузка (load)

 public void load(){
        
    }

Теперь в каждом методе напишем, что он выполняет. Уже известной командой: System.out.println(«Ваш текст»); (печать в строку).

Обратите внимание, когда Вы нажимаете точку — Netbeans выдаёт список опций.

 public void on(){
        
       System.out.println("Я включился");  
        
    }
    
      public void off(){
        
       System.out.println("Я выключился");  
          
    }
    
     public void load(){
         
       System.out.println("Я загружаюсь");  
        
    }

Теперь при вызове какого-либо метода на экран будет выводится определённая надпись. Так как класс состоит из полей и методов — нужно помнить о таком понятии, как область видимости переменных. Переменные, которые объявлены внутри класса — в нашем случае это:


  public String name;    
     
    public int ram;  
        
    public int hdd;
    
    public double weight;

Они будут доступны внутри этого класса и внутри этих методов:


Они будут доступны даже, если модификатор доступа будет private. Private - обозначает доступ внутри класса. Если переменная объявлен внутри метода, например вот так (переменная время - time):


 public void on(){

   int time; 
        
   System.out.println("Я включился");  
        
    }

То эта переменная (time) не будет доступна в других методах! Она имеет область доступа только локально — внутри метода on. Это закрытая переменная, которая действует только во время работы метода. Как только метод отработал — эта переменная уже нигде не доступна. Теперь следует научиться создавать объект Computer, или, как ещё говорят, инициализировать. Для инициализации используется определённое ключевое слово. Итак:

1) Удалите переменную int time;
Код файла Computer.java должен выглядеть так:


package testobject;

public class Computer {
    
    public String name;    
     
    public int ram;  
        
    public int hdd;
    
    public double weight;
    
    public void on(){
       
       int time;
        
       System.out.println("Я включился");  
        
    }
    
      public void off(){
        
       System.out.println("Я выключился");  
          
    }
    
     public void load(){
         
       System.out.println("Я загружаюсь");  
        
    }
    
}

2) Перейдите в файл MyFirstProgram.java. Удалите оператор System.out.println(«Hello, world!»); Код должен быть таким:


package myfirstprogram;

public class MyFirstProgram {

    public static void main(String[] args) {
      
        
        
    }
    
}

3) Для того, чтобы создать наш объект Computer, необходимо написать следующую конструкцию: Computer comp = new Computer();


package myfirstprogram;

public class MyFirstProgram {

    public static void main(String[] args) {
      
      Computer comp = new Computer();  
        
    }
    
}

Однако Netbeans подчеркнёт строку красным — он пока ещё не знает, что это за Computer. Нажимаем на подсказку слева (лампочка с восклицательным знаком) и выбираем «Добавить оператор импорта для testobject.Computer» Нажимаем его и добавляем.


package myfirstprogram;

import testobject.Computer;

public class MyFirstProgram {

    public static void main(String[] args) {
      
      Computer comp = new Computer();
        
    }
    
}

Любой класс в Java может подключать к себе другие классы, то есть функционал из других классов при помощи ключевого слово import — то есть импортировать. В java имеется большое количество стандартных библиотек, которых мы можем использовать в своих классах. Эти библиотеки также подключаются при помощи ключевого слова import. То есть наш класс MyFirstProgram подключил к себе класс Computer. И теперь мы можем использовать функционал Computer в нашем классе. Теперь рассмотрим строку объявления объекта: Computer comp = new Computer(); Мы создали объект типа Computer. Теперь мы можем работать с этим объектом. Понятно, что вместо comp мы могли написать любое название переменной? Что именно произошло в этой строке — мы разберём чуть позднее. А сейчас просто вызовем какой-нибудь метод из объекта Computer.

4) Внутри класса main, после инициализации объекта Computer, напишите переменную comp, нажмите точку. В появившемся окне отобразятся доступные public переменные и все public методы. (Поля класса — hdd, name, ram, weight и методы on(), off(), load()). Выберем метод on();


package myfirstprogram;

import testobject.Computer;

public class MyFirstProgram {

    public static void main(String[] args) {
      
      Computer comp = new Computer();
      
      comp.on();
      
    }
    
}

5) Нажмите ctrl + s, чтобы сохранить файлы, после чего нажмите F6 для запуска программы. Внизу в окошке Netbeans должен отобразиться результат метода on(), а именно надпись «Я включился.»

То есть мы создали экземпляр объекта Computer и обратились к одному из его действий. В данном случае мы вызвали действие включения компьютера. Теперь после включения мы можем вызвать другой метод. comp.load(); То есть загрузка. Ну и после загрузки выключим компьютер. comp.off(); Вызовем три метода подряд при запуски программы (F6).


package myfirstprogram;

import testobject.Computer;

public class MyFirstProgram {

    public static void main(String[] args) {
      
      Computer comp = new Computer();
      
      comp.on();
      
      comp.load();
      
      comp.off();
      
    }
    
}

Netbeans выведет что-то вроде:
Я включился
Я загружаюсь
Я выключился
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

Каждый из методов вывел свою надпись. Мы смоделировали простейшую ситуацию работы с объектом. Теперь немного изменим наш класс Computer, чтобы использовать свойства нашего компьютера, чтобы смотреть состояние. Пусть наш компьютер при загрузки будет «говорить» свою модель. Для этого в опреаторе вывода в методе on(); добавляем + name;


 public void on(){
       
       int time;
        
       System.out.println("Я включился. Моя модель: " + name);  
        
    }


Метод on() будет писать «я включился» а вместо переменной name подставлять значение этой переменной name. Давайте в методе load() сделаем вывод значения объёма жесткого диска.


   public void load(){
         
       System.out.println("Я загружаюсь. Мой объём жесткого диска равен " + hdd + " ГБ");  
        
    }

Если мы запустим программу в таком виде, то вместо значения name нам выведется null, а вместо значения hdd — 0.

Я включился. Моя модель: null
Я загружаюсь. Мой объём жесткого диска равен 0 ГБ
Я выключился
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

Нашим переменным не присвоены никакие значения, поэтому компилятор присвоил значения по умолчанию. Если переменная типа String — значение по умолчанию null. Если переменная типа int (целочисленная переменная) — значение по умолчанию 0.

Перейдём в файл MyFirstProgram, и после инициализации объекта перед вызовом наших методов будем использовать переменную comp, как ссылку на наш объект, нажимаем точку и выбираем свойство нашего объекта name, которому привоем значение, скажем IBM. comp.name = «IBM»;


package myfirstprogram;

import testobject.Computer;

public class MyFirstProgram {

    public static void main(String[] args) {
      
      Computer comp = new Computer();
      
      comp.name = "IBM";
      
      comp.on();
      
      comp.load();
      
      comp.off();
      
    }
    
}

И по аналогии возьмём свойство жесткого диска и присвоим значение 350. comp.hdd = 350;


package myfirstprogram;

import testobject.Computer;

public class MyFirstProgram {

    public static void main(String[] args) {
      
      Computer comp = new Computer();
      
      comp.name = "IBM";
      
      comp.hdd = 350;
      
      comp.on();
      
      comp.load();
      
      comp.off();
      
    }
    
}

Запустим нашу программу.

Я включился IBM
Я загружаюсь. Мой объём жесткого диска равен 350 ГБ
Я выключился
СБОРКА УСПЕШНО ЗАВЕРШЕНА (общее время: 0 секунд)

Перед вызовов методов мы переменным или свойствам объекта Computer присвоили какие-то значения, можно сказать изменили характеристики объекта Computer. И теперь при работе наших методов, при выводе текстового сообщения вместо переменных name и hdd подставляются соответствующие значения созданного объекта — «IBM» и 360. Мы можем манипулировать свойствами объекта, при этом меняется его внутреннее состояние, либо его методы начинают работать по другому.


ЗАПОМНИТЕ!

КЛАСС — это шаблон или трафарет по которому можно создать любое количество объектов. Эти объекты могут быть созданы на основе одного лкасса, но отличаться друг от друга тем, что они имеют разное состояние или разные характеристики. Каждый из этих объектов имеет разные значения своих переменных класса. Класс создаётся в программном коде, а объекты создаются во время выполнения программы.

ИНИЦИАЛИЗАЦИЯ ОБЪЕКТА В ПРОГРАММЕ

  1. Класс — шаблон (трафарет) для создания объектов во время работы программы.
  2. Объекты создаются во время работы программы.
  3. Классы создаются во время написания кода.
  4. Количество объектов — бесконечно число, насколько хватит оперативной памяти.
  5. Для создания объекта используется ключевое слово new

 

Теперь давайте разберём, что произошло в строке Computer comp = new Computer(); А произошло — инициализация объекта.

ИНИЦИАЛИЗАЦИЯ ОБЪЕКТА:

  1. Создалась переменная comp типа Computer
  2. В памяти создался объект Computer
  3. Присвоили переменной comp созданный объект
  4. После этого переменная comp ссылается на созданный объект Computer

 

Вы можете следить за ответами к этой записи через RSS 2.0 ленту.Вы можете оставить ответ, или архив с вашего сайта.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *