Распродажа

Курс Объектно-ориентированный дизайн на Java: От синтаксиса к архитектуре

Как разложить задачу на классы, описать их в UML и выбрать подходящий шаблон проектирования

Первоначальная цена составляла 990 грн.Текущая цена: 390 грн.

-60%
Вы экономите: 600 грн (60%)
До конца акции:01дн19час53мин06сек

−20% при покупке от 2 курсов — активируется автоматически

Код на Java без продуманного дизайна быстро становится трудно читаемым: изменение одной функции ломает соседние части. Курс показывает, как выявить требования, распределить обязанности между классами и выбрать шаблон проектирования под конкретную задачу.

  • Раскладывать задачу на классы с помощью карт CRC и описывать их в UML
  • Строить диаграммы последовательности и состояний и переводить структуру в код на Java
  • Выбирать шаблон проектирования под задачу и объяснять, чем он отличается от похожих
Add to Cart
Курс Введение в объектно-ориентированный дизайн с Java
Курс Объектно-ориентированный дизайн на Java: От синтаксиса к архитектуре
990 грн Первоначальная цена составляла 990 грн.390 грнТекущая цена: 390 грн.
  • 6 часов 12 минут видео
  • 45 уроков в 3 модулях
  • Скачивается на компьютер
  • Доступ навсегда, без дедлайнов
  • Сертификат по запросу

Цифровой видеокурс для самостоятельного изучения, без обратной связи с преподавателем. После оплаты курс появится в вашем аккаунте на сайте, а ссылка на материалы придёт на email.

Покупка занимает минуту
  1. Добавляете курс в корзину.
  2. Вводите почту и пароль — это ваш аккаунт, в нём курс будет храниться постоянно.
  3. Оплачиваете любым удобным способом — их больше восьми.
  4. Курс сразу открывается в аккаунте, ссылка дублируется на почту.

Доступ навсегда: вернуться к курсу можно и через год. Вопросы — чат на сайте или info@siluette.com.ua.

Курс ведётся на русском языке: видео и материалы русскоязычные. Украинская версия курса появится позже.

Что вы сможете после курса

  • Выделять классы по требованиям и записывать обязанности каждого в карту CRC
  • Описывать класс в UML тремя секциями — именем, свойствами и операциями — и переводить его в код Java
  • Читать и строить диаграммы последовательности и состояний: сообщения, ветвления, циклы, переходы между состояниями
  • Понимать, какую задачу решает каждый из разобранных шаблонов: порождающих, структурных и поведенческих, а также MVC
  • Отличать похожие пары шаблонов — адаптер и мост, адаптер и фасад, стратегия и состояние
  • Применять принципы подстановки Лисков, открыто-закрытый, инверсии зависимостей и разделения интерфейса, а антипаттерны устранять приёмами рефакторинга

Кому подойдёт

Тем, кто пишет на Java

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

Тем, кому нужен общий язык о дизайне

Шаблоны проектирования работают как словарь: решение называют одним словом, и разработчикам меньше приходится объяснять друг другу одно и то же. Курс объясняет, какую задачу решает каждый шаблон и в каких ситуациях его применяют.

Тем, кому важно менять код без побочных эффектов

Принципы курса — слабая связанность, узкие интерфейсы, композиция вместо наследования — направлены на код, в котором модули меняются независимо. Антипаттерны разобраны вместе с приёмами рефакторинга, которыми их устраняют.

Курс не для тех, кто ещё не пишет на Java: примеры кода в карточках только на нём, а другие языки упомянуты лишь в истории развития объектного подхода.

Как проходит обучение

  • Примеры из повседневной жизни — заказ гамбургера, немецкая и английская розетки, торговый автомат, кассовая система — сложные связи объектов становятся понятны на знакомой ситуации
  • Каждый шаблон через задачу и роли — видно, кто здесь клиент, кто интерфейс, а кто конкретный класс, и эту схему можно перенести на свою задачу
  • Пары похожих шаблонов сравниваются — адаптер и мост, адаптер и фасад, стратегия и состояние — меньше шансов перепутать их в работе
  • Встроенные средства Java — для части шаблонов показано, как они устроены в самом языке: Iterator, Cloneable, Observer и Observable из java.util
  • Принципы связаны с шаблонами — шаблоны опираются на интерфейсы вместо реализаций и на композицию вместо наследования, поэтому их проще понять вместе с принципами

