JavaStart
908 subscribers
909 photos
28 videos
619 links
Учи Java вместе с нами!
Наша платформа с курсом - https://javastart.tech
Ютуб с обучающими видео - https://www.youtube.com/@javastart_tech
Download Telegram
😁12🤓2💯1
ООП, Инкапсуляция в Java. Часть 3.

Выводы.

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

Преимущества инкапсуляции.

1) Поля класса можно сделать только для чтения или только для записи;

2) Класс может иметь полный контроль над тем, что хранится в его полях.

👉 JavaStart. Подписаться
👍7🔥21
Архитектура приложений. Часть 1. Микросервисная архитектура.

Давайте поговорим о микросервисной архитектуре. На собеседованиях иногда могут спросить о вашем понимании микросервисов в целом.

Что такое микросервисы?

Микросервисы – это подход к разработке приложений, при котором оно разбивается на небольшие, независимые компоненты, называемые микросервисами. Каждый микросервис представляет собой отдельную функциональность, выполняет свою задачу и взаимодействует с другими микросервисами через API (Application Programming Interface).

Преимущества микросервисной архитектуры:

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

🎯 Гибкость и независимость
Каждый микросервис может быть разработан, развернут и обновлен независимо. Это облегчает поддержку, устранение ошибок и внесение изменений.

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

💡 Инновации и эксперименты
Благодаря независимости микросервисов, мы можем быстро внедрять новые идеи и технологии, не затрагивая всё приложение.

Недостатки микросервисной архитектуры:

⚖️ Сложность управления
С ростом количества микросервисов возникает сложность управления, мониторинга и отладки всей системы.

🧩 Сетевое взаимодействие
Коммуникация между микросервисами требует хорошо продуманного и надежного сетевого взаимодействия.

📚 Дублирование кода
В ряде случаев, разные микросервисы могут иметь дублирующийся функционал или код, что требует дополнительного внимания при обновлениях.

Пример из практики:

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

👉 JavaStart. Подписаться
👍4🔥321
😁16💯3👍2🤓2
Архитектура приложений. Часть 2. Монолитная архитектура.

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

Что такое монолит?

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

Преимущества монолитной архитектуры:

🚀 Простота начала
Разработка и развертывание монолитного приложения обычно проще, особенно для начинающих.

🔄 Меньше сложности
Все компоненты находятся в одном месте, что упрощает отладку и обслуживание.

📦 Простота масштабирования
При необходимости можно масштабировать весь монолит.

Когда выбрать монолит?

🔹 Если наш проект небольшой и нам важно быстро начать.
🔹 Если команда разработчиков ограничена и нам нужно облегчить управление проектом.

Секрет успешной монолитной архитектуры:

🧩 Хорошая структура кода
Желательно разделять код на логические модули, чтобы упростить понимание и поддержку.

🛠️ Обновления
Желательно регулярно обновлять библиотеки и компоненты для поддержания безопасности и актуальности.

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

Проявите креативность, структурируйте код и продолжайте учиться – и ваши монолиты будут стремительно расти вместе с вами!

👉 JavaStart. Подписаться
👍622🔥1
Архитектура приложений. Часть 3. Отличие Микросервисов от Монолита.

Сегодня давайте сравним два популярных подхода к разработке приложений: микросервисы и монолит.

Монолит:

🔹 Один блок
Весь код, базы данных и компоненты находятся в одном приложении.

🔹 Простота начала
Создание и развертывание монолита обычно проще.

🔹 Единое развертывание
Приложение разворачивается целиком, что может быть проще для управления.

🔹 Обслуживание
Если один единый монолитный сервис сломался, то все приложение не будет работать до исправления проблемы.

Микросервисы:

🔹 Множество компонентов
Приложение разбито на небольшие независимые микросервисы.

🔹 Масштабируемость
Микросервисы могут быть масштабированы независимо.

🔹 Гибкость
Возможность использовать разные технологии для разных микросервисов.

