- •Тема 1. Вступ до дисципліни
- •Тема 2. Управління ходом дій операторів програми
- •Тема 3. Ініціалізація та завершення дії змінних
- •Тема 4. Реалізація і специфікатори доступу
- •Тема 5. Успадкування в Java та його особливості
- •2. Розробка програмних систем складної структури
- •Тема 10. Створення вікон і аплетів
- •Тема 11. Розподільне програмування
- •1. Вступ до мовного середовища. Ознайомлення з мовним середовищем. Початкові відомості про мовне середовище java
- •1.1. Виконання Java-програми
- •Питання і завдання
- •1.4. Інтегроване середовище jBuilder
- •2. Постулати об'єктно-орієнтованого програмування
- •2.1. Модель і абстракція
- •2.2. Ієрархія та успадкування
- •2.4. Класи, їх структура та зміст
- •3. Управління ходом дії операторів програми
- •Питання і завдання
- •4.1. Ініціалізація за допомогою конструктора
- •4.2. Конструктор без параметрів
- •4.3. Перевантаження методів
- •4.4. Ініціалізація членів класу
- •5. Реалізація
- •6. Успадкування в java та його особливості
- •Завдання для самостійного опрацювання теми
- •7. Динамічне зв'язування (поліморфізм)
- •Завдання для самостійного опрацювання теми
- •8. Інтерфейси та внутрішні класи
- •Завдання для самостійного опрацювання теми
- •9. Обробка помилок і виключних ситуацій
- •Завдання для самостійного опрацювання теми
- •10. Система вводу/виводу в java
- •Завдання для самостійного опрацювання теми
- •Програма DirList.Java
- •11. Створення вікон і аплетів
- •Завдання для самостійного опрацювання теми
- •12. Створення додатків windows
- •12.1. Сім'я операційних систем Windows
- •12.2. Структура додатка Windows
2.2. Ієрархія та успадкування
Для класифікації об'єктів використовується ієрархія. Наприклад, опис домашніх тварин (pets), можна подати так: собаки (dogs), кішки (cats), миші (mouses) тощо. class pet {
Master person;//власник тварини
Int weight, age,eatTime[ ]; //вага, вік, час приймання їжі Int eat (int food, int drink, int time){II процес їжі //початкові дії...
if (Time = = eatTime [і]) persion.getFood (food, drink); //метод
void voice(); //конкретні дії тварини //інше...
;
Далі створюємо класи, які описують більш конкретні об'єкти і пов'язані із загальним класом:
class Cat extends Pet {// властивості кішки int mouse Catched; //кількість пійманих мишей void toMouse(); //дії кішки //інші властивості
}
class Dog extends Pet ///властивості собак
voidpreserve(); //охороняти
}
Тут загальні властивості класу Pet не повторюються, а успад-ковуються автоматично.
Далі визначаємо об'єкт класу Dog і використовуємо в ньому всі властивості класу Pet так, неначе їх описано в класі Dog:
Dog kesi = new Dog (), charly = new Dog ();
Після цього можна ініціалізувати змінні:
kesi. age = 5;
Intp = charly.eat (50,10,12);
Процес можна продовжити:
class Kolly extends Dog {...} //колі
class Spaniel extends Dog{...} //спанієль.
Таким чином, може йтися про успадкування класів: клас Dog успадковує клас Pet, причому на кожному рівні ієрархії до класу додаються нові властивості.
Питання і завдання
Дати визначення термінів: підклас, надклас, суперклас. На вести приклади.
Описати клас Master (власник тварин).
Ієрархія та успадкування: схожість та відмінності.
Множинне успадкування.
2.3. Відповідальність і модульність
Процес взаємодії між об'єктами описується за допомогою методів. Звернення до методу виконується за допомогою повідомлення (message). Існують кілька особливостей при опису повідомлень.
Повідомлення рухається до конкретного об'єкта, який знає метод розв'язування
задачі. У кожного об'єкта свій поточний стан, свої значення полів класу, а це може впливати на виконання методу. Приклад — поточне значення змінної person.
Спосіб виконання доручення, яке містить повідомлення, за лежить від об'єкта приймача. Наприклад, один власник кішки дасть їй (scass), другий — принесе мишу, а третій — візьме її до себе в квартиру. Ця властивість називається поліморфізмом.
Звернення до методу здійснення тільки на етапі виконання програми. Компілятор нічого не знає про мову! Приклад: об'єкт charly, виконує свій метод eat (), надсилає повідомлення об'єк тові, посилання на який містить змінна person. Повідомлення записано в рядок person. getFood (food, drink). Суть цієї тези полягає в тому, що об'єкт charly бере на себе відповідальність задати правильні параметри в повідомленні, а об'єкт — поточне значення person — бере на себе відповідальність застосувати метод приготування getFood (), яким би він не був.
Для правильної реалізації відповідальності використовується принцип модульності. Тобто кожний клас має складати окремий модуль. До того ж члени класу, до яких не планується звернення зовні, мають бути інкапсульовані. Наприклад:
private string name;
private void preserve ();
Ці члени класів будуть закритими, а користуватися ними можуть тільки примірники того самого класу: kessi може дати доручення charly.preserve ().
У мові Java ключові слова private, public і protected позначають кожний окремий клас, а принцип модульності рекомендує відкривати члени класу тільки в разі необхідності.
При зверненні до поля класу слід включати до класу спеціальні методи доступу: окремо для читання цього поля (get method) і окремо для запису в це поле (set method). Наприклад, якщо створити клас Master
class Master ///власник собаки і кішки
String name; //прізвище, ім'я
//інші повідомлення
void getFood (int food, int drink);//
}, то методи доступу до поля name можуть мати такий вигляд:
public String getName; return name;
}
public void setName (string newName)
name=newName;
}
Реальні програмні фрагменти для обмеження доступу використовують перевірки, які змінюють значення відповідних полів: перевірка типу значення, що вводиться, встановлення діапазону чначень, порівняння зі списком допустимих значень. Ці методи мають назву set-методи.
Дуже часто крім методів допуску створюються методи перевірки, які повертають ті значення, що були true або false.
Таким чином, для взаємодії між об'єктами методи мають бути відкритими, а залежність між класами — якомога меншою. Це спрощує структуру програми і дає можливість використовувати належні класи для побудови інших програм. Водночас примірники класу мають активно взаємодіяти один з одним за рахунок включення до класу всіх компонентів, достатніх для опису поводження модельованого об'єкта.
Як життєвий приклад можна навести підводний човен, що виконує окреме, розраховане тільки на нього завдання з відповідними ресурсами. Крім методу доступу public існують закриті члени класу private і захищені protected. Наприклад, опис private String name вказує на те, що даним примірником можуть користуватися тільки примірники одного й того самого класу; protected Sharly дозволяє доступ тільки спадкоємцям класу.
Початкове ознайомлення з основами ООП створює платформу для докладнішого вивчення змісту та структури класу.
Питання і завдання
Навести життєві приклади поліформізму.
Основні ознаки acces methods.
Особливості is-методів.