3.1. Класи та методи

Класи

Класи – це спеціального виду конструкції, які дозволяють об’єднати ряд змінних різних типів в одне ціле. Крім власне даних, класи зазвичай включають підпрограми (в термінології java - методи) і можуть включати блоки(сукупність інструкцій між фігурними дужками {}) та інші класи(внутрішні класи). Таким чином утворюються нові типи даних.

Оголосити найпростіший клас можна так:

1
2
3
4
5
6
class Symka { 
double width; 
double height; 
double depth; 
double symkaVolume; 
}

Для його оголошення використовується ключове слово class та назва класу, далі іде тіло класу у фігурних дужках {}. Проте, хоч клас існує, ми не можемо так просто його використовувати. Ми повинні спочатку створити екземпляр даного класу (об’єкт). Для цього необхідно написати наступну інструкцію:

1
2
Symka mySymka1=new Symka();
// створення екземпляру об'єкта

де Syma – назва класу, mySymka – назва об'єктної змінної, яка посилатиметься на наш екземпляр класу (об'єкт типу Symka), new Symka() – створює об’єкт(при цьому відбувається виділення пам’яті під об’єкт). Таким чином ми створили першу сумку. Щоб створити другий об'єкт використовується аналогічна інструкція:

1
2
Symka mySymka2=new Symka(); 
//як бачимо змінилась лише назва змінної

Інструкція звернення до властивостeй об'єкту записується в такій формі - назваОб’єкту.змінна:

1
2
mySymka1.width=10; 
// доступ до властивості width

Методи

Методи в java – це аналог підпрограм, функцій, процедур в інших мовах програмування. За допомогою методів ми виносимо текст повторюваного коду програми окремо в тіло методу, після чого можна викликати даний метод з будь-якого місця програми, безліч разів.

Спрощене оголошення та визначення методу, який ми зараз будемо використовувати, має вигляд:

1
2
3
4
5
6
7
тип_повернення назва_методу(параметри){ 
//тіло методу; 
інструкція1; 
інструкція2;
 ….. 
інструкціяN; 
}

Тип_повернення – результат виконання методу, наприклад він може повертати об’єм сумки, тоді тип_повернення буде double. Якщо метод нічого не повертає, то вказується слово ключове слово void.

Виклик методу здійснює наступна інструкція:

1
2
назва_методу(параметри) 
// виклик методу

Взагалі в термінології мов програмування для виклику методу використовуються аргументи, а в самому методі – це уже параметри, оскільки передаються лише значення змінних, а не самі змінні. Аргументи та параметри повинні бути одного і того ж типу. Якщо ми передаємо цілочисельне значення, то і параметр повинен бути цілочисельним і т.п. Тобто в методі створюються нові змінні. В деяких мовах, наприклад в С++, як аргумент можна передати посилання на певну змінну, таким чином її можна буде модифікувати в функції через вказівник на дану змінну. В Java в метод передаються лише значення змінних, тому розрізнення аргументів і параметрів менш суттєве і ми там і там використовуватимемо термін «параметр». Об'єкти ж в методи передаються по посиланню. Тобто, при передачі в якості аргументу об'єкта, буде передане посилання на об'єкт, а не створений новий об'єкт.

Конструктори

Замість методу symkaValue(), який в нас заповнює змінні об’єкту значеннями ми можемо створити метод, який буде мати назву таку ж як і клас, тобто Symka(aWidth, aHeight, aDepth). Це дасть нам можливість ще скоротити програму, оскільки при створенні об’єкту ми зможемо зразу ж задавати розміри сумки.

1
2
Symka mySymka1 = new Symka(10.0, 15.0, 20.0) 
// створення сумки з розмірами 10х15х20

Такі методи носять назву “конструктор класу”. Коли ми писали просто new Symka(); то віртуальна машина використовувала конструктор по замовчуванню без параметрів, який практично нічого корисного для нас не робив. Тепер же ми можемо використовувати новий створений нами конструктор.