🔹 Обслуживание
Если сломался один или даже несколько отдельных сервисов, то приложение может продолжать свою работу в целом.

Как выбрать подход?

🔹 Монолит, если вы только начинаете и хотите простоту разработки и развертывания.

🔹 Микросервисы, если проект сложный, требует гибкости и быстрого масштабирования.

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

👉 JavaStart. Подписаться
👍62🔥21
Какой артефакт SCRUM представляет собой список всех задач, которые разработчики планируют выполнить в текущем спринте?
Anonymous Quiz
11%
Бэклог продукта (Product Backlog)
6%
Инкремент (Инкремент)
40%
Спринтовый бэклог (Sprint Backlog)
32%
Спринт (Sprint)
10%
Посмотреть ответ
4👍3🔥1🤓1
IS-A отношения в Java. Часть 1.

IS-A отношения в Java – это способ показать, что конкретный объект является типом другого объекта.

Давайте посмотрим, как ключевое слово extends используется для достижения наследования в Java.

public class Animal {
}

public class Mammal extends Animal {
}

public class Reptile extends Animal {
}

public class Dog extends Mammal {
}

На основе приведенного на Картинке примера, в объектно-ориентированных терминах верно следующее:

Класс Животное – суперкласс.

Млекопитающее – подкласс Животного.

Рептилия и Млекопитающее – подклассы Животного.

Собака является подклассом Млекопитающего и Животного.

👩‍💻 Наш практический курс Java–разработчика

👉 JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥211
IS-A отношения в Java. Часть 2.

Ключевое слово instanceof.

Для определения типа объекта (является ли конкретный объект является типом другого объекта) в Java используется ключевое слово instanceof.

Давайте посмотрим на код на Картинках.

Объект m класса Mammal является типом объекта Animal, потому что класс Mammal наследуется от супер-класса Animals.

Объект d класса Dog является типом объекта Mammal, потому что класс Dog наследуется от класса Mammal.

При этом объект d класса Dog еще и является типом объекта Animal, потому что класс Mammal наследуется от класса Animal.

Как я уже говорил ранее - в Java нет множественного наследования (class X extends Y, Z, …), но классы могут наследоваться по цепочке (class X extends Y, class Y extends Z).

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍52
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍2💯1
ООП, Полиморфизм в Java. Часть 1.

Полиморфизм, если перевести, - это значит "много форм". Например, актер в театре может примерять на себя много ролей - или принимать "много форм".

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

Переопределение методов родителя.

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

Мы не обязаны, например, создавать отдельный метод с похожим названием для наших нужд, а унаследованный метод будет без дела лежать в нашем классе.

Именно то, что мы можем создать в классе-наследнике класс с таким же названием, как и класс, который мы унаследовали от родителя, и называется переопределением.

Представим, что у нас есть такая структура как на Картинке.

Вверху иерархии классов стоит класс Animal. Его наследуют два класса - Cat и Dog.

У класса "Animal" есть метод "голос" (voice). Этот метод выводит на экран сообщение "Голос".

Естественно, ни собака, ни кошка не говорят "Голос" 🙂 Они гавкают и мяукают. Соответственно, нам нужно задать другой метод для классов Cat и Dog - чтобы кошка мяукала, а собака гавкала.

Поэтому, в классах-наследниках мы переопределяем метод voice(), чтобы мы в консоли получали "Мяу" и "Гав".

Обратите внимание: перед методом, который мы переопределяем, пишем "@Override". Это дает понять компилятору, что мы хотим переопределить метод.

Тем не менее, полиморфизм - это принцип. Все реальные примеры, которые можно привести - это только способы реализации полиморфизма. Рассмотрим еще пример в одном из след постах.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍731👨‍💻1
Какое событие SCRUM помогает команде инспектировать свой прогресс и вносить необходимые корректировки в ходе спринта?
Anonymous Quiz
30%
Ретроспектива (Retrospective)
4%
Планирование спринта (Sprint Planning)
4%
Демонстрация (Demo)
48%
Ежедневные совещания (Daily stand-ups)
6%
Груминг (Grooming)
8%
Посмотреть ответ
👍32🔥1🎉1
ООП, Полиморфизм в Java. Перегрузка методов. Часть 2.

