
Untitled
By: a guest on
Aug 7th, 2012 | syntax:
None | size: 5.60 KB | hits: 10 | expires: Never
Об’єктні типи (класи). Інкапсуляція.
З формальної точки зору об’єктні типи (класи) дуже схожі на комбіновані типи (записи (record) в Pascal та структури (struct) в С). Об’єктні типи також є складними типами, елементи (поля – fields) якого можуть мати будь-який тип. Так, найпростіший приклад об’єктового типу в Java може виглядати наступним чином:
class Point {
int x,y;
boolean visible;
}
Тут для формування об’єктного типу використовується службове слово class, а вмістом є два поля цілого типу та одне булевого типу. (Призначенням такої структури може бути зберігання інформації про розміщення деякої точки на екрані та її видимості). Поля в об’єктному типі називаються властивостями. В подальшому введений таким чином тип можна використовувати звичайним чином: створювати змінні цього типу (об’єкти, екземпляри класу), працювати з полями і т.д.
Однак, цими властивостями можливості об’єктних типів не обмежуються. Найважливішою і радикальною відмінністю від комбінованих типів є можливість, поряд з полями, задавати в об’єктному типі підпрограми. В цьому і полягає одна з основних ідей об’єктно-орієнтованого програмування: підрозумівається, що об’єкт вміщує не тільки інформацію, але і правила її поведінки, оформлені в вигляді виконуваних фрагментів. Ця властивість називається інкапсуляцією. {Пояснення: В даному прикладі такими правилами можуть бути, наприклад, операція створення точки (установка значень координат), а також операції “ввімкнення” і “вимкнення” точки та переміщення її в інше місце екрану}. Підпрограми, описані в об’єктовому типі, називаються методами (methods).
В Java визначення методів в об’єктних типах схоже на опис функцій в С:
<тип значення, що повертається> <ім’я >(<список формальних параметрів>);. Параметри записуються за синтаксисом С: <тип параметра> <ім’я параметра>. Якщо параметрів декілька, вони розділяються комами. Для кожного імені тип повинен бути вказаний окремо. В тілі метода може бути використано оператор return, який означає: 1)негайно закінчити програму; 2)повернути значення, обчислене з виразу, що стоїть після return (необов’язково).
classPoint {
int x,y;
boolean visible;
void create (int a, int b) {
x=a; y=b; .
visible = false;
}
void switchOn(){
visible = true;
}
int getX() {
return x;
}
}
Методи можуть бути лише частиною класу. Виклик метода здійснюється так:
<ім’я об’єкта>.<ім’я метода> (<список фактичних параметрів>). Наприклад: x=g.getX(). Виклик метода ще називають посиланням повідомлення об’єкту.
В тілах методів вважаються доступними ідентифікатори полів цього об'єктового типу.
Таким чином, об'єднання в одному понятті інформації про деякий реальний об'єкт-прототип (в прикладі – точки на екрані дисплея) і операцій над ним робить об'єктовий тип замкнутим самодостатнім єством, що містить всі необхідні знання про конкретний елемент прикладної області. Маючи вищенаведений опис, можна створити в програмі екземпляри об'єктного типу (екземпляри класу) – об’єкти.
Всі об’єкти в Java динамічні, статичних нема. Доступ до об’єктів здійснюється за допомогою вказівників (handle) (аналог пульту дистанційного керування для телевізора). Ім’я об’єкта реально позначає вказівник на нього. Більш того, вказівник може існувати без об’єкта (навпаки неможливо).