1

Тема: Поясніть за модифікатори доступу

Привіт. Який взагалі сенс має ставити якійсь змінній мод. доступу private? Це для дурних програмістів, котрі можуть зненацька змінити значення якоїсь змінної, значення котрої не треба змінювати, чи значення змінної може саме зненацька змінитись і мод. доступу запобігає цьому? Чи це чисто для красоти придумано все?

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

2

Re: Поясніть за модифікатори доступу

Всі змінні класу повинні бути private або protected, якщо слідувати принципам ООП. А для доступу до них можна використовувати властивості або методи.

Зазвичай нормальний серйозний клас містить велику кількість змінних, але користувачу вони не потрібні. Наперед потрібно визначитись чи знадобляться вони дочірньому класу чи. Якщо знадобляться, то ставимо protected, якщо ні, то private. Якщо оголосити змінну як public, то потім IDE буде підсвічувати її при автокомпліті. Якщо їх більше 100, то це вже не файно і не зручно буде працювати програмісту. Плюс до всього якщо хтось захоче використати ваш клас, то йому знадобляться лише protected змінні та відповідні методи :)

3

Re: Поясніть за модифікатори доступу

Replace написав:

Всі змінні класу повинні бути private або protected, якщо слідувати принципам ООП. А для доступу до них можна використовувати властивості або методи.

Зазвичай нормальний серйозний клас містить велику кількість змінних, але користувачу вони не потрібні. Наперед потрібно визначитись чи знадобляться вони дочірньому класу чи. Якщо знадобляться, то ставимо protected, якщо ні, то private. Якщо оголосити змінну як public, то потім IDE буде підсвічувати її при автокомпліті. Якщо їх більше 100, то це вже не файно і не зручно буде працювати програмісту. Плюс до всього якщо хтось захоче використати ваш клас, то йому знадобляться лише protected змінні та відповідні методи :)

тобто на роботу програми воно не впливає? можна отримати один і той самий результат використовуючи в коді змінні паблік, або асорті з protected та private, але з protected та private буде гарніше, логічніше та більш зручніше для іншого программіста?

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...

4 Востаннє редагувалося DOP (04.11.2013 03:08:47)

Re: Поясніть за модифікатори доступу

можна отримати один і той самий результат використовуючи в коді змінні паблік, або асорті з protected та private, але з protected та private буде гарніше, логічніше та більш зручніше для іншого программіста?

Просто почитайте більше про інкапсуляцію...
І ще: Ви, як розробник класу, маєте дбати про його зручний інтерфейс, а також на те, що його можуть юзати інші люди. А ще важливий момент(про який вже згадали)  - дочірні класи, ієрархія класів. Не завжди дочірньому класу потрібні змінні батька(що ну зовсім не потрібні дочірньому).

Тут мала би бути якась влучна фраза(вибачте, що витратив кілька секунд вашого часу на прочитання).
Подякували: leofun011

5

Re: Поясніть за модифікатори доступу

FakiNyan написав:

тобто на роботу програми воно не впливає? можна отримати один і той самий результат використовуючи в коді змінні паблік, або асорті з protected та private, але з protected та private буде гарніше, логічніше та більш зручніше для іншого программіста?

Для вас це теж буде зручіше... Коли самі будете використовувати свій же клас.

6

Re: Поясніть за модифікатори доступу

FakiNyan написав:

Це для дурних програмістів, котрі можуть зненацька змінити значення якоїсь змінної

Так. З урахуванням того, що "дурним програмістом" можете виявитися ви самі, коли за два тижні після написання класу забудете, що зміна однієї змінної має тягнути за собою, скажімо, ще й її вивід чи зміну іншої змінної.

Подякували: Bartash, leofun012

7

Re: Поясніть за модифікатори доступу

koala написав:
FakiNyan написав:

Це для дурних програмістів, котрі можуть зненацька змінити значення якоїсь змінної

Так. З урахуванням того, що "дурним програмістом" можете виявитися ви самі, коли за два тижні після написання класу забудете, що зміна однієї змінної має тягнути за собою, скажімо, ще й її вивід чи зміну іншої змінної.

ну зрозуміло.

All you want is a dingle,
What you envy's a schwang,
A thing through which you can tinkle,
Or play with, or simply let hang...