Что понадобится

  • Java: примеры кода в карточках написаны на этом языке
  • Карты CRC — имя класса, его обязанности и коллабораторы; с них начинается вводный урок
  • Нотация UML: диаграммы классов, последовательности и состояний. Конкретная программа для рисования в карточках не названа

Почему самому обычно не выходит

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

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

Шаблоны проектирования дают проверенные решения типовых задач и общий словарь, но их нужно подобрать под задачу. Курс объясняет, какую проблему решает каждый шаблон и чем он отличается от похожих, чтобы выбор не сводился к запоминанию.

Что изменится

До курса

  • Классы выделяются по ощущению, а обязанности между ними путаются
  • Изменение одной функции ломает соседние части кода
  • Структура существует только в голове: карты CRC и диаграммы UML не применяются
  • Наследование используется по привычке, даже когда нужен другой способ
  • Шаблоны либо незнакомы, либо подставляются без понимания задачи

После курса

  • Классы выделяются по требованиям, а обязанности каждого записаны картой CRC
  • Изменения локализованы в классе, а модули связаны узкими интерфейсами
  • Структуру описываете диаграммой UML и переводите её в код на Java
  • Наследование применяется там, где оно уместно, в остальных местах — композиция
  • Шаблон выбирается под задачу, и вы объясняете, чем он отличается от похожего

Как устроен путь

  1. Разбираете основы понятия класса и объекта, принципы абстракции, инкапсуляции и декомпозиции, карты CRC
  2. Описываете структуру в UML диаграммы классов, последовательности и состояний и перевод их в код Java
  3. Изучаете шаблоны порождающие, структурные и поведенческие шаблоны и MVC — через задачу и роли участников
  4. Закрепляете принципы подстановка Лисков, инверсия зависимостей, разделение интерфейса, антипаттерны и рефакторинг

Программа курса

