Что представляет собой «обмен сообщениями»?
Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. В
Пусть требуется создать физическую модель, описывающую сталкивающиеся шары разных размеров. Традиционный подход к решению этой задачи примерно таков: определяется набор данных, описывающих каждый шар (например, его координаты, массу и ускорение); каждому шару присваивается уникальный идентификатор (например, организуется массив, значение индекса которого соответствует номеру шара), который позволит отличать каждый из шаров от всех других. Наконец, пишется подпрограмма с названием, скажем, bounce; эта процедура должна на основе номера шара и его начальных параметров соответствующим образом изменять данные, описывающие шар. В отличие от традиционного подхода объектно-ориентированная версия программы моделирует каждый из шаров посредством объекта. При этом объект, соответствующий конкретному шару, содержит не только его параметры, но и весь код, описывающий поведение шара при различных взаимодействиях. Так, каждый шар будет иметь собственный метод bounce(). Вместо того, чтобы вызывать подпрограмму bounce с аргументом, определяющим, скажем, шар №3, необходимо будет передать объекту «шар №3» сообщение, предписывающее ему выполнить столкновение.
Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. В
ООП
посылка сообщения (вызов метода) — это единственный путь передать управление объекту. Если объект должен «отвечать» на это сообщение, то у него должна иметься соответствующий данному сообщению метод. Так же объекты, используя свои методы, могут и сами посылать сообщения другим объектам. Обмен сообщениями реализуется с помощью динамических вызовов, что приводит к чрезвычайно позднему связыванию (extreme late binding
).Пусть требуется создать физическую модель, описывающую сталкивающиеся шары разных размеров. Традиционный подход к решению этой задачи примерно таков: определяется набор данных, описывающих каждый шар (например, его координаты, массу и ускорение); каждому шару присваивается уникальный идентификатор (например, организуется массив, значение индекса которого соответствует номеру шара), который позволит отличать каждый из шаров от всех других. Наконец, пишется подпрограмма с названием, скажем, bounce; эта процедура должна на основе номера шара и его начальных параметров соответствующим образом изменять данные, описывающие шар. В отличие от традиционного подхода объектно-ориентированная версия программы моделирует каждый из шаров посредством объекта. При этом объект, соответствующий конкретному шару, содержит не только его параметры, но и весь код, описывающий поведение шара при различных взаимодействиях. Так, каждый шар будет иметь собственный метод bounce(). Вместо того, чтобы вызывать подпрограмму bounce с аргументом, определяющим, скажем, шар №3, необходимо будет передать объекту «шар №3» сообщение, предписывающее ему выполнить столкновение.
Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Еще один путь снизить боль при работе с Java проектами и их документированием.
https://habr.com/ru/articles/732564/
https://habr.com/ru/articles/732564/
Хабр
Еще один путь снизить боль при работе с Java проектами и их документированием
Ты не видел тут американскую подлодку? Видел. Куда она поплыла? Курс Зюйд-Зюйд-Вест. Ты не умничай, пальцем покажи. (С) бородатый анекдот За работу Уатт потребовал 1000 фунтов,...
Метод compareTo()
В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.
В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.
Программа на Java, убирающая все переносы в строке
Для замены всех переносов («\n») можно использовать функцию replace(). String replace() возвращает новый объект String, который содержит ту же последовательность символов, что и исходная строка, но с замененным символом.
Таким образом с помощью функции replace() можно заменять любые символы в строке на нужные.
Для замены всех переносов («\n») можно использовать функцию replace(). String replace() возвращает новый объект String, который содержит ту же последовательность символов, что и исходная строка, но с замененным символом.
Таким образом с помощью функции replace() можно заменять любые символы в строке на нужные.
Выберите лишнее
Anonymous Quiz
1%
Наследование
1%
Инкапсуляция
94%
Параллелизм
1%
Полиморфизм
4%
Абстракция
#дайджест
Собрали для вас подборку обучающих материалов по Spring. Сохраняйте себе:
☕️ Spring – лучший Java фреймворк для создания веб-приложений
☕️ Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana
☕️ Зачем нужны профили в Spring?
☕️ Какие основные аннотации предлагает Spring Boot?
☕️ Техническое интервью Java Developer
☕️ Дорожная карта Spring Boot
☕️ Spring. Экспертное мнение о плюсах и минусах самого популярного Java-фреймворка
Собрали для вас подборку обучающих материалов по Spring. Сохраняйте себе:
☕️ Spring – лучший Java фреймворк для создания веб-приложений
☕️ Большой гайд. Пишем микросервисы на Java и Spring Boot, заворачиваем в Docker, запускаем на EKS, мониторим на Grafana
☕️ Зачем нужны профили в Spring?
☕️ Какие основные аннотации предлагает Spring Boot?
☕️ Техническое интервью Java Developer
☕️ Дорожная карта Spring Boot
☕️ Spring. Экспертное мнение о плюсах и минусах самого популярного Java-фреймворка
#вопросы_с_собеседований
Что подразумевают в плане принципов ООП выражения «является» и «имеет»?
«является» подразумевает наследование.
«имеет» подразумевает ассоциацию (агрегацию или композицию).
Что подразумевают в плане принципов ООП выражения «является» и «имеет»?
«является» подразумевает наследование.
«имеет» подразумевает ассоциацию (агрегацию или композицию).
☕️ Префиксное дерево. Основные операции, сохранение в файл, практическое применение.
В данном видео автор рассказывает о префиксных деревьях. Разбирает, что из себя представляет префиксное дерево, для чего оно применяется. Изучаем и реализуем основные операции с префиксным деревом на языке программирования Java. Кроме этого автор показывает, как сохранить дерево в файл и потом загрузить обратно. С помощью этого проверяет, насколько выгодней может быть хранение строк в префиксном дереве на примере автомобильных номеров.
https://youtu.be/-DGJuakdiYU
В данном видео автор рассказывает о префиксных деревьях. Разбирает, что из себя представляет префиксное дерево, для чего оно применяется. Изучаем и реализуем основные операции с префиксным деревом на языке программирования Java. Кроме этого автор показывает, как сохранить дерево в файл и потом загрузить обратно. С помощью этого проверяет, насколько выгодней может быть хранение строк в префиксном дереве на примере автомобильных номеров.
https://youtu.be/-DGJuakdiYU
YouTube
Java. Префиксное дерево. Основные операции, сохранение в файл, практическое применение.
В данном видео я рассказываю о префиксных деревьях. Разбираем, что из себя представляет префиксное дерево, для чего оно применяется. Изучаем и реализуем основные операции с префиксным деревом на языке программирования Java. Кроме этого я показываю как сохранить…
Кто-нибудь использует в разработке Github Copilot сейчас? Как он в сравнении с ChatGPT? Расскажите в комментариях :D
Обзор новостей Java: JEP для JDK 21, Spring Cloud AWS 3.0, OptaPlanner для Timefold
Новости о OpenJDK, JDK 21, Spring Boot 3.1.0-RC2, Spring Modulith 0.6, Spring Cloud для Amazon Web Services 3.0.0, Spring Cloud Data Flow 2.10.3, Spring Tools 4.18.2, Infinispan 14.0.9.Final , Open Liberty 23.0.0.4, Quarkus 3.0.2 и 2.16.7, Helidon 3.2.1, Apache Camel 4.0.0-M3.
https://www.infoq.com/news/2023/05/java-news-roundup-may01-2023/
Новости о OpenJDK, JDK 21, Spring Boot 3.1.0-RC2, Spring Modulith 0.6, Spring Cloud для Amazon Web Services 3.0.0, Spring Cloud Data Flow 2.10.3, Spring Tools 4.18.2, Infinispan 14.0.9.Final , Open Liberty 23.0.0.4, Quarkus 3.0.2 и 2.16.7, Helidon 3.2.1, Apache Camel 4.0.0-M3.
https://www.infoq.com/news/2023/05/java-news-roundup-may01-2023/
InfoQ
Java News Roundup: JEPs for JDK 21, Spring Cloud AWS 3.0, OptaPlanner to Timefold
This week's Java roundup for May 1st, 2023, features news from OpenJDK, JDK 21, Spring Boot 3.1.0-RC2, Spring Modulith 0.6, Spring Cloud for Amazon Web Services 3.0.0, Spring Cloud Data Flow 2.10.3, Spring Tools 4.18.2, Infinispan 14.0.9.Final, Open Liberty…
Чем различаются JRE, JVM и JDK?
JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java. JVM может также использоваться для выполнения программ, написанных на других языках программирования.
JRE, Java Runtime Environment (Среда времени выполнения Java) - минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
JDK, Java Development Kit (Комплект разработки на Java) - JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
Коротко: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java. JVM может также использоваться для выполнения программ, написанных на других языках программирования.
JRE, Java Runtime Environment (Среда времени выполнения Java) - минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
JDK, Java Development Kit (Комплект разработки на Java) - JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
Коротко: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
Принцип инверсии зависимости гласит: "Код, реализующий высокоуровневую политику, не должен зависеть от кода, реализующего низкоуровневые детали. Напротив, детали должны зависеть от политики". В этом ролике автор постарался наглядно продемонстрировать применение этого принципа.
https://youtu.be/39xVftCfNhg
Please open Telegram to view this post
VIEW IN TELEGRAM
⚓️ Создание аннотации в Java
Аннотации — это конструкторы, позволяющие менять поведение поля, класса или функции, при этом не меняя сам код этих объектов.
В этом видео автор создал простую аннотацию для проверки правильности значений полей, но сначала объяснил, как они вообще работают.
https://youtu.be/7D4Wn0GndCA
Аннотации — это конструкторы, позволяющие менять поведение поля, класса или функции, при этом не меняя сам код этих объектов.
В этом видео автор создал простую аннотацию для проверки правильности значений полей, но сначала объяснил, как они вообще работают.
https://youtu.be/7D4Wn0GndCA
YouTube
Создание аннотации в java [Java Annotations | Reflection api]
Создаем собственные аннотации. Изучаем из чего состоит аннотация, для чего они нужны и как их обрабатывать. Николай Бунис, senior инженер, расскажет вам про основные составляющие аннотации, ее жизненный цикл и область применения. Используя Reflection Api…