Step 6 (S-10019)

From Stepik Wiki
Revision as of 16:54, 17 March 2017 by Admin (Talk | contribs) (Create page for step id=10019)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/548/step/6

<img width="50%" src="https://ucarecdn.com/e458b1dd-feae-4428-85d6-1d1fd82bda72/">

[00:00 - 00:17] как уже было сказано выделения публичном интерфейсе позволяет абстрагироваться от конкретной реализации данного pos дать познания как это можно использовать например предположим что в классе целочисленного массива мы решили оптимизировать то место которое занимают постройки


[00:17 - 00:36] изначально в данном классе было 2 поля 1 размер массива 2 указатель на самого себя так как сам по себе является следственным то можно применить следующий всем оптимизации давайте хранить размер массива в самом массиве


[00:36 - 00:55] например с номером ну а дальше хранить непосредственно же значением россии пользуясь тем что все внешние пользователи нашего класса работа только с публичным интерфейсом мы можем изменить реализацию не меняю уличный интерфейса


<img width="50%" src="https://ucarecdn.com/9030ac0f-34bf-470d-a18f-f4420a246d2a/">

[00:55 - 01:14] давайте посмотрим как это сделать мы оставили только 1 поле непосредственно показательно при создании объектов конструктор мы будем выделять на 1 элемент больше то есть раньше мы выделяли


[01:14 - 01:29] size редактировать + 1 и в теле конструктора мы будем присваивать нулевому элементу массива непосредственно размер массива которые нам передали в конструкторе


[01:29 - 01:48] деструкторы ничего не меняется но так как при удалении массива нам не нужно указывать его размер эта информация хранится в служебной метод get изменится теперь возвращаю


[01:48 - 02:03] ссылку на элемент с номером и мы в действительности по возвращать ссылку на элемент с номером и + 1 потому что 1 чекин вечном равно на странице размер но и метод сайте тоже изменится


[02:03 - 02:20] вместо возвращения значения мы будем возвращать значение которое хранится в 1 части массива то сейчас заметил что при этом сигнатура публичных методов не изменилось а значит внешними видать не заметит


[02:20 - 02:36] таким образом используя тот факт что все пользователи нашего вас работает только с внешним интерфейсом мы смогли изменить реализацию класса не затронув при этом код который работает эти классы