Массивы и итераторы (часть 2)

В прошлой части мы поговорили вкратце об итераторах – о том как и зачем ими пользоваться.
В этой части я расскажу как он устроен изнутри, как написать свой итератор, и о разных типах и множестве возможностей этого чудесного инструмента.

Итератор это интерфейс от которого мы наследуемся – вот он.

interface Iterator extends Traversable {
    abstract public mixed current ( void )
    abstract public scalar key ( void )
    abstract public void next ( void )
    abstract public void rewind ( void )
    abstract public boolean valid ( void )
}

Разберемся поподробнее зачем нужна каждый из этих методов.

Читать далее “Массивы и итераторы (часть 2)”

Массивы и итераторы (часть 1)

С массивами в программировании невозможно не столкнуться. Они – огромная и очень полезная часть любого кода.

Сегодня речь пойдет об итераторах.

“Итератор (от англ. iterator) — объект, абстрагирующий за единым интерфейсом доступ к элементам коллекции. Итератор иногда также называют курсором, особенно если речь идет о базе данных. В Обероне он называется также бегуно́к и представлен как тип данных. В простейшем случае итератором в низкоуровневых языках является указатель.”
(c) Wikipedia

То есть итератор представляет из себя список чего либо, и с помощью итератора мы можем проходить по этому списку и выбирать нужные значения.
Он работает немного не так как простые массивы – он просто перемещает указатель и забирает то значение на которое указывает текущий указатель.

Но зачем?

Читать далее “Массивы и итераторы (часть 1)”

Паттерн Стратегия

В продолжении темы о паттернах, сегодня я расскажу вам простым языком о паттерне “Стратегия“.

“поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости.”
(с) Wikipedia

Ничего удивительного – как обычно все слишком туманно.
Попробуем разобраться.

Читать далее “Паттерн Стратегия”

Абстрактная фабрика

Этой статьей я положу начало серии статей “Паттерны проектирования“.

Мне никогда не нравилось как их преподносят в интернете – в то время когда я только начинал их изучать они казались мне слишком сложными, и я постараюсь это исправить.
Конечно не могу сказать уверенно что мое описание будет самым лучшим и правильным, но оно будет явно лучше чем например описание из википедии.

“… порождающий шаблон проектирования, позволяющий изменять поведение системы, варьируя создаваемыми объектами, при этом сохраняя интерфейсы… ”
(c) Wikipedia

Поведения системы? Создаваемые объекты? Интерфейсы? Что?

Постараемся разобраться на пальцах.

Читать далее “Абстрактная фабрика”