45 уроков · 3 модуля · 6 часов 12 минут видео · от карт CRC и диаграмм UML до шаблонов проектирования и принципов

  • Базовые понятия объектной модели, принципы абстракции, инкапсуляции, декомпозиции и обобщения, связанность, когезия и распределение обязанностей. Раздел завершают диаграммы последовательности и состояний UML.

    • Что такое дизайн и архитектура ПО, как выявлять требования и распределять классы по картам CRC. Базовые понятия: класс, объект, инкапсуляция, наследование, полиморфизм и ассоциации.

      • Дизайн ПО и карты CRC24:54

        Урок вводит понятия дизайна и архитектуры программного обеспечения и показывает, как объектное моделирование, выявление требований и карты CRC помогают создавать гибкий и поддерживаемый код. Рассматриваются роли архитектора и дизайнера, функциональные и нефункциональные требования, объекты Entity, Boundary и Control и пример банкомата.

      • Классы, объекты, инкапсуляция, наследование, полиморфизм29:59

        Урок задаёт базовые понятия объектно-ориентированного подхода: класс и объект, инкапсуляцию, наследование, полиморфизм и ассоциации. Также разбираются основные свойства объектной модели — абстракция, инкапсуляция, модульность и иерархия — и дополнительные свойства: типизация, параллельность и сохраняемость.

      • Абстракция, декомпозиция и когда применять наследование27:48

        Урок описывает ключевые принципы ООД: абстракцию, инкапсуляцию, декомпозицию и обобщение через наследование. Отдельно показано, когда наследование применимо, почему подкласс, меняющий поведение суперкласса, нарушает принцип замещения Лисков, и как строить смартфон с камерой через декомпозицию.

    • Как абстракция, инкапсуляция, декомпозиция и обобщение выражаются на диаграмме классов: три секции класса, приватные атрибуты с методами get и set, ассоциация, агрегация, композиция, наследование и реализация интерфейса. Показан и перевод этих обозначений в код Java.

      • Принцип Абстракции в UML5:34

        Урок объясняет принцип абстракции: понятие упрощается до сути в заданном контексте. Класс на диаграмме UML описывается тремя секциями — имя, свойства и операции — и переводится в классы Java с переменными и методами.

      • Принцип Инкапсуляции в UML4:21

        Урок показывает, как инкапсуляция выражается в диаграмме классов UML и в коде: приватные атрибуты помечаются знаком минус и изменяются через публичные методы get и set. Метод set может содержать дополнительную проверку значения, что помогает сохранять целостность данных.

      • Принцип Декомпозиции в UML8:49

        Урок разбирает три типа отношений декомпозиции — ассоциацию, агрегацию и композицию — и их обозначения на диаграмме UML и в коде Java. Тип отношения определяется силой связи между целым и частями: ассоциация не предполагает владения, агрегация — слабое владение, композиция — сильное, и при уничтожении целого его части тоже уничтожаются.

      • Принцип Обобщения в UML13:04

        Урок показывает, как принцип обобщения реализуется через наследование классов и реализацию интерфейсов и как эти связи записываются на диаграмме классов UML и в Java. Разобраны стрелки наследования и реализации, одиночное наследование классов и ограничения наследования интерфейсов.

    • Связанность и когезия как критерии дизайна, распределение обязанностей между классами и скрытие информации через узкие интерфейсы. Раздел завершает тема концептуальной целостности: как команда сохраняет единый дизайн.

      • Связанность и когезия8:05

        Урок показывает, как оценивать сложность дизайна через связанность модулей и их когезию. Связанность оценивается по степени, легкости подключения и гибкости, а когезия — по ясности обязанностей модуля; рост одной из них часто меняет другую.

      • Распределение обязанностей между классами5:01

        Урок показывает, как распределить обязанности между классами: поведение и атрибуты выносятся в тот класс, которому они относятся. Разобран пример собаки и её владельца и то, как такое распределение даёт более когезионные и модульные классы.

      • Скрытие информации4:18

        Урок показывает, как ограничивать доступ к информации: раскрываются интерфейсы, а детали реализации, которые могут меняться, скрываются. Разобраны модификаторы доступа, пример метода CONCAT и то, как сокрытие позволяет менять реализацию без влияния на пользователей класса.

      • Концептуальная целостность4:12

        Урок объясняет, что такое концептуальная целостность системы и чем её поддерживают: общением в команде, обзорами кода, общими принципами дизайна, шаблонами проектирования и продуманной архитектурой. Рассматривается проверка изменений ведущим кругом разработчиков на соответствие общей архитектуре.

    • Диаграмма последовательности: линии жизни, сообщения, активации, ветвления и циклы на примере заказа гамбургера. Диаграмма состояний: переходы и действия входа, выхода и выполнения на примере торгового автомата.

      • Диаграммы последовательности UML: сообщения, ветвления и циклы5:18

        Урок показывает, как строить UML-диаграмму последовательности, описывающую порядок взаимодействия объектов во времени. Разобраны линии жизни, сплошные и пунктирные стрелки сообщений, активация, ветвления Alt с веткой else и циклы на примере заказа гамбургера.

      • Диаграммы состояний UML: переходы и действия5:32

        Урок объясняет, как диаграмма состояний описывает поведение объекта: состояния, переходы между ними под действием событий и три типа действий — входа, выхода и выполнения. Разобраны начальное состояние, завершение и пример торгового автомата.

  • Шаблоны разобраны по трём группам — порождающие, структурные и поведенческие — плюс MVC. Для каждого показаны задача, роли участников и ситуация, в которой его применяют.

    • Что такое шаблон проектирования и почему шаблоны опираются на интерфейсы и композицию. Фабричный метод, абстрактная фабрика, одиночка в ранней и отложенной формах, прототип с интерфейсом Cloneable и строитель для сложных объектов.

      • Введение в шаблоны проектирования14:06

        Урок вводит понятие шаблона проектирования как проверенного решения типовой задачи и делит шаблоны на порождающие, структурные и поведенческие. Разобраны принципы работы через интерфейсы и предпочтение композиции наследованию.

      • Factory Method Pattern11:56

        Паттерн Factory Method выносит создание объектов в отдельный метод, а выбор конкретного класса передаёт подклассам, поэтому клиентский код не меняется при появлении новых типов. Показаны абстрактный создатель, конкретные создатели-подклассы и объект-фабрика ShapeFactory.

      • Abstract Factory Pattern4:01

        Паттерн Abstract Factory создаёт фабрики связанных объектов, то есть семейств, и отделяет клиентский код от конкретных классов. Выбор нужной фабрики выполняет FactoryProducer, а клиент работает с объектами только через интерфейсы.

      • Singleton Pattern5:06

        Паттерн Singleton гарантирует один экземпляр класса и общую точку доступа к нему через статический метод getInstance. Рассмотрены ранняя форма, где экземпляр создаётся при загрузке класса, и отложенная, где он создаётся при первом обращении.

      • Prototype Pattern2:34

        Паттерн Prototype создаёт новый объект клонированием существующего экземпляра, что выгодно при дорогом создании, например при запросе к базе данных. Java реализует его через интерфейс Cloneable и защищённый метод clone класса Object.

      • Builder Pattern1:49

        Паттерн Builder собирает сложный объект по шагам через отдельный строитель, когда конструктор с большим числом полей неудобен. Показаны внутренний строитель, вложенный в класс, и внешний, вынесенный в отдельный класс, с методами newBuilder и build.

    • Адаптер, мост, компоновщик, декоратор, фасад, приспособленец и заместитель: как подключить чужой интерфейс без правки кода, добавить поведение во время выполнения или скрыть подсистему за одним классом. Пары адаптер — мост и адаптер — фасад сравниваются отдельно.

      • Adapter Pattern7:43

        Паттерн Adapter связывает два несовместимых интерфейса: адаптер реализует целевой интерфейс, который ожидает клиент, и переводит его вызовы в формат адаптируемого класса. Благодаря этому существующий код не меняется.

      • Bridge Pattern4:43

        Паттерн Bridge отделяет абстракцию от реализации через общий интерфейс реализации, поэтому обе части развиваются независимо. Урок сравнивает мост с адаптером: мост разделяет иерархии, а адаптер подгоняет один интерфейс под другой.

      • Composite Pattern8:01

        Паттерн Composite объединяет отдельные объекты и группы в древовидную структуру через общий интерфейс компонента. Листья не содержат вложенных компонентов, а составные объекты передают запрос дочерним, поэтому с ними работают одинаково.

      • Decorator Pattern16:22

        Паттерн Decorator добавляет поведение объекту во время выполнения: декораторы оборачивают компонент через агрегацию и образуют стек. Так не нужен отдельный класс для каждой комбинации поведений.

      • Facade Pattern8:21

        Паттерн Facade даёт клиентскому коду один класс-оболочку с упрощённым интерфейсом к сложной подсистеме и скрывает её устройство. Фасад не добавляет функциональности, а делегирует действия объектам подсистемы, например счетам в банковском примере.

      • Flyweight Pattern3:55

        Паттерн Flyweight экономит память, повторно используя общие объекты из пула вместо создания новых. Внутреннее состояние остаётся в объекте, а внешнее передаётся через аргументы, как в примере с FlyweightFactory и линиями разных цветов.

      • Proxy Pattern7:20

        Паттерн Proxy представляет другой объект и контролирует доступ к нему, а создание реального объекта может откладывать до необходимости. Урок разбирает виртуальный, защищённый, удалённый и интеллектуальный прокси.

    • Цепочка обязанностей, команда, интерпретатор, итератор, посредник и хранитель: как передавать запрос по цепочке обработчиков, оборачивать операцию в объект с отменой, перебирать коллекцию без знания её устройства и координировать объекты через посредника. Для итератора показаны методы next и hasNext из Java.

      • Chain Of Responsibility Pattern7:49

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

      • Command Pattern8:17

        Паттерн Command оборачивает запрос в отдельный объект с методами execute, unExecute и isReversible, отделяя отправителя от получателя. Команды позволяют отменять, откладывать и протоколировать операции, а инвока вызывает команду через execute.

      • Interpreter Pattern4:00

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

      • Iterator Pattern2:21

        Паттерн Iterator позволяет последовательно обходить элементы коллекции, не раскрывая её внутреннего устройства. Агрегат создаёт итератор, а ConcreteIterator хранит текущую позицию и предоставляет методы next и hasNext.

      • Mediator Pattern3:22

        Паттерн Mediator вводит центрального посредника, который обрабатывает взаимодействия между объектами, чтобы снизить их прямую связанность. Коллеги обмениваются сообщениями через метод send конкретного посредника, например диспетчерский пункт в примере с авиацией.

      • Memento Pattern2:47

        Паттерн Memento сохраняет состояние объекта в отдельном объекте-снимке, чтобы позже его восстановить, что лежит в основе механизма отмены. Originator создаёт снимок, Caretaker хранит набор снимков и возвращает нужный.

    • Наблюдатель, состояние, стратегия, шаблонный метод и посетитель, а также MVC: как уведомлять подписчиков об изменениях, менять поведение через состояние или стратегию, выносить общий алгоритм в абстрактный класс и добавлять операции без правки классов элементов. Пара стратегия — состояние сравнивается отдельно.

      • Observer Pattern8:50

        Паттерн Observer позволяет субъекту уведомлять зарегистрированных наблюдателей об изменении своего состояния через метод update, сохраняя слабую связь. Связь имеет вид «один ко многим», а встроенные Observer и Observable из java.util позволяют не писать собственные интерфейсы.

      • State Pattern9:16

        Паттерн State меняет поведение объекта вместе с его внутренним состоянием: каждое состояние инкапсулирует свои действия за общим интерфейсом State. Контекст хранит ссылку на текущее состояние и делегирует ему обработку событий, как в примере торгового автомата.

      • Strategy Pattern2:50

        Паттерн Strategy выносит алгоритм в отдельные взаимозаменяемые объекты-стратегии, которые контекст получает через конструктор и использует в методе executeStrategy. Урок сравнивает стратегию с состоянием: стратегия не меняет себя и не ссылается на контекст.

      • Template Pattern7:50

        Паттерн «шаблонный метод» фиксирует порядок шагов алгоритма в абстрактном классе и финальным методом запрещает его переопределение. Подклассы реализуют абстрактные шаги, а хук-методы с реализацией по умолчанию могут переопределяться.

      • Visitor Pattern3:38

        Паттерн «Посетитель» выносит операции над набором элементов в отдельный класс, не меняя сами классы элементов. Элементы принимают посетителя через метод accept, а посетитель накапливает результат в своём локальном состоянии во время обхода.

      • MVC Pattern7:25

        Паттерн MVC делит систему с пользовательским интерфейсом на модель, вид и контроллер: модель содержит данные и логику и не зависит от видов и контроллера. Вид получает обновления через Observer, а действия пользователя передаются контроллеру, который меняет модель.

  • Подстановка Лисков, открыто-закрытый принцип, инверсия зависимостей, композиция вместо наследования, разделение интерфейса и принцип наименьшего знания. Завершают раздел антипаттерны — дублированный код, длинный метод, класс данных, примитивная одержимость — и приёмы рефакторинга, которыми их устраняют.

    • Подстановки Лисков7:24

      Урок объясняет принцип подстановки Лисков: наследование корректно, если подкласс можно использовать вместо базового класса без изменения поведения программы. Подкласс не может усиливать предусловия и ослаблять постусловия, а инварианты базового класса должны сохраняться. Язык этих ограничений не проверяет, их соблюдает разработчик.

    • Открыто-закрытый принцип5:44

      Урок объясняет открыто-закрытый принцип: стабильные классы не изменяют, а новые возможности добавляют расширением через наследование или полиморфизм. Абстрактный класс задаёт сигнатуры методов, а каждый подкласс предоставляет свою реализацию. Ключевое слово final закрывает дальнейшее наследование класса или метода.

    • Инверсии зависимостей7:18

      Урок объясняет принцип инверсии зависимостей: верхний уровень системы опирается на интерфейсы или абстрактные классы, а не на конкретные реализации. Клиентский код работает с абстракцией, поэтому реализацию можно заменить без правок в клиентах. Так алгоритм сортировки меняется заменой реализации.

    • Композиция вместо наследования7:54

      Урок показывает, что композиция и делегирование дают более слабое связывание, чем наследование, но наследование полностью исключать не нужно. Композиция позволяет менять поведение объекта во время выполнения, тогда как наследование фиксирует его на этапе компиляции. Недостаток композиции в том, что для каждого класса приходится писать отдельный код общего поведения.

    • Разделение интерфейса4:39

      Урок объясняет, что крупный интерфейс с лишними методами заставляет классы зависеть от чужого поведения или получать пустые заглушки. Принцип разделения интерфейса велит дробить такие интерфейсы на меньшие, соответствующие реальным функциям класса. Большие интерфейсы сами по себе не ошибка: их стоит рассматривать в контексте системы.

    • Принцип наименьшего знания6:49

      Урок объясняет принцип наименьшего знания: класс должен знать минимум о других классах системы, а закон Деметры ограничивает круг вызываемых методов ближайшими объектами. Допустимы вызовы методов того же класса, объекта из параметра, локально созданного объекта и прямого компонента. Цепочка вызовов через чужие объекты нарушает закон: например, водителю незачем напрямую управлять мотором автомобиля.

    • Анти-паттерны20:33

      Урок перечисляет антипаттерны, затрудняющие изменение кода, и признаки, по которым их распознают: дублированный код, длинные методы и большие классы, примитивная одержимость, классы данных без поведения. Для каждого случая названы приёмы рефакторинга, например перенос методов, выделение классов и введение объектов-параметров. Рефакторинг меняет внутреннюю структуру кода, не затрагивая его внешнего поведения.

