Это один из основных принципов объектно-ориентированного программирования (ООП), который подразумевает скрытие внутренней реализации объекта и предоставление доступа к ней только через строго определенные методы или интерфейсы. Это помогает защитить данные от некорректного использования и обеспечивает контроль над изменением состояния объекта.
Внутреннее состояние объекта (переменные и данные) скрыто от внешнего мира и доступно только через методы класса.
Класс предоставляет публичные методы для взаимодействия с его внутренним состоянием. Эти методы часто называют геттерами (для получения значений) и сеттерами (для установки значений).
Инкапсуляция позволяет контролировать как данные изменяются и обеспечивать их корректное состояние. Например, можно добавить проверки или ограничения в сеттеры.
Пример инкапсуляции на языке Python
class Person:
def __init__(self, name, age):
self._name = name # Внутреннее состояние
self._age = age
# Геттер для имени
def get_name(self):
return self._name
# Сеттер для имени
def set_name(self, name):
if isinstance(name, str) and name:
self._name = name
# Геттер для возраста
def get_age(self):
return self._age
# Сеттер для возраста
def set_age(self, age):
if isinstance(age, int) and 0 <= age <= 120:
self._age = age
# Использование класса
person = Person("Alice", 30)
print(person.get_name()) # Вывод: Alice
print(person.get_age()) # Вывод: 30
person.set_name("Bob")
person.set_age(35)
print(person.get_name()) # Вывод: Bob
print(person.get_age()) # Вывод: 35
# Попытка установить некорректное значение
person.set_age(-5) # Значение не изменится из-за проверки в сеттере
print(person.get_age()) # Вывод: 35
Скрытие внутреннего состояния объекта предотвращает его некорректное использование и изменение.
Инкапсуляция облегчает модификацию и поддержку кода, поскольку внутренние изменения объекта не влияют на внешний код, взаимодействующий с объектом.
Возможность изменения внутренней реализации объекта без изменения его интерфейса.
Возможность добавления логики проверки и валидации данных при их установке или изменении.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
HTML (HyperText Markup Language) — это основной язык разметки, используемый для создания и структурирования веб-страниц. HTML позволяет создавать веб-страницы с текстом, изображениями, ссылками, формами и другими элементами, которые могут быть отображены в браузере. Он является фундаментом веб-технологий и работает в тандеме с CSS (Cascading Style Sheets) и JavaScript для создания полноценных веб-приложений.
Структура документа: HTML-документ состоит из различных элементов, каждый из которых представлен тегами. Теги определяют, как различные части документа должны быть отображены в браузере.
<!DOCTYPE html>: Определяет тип документа и версию HTML.<html>: Корневой элемент документа.<head>: Содержит метаданные о документе, такие как теги <title>, <meta>, стили и скрипты.<body>: Содержит видимую часть документа, включая текст, изображения, ссылки и другие элементы.Элементы и теги: HTML использует теги для определения различных элементов. Теги обычно идут в парах: открывающий тег
<tag> и закрывающий тег </tag>. Некоторые теги являются самозакрывающимися, например, <img /> и <br />.<h1> - <h6>: Заголовки различных уровней.<p>: Параграф текста.<a>: Гиперссылка.<img>: Изображение.<ul>, <ol>, <li>: Ненумерованные и нумерованные списки и элементы списка.<table>, <tr>, <td>: Таблицы и их элементы.Атрибуты: Теги могут иметь атрибуты, которые предоставляют дополнительную информацию о элементе. Атрибуты записываются внутри открывающего тега и имеют формат
имя="значение".href для <a>: Указывает URL, на который ведёт ссылка.src для <img>: Указывает путь к изображению.alt для <img>: Описывает изображение для поисковых систем и пользователей с ограниченными возможностями.Формы: HTML позволяет создавать интерактивные формы для сбора данных от пользователей. Формы могут содержать различные типы полей ввода, такие как текстовые поля, радиокнопки, чекбоксы и кнопки отправки.
<input>: Общее поле ввода. Атрибут type определяет тип ввода (например, text, password, email).<textarea>: Многострочное текстовое поле.<select> и <option>: Выпадающий список.<button>: Кнопка.Основное применение HTML — это создание веб-страниц и веб-приложений. Каждый веб-сайт, который вы посещаете, использует HTML для структурирования своего контента.
HTML также используется для создания форматированных электронных писем с текстом, изображениями и ссылками.
HTML используется для создания интерактивной документации и справочных систем, которые могут включать текст, ссылки, изображения и другие элементы.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Это два ключевых свойства модульной архитектуры программного обеспечения, которые помогают оценить качество кода и архитектурных решений.
Описывает степень зависимости одного модуля от других. Высокое сцепление означает, что модули сильно зависят друг от друга, что затрудняет их изменение, тестирование и повторное использование, так как изменения в одном модуле требуют изменений в зависимых модулях. Идеально стремиться к слабому сцеплению, чтобы модули были максимально независимыми. Это позволяет изменять или заменять один модуль без необходимости изменения других.
Описывает, насколько тесно связанные и объединённые общей задачей элементы внутри одного модуля. Высокая связанность означает, что все функции и данные модуля логически связаны и выполняют одну задачу. Это упрощает понимание кода и делает модуль более автономным.Высокая связанность считается хорошей практикой, так как модуль с высокой связанностью проще в обслуживании, его легче изменить или заменить.
Представьте модуль, который управляет пользователями: если в модуле только функции для работы с пользователями (например, добавление и удаление), он обладает высокой связанностью, так как его функции направлены на одну задачу. Если модуль при этом минимально зависит от других частей системы, это говорит о слабом сцеплении.
Это желательные качества. Они помогают создать более гибкую и поддерживаемую систему.
Лучше, когда оно слабое, так как снижает зависимость между модулями.
Лучше, когда она высокая, так как все функции модуля работают на достижение одной цели.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Это структура данных, в которой каждый узел имеет не более двух дочерних узлов. Эти дочерние узлы называются левым и правым дочерними узлами. В бинарном дереве может быть один или несколько уровней узлов, начиная с корневого узла, который является начальной точкой дерева.
Основной элемент бинарного дерева, содержащий данные и ссылки на дочерние узлы.
Верхний узел дерева, не имеющий родительских узлов.
Узел, не имеющий дочерних узлов.
Путь от корня к любому другому узлу.
Максимальное количество уровней от корня до самого нижнего листа.
Расстояние от корня до данного узла.
Все уровни, кроме, возможно, последнего, полностью заполнены, и все узлы последнего уровня выровнены влево.
Все уровни полностью заполнены, и каждый узел имеет два дочерних узла, кроме листьев.
Для каждого узла все значения в левом поддереве меньше значения узла, а все значения в правом поддереве больше значения узла.
Процесс вставки нового узла в дерево. В случае двоичного дерева поиска, новый узел вставляется в соответствующее место, чтобы сохранить порядок элементов.
Процесс удаления узла из дерева. Может потребовать реорганизации дерева для поддержания его свойств.
Процесс нахождения узла с определенным значением. В двоичном дереве поиска это осуществляется быстрее благодаря упорядоченности узлов.
Процесс посещения всех узлов дерева в определенном порядке. Основные методы обхода:
Бинарное дерево поиска позволяет эффективно хранить и извлекать отсортированные данные.
Использование деревьев для организации и поиска данных.
Базовая структура для многих алгоритмов, включая сортировки, балансировки и другие операции с данными.
Используются для построения и обработки синтаксических деревьев при разборе кода.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Media is too big
VIEW IN TELEGRAM
На программиста, тестировщика, аналитика, проджекта и другие IT профы.
Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д.
🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!
Please open Telegram to view this post
VIEW IN TELEGRAM
В Git команды
rebase и merge используются для объединения изменений из разных веток, но делают это по-разному. Основное различие между ними заключается в том, как они сохраняют историю коммитов и как они влияют на структуру репозитория.Объединяет две ветки, создавая новый коммит слияния (merge commit), который имеет две родительских ветки. Сохраняет всю историю коммитов обеих веток без изменений. История ветвления и слияния сохраняется. Если есть конфликты, Git предложит их разрешить перед созданием коммита слияния.
git merge <branch>git checkout main
git merge feature-branch
Переносит все коммиты текущей ветки на вершину целевой ветки. Это делает историю линейной, как если бы изменения были сделаны последовательно. Изменяет историю коммитов, создавая новые коммиты для каждого коммита из текущей ветки. История ветвления исчезает. Если есть конфликты, Git предложит их разрешить по мере переноса каждого коммита.
git rebase <branch>git checkout feature-branch
git rebase main
Процесс слияния прост и понятен.
Вся история коммитов сохраняется, включая информацию о ветвлении и слиянии.
Создаются дополнительные коммиты слияния, что может усложнить историю.
История линейная и более читабельная.
Проще следить за последовательностью изменений.
Изменение коммитов может привести к проблемам, если кто-то уже основывается на этих коммитах.
Может потребоваться больше усилий для разрешения конфликтов, особенно если коммитов много.
Когда важно сохранить полную историю изменений, включая ветвление и слияние. В крупных командных проектах, где история изменений важна для отслеживания.
Когда важно иметь чистую и линейную историю изменений. Для интеграции изменений из основной ветки в текущую рабочую ветку перед отправкой изменений в основную ветку.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1