Skip to content

Commit 1afb22e

Browse files
authored
Merge pull request #734 from Arkanit7/patch-2
review: 04-private-protected-properties-methods
2 parents 2aa39b8 + 191e726 commit 1afb22e

File tree

1 file changed

+8
-8
lines changed
  • 1-js/09-classes/04-private-protected-properties-methods

1 file changed

+8
-8
lines changed

1-js/09-classes/04-private-protected-properties-methods/article.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
Один з найважливіших принципів об’єктно-орієнтованого програмування -- розділення внутрішнього інтерфейсу від зовнішнього.
55

6-
Це обов’язкова практика у розробці вcього, що складніше, ніж застосунок "hello world".
6+
Це обов’язкова практика у розробці всього, що складніше, ніж застосунок "hello world".
77

88
Щоб зрозуміти це, відійдімо від розробки та поглянемо на реальний світ.
99

@@ -23,7 +23,7 @@
2323

2424
Кавові машини досить надійні, чи не так? Ми можемо використовувати її один рік, і тільки якщо щось піде не так -- віднести її в ремонт.
2525

26-
Секрет надійності та простоти кавоварки -- всі деталі добре налаштовані і *приховані* всередині.
26+
Секрет надійності та простоти кавоварки -- всі деталі добре налаштовані та *приховані* всередині.
2727

2828
Якщо ми видалимо захисне покриття з кавоварки, то використовувати її буде набагато складніше (де натискати?), і небезпечніше (вона може вдарити електричним струмом).
2929

@@ -44,7 +44,7 @@
4444

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

47-
Отже, все, що нам потрібно для використання об’єкту, -- це знати його зовнішній інтерфейс. Ми можемо повністю не знати, як він працює всередині, і це чудово.
47+
Отже, все, що нам потрібно для використання об’єкта, -- це знати його зовнішній інтерфейс. Ми можемо повністю не знати, як він працює всередині, і це чудово.
4848

4949
Це було загальне введення.
5050

@@ -127,7 +127,7 @@ coffeeMachine.waterAmount = -10; // _waterAmount буде 0, а не -10
127127

128128
Для кавоварки це саме так: потужність ніколи не змінюється.
129129

130-
Щоб це зробити, потрібно зробити лише гетер, без сетеру:
130+
Щоб це зробити, потрібно зробити лише гетер, без сетера:
131131

132132
```js run
133133
class CoffeeMachine {
@@ -190,7 +190,7 @@ new CoffeeMachine().setWaterAmount(100);
190190

191191
В JavaScript є закінчена пропозиція, майже у стандарті, що забезпечує підтримку приватних властивостей та методів на рівні мови.
192192

193-
Приватні властивості і методи повинні починатися з `#`. Вони доступні лише з класу.
193+
Приватні властивості та методи повинні починатися з `#`. Вони доступні лише з класу.
194194

195195
Наприклад, ось приватна властивість `#waterLimit` та приватний метод, що перевіряє кількість води `#fixWaterAmount`:
196196

@@ -224,7 +224,7 @@ coffeeMachine.#waterLimit = 1000; // Помилка
224224

225225
На рівні мови, `#` -- це особливий знак того, що поле є приватним. Ми не можемо отримати доступ до нього ззовні або з наслідуваних класів.
226226

227-
Приватні поля не конфліктують з публічним. Ми можемо мати як приватне `#waterAmount` та і публічне `waterAmount` поле одночасно.
227+
Приватні поля не конфліктують з публічними. Ми можемо мати як приватне `#waterAmount`, так і публічне `waterAmount` поля одночасно.
228228

229229
Наприклад, зробімо аксесор `waterAmount` для `#wateramount`:
230230

@@ -251,7 +251,7 @@ alert(machine.#waterAmount); // Помилка
251251

252252
На відміну від захищених, приватні поля забезпечуються самою мовою. Це добре.
253253

254-
Але якщо ми наслідуємося від `CoffeeMachine`, то ми не матимемо прямого доступу до `#waterAmount`. Ми повинні будемо покладатися на `wateramount` гетер/сетер:
254+
Але якщо ми наслідуємося від `CoffeeMachine`, то ми не матимемо прямого доступу до `#waterAmount`. Ми повинні будемо покладатися на `waterAmount` гетер/сетер:
255255

256256
```js
257257
class MegaCoffeeMachine extends CoffeeMachine {
@@ -285,7 +285,7 @@ class User {
285285

286286
## Підсумки
287287

288-
З точки зору ООП, відокремлення внутрішнього інтерфейсу від зовнішнього називається [інкапсуляція](https://uk.wikipedia.org/wiki/Інкапсуляція_(програмування)).
288+
З точки зору ООП, відокремлення внутрішнього інтерфейсу від зовнішнього називається [інкапсуляцією](https://uk.wikipedia.org/wiki/Інкапсуляція_(програмування)).
289289

290290
Це дає наступні переваги:
291291

0 commit comments

Comments
 (0)