Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Прокачивай своего викинга, срази всех врагов и доберись до Одина!

Викинги Вальхалла

Мидкорные, Приключения, Ролевые

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
18
Web.Study
Web.Study
Лига программистов

Да кто этот ваш ООП и зачем он нужен? Шпаргалка для начинающих, 7 главных заповедей⁠⁠

3 года назад

Начнем с определения


Объектно-ориентированное программирование (ООП) — это подход, при котором программа рассматривается как набор объектов, взаимодействующих друг с другом. У каждого есть свойства и поведение. ООП ускоряет написание кода и делает его более читаемым.

Данный подход актуален во всех языках программирования и будет полезен разработчику как на Java Script, так и на Typescript, и вообще всем  разработчикам на C-подобных языках.

Зачем нужен ООП?


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


Пример программы на языке typescript в процедурном стиле:


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


const width = 5;
const height = 10;
function calcRectArea(width; height) {
return width * height;
}
calcRectArea(width, height)

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

Шпаргалка по принципам ООП


Главное


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

- Уделяйте больше внимания интерфейсам, а не их реализациям;

- Каждый класс в вашем приложении должен иметь только одно назначение;

- Классы — это их поведение и функциональность.


Базовые принципы ООП


- Абстракция — отделение концепции от ее экземпляра;

- Полиморфизм — реализация задач одной и той же идеи разными способами;

- Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;

- Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.


1. Используйте следующее вместе с наследованием


- Делегация — перепоручение задачи от внешнего объекта внутреннему;

- Композиция — включение объектом-контейнером объекта-содержимого и управление его поведением; последний не может существовать вне первого;

- Агрегация — включение объектом-контейнером ссылки на объект-содержимое; при уничтожении первого последний продолжает существование.


2. Не повторяйся (Don’t repeat yourself — DRY)


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


3. Принцип единственной обязанности


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


4. Принцип открытости/закрытости


Программные сущности должны быть открыты для расширения, но закрыты для изменений.


5. Принцип подстановки Барбары Лисков


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


6. Принцип разделения интерфейсов


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


7. Принцип инверсии зависимостей


Система должна конструироваться на основе абстракций «сверху вниз»: не абстракции должны формироваться на основе деталей, а детали должны формироваться на основе абстракций.



Применяли ли вы данный подход на практике? Строчите в комментарии

Показать полностью 2
[моё] Программирование Javascript Программист IT Ооп CSS Длиннопост
55
9
rescue6485
rescue6485
Оружие и самооборона

Соглашусь со следующим оратором⁠⁠

3 года назад
Оружие Самооборона Ооп Видео YouTube
6
2456
tproger.official
tproger.official
Типичный программист

Проблемы при работе с ООП:⁠⁠

3 года назад
Проблемы при работе с ООП:
[моё] IT юмор IT Программирование Ооп C++ Комиксы
65
389
DELETED
IT-юмор

Разница между наследованием ("is a") и композицией ("has a")⁠⁠

3 года назад
Ооп Программирование Java Разработка IT IT юмор Программист Гифка
66
1733
iuhrm
IT-юмор

Разъединяйтесь⁠⁠

3 года назад
Разъединяйтесь
[моё] IT юмор Картинка с текстом Программирование Ооп Карл Маркс
40
4
p0stman
p0stman

Программисты...⁠⁠

3 года назад

#comment_223663250

Показать полностью 2
Питон Яндекс Google Программирование Ооп Скриншот Комментарии Длиннопост
2
18
nopeandhope
IT-юмор

Суть ООП⁠⁠

3 года назад
Перейти к видео
IT юмор Ооп Программирование Видео
8
mk2boob
mk2boob
Программирование на PHP

Uncaught Error: Class 'Posts\AirPost' not found⁠⁠

4 года назад

Начал углубиться в ООП и уже первые проблемы))
2 дня не могу разобраться.

Есть класс. Находиться он по пути  App/FabricMethod>Posts.php

Сделал для нее автозагрузку через composer:

подключил и пытаюсь обращаться к нему

Когда сам класс импортирую, все работает. Через namespaces не работает((

Показать полностью 4
PHP Программирование Ооп
34
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии