Difference between revisions of "Step 6 (S-10019)"
(Create page for step id=10019) |
|||
Line 1: | Line 1: | ||
Step on Stepik: https://stepik.org/lesson/548/step/6 | Step on Stepik: https://stepik.org/lesson/548/step/6 | ||
− | + | [[File:Step_6_(S-10019)_1.png|border|800px]] | |
[00:00 - 00:17] как уже было сказано выделения публичном интерфейсе позволяет абстрагироваться от конкретной реализации данного pos дать познания как это можно использовать например предположим что в классе целочисленного массива мы решили оптимизировать то место которое занимают постройки | [00:00 - 00:17] как уже было сказано выделения публичном интерфейсе позволяет абстрагироваться от конкретной реализации данного pos дать познания как это можно использовать например предположим что в классе целочисленного массива мы решили оптимизировать то место которое занимают постройки | ||
Line 12: | Line 12: | ||
− | + | [[File:Step_6_(S-10019)_2.png|border|800px]] | |
[00:55 - 01:14] давайте посмотрим как это сделать мы оставили только 1 поле непосредственно показательно при создании объектов конструктор мы будем выделять на 1 элемент больше то есть раньше мы выделяли | [00:55 - 01:14] давайте посмотрим как это сделать мы оставили только 1 поле непосредственно показательно при создании объектов конструктор мы будем выделять на 1 элемент больше то есть раньше мы выделяли |
Latest revision as of 12:31, 7 August 2017
Step on Stepik: https://stepik.org/lesson/548/step/6
[00:00 - 00:17] как уже было сказано выделения публичном интерфейсе позволяет абстрагироваться от конкретной реализации данного pos дать познания как это можно использовать например предположим что в классе целочисленного массива мы решили оптимизировать то место которое занимают постройки
[00:17 - 00:36] изначально в данном классе было 2 поля 1 размер массива 2 указатель на самого себя так как сам по себе является следственным то можно применить следующий всем оптимизации давайте хранить размер массива в самом массиве
[00:36 - 00:55] например с номером ну а дальше хранить непосредственно же значением россии пользуясь тем что все внешние пользователи нашего класса работа только с публичным интерфейсом мы можем изменить реализацию не меняю уличный интерфейса
[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] таким образом используя тот факт что все пользователи нашего вас работает только с внешним интерфейсом мы смогли изменить реализацию класса не затронув при этом код который работает эти классы