ЗНАЙОМСТВО ІЗ КЛАСАМИ
Структура класу. Оголошення та
ініціалізація полів.
Клас - центральний компонент java.
КЛАС – ЦЕ МЕХАНІЗМ ДЛЯ ДОСЯГНЕННЯ ІНКАПСУЛЯЦІЇ.
Формально клас - шаблон поведінки об'єктів певного типу з
певними параметрами, що визначають стан. Всі екземпляри одного класу (об'єкти,
породжені від одного класу) мають один і той же набір властивостей;
загальна поведінка
- однаково реагують на однакові повідомлення.
Найбільш важлива властивість класу у тому, що він
визначає новий тип даних.
Після того як він визначений, цей новий тип можна застосовувати для
створення об'єктів даного типу.
Клас - це шаблон у якому записано
всі властивості об’єкта.
Об'єкт - це екземпляр (копія) класу, новий елемент,
який створений із властивостей описаних в окремому класі.
Елементи з яких складається клас бувають двох типів:
описувальні елементи (частіши int, string) та композиційні(ті елементи, які утворені з раніше відомих чи базових
складових).
Загальна форма класу.
При визначенні класу оголошують його загальну форму і
сутність. Це виконується шляхом зазначення даних, які він містить, і коли,
впливає на ці дані. дуже прості класи можуть містити тільки код або тільки
дані, більшість класів, застосовуваних в реальних програмах, містить обидва ці
компонента. Код класу визначає інтерфейс до його даних.
Уявіть собі
коробку.
Вона має деякі
розміри, колір, матеріал із якого виготовлена…
Коробка, яку
ви уявили - це об’єкт. А існує клас коробок в якому описані всі ті властивості
за допомогою яких ця коробка може бути створена.
Створимо новий проект Box.
У цьому
проекті створимо два класи:
Dispatcher { public static void main(String[]
args }
Box{}
У середині
класу бокс опишемо властивості коробки, які будемо використовувати у нашому
проекті.
Задача нашого
проекту обчислити об’єм коробки.
Для обчислення
об’єму нам потрібно знати три параметри нашої майбутньої коробки.
Глибина – depth;
Ширина - width;
Висота – height;
Оголосимо ці
властивості у класі Box.
Будемо
працювати із цілими числами, тому тип даних буде – цілочисельний;
package box;
public class Box {
int width;
int depth;
int height;
}
Оголошення змінних
– називають ініціалізацією полі у класі. Інакше кажучи ми оголосили глобальні
змінні, тобто ті змінні, які буде видно у всьому проекті (змінними екземпляра). Такі змінні є членами класу.
На даному
етапі написання коду програми ми ще не створили ні одної коробки.
Для того щоб
короба була створена ми повинні перейти до класу Dispatcher і створити там новий об’єкт – екземпляр класу,
надати йому окреме ім’я, та надати значень його властивостям.
package box;
public class Dispatcher {
public static void main(String[] args) {
Box b1= new Box();
Box b2= new Box();
Box b3= new Box();
b1.depth = 12;
b1.height = 3;
b1.width = 18;
b2.depth = 100;
b2.height = 7;
b2.width = 5;
b3.depth = 2;
b3.height = 7;
b3.width = 1;
}
}
Коли ми
створили екземпляри класу (Box b1= new Box();) то ми створили коробки. У нашому проекті
створених коробок – 3. Їх імена : b1, b2, b3.
new Box(); - даний запис вказує що властивості цих об’єктів
знаходяться у класі Box.
Запис b3.depth = 2; вказує на те що ми надали властивостям коробки певних значень.
Індивідуальних значень. І тепер можемо переходити до реалізації поставленої
задачі.
Обчислимо об’єм цих коробок.
int volume;
volume=b1.depth*b1.height*b1.width;
System.out.println(volume);
volume=b2.depth*b2.height*b2.width;
System.out.println(volume);
volume=b3.depth*b3.height*b3.width;
System.out.println(volume);
}}
Як бачимо, код
програми для обчислення об’єму коробки вийшов досить громіздкий.
А розробники
об’єктно-орієнтованої мови нам гарантували зручність і простоту. То де ж
зручність у такому громісткому коді?... Справа у тому, що у більшості класів
дії зі змінними екземпляра і доступ до них виконується через методи, визначені
в цьому класі, тому саме методи визначають спосіб використання даних у класі. Кожен
екземпляр класу містить власні копії цих змінних. Дані одного об'єкта
відокремлені і відрізняються від даних іншого об'єкта.
Ось і я вам пропоную створити метод, який буде обчислювати
об’єм коробки.
Повертаємося у клас Вох. Додаємо наступні рядки:
void volume(){
System.out.println(depth*width*height);
}
Тепер повертаємось
до головного класу і викликаємо наш метод наступними рядками:
b1.volume();
b2.volume();
Як видно із даного коду. Ми створили метод (дію) для
обчислення об’єму коробки, тобто композиційний елемент класу Вох. А у головному
класі ми лише звернулись до комірки пам’яті – викликали цец елемент і він сам
узяв параметри коробки і виконав дію.
Це перша краса програмування, коли програміст пиши певні
інструкції дій, а мова сама їх виконує. Програміст вказує на дії… тут головне –
правильно описати властивості і дії об’єктів над якими працюєшь.
ГОЛОВНЕ.
Поля - описують
елементи з яких складається клас. (Поля бувають статичні і нестатичні). Коли ми
створюємо конкретний екземпляр цього класу, то у кожного поля будуть якісь свої
значення.
Дякуючи тому
що ми можемо створити безліч копій певного об’єкту, а Java відокремить ці копії і не дозволить їм змішуватись, то ми можемо
працювати з кожним об’єктом окремо в одній програмі.
При
створенні класів ви створюєте тип даних. Цей тип можна
використовувати для оголошення об'єктів даного типу.
Спочатку необхідно оголосити змінну типу класу, ця змінна
не визначає об'єкт, вона являє собою всього лише змінну, яка може посилатися на
об'єкт.
Потім потрібно отримати дійсну фізичну копію об'єкта і
привласнити її цій змінній.
Операція new динамічно (під час виконання) розподіляє
пам'ять під об'єкт і повертає посилання на нього. Таким чином, це посилання
являє собою адресу об'єкта в пам'яті і зберігається у змінній.
У Java
всі об'єкти класів повинні розподілятися динамічно.
Загальний вигляд при створенні об'єкта:
Змінна класу = new ім'я класу (); //круглі дужки - це конструктор визначає дії, що виконуються при створенні
об'єкта класу
Змінна класу - це змінна створюваного
класу.
Ім'я класу - це ім'я класу конкретизація
якого виконується.
Важливо розуміти, що операція new
розподіляє пам'ять для об'єкта під час виконання. Слід пам'ятати і те, що new
може створити рівно стільки об'єктів скільки буде потрібно, але не забувати про
те, що пам'ять не безгранична і якщо пам'ять в ПК буде недостатньо, то новий
об'єкт може і не створитися.
Знайомство з методами. Метод - це дія, яку
може виконати клас.
Загальний вигляд методу:
тип ім'я (список параметрів) {}
Тип - вказує тип даних, що
повертаються методом. Якщо даний метод нічого не повертає, то вказують тип
void.
Ім'я - вказує ім'я методу,
може бути будь-яким, але має говорити про дію, яке виконує метод.
Список параметрів - це змінні
(параметрами), передані методу і розділені комами.
Методи, тип значення яких відрізняється від void повинні
повертати значення викликом процедури return:
return знченіе;
значення - це значення, що
повертається.
Властивості класу.
ü Клас визначає новий тип даних, який можна потім використовувати при
створення нових об’єктів.
ü Клас – це шаблон об’єкта.
ü Об’єкт – є екземпляром (копія із властивостями описаними у класі) класу.
ü Код класу визначає інтерфейс до його даних.
ü Дані чи змінні визначені у середині класу називають змінними екземпляру.
ü Код міститься у середині метода.
ü Метод – це перелік дій які виконуються із даними для конкретного
екземпляра.
ü Методи і змінні визначені в середині класу називають членами класу.
ü Найперший метод, який ви весь час використовували до цього моменту є метод main(). Його
слід вказувати тільки в тих випадках, коли даний клас є початковою крапкою
програми.
ü При створенні екземпляра класу ми створюємо об’єкт, який містить власну
копію кожної екземпляра визначеної класом.
ü Для отримання доступу до змінних використовують операцію крапки. Ця
операція пов’язує об’єкт із змінною еземпляра.
Як ви побачили
клас захищає дані. Він приховує їх від сторонніх поглядів, у цьому є суть
інкапсуляції, тобто клас є - «капсула». Кожен об'єкт не повинен виставляти
назовні всі свої параметри для зміни просто так.
***
Збір мусора.
В java впроваджена
технологія збору мусору. Вивільнення пам’яті виконується автоматично.
ПРИ
ВІДСУТНОСТІ БУДЬЯКИХ ПОСИЛАНЬ НА ОБ’ЄКТ ПРОГРАМА ПРИХОДИТЬ ВИСНОВКУ, ЩО ДАНИЙ
ОБ’ЄКТ БІЛЬШЕ НЕ ПОТРІБЕН І ЗАЙМАНУ ОБ’ЄЕТОМ ПАМ’ЯТЬ МОЖНА ВИВІЛЬНИТИ. Саме тому явно знищувати об’єкти не потрібно.
Комментарии
Отправить комментарий