Ключевое слово abstract в Java
abstract - это модификатор, применимый для классов, методов, но не для переменных. Он используется для достижения абстракции, которая является одним из столпов объектно-ориентированного программирования. Рассмотрим варианты применения abstract:
1. Класс, имеющий частичную реализацию (т.е. не все методы, присутствующие в классе, определены).
2. Иногда требуется объявление нереализованного метода в суперклассе. Этого можно добиться, указав модификатор abstract.
#java
Подписывайтесь на канал 👉@cod_academy
abstract - это модификатор, применимый для классов, методов, но не для переменных. Он используется для достижения абстракции, которая является одним из столпов объектно-ориентированного программирования. Рассмотрим варианты применения abstract:
1. Класс, имеющий частичную реализацию (т.е. не все методы, присутствующие в классе, определены).
2. Иногда требуется объявление нереализованного метода в суперклассе. Этого можно добиться, указав модификатор abstract.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Библиотека Progressbar
Думали ли вы когда-нибудь над полоской прогресса? Иногда бывает полезно добавить в код отображение прогресса, чтобы пользователь не беспокоился, что программа не отвечает.
В первую очередь это касается синхронных приложений. Ведь, если наш код выполняет что-то одно, то на другие действия он не будет реагировать, ставя их в очередь. Ну и еще один вариант показывать, что программа не виснет, а думает, при этом не обязательно показывать прогресс.
Все это очень интересно, но если мы начнем самостоятельно писать полосу прогресса, то отвлечемся от основного кода. К счастью, в python есть библиотека Progressbar, которая делает все за нас.
#python
Подписывайтесь на канал 👉@cod_academy
Думали ли вы когда-нибудь над полоской прогресса? Иногда бывает полезно добавить в код отображение прогресса, чтобы пользователь не беспокоился, что программа не отвечает.
В первую очередь это касается синхронных приложений. Ведь, если наш код выполняет что-то одно, то на другие действия он не будет реагировать, ставя их в очередь. Ну и еще один вариант показывать, что программа не виснет, а думает, при этом не обязательно показывать прогресс.
Все это очень интересно, но если мы начнем самостоятельно писать полосу прогресса, то отвлечемся от основного кода. К счастью, в python есть библиотека Progressbar, которая делает все за нас.
#python
Подписывайтесь на канал 👉@cod_academy
nullptr
Раньше, для обнуления указателей использовался макрос NULL, являющийся нулем — целым типом, что, естественно, вызывало проблемы (например, при перегрузке функций). Ключевое слово nullptr имеет свой собственный тип std::nullptr_t, что избавляет нас от бывших проблем. Существуют неявные преобразования nullptr к нулевому указателю любого типа и к bool (как false), но преобразования к целочисленных типам нет.
#cpp
Подписывайтесь на канал 👉@cod_academy
Раньше, для обнуления указателей использовался макрос NULL, являющийся нулем — целым типом, что, естественно, вызывало проблемы (например, при перегрузке функций). Ключевое слово nullptr имеет свой собственный тип std::nullptr_t, что избавляет нас от бывших проблем. Существуют неявные преобразования nullptr к нулевому указателю любого типа и к bool (как false), но преобразования к целочисленных типам нет.
#cpp
Подписывайтесь на канал 👉@cod_academy
👍2
Метод regionMatches()
Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются части строк и возвращается результат этого сравнения — true (если части строк совпали) или false (не совпали).
Параметры
ignoreCase — логическая переменная со значение true — игнорировать регистр, со значением false — не игнорировать регистр.
toffset — позиция, с которой начнем отсчет.
other — другая строка, часть которой мы будем сравнивать.
ooffset — позиция, с которой начнем отсчет в строке other
len — количество символов для сравнения.
#java
Подписывайтесь на канал 👉@cod_academy
Используется для сравнения подстроки одной строки с подстрокой другой строки, то есть сравниваются части строк и возвращается результат этого сравнения — true (если части строк совпали) или false (не совпали).
Параметры
ignoreCase — логическая переменная со значение true — игнорировать регистр, со значением false — не игнорировать регистр.
toffset — позиция, с которой начнем отсчет.
other — другая строка, часть которой мы будем сравнивать.
ooffset — позиция, с которой начнем отсчет в строке other
len — количество символов для сравнения.
#java
Подписывайтесь на канал 👉@cod_academy
👍3
Как распарсить строку json в Python?
Для того, чтобы распарсить строку json, мы можем перевести её в читаемый для python'а формат dict с помощью метода .loads()
#python
Подписывайтесь на канал 👉@cod_academy
Для того, чтобы распарсить строку json, мы можем перевести её в читаемый для python'а формат dict с помощью метода .loads()
#python
Подписывайтесь на канал 👉@cod_academy
👍1
Инициализатор в if и switch
Вам должна понравиться такая возможность из С++17. Теперь вы можете выполнять инициализацию переменных и проверять условие внутри if или switch. Это даёт сделать код более лаконичным и чистым. Общая форма:
if (init-statement(x); condition(x)) {
// some code
}
else { // в else тоже видно x
// some more code
}
#cpp
Подписывайтесь на канал 👉@cod_academy
Вам должна понравиться такая возможность из С++17. Теперь вы можете выполнять инициализацию переменных и проверять условие внутри if или switch. Это даёт сделать код более лаконичным и чистым. Общая форма:
if (init-statement(x); condition(x)) {
// some code
}
else { // в else тоже видно x
// some more code
}
#cpp
Подписывайтесь на канал 👉@cod_academy
👍1
Перегрузка в Java
Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соответствует определенным нами аргументам по типу? На этом этапе возможны два исхода.
1. Произойдет преобразование типа, но в более высокий тип (с точки зрения диапазона) в том же семействе.
2. Произойдет преобразование типа в следующее более старшее семейство (предположим, что если нет типа данных long, доступного для типа данных int, тогда будет поиск типа данных с плавающей запятой).
#java
Подписывайтесь на канал 👉@cod_academy
Рассмотрим работу перегрузки методов в Java. Что, если передавать в функцию аргумент, который не вполне соответствует определенным нами аргументам по типу? На этом этапе возможны два исхода.
1. Произойдет преобразование типа, но в более высокий тип (с точки зрения диапазона) в том же семействе.
2. Произойдет преобразование типа в следующее более старшее семейство (предположим, что если нет типа данных long, доступного для типа данных int, тогда будет поиск типа данных с плавающей запятой).
#java
Подписывайтесь на канал 👉@cod_academy
👍1
Как открыть zip файл в Python?
Чтобы открыть zip-файл в Python, вы можете воспользоваться стандартной библиотекой zipfile
#python
Подписывайтесь на канал 👉@cod_academy
Чтобы открыть zip-файл в Python, вы можете воспользоваться стандартной библиотекой zipfile
#python
Подписывайтесь на канал 👉@cod_academy
Что такое класс хранения?
Класс, который определяет срок существования, компоновку и расположение переменных/функций в памяти.
В C ++ поддерживаются такие классы хранения: auto, static, register, extern и mutable.
Обратите внимание, что register устарел для C++11. Для C++17 он был удален и зарезервирован для будущего использования.
#cpp
Подписывайтесь на канал 👉@cod_academy
Класс, который определяет срок существования, компоновку и расположение переменных/функций в памяти.
В C ++ поддерживаются такие классы хранения: auto, static, register, extern и mutable.
Обратите внимание, что register устарел для C++11. Для C++17 он был удален и зарезервирован для будущего использования.
#cpp
Подписывайтесь на канал 👉@cod_academy
Какая основная разница между String, StringBuffer, StringBuilder?
Класс String является неизменяемым (immutable) - модифицировать объект такого класса нельзя, можно лишь заменить его созданием нового экземпляра.
Класс StringBuffer изменяемый - использовать StringBuffer следует тогда, когда необходимо часто модифицировать содержимое.
Класс StringBuilder был добавлен в Java 5 и он во всем идентичен классу StringBuffer за исключением того, что он не синхронизирован и поэтому его методы выполняются значительно быстрей.
#java
Подписывайтесь на канал 👉@cod_academy
Класс String является неизменяемым (immutable) - модифицировать объект такого класса нельзя, можно лишь заменить его созданием нового экземпляра.
Класс StringBuffer изменяемый - использовать StringBuffer следует тогда, когда необходимо часто модифицировать содержимое.
Класс StringBuilder был добавлен в Java 5 и он во всем идентичен классу StringBuffer за исключением того, что он не синхронизирован и поэтому его методы выполняются значительно быстрей.
#java
Подписывайтесь на канал 👉@cod_academy
👍1
infinity
Самая типичная проблема при написании некоторых сортировок — назначение самой большой переменной. Часто она решается простым вводом большого числа или возведением в степень. Это, конечно, не стареющая классика, но метод максимально не надежный, а главное есть более удачные способы
float('infinity') или float('inf') для получения максимально возможного числа
float('-infinity') или float('-inf') для получения минимально возможного числа.
Не работает с int, требуется использовать именно float.
#python
Подписывайтесь на канал 👉@cod_academy
Самая типичная проблема при написании некоторых сортировок — назначение самой большой переменной. Часто она решается простым вводом большого числа или возведением в степень. Это, конечно, не стареющая классика, но метод максимально не надежный, а главное есть более удачные способы
float('infinity') или float('inf') для получения максимально возможного числа
float('-infinity') или float('-inf') для получения минимально возможного числа.
Не работает с int, требуется использовать именно float.
#python
Подписывайтесь на канал 👉@cod_academy
Кортежи
Как и пара, кортеж представляет собой набор значений фиксированного размера для различных типов данных.
Иногда удобнее использовать std::array вместо кортежа. Такой массив подобен обычному массиву в Си вместе с несколькими функциями стандартной библиотеки C++. Эта структура данных была добавлена в 11 версии C++.
#cpp
Подписывайтесь на канал 👉@cod_academy
Как и пара, кортеж представляет собой набор значений фиксированного размера для различных типов данных.
Иногда удобнее использовать std::array вместо кортежа. Такой массив подобен обычному массиву в Си вместе с несколькими функциями стандартной библиотеки C++. Эта структура данных была добавлена в 11 версии C++.
#cpp
Подписывайтесь на канал 👉@cod_academy
Вложенные классы
В Java, подобно методам, переменные класса тоже могут иметь в качестве своего члена другой класс. В Java допускается написание класса внутри другого. Класс, написанный внутри, называется в Java вложенным классом, а класс, который содержит внутренний класс, называется внешним классом.
На картинке приведен синтаксис для записи вложенного класса. Здесь класс Outer_Demo – это внешний класс, а класс Nested_Demo – вложенный класс.
Вложенные классы в Java делятся на два типа:
☕️ Нестатические вложенные классы – нестатические члены класса.
☕️ Статические вложенные классы – статические члены класса.
#java
Подписывайтесь на канал 👉@cod_academy
В Java, подобно методам, переменные класса тоже могут иметь в качестве своего члена другой класс. В Java допускается написание класса внутри другого. Класс, написанный внутри, называется в Java вложенным классом, а класс, который содержит внутренний класс, называется внешним классом.
На картинке приведен синтаксис для записи вложенного класса. Здесь класс Outer_Demo – это внешний класс, а класс Nested_Demo – вложенный класс.
Вложенные классы в Java делятся на два типа:
☕️ Нестатические вложенные классы – нестатические члены класса.
☕️ Статические вложенные классы – статические члены класса.
#java
Подписывайтесь на канал 👉@cod_academy
👍3
hex, oct, bin
Приходилось вам раньше работать с различными системами счисления? Если да, то вы знаете, как написать программу переводящую из одной системы в другую. Пишется она довольно просто, но иногда стоит задача быстро написать код с какой-то популярной системой счисления. Обычно это двоичная, восьмеричная или шестнадцатеричная. Для всех этих систем есть встроенные функции, которые переводят в нужную нам систему!
Из 10-ричной:
hex - перевод в 16-ричную систему
oct - перевод в 8-ричную систему
bin - перевод в 2-ичную систему
А из любой системы счисления можно получить число максимально простым способом:
int(number, base)
#python
Подписывайтесь на канал 👉@cod_academy
Приходилось вам раньше работать с различными системами счисления? Если да, то вы знаете, как написать программу переводящую из одной системы в другую. Пишется она довольно просто, но иногда стоит задача быстро написать код с какой-то популярной системой счисления. Обычно это двоичная, восьмеричная или шестнадцатеричная. Для всех этих систем есть встроенные функции, которые переводят в нужную нам систему!
Из 10-ричной:
hex - перевод в 16-ричную систему
oct - перевод в 8-ричную систему
bin - перевод в 2-ичную систему
А из любой системы счисления можно получить число максимально простым способом:
int(number, base)
#python
Подписывайтесь на канал 👉@cod_academy
👍3❤1
Макрос watch
Макрос watch — один из самых полезных приёмов.
При отладке кода watch(переменная) выведет имя переменной и её значение.
#cpp
Подписывайтесь на канал 👉@cod_academy
Макрос watch — один из самых полезных приёмов.
При отладке кода watch(переменная) выведет имя переменной и её значение.
#cpp
Подписывайтесь на канал 👉@cod_academy
👍1
Внутренние классы (нестатические вложенные классы)
Внутренние классы — это механизм безопасности в Java. Создать такой класс довольно просто — нужно написать класс внутри класса. Внутренний класс может быть закрытым (private), и после того, как Вы объявляете внутренний класс закрытым, он не может быть доступен из объекта вне класса.
На картинке
#java
Подписывайтесь на канал 👉@cod_academy
Внутренние классы — это механизм безопасности в Java. Создать такой класс довольно просто — нужно написать класс внутри класса. Внутренний класс может быть закрытым (private), и после того, как Вы объявляете внутренний класс закрытым, он не может быть доступен из объекта вне класса.
На картинке
Outer_Demo – внешний класс, Inner_Demo – внутренний класс, display_Inner() – метод, внутри которого мы создаем внутренний класс, и этот метод вызывается из основного метода.#java
Подписывайтесь на канал 👉@cod_academy
👍3
Регулярные выражения
Метод sub позволяет заменить в строке по шаблону на нужный нам текст.
repl, string, max=0)
pattern - шаблон
repl - на что заменяем
string - строка по которой ищем
max - сколько раз заменяем
Соответственно, этот метод возвращает нужную нам строку.
#python
Подписывайтесь на канал 👉@cod_academy
Метод sub позволяет заменить в строке по шаблону на нужный нам текст.
repl, string, max=0)
pattern - шаблон
repl - на что заменяем
string - строка по которой ищем
max - сколько раз заменяем
Соответственно, этот метод возвращает нужную нам строку.
#python
Подписывайтесь на канал 👉@cod_academy
👍1
В чем разница между struct и class?
Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.
#cpp
Подписывайтесь на канал 👉@cod_academy
Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.
#cpp
Подписывайтесь на канал 👉@cod_academy
👍1👎1
Опишите иерархию исключений.
Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error.
Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память доступная виртуальной машине.
Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль.
#java
Подписывайтесь на канал 👉@cod_academy
Исключения делятся на несколько классов, но все они имеют общего предка — класс Throwable, потомками которого являются классы Exception и Error.
Ошибки (Errors) представляют собой более серьёзные проблемы, которые, согласно спецификации Java, не следует обрабатывать в собственной программе, поскольку они связаны с проблемами уровня JVM. Например, исключения такого рода возникают, если закончилась память доступная виртуальной машине.
Исключения (Exceptions) являются результатом проблем в программе, которые в принципе решаемы, предсказуемы и последствия которых возможно устранить внутри программы. Например, произошло деление целого числа на ноль.
#java
Подписывайтесь на канал 👉@cod_academy
👍4
JSON, сериализация
JSON – невероятно удобный и полезный синтаксис для хранения и обмена данными. Java полностью поддерживает его.
В данном примере кода рассмотрим пример сериализации данных.
#java
Подписывайтесь на канал 👉@cod_academy
JSON – невероятно удобный и полезный синтаксис для хранения и обмена данными. Java полностью поддерживает его.
В данном примере кода рассмотрим пример сериализации данных.
#java
Подписывайтесь на канал 👉@cod_academy
👍3
Как создать объекты класса через цикл в Python?
Чтобы создать объекты класса через цикл, мы воспользуемся примерным классом Axes и модулем random.
Примемр кода.
#python
Подписывайтесь на канал 👉@cod_academy
Чтобы создать объекты класса через цикл, мы воспользуемся примерным классом Axes и модулем random.
Примемр кода.
import random
class Axes: # Создаем класс
def __init__(self, offset_x : int, offset_y : int) -> None:
self.offset_x = offset_x
self.offset_y = offset_y
def get_info(self) -> str:
return f"{self.offset_x} : {self.offset_y}"
axes = []
for i in range(10): # Запускаем цикл
axe = Axes(offset_x = random.randint(0, 10), offset_y = random.randint(0, 10)) # Создаем экземпляр класса
axes.append(axe) # Добавляем экземпляр класса в массив экземпляров
for axe in axes:
print(axe.get_info()) # Получаем данные о созданных экземплярах
# Пример вывода :
# 3 : 3
# 1 : 0
# 6 : 1
# 10 : 0
# 6 : 3
# 5 : 10
# 7 : 3
# 5 : 10
# 1 : 10
# 0 : 6
#python
Подписывайтесь на канал 👉@cod_academy
👍2