Рассмотрим на практическом примере как проявляется полиморфизм, а потом снова вернемся к его определению.

Полиморфизм часто часто описывают фразой: Один интерфейс - много методов.

Но что это значит? Как проявляется полиморфизм?

Дело в том, что если бы в Java не было принципа полиморфизма, компилятор бы интерпретировал код на Картинке 1 как ошибку.

Как видите, методы на картинке отличаются значениями, которые они принимают:

первый принимает int, а второй принимает short.

Однако, поскольку в Java используется принцип полиморфизма (один из принципов ООП), компилятор не будет воспринимать это как ошибку, потому что такие методы будут считаться разными (Картинка 1).

Называть методы одинаково - это очень удобно. Например, если у нас есть метод, который ищет корень квадратный из числа, гораздо легче запомнить одно название (например, sqrt()), чем по одному отдельному названию на этот же метод, написанный для каждого типа (Картинка 2).

Как видите, мы не должны придумывать отдельное название для каждого метода - а главное их запоминать!

Это предполагает, что мы можем заполнить одно название (один интерфейс), по которому мы сможем обращаться к нескольким методам, меняя лишь аргументы.

Теперь Вы можете понять, почему часто этот принцип описывают фразой: Один интерфейс - много методов.

Перегрузка методов.

То, что показано выше - несколько методов с одним названием и разными параметрами - называется перегрузкой методов.

Все это - проявления "повышенной гибкости" объектно-ориентированного языка Java благодаря полиморфизму.

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥21👏1👨‍💻1
Можно ли переопределить статический метод?

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

Сначала рассмотрим перегрузку.

Компилятор Java рассматривает методы с отличающимися параметрами как разные, поэтому не существует никаких ограничений.

Статические методы действуют на весь класс, а не к его экземплярам, здесь применяется статическое связывание, а значит, переопределить данный метод в дочернем классе невозможно.

Однако в дочернем классе не запрещено объявлять static-метод с теми же параметрами. Такая конструкция в Java называется перекрытие. В этом методе запрещено указывать слово super и аннотацию @Override.

class Base {
  static void prntMe() {
    System.out.prntln("Base!");
  }
}
class Child extends Base {
  static vod printMe() {
    System.out.prntln("Child!");
  }
}
Base instance = new Child();
instance.printMe(); // Хоть объект и Child, напечатается "Base!"

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72👨‍💻21🤓1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍5💯2🤓1
Сегодня поговорим о методах/функциях в Java.

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

Что такое методы/функции?

Методы (или функции) - это блоки кода, которые могут выполнять определенные действия и возвращать результаты. Они позволяют нам изолировать определенные задачи в отдельные блоки, делая код более читаемым и легко управляемым.

Создание методов.

Давайте посмотрим, как создать метод в Java:

public int multiply(int a, int b) {
    int result = a * b;
    return result;
}

В этом примере мы создали метод multiply, который принимает два аргумента a и b и возвращает их произведение.

У метода есть модификатор доступа, название, аргументы в скобках, тип возвращаемого значения, тело метода.

Использование методов.

Вызвать метод можно следующим образом:

int x = 5;
int y = 3;
int product = multiply(x, y);
// product будет равен 15

Параметры и возвращаемые значения.

Методы могут принимать параметры (аргументы), которые передаются им при вызове. Они также могут возвращать значения определенных типов. В примере выше, int перед multiply означает, что метод вернет целочисленное значение.

Полезные советы.

1) Давайте методам понятные и описательные имена, чтобы их назначение было понятно даже без просмотра кода внутри;

2) Избегайте создания слишком больших методов. Лучше разбивайте задачи на более мелкие методы;

3) Подумайте о возможности переиспользования методов в разных частях программы.

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

👩‍💻 Наш практический курс Java–разработчика

JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👏32👨‍💻2