Класи. Застосування класів у програмах на Java. Визначення класу та об’єкту класу. Приклади
Зміст
- 1. Для чого у програмах використовуються класи?
- 2. Визначення класу. Загальна форма оголошення класу. Ключове слово class
- 3. Що таке об’єкт класу? Загальна форма оголошення об’єкту класу. Оператор new
- 4. Яка відмінність між поняттями “клас” та “об’єкт класу”?
- 5. Приклади оголошення та використання простих класів, що містять дані та методи їх обробки
- 6. Який тип доступу (private, public) мають члени класу за замовчуванням?
- 7. Що таке класи-“обгортки”? Яке призначення класів-“обгорток”? Приклад
- Зв’язані теми
Пошук на інших ресурсах:
1. Для чого у програмах використовуються класи?
У мові програмування Java розробка усіх програм базується на об’єктно-орієнтованому підході. Можна сказати, що Java – це строго об’єктно-орієнтована мова програмування. В основі об’єктно-орієнтованого програмування лежать поняття “клас” та “об’єкт”. Програміст, що розробляє програму на основі об’єктно-орієнтованого підходу, повинен вміти виділяти у проблемній області (задачі) логічно-завершені одиниці. Кожна логічно завершена одиниця має бути реалізована як деякий клас. В цілому, при програмуванні задач з використанням об’єктно-орієнтованої парадигми, програміст повинен вміти:
- структурувати задачу на завершені логічні одиниці, що можуть бути реалізовані окремими класами;
- правильно визначати та будувати взаємозв’язки між різними класами у програмі;
- помічати багатократно використовуваний програмний код, що може повторюватись у різних частинах програми та правильно виділяти цей код окремим кодом;
- будувати ієрархію між класами за принципом “від простого до складного”;
- розуміти деталі реалізації різноманітних можливостей, що дає використання класів для ефективної побудови програм (інкапсуляція, спадковість, поліморфізм).
⇑
2. Визначення класу. Загальна форма оголошення класу. Ключове слово class
З точки зору програмування, клас – це набір даних класу та методів класу. Методи оперують цими даними класу (виконують роботу над даними класу). З допомогою множини методів класу формується логічно-завершений програмний код, що оперує даними класу.
При використанні класів у програмах виділяються дві складові:
- оголошення класу як окремого складного типу даних;
- реалізація об’єкту (змінної) цього класу.
Оголошення класу – це оголошення нового складного типу даних. Цей тип даних містить методи обробки цих даних.
Оголошення класу починається з ключового слова class. У найпростішому випадку загальна форма оголошення класу:
class ClassName { type variable1; type variable2; ... type variableN; type method1(parameters1) { // ... } type method2(parameters2) { // ... } ... type methodN(parametersN) { // ... } };
де
- type – деякий тип даних. Це може бути примітивний (базовий) тип даних або складний тип даних, наприклад деякий клас;
- variable1, variable2, …, variableN – змінні екземпляру класу;
- method1, method2, …, methodN – методи класу;
- parameters1, parameters2, parametersN – параметри, що відповідно отримують методи класу method1, method2, methodN.
⇑
3. Що таке об’єкт класу? Загальна форма оголошення об’єкту класу. Оператор new
Об’єкт класу – це оголошення змінної. Тип змінної – це є тип з іменем класу. При оголошенні об’єкту класу створюється екземпляр класу. Поняття “об’єкт класу” та “екземпляр класу” можна вважати синонімами.
Загальний вигляд оголошення об’єкту класу в мові Java:
ClassName ObjName = new ClassName();
де
- ClassName – ім’я класу
- ObjName – ім’я об’єкту (змінної) класу.
Можливий й інший варіант оголошення об’єкту класу:
ClassName ObjName;
ObjName = new ClassName();
Після вищенаведених оголошень, змінна ObjName містить адресу пам’яті конкретного об’єкта типу ClassName.
У мові Java створення об’єкту класу відбувається у 2 етапи:
- спочатку оголошується змінна (об’єкт) типу клас. Ця змінна ще не визначає об’єкт. Вона є змінною, яка може посилатись на об’єкт;
- створюється конкретна фізична копія об’єкту, яка присвоюється цій змінній типу клас. Це здійснюється з допомогою оператора new.
⇑
4. Яка відмінність між поняттями “клас” та “об’єкт класу”?
Клас – це тільки інформація про новий складений тип даних. Фактично, клас описує формат даних. Оголошення класу носить декларативний характер. Ім’я класу є унікальним у всій програмі.
Об’єкт класу – це конкретний екземпляр класу, в якому дані класу мають деякі заповнені значення. На відміну від оголошення (декларування) класу, для об’єкту класу виділяється пам’ять. Об’єктів того самого класу може бути декілька.
⇑
5. Приклади оголошення та використання простих класів, що містять дані та методи їх обробки
Приклад 1. Клас Circle, що реалізує геометричну фігуру коло. У класі оголошуються:
- три приховані (private) змінні (члени даних) класу з іменами x, y, r. Ці змінні визначають координату центру кола та його радіус;
- чотири методи SetXYR(), GetX(), GetY(), GetR(). Ці методи є загальнодоступними (public). За замовчуванням, методи і змінні у класах на мові Java є загальнодоступними, якщо перед ними немає ключового слова private. Тому ці чотири методи є видимі за межами класу.
public class Circle { private int x, y; // координати центру кола private int r; // радіус кола // метод класу, що встановлює нові значення x,y,r void SetXYR(int nx, int ny, int nr) { x = nx; y = ny; r = nr; } // методи класу, що повертають значення int GetX() { return x; } int GetY() { return y; } int GetR() { return r; } }
Використання класу в іншому методі
// оголосити змінну типу Circle Circle c1 = new Circle(); // c1 - об'єкт класу Circle, виділення пам'яті c1.SetXYR(3, 5, 2); // викликати метод, що встановлює нові x, y, r // перевірка int d; d = c1.GetX(); // d = 3, виклик методу GetX() класу d = c1.GetR(); // d = 2
У вищенаведеному коді оголошується об’єкт (екземпляр) класу з іменем c1. Пам’ять для об’єкту c1 виділяється з допомогою оператора new. Операція виділення пам’яті оператором new є обов’язковою (на відміну від мови C++).
Далі викликаються загальнодоступні (public) методи класу Circle.
Приклад 2. Клас MyName, що реалізує прізвище, ім’я та по-батькові особи.
У класі оголошується:
- 3 змінні-екземпляри класу з іменами name, surname, patr;
- 7 методів класу з іменами GetName(), GetSurname(), GetPatr(), SetName(), SetSurname(), SetPatr(), SetMyName().
// оголошення класу MyName class MyName { // змінні-екземпряри класу MyName String name; // Прізвище String surname; // ім'я String patr; // по-батькові // методи класу String GetName() { return name; } String GetSurname() { return surname; } String GetPatr() { return patr; } void SetName(String nName) { name = nName; } void SetSurname(String nSurname) { surname = nSurname; } void SetPatr(String nPatr) { patr = nPatr; } void SetMyName(String nName, String nSurname, String nPatr) { name = nName; surname = nSurname; patr = nPatr; } }
Використання класу MyName в іншому методі або програмному коді
... // використання класу MyName в деякому методі // створення об'єкту (екземпляру) класу з іменем nm1 MyName nm1 = new MyName(); // створення об'єкту (екземпляру) класу з іменем nm2 MyName nm2; nm2 = new MyName(); String s; // виклик методів класу з об'єкту nm1 nm1.SetName("Johnson"); nm1.SetSurname("John"); nm1.SetPatr(""); s = nm1.GetSurname(); // s = "John" // виклик методів класу з об'єкту класу nm2.SetMyName("David", "Albright", ""); s = nm2.GetName(); // s = "David" nm2.name = "Michael"; // так теж можна s = nm2.GetName(); // s = "Michael" ...
⇑
6. Який тип доступу (private, public) мають члени класу за замовчуванням?
За замовчуванням, члени класу мають тип доступу public. Вони є загальнодоступними.
⇑
7. Що таке класи-“обгортки”? Яке призначення класів-“обгорток”? Приклад
Класи-обгортки призначені для представлення примітивних типів у вигляді об’єктів. Тобто, вони здійснюють перетворення примітивного типу у тип-посилання. Для кожного примітивного типу існує свій власний клас (тип) упаковування.
Нижче наводиться перелік відповідностей примітивного типу та типу (класу) упаковування:
boolean => Boolean char => Character byte => Byte short => Short int => Integer long => Long float => Float double => Double void => Void
Наприклад. Нижче наведено приклади перетворення різних примітивних типів у типи-упаковування і навпаки
// перетворення типів int <=> Integer int d = 25; Integer D = new Integer(d); // D = 25 D = new Integer(38); d = D.intValue(); // d = 38 // перетворення типів float <=> Float float f = 3.85f; Float F = new Float(f); // F = 3.85 F = new Float(7.77f); f = F.floatValue(); // f = 7.77 // перетворення типів char <=> Character char c = 'A'; Character C = new Character(c); // C = 'A' C = new Character('Z'); c = C.charValue(); // c = 'Z'
⇑
Зв’язані теми
- Конструктори. Параметризовані конструктори. Ключове слово this. Збір “сміття”. Метод finalize(). Приклади
- Перевантаження методів у класах. Перевантаження конструкторів