Частые вопросы

Здесь собраны ответы почти на все вопросы, которые задают перед покупкой. Нажмите на вопрос, чтобы раскрыть ответ.

Об этом курсе

  • Примеры кода в карточках написаны на Java, другие языки упомянуты только исторически. Курс рассчитан на тех, кто уже пишет программы на Java и хочет проектировать классы и связи между ними.

  • Конкретная среда для UML в карточках не названа. Понадобятся карты CRC и знание обозначений UML: диаграммы классов, последовательности и состояний, ассоциации, агрегации, композиции, наследования и реализации интерфейса.

  • В большинстве уроков задания нет, а результат урока описан как понимание темы: что такое шаблон, какую задачу он решает, как устроены роли участников. Закрепить материал можно, перенеся пример из урока в свою задачу на Java.

  • Порождающие: фабричный метод, абстрактная фабрика, одиночка, прототип, строитель. Структурные: адаптер, мост, компоновщик, декоратор, фасад, приспособленец, заместитель. Поведенческие: цепочка обязанностей, команда, интерпретатор, итератор, посредник, хранитель, наблюдатель, состояние, стратегия, шаблонный метод, посетитель, а также MVC.

  • Нет. В карточках разобраны диаграммы классов, последовательности и состояний. Диаграмм вариантов использования (use case) в курсе нет.

  • Отдельно нет. Рефакторинг упомянут как приём устранения антипаттернов, а среды разработки и инструменты рефакторинга в карточках не названы. Гибкая разработка и обзоры кода затронуты только как способы поддерживать целостность дизайна.

