Інкапсуляція в java

Для всіх класів даного пакету

Відкриті члени класу складають зовнішню функціональність, яка доступна іншим класам. Закритими (private) зазвичай оголошуються незалежні від зовнішнього функціоналу члени, а також допоміжні методи, які є лише деталями реалізації і неуніверсальність за своєю суттю. Завдяки приховування реалізації класу можна міняти внутрішню логіку окремого класу, не змінюючи код інших компонентів системи.

Дуже часто програмістами використовується доступ до властивостей класу тільки через його методи (принцип bean класів), який дозволяє затверджувати значення полів, так як пряме звернення до властивостей відстежувати вкрай складно, а значить їм можуть присвоюватися некоректні значення на етапі виконання програми. Такий принцип відноситься до управління інкапсульованими даними і дозволяє швидко змінити спосіб зберігання даних. Якщо дані стануть зберігатися не в пам'яті, а в файлах або базі даних, то потрібно змінити лише ряд методів одного класу, а не вводити цю функціональність в усі частини системи.

Програмний код, написаний з використанням цього принципу легше налагоджувати. Для того щоб дізнатися, в який момент часу і хто змінив властивість цікавить нас об'єкта, досить додати висновок налагоджувальної інформації в той метод об'єкта, за допомогою якого здійснюється доступ до властивості цього об'єкта. При використанні прямого доступу до властивостей об'єктів програмісту б довелося додавати висновок налагоджувальної інформації в усі ділянки коду, де використовується цікавий для нас об'єкт.

Автоупаковка (outboxing)

У Java 2 5.0 введена автоупаковка примітивів. Автоупаковка - це процес автоматичного інкапсуляції даних примітиву (простого типу) в еквівалентну об'єктну оболонку типу. Автоупаковка примітиву в об'єктну оболонку потрібно тому, що примітиви лежать поза ієрархії класів. Найчастіше процес автоупаковкі необхідний при роботі з колекціями, так як колекції оперують об'єктами.

До появи автоупаковкі процес упаковки проводився вручну за допомогою операції new, наприклад:

За допомогою автоупаковкі, введеної в версії 5.0 створення об'єкта явно не відбувається, інкапсуляція відбувається автоматично:

При цьому немає необхідності в явному створенні об'єкта потрібного типу.


Warning. mysql_connect () [function.mysql-connect]: Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning. mysql_db_query () [function.mysql-db-query]: Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning. mysql_db_query () [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning. mysql_fetch_array (): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Дізнайся про що ти насправді зараз думаєш тут.


[An error occurred while processing this directive]


Warning. mysql_connect () [function.mysql-connect]: Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning. mysql_db_query () [function.mysql-db-query]: Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning. mysql_db_query () [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning. mysql_fetch_array (): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95

Схожі статті