
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
Открываем тему объектно-ориентированного программирования (ООП). В этом уроке будет немного больше теории, чем обычно. Задача – на примерах и ассоциациях понять логику классов, зачем они нужны и что с их помощью можно реализовывать.
В качестве введения в понятие "класс" расскажу примеры классов в самом языке, с которыми мы уже неоднократно работали. Далее плавно перейдем к понятию "сущность". Как ее выявить и почему в мире разработки программного обеспечения принят использовать такой подход. Все это будем рассматривать на примере очередного гипотетического приложения. Это будет каталог с рецептами, блюда можно будет добавлять в избранное, просматривать этапы готовки и скачивать ингредиенты в качестве списка покупок.
Реализацию будем держать в уме – такой подробный пример нужен, чтобы научиться мыслить в стиле ООП, выделять будущие классы и наделять их свойствами.
Во второй части приступим к "оживлению" классов. Мы продумаем какими действиями должны обладать объекты в приложении. Эти действия превратим в функции и наполним демонстрационной логикой. В конце воспроизведем несколько пользовательских сценариев, используя описанные выше функции.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
В этом уроке изучим устройство конструкторов в Kotlin. Конструктор вызывается каждый раз при создании экземпляра класса. Рассмотрим, как создавать объекты и инициализировать их с пустым конструктором.
В чем были сложности и какие прелести создания объектов появились благодаря Котлин. Конструкторов может быть несколько. Один основной (primary constructor) и множество дополнительных или вторичных конструкторов (secondary constructor).
Станет понятен процесс инициализации переменных класса, а также порядок вызовов блоков кода при создании объекта. Также расскажу про блоки инициализации – init. В них можно поместить код, который должен будет непрекословно выполниться при создании экземпляров класса. Блоков init может быть множество, выполняться они будут в порядке расположения в коде.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
Знакомимся с крутой фичей языка программирования Kotlin – null safety. Сначала расскажу в целом что такое исключения в программировании и про NullPointerException (NPE) в частности. Также коротко приведу пример, когда может возникнуть эта ошибка при взаимодействии с сервером. Далее изучим основные операторы в теме null-безопасности: оператор безопасного вызова (?.) и оператор утверждения "Это не null" (!!).
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
На примере Kotlin разбираем один из принципов объектно-ориентированного программирования (ООП). В уроке коротко опишу что это такое и в каких ситуациях применяется. На примере логики определения сущностей космических кораблей создадим базовый класс-родитель с общими свойствами и функциями. Затем создадим два подкласса. На примере продемонстрирую как установить связь между родителем и потомком. Итогом будет создание объектов подклассов и вызов у этих объектов базовых методов суперкласса.
Далее будет продемонстрирована логика расширения и переопределения методов в подклассе для специализированной для него реализации. В заключение будет пару слов про ключевое слово super, с помощью которого можно обращаться к свойствам и методам суперкласса.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
Немного затронем абстрактные классы в Kotlin. Объявим абстрактный класс с такими же полями и методами внутри него. Далее создадим дочерний класс космического шаттла Первого ордена и имплементируем в него поля и методы родителя.
Не смотря на общую схожесть интерфейсов и абстрактных классов, расскажу про их функциональные отличия. Научимся создавать интерфейсы и станет понятно по какому принципу лучше их объединять.
Далее покажу как применять те или иные интерфейсы к классам. Делать это будем с базовым классом, так как весь функционал автоматически передастся дочерним классам.
Наконец, создадим экземпляр конкретизированного класса с типом космического шаттла и проверим корректность отработки реализованных методов интерфейсов.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
Рассказываю про модификаторы доступа (видимости) в Kotlin. public, private, protected, internal. Краткое описание каждого из них и примеры.
В качестве примера будем описывать объект "Путеводитель для путешествующих автостопом по Галактике". Наглядно будет понятно, какой областью видимости обладает каждый из модификаторов. Из какого класса или файла к нему можно обратиться или он будет виден.
Далее поговорим еще об одном принципе ООП – инкапсуляции. И в завершении покажу как обращаться к приватным переменным в классе извне безопасно. Это подведет нас к теме сеттеров и геттеров.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
Сеттеры и геттеры в языке программирования Kotlin (setter and getter). Из урока вы поймете, что это такое и как работает. При обращении к полям, Котлин под капотом генерирует их самостоятельно. Но их можно кастомизировать под свои нужды и я покажу как.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
Полиморфизм в языке программирования Kotlin. Один из принципов ООП. Не редкий вопрос на собеседованиях. У тех интервьюеров, которые придают большее значение теории, чем реальному опыту и технологиям. Ок. Подразделяется на 3 типа: ad hoc (по случаю), subtyping (полиморфизм включения), parametric (параметрический).
В уроке даю описание по всем этим типам, а подробно и с примерами останавливаюсь на первых двух. Будем создавать гипотетический модуль приложения с заметками, в которых заметки будут иметь различные типы – простой текст, номер телефона или список дел. И мы сделаем так, чтобы со всеми такими разнообразными объектами можно было взаимодействовать через одну функцию. А также создавать новые типы объектов с другими характеристиками и безболезненно внедрять в текущую логику программы.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
enum классы в языке программирования Kotlin. enum – сокращение от enumeration, поэтому по другому они еще называются классы перечисления. enum полезен там, где сущность может принимать одно из заранее известных вариантов значений.
В качестве примера будем рассматривать хранение в классе перечисления констант статусов готовности блюда. В гипотетическом приложении для доставки еды. Будем парсить коды ошибок с функции-имитации сервера и запускать соответствующие статусы и действия, которые к ним имеют отношение.
В уроке покажу как можно автоматически заполнять нужными значениями when. И в завершении разберем что такое TODO и зачем это нужно, а также как тудушки роняют программу, если оставлять их без присмотра.
Ссылка на дополнительные учебные материалы прикреплена в ресурсах к уроку.
В языке программирования Kotlin есть анонимные функции, а есть лямбды, которые тоже иногда называют анонимными функциями. Сейчас объясню почему. В уроке сначала разбираем устройство анонимных функций – как создаются, какой у них тип, где применяются.
Еще мы столкнемся с неочевидным поведением кода. Обладая полученной информацией, станут понятны отличия обычных анонимных функций в Котлин от лямбда-выражений. Разберем создание лямбд по атомам. Это важнейший кирпичик в фундамент профессиональной разработки.
Привет. Меня зовут Иван (ievetrov). Добро пожаловать на продолжение курса по Kotlin для новичков.
На этом курсе мы продолжим знакомство с языком Kotlin и разберем еще 10+ тем, которые составляют основную базу знаний, позволяющую тебе двигаться дальше по пути в мобильную разработку.
Если ты еще совсем чайник в программировании, рекомендую пройти первую часть этого курса – "Kotlin c нуля. Основы программирования. Часть 1".
Здесь мы откроем тему объектно-ориентированного программирования (ООП). Разберем на примерах и ассоциациях логику классов, зачем они нужны и что с их помощью можно реализовывать. В качестве введения в понятие "класс" расскажу примеры классов в самом языке, с которыми мы уже неоднократно работали. Далее плавно перейдем к понятию "сущность". Как ее выявить и почему в мире разработки программного обеспечения принят использовать такой подход. Все это будем рассматривать на примере очередного гипотетического приложения.
Прольем свет на устройство конструкторов. Расскажу что такое исключения в программировании. Изучим такие понятия, как наследование и полиморфизма, и чем они отличаются друг от друга.
Не смотря на общую схожесть интерфейсов и абстрактных классов, расскажу про их функциональные отличия. Научимся создавать интерфейсы и станет понятно по какому принципу лучше их объединять.
Узнаем про модификаторы доступа, инкапсуляцию.
Станут понятны отличия обычных анонимных функций в Котлин от лямбда-выражений. Разберем создание лямбд по атомам. Это важнейший кирпичик в фундамент профессиональной разработки.
Информация из уроков позволит освоить базовые инструменты, чтобы в последствии перейти к мобильной разработке, и вскоре начать учиться создавать простые приложения на платформе Android.
Я создал бот для эффективного закрепления полученных знаний, который мотивирует и помогает не бросать занятия. В ресурсах к уроку ты найдешь ссылку. Обучающий бот содержит 200 бесплатных вопросов для тестирования и 100 практических задач с финальным проектом – телеграм бот на Kotlin. Тренажер и самоучитель по Kotlin в одном флаконе. Еще там можно отслеживать свой личный прогресс – отображается вся статистика по тестам и задачам для каждой темы. Общая статистика участника учитывается в общем рейтинге.
Добро пожаловать и погнали!