Доступ и материалы

  • Сразу после оплаты, в ту же секунду и автоматически. Ждать подтверждения не нужно. Доступ приходит двумя путями сразу. Первый: на почту, указанную при оформлении заказа, приходит письмо со ссылкой на материалы. Второй: та же ссылка появляется в вашем аккаунте на сайте, в разделе «Загрузки», и остаётся там постоянно.

  • Все видео и дополнительные файлы лежат в облачном хранилище. Ссылка на него — в вашем аккаунте на сайте, раздел «Загрузки», и в письме, которое пришло после оплаты. Аккаунт здесь — не формальность, а способ доставки: курс остаётся в нём навсегда. Даже если письмо потерялось или вы вспомнили о покупке через год, ссылка будет на месте.

  • Скачивать можно и нужно. Мы рекомендуем сохранить видео на компьютер и смотреть оттуда. Причина простая: облачное хранилище не рассчитано на просмотр видео. Иногда оно позволяет включить ролик прямо в браузере, но качество при этом заметно хуже исходного. На своём компьютере вы увидите курс таким, каким его записывали.

  • Бессрочно. Курс остаётся вашим навсегда, возвращаться к нему можно сколько угодно раз. Если через год или два ссылка вдруг перестанет открываться по техническим причинам — напишите на info@siluette.com.ua, мы её восстановим.

  • Прежде всего: доступ у вас есть в любом случае. Войдите на сайт и откройте раздел «Загрузки» — ссылка на курс уже там, независимо от того, дошло письмо или нет. Чаще всего письмо теряется из-за опечатки в адресе при оформлении заказа. Ещё стоит заглянуть в папку «Спам». Не разбирается — не тратьте время: напишите на info@siluette.com.ua или в чат в правом нижнем углу сайта, мы поможем.

  • Лучше всего на компьютере или ноутбуке: скачайте видео и откройте любым привычным плеером. Понадобятся установленные видеокодеки — на большинстве компьютеров они уже есть. Скачать курс можно на сколько угодно устройств. А вот телефон мы не советуем, и по двум причинам. На маленьком экране плохо видно детали, особенно если в уроке показывают интерфейс программы. И на телефонах часто нет кодеков для форматов, в которых записаны видео.

