Урок 11. Знакомство с классом

.

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




Перед словом class можно записать модификаторы класса:

  1. public
  2. abstract
  3. finlal
  4. strictfp

Перед именем вложенного класса, кроме этих модификаторов  можно поставить:

  1. protected
  2. private
  3. static

Модификаторы класса я буду вводить по мере изучения языка.

Описание полей класса может начинаться с одного или нескольких необязательных модификаторов:

  1. public
  2. protected
  3. private
  4. static
  5. final
  6. transient
  7. volatile

Описание методов может начинаться с модификаторов:

  1. public
  2. protected
  3. private
  4. abstract
  5. static
  6. final
  7. synchronized
  8. native
  9. strictfp

 

     Сейчас мы смоделируем коробку. Мы знаем что коробка имеет определенную высоту, ширину, и  глубину. Создадим три вещественные переменные: width, height, и depth, где будут хранится значения ширины, высоты и глубины соответственно. Создадим новый проект, далее создадим новый класс описывающий коробку (Faile—>New—>Java Class—>вводим название класса), я этот класс назвал Box, вы можете назвать его иначе.

 ПРИМЕЧАНИЕ: Там где код отображается синими буквами, означает что это новый код, или изменение старого кода.  В этом классе просто описаны три переменных о которых я говорил выше. После того как мы описали класс, можно создать объекты этого класса, экземпляры описанного класса. Создание экземпляров класса проходит в три этапа:

  1. 1 этап. Объявляются ссылки на объекты: записывается имя класса и через пробел перечисляются экземпляры класса (точнее ссылки на экземпляры) , например: Box box1, box2, mybox;
  2. 2 этап. Операцией new выделяется оперативная память на объекты (экземпляр класса становится ссылкой на адрес выделенного пространства оперативной памяти), например: box1=new Box();  box2=new Box(); mybox=new Box();
  3. 3 этап. Объектам задаются начальные значения. Именно по этому в операции new повторяется имя класса со скобками Box(), это называется конструктором класса, с которым вы познакомитесь в следующих уроках.

Теперь когда чертеж объекта создан, по нему мы можем создать объект. Для начала познакомьтесь (для тех кто не знает)  с классом StringBuilder, который есть в стандартной библиотеке java.  Этот класс реализует методы добавления (append), удаления (delete) и вставки (insert) символов в строку, при этом не нужно на каждое новое слово создавать объект, все происходит динамически, что позволяет экономить оперативную память. Так вот с помощью него мы будем добавлять слова в TextView объект, напомню, который отвечает за отображение текста.

Способ 1. Грубый.

Сразу в теле класса мы создаем объект builder, который будет хранить наши слова, буквы и т.д.

     Для доступа к членам класса, чтобы  присвоить переменным какое либо значение используется точка после имени объекта: box.depth=5.0; box.height=4.0; box.width=7.0; После того как полям объекта класса Box мы задали размеры, мы можем подсчитать объем коробки, присвоив сразу переменной volume подсчет объема коробки, путем умножения полей друг на друга объекта box: volume=box.depth*box.height*box.width; в нашем созданном классе Box отсутствует метод, что очень неудобно, и неэтично с точки зрения программирования, чуть ниже мы выполним те же действия, только на этот раз мы опишем в классе box метод подсчитывающий объем коробки и возвращающий ее объем. Запускаем нашу программу и в эмуляторе Genumotion мы получаем следующую активность:

Box1 Урок 11. Знакомство с классом

Способ 2. Более этичный.

 

     Новый проект создавать не нужно, просто доработаем старый.  Итак добавим в класс Box метод volumeBox(), который подсчитывает объем коробки, а самое главное что когда мы заполним поля созданного объекта класса, нам не придется осуществлять подсчет из другого класса явно, поясню:  представьте что у вас коробок очень много, вы же не будете каждый раз прописывать в коде например другого класса: volume=box.depth*box.height*box.width; лучше будет описать метод класса в самом классе и вызывать его каждый раз, для понимания переделайте код как сделано ниже:

 

     Данный метод volumeBox возвращает вещественное значения типа double. А теперь удалим в классе MyActivity строчку: volume=box.depth*box.height*box.width; а переменной volume присвоим возвращаемое методом VolumeBox значение. Выглядит намного лучше, поменяем значения полей объекта box для разнообразия. Незабываем что новый или измененный код выделен синим цветом.

 

Запускаем программу, наслаждаемся результатом, перевариваем и едем дальше, у нас все получится!)

Автор: Олег Долженко

email: ortxank741@mail.ru