Java для школьников. Занятие №5. Вникаем в ООП. Создаем новые классы.

Предыдущее занятие Следущее занятие

Что разберем: некоторые основополагающие понятия ООП (объектно-ориентированного программирования), а именно

  • экземпляр класса;
  • поле (переменная) класса;
  • операция точка(.);
  • выделение памяти для экземпляра класса, тип данных.

Заодно разберем что такое оператор присваивания в Java.


Занятие построено на переработанном примере, который подсмотрен в книге: Г.Шилдт "Полный справочник по Java" - "Простой класс" - [1] в списке литературы.

Продолжим использовать классы в Java и разбираться с ООП. Начнем с простой программы-примера, сделать который нам помогут знания школьной геометрии. Ниже приведен код класса Box (Параллелепипед), в нем определяется три параметра: a (длина), b (ширина) и c (высота).

Листинг 1. Класс Box с тремя полями типа "double"

class Box {
  double a;
  double b;
  double c;
}

Другими словами, в Листинге 1 приведено описание класса Box, содержащего три "поля класса" (еще вариант определения этого понятия - "переменная класса"). Что это означает?

Допустим, что мы или другой программист, который захочет использовать класс Box, "создаст свой экземпляр объекта Box" (привыкаем к терминологии, используемой в ООП) и даст этому экземпляру имя. Это означает, что в памяти компьютера будет выделено место для хранения трех переменных типа double. Если перевести выражение "тип переменной - double" на язык математики, то это будет означать "действительное число" или число, которое используется для вычисления выражений, требующих получение результата с точностью до определенного десятичного знака. Еще некоторое место в памяти займет служебная информация об объекте (для преподавателей и интересующихся - Размер Java объектов).

Типы данных присутствуют практически во всех языках программирования и Java - не исключение, да и наш класс Box тоже тип. Для каждого типа данных отводится определенное количество памяти. Отмечу еще, что всем этим (выделением памяти для объектов) занимается виртуальная машина Java.


Внутри класса Box (или как еще говорят "в теле класса"), т.е. в блоке кода, после строки, определяющей класс (вспомните про две фигурные скобки), на переменные (поля) класса Box можно ссылаться по имени поля, например:

a = 10;


Однако, вне тела класса доступ к полю можно получить написав имя экземпляра этого класса, потом символ ".", а после этого уже имя нужного поля (см. Листинг 2 и [2] в списке литературы).

Листинг 2. Создание экземпляра класса, обращение к полю класса через оператор присваивания

Box b1;
b1.a = 2.0;

Конечно, для создания экземпляра нашего объекта Box необходимо предусмотреть ряд действий (см. следующее занятие), но здесь мы ограничились просто строкой

Box b1;

Когда же объект создан, доступ к его полям осуществляется посредством операции . (точка). К такой записи (в литературе ее иногда называют "точечной нотацией") быстро привыкаешь и ей удобно пользоваться. Действительно, если поле "a" является частью "b1" , вполне логично точкой обозначить данную принадлежность.

b1.a = 2.0;


Немного об операторе присваивания. Символ "=" здесь используется фактически для того, чтобы показать, что в ячейку памяти, отведенную для хранения поля "a" объекта "b1" записано действительное число "2.0".

Из своего опыта скажу, что самым важным в этом занятии является то, что каждый объект (экземпляр класса) занимает в памяти компьютера какое-то место. А описание класса (его определение) фактически является описанием распределения памяти для объектов этого класса.


Литература:
1. Герберт Шилдт "Полный справочник по Java" 7-е издание, Издательский дом "Вильямс", 2007г., ISBN 978-5-8459-1168-1, c.143
2. Девид Фленаган "Java справочник" 4-е издание, 2004г., ISBN 5-93286-067-7, с.106-107

Комментарии

Возможно в школьной литературе вы встретите такое определение переменной - величина, которая изменяется в процессе выполнения программы (алгоритма). Или такое: переменная - это объект, которому дано имя и который может принимать различные значения. Однако, важно понимать, что переменная - это, в простейшем случае, ячейка в памяти компьютера, которая, для удобства, имеет имя. В ВУЗовских учебниках дается более широкое понятие переменной (см., например, С.А.Орлов "Теория и практика языков программирования" ISBN 978-5-496-00032-1, 2014г., с.222).
В данном занятии переменная рассматривается как часть объекта (класса) и далее будет иметься в виду такое понимание переменной.

Страницы