Оплата и возврат

  • Банковской картой Visa, MasterCard или Prostir, через Google Pay, Apple Pay, Masterpass, Visa Checkout, платёжный QR-код, Botpay в Telegram или Privat24. Есть и оплата частями: Монобанк (3 или 4 платежа), А-Банк (2, 3 или 4 платежа и рассрочка), Банк Глобус (8 платежей), «Скибочка» от OTP Bank (3 платежа), мгновенная рассрочка и оплата частями от ПриватБанка.

  • Да. Платёжная система принимает карты из Евросоюза и любых других стран. Одна деталь, о которой часто забывают: банк может попросить подтвердить платёж — в мобильном приложении или кодом из СМС. Если оплата не проходит, проверьте приложение банка и сообщения.

  • Добавьте в корзину два курса или больше — скидка применится автоматически ко всем товарам в корзине. Два курса: минус 20% на оба. Пять курсов: минус 20% на все пять. Скидка сочетается с любыми акционными ценами и действует на весь каталог без исключений.

  • Цифровые товары возврату и обмену не подлежат. Это общее правило для всех электронных товаров в Украине — постановление Кабинета Министров № 172 от 19 марта 1994 года. При этом мы всегда на связи. Если доступ не открывается, ссылка перестала работать или файлы повреждены — напишите на info@siluette.com.ua, укажите дату и номер заказа. Восстановим. Если что-то непонятно в самом курсе, тоже пишите — подскажем.

  • Пока нет. Мы работаем только с частными покупателями — безналичной оплаты по счёту от юридических лиц сейчас нет.

Как проходит обучение

  • Нет. Все курсы — это записи уроков для самостоятельного изучения: преподаватель не отвечает на вопросы и не проверяет домашние задания. Именно поэтому курсы стоят намного дешевле обучения с куратором. Вы получаете тот же материал, но занимаетесь сами и в своём темпе.

  • Да, цифровой сертификат — по запросу и бесплатно. Напишите на info@siluette.com.ua, укажите имя и фамилию ровно в том виде, в каком хотите видеть их в сертификате, и мы пришлём его в течение суток.

  • Для большинства курсов — нет. Они рассчитаны на начальный уровень и объясняют с азов. Если курс требует подготовки, это сказано в его описании.

  • Нет. Ни дедлайнов, ни расписания, ни сгорающего доступа. Скачали — смотрите когда удобно, с любыми перерывами.

  • Курс покупается для личного использования, и мы просим относиться к этому по-человечески: за каждым уроком стоит работа, а цена и так сильно снижена.

Поддержка

  • Лучше всего на info@siluette.com.ua. Есть и чат в правом нижнем углу сайта, но почта надёжнее: там можно всё описать подробно и приложить скриншоты. Просьба: опишите, что именно вы делали и что пошло не так, и приложите снимок экрана с ошибкой. Так мы решим вопрос сразу, а не будем полдня выяснять, что произошло.

  • В рабочее время, с 9:00 до 19:00, на почту обычно отвечаем в течение часа, в чате — за пару минут. После 19:00 тоже случается, но время ответа не обещаем.

Отзывы покупателей

  1. Юлия

    16.12.2024 Подтвержденный клиент

    Очень много примеров кода. Это главное. Не просто теория, а сразу отработка навыков. Рекомендую.

  2. Ирина

    12.12.2024 Подтвержденный клиент

    Singleton, Factory, Adapter - наконец-то я поняла, что это такое на практике. Раньше это были просто слова из книжек.

  3. Екатерина

    03.11.2024 Подтвержденный клиент

    Курс для тех, кто уже знает Java, но хочет писать "правильно". Паттерны - это то, что отличает профи от новичка. Очень системный курс.

Показано 3 из 3

Оставить отзыв