mirror of
https://github.com/cheatsnake/backend-cheats.git
synced 2024-11-26 23:35:06 +03:00
updated subtopic about OOP
This commit is contained in:
parent
f4bd06bf95
commit
6d049738d8
13
README.md
13
README.md
@ -1497,21 +1497,26 @@
|
||||
[ООП](https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) – это один из наиболее удачных и удобных подходов для моделирования предметов реального мира. Этот подход сочетает в себе несколько очень важных принципов, которые позволяют писать модульный, расширяемый и слабо-связанный код.
|
||||
|
||||
- Понятие [класса](https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%81_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5))
|
||||
> Класс можно понимать как кастомный тип данных (своего рода шаблон), в котором вы описываете структуру будущих объектов, которые будут реализовывать данный класс. Классы могут содержать `свойства` (это конкретные поля, в которых могут храниться данные конкретного типа данных) и `методы` (это функции, которые имеют доступ к свойствам и возможность ими манипулировать, изменять).
|
||||
> Класс можно понимать как кастомный тип данных (своего рода шаблон), в котором Вы описываете структуру будущих объектов, которые будут реализовывать данный класс. Классы могут содержать `свойства` (это конкретные поля, в которых могут храниться данные определенного типа данных) и `методы` (это функции, которые имеют доступ к свойствам и возможность ими манипулировать, изменять).
|
||||
- Понятие [объекта](https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5))
|
||||
> Объект это конкретная реализация класса.
|
||||
> Объект – это конкретная реализация класса. Если в классе, например, описано свойство _name_ с типом _string_, то объект будет иметь конкретное значение для этого поля, например _"Alex"_.
|
||||
- [Принцип наследования](https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5))
|
||||
> Возможность создавать новые классы, которые наследуют свойства и методы своих родителей. Это позволяет повторно использовать код и создавать иерархию классов.
|
||||
- [Принцип инкапсуляции](https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5))
|
||||
> Возможность скрывать определенные свойства/методы от доступа из вне, оставляя только упрощенный интерфейс для взаимодействия с объектом.
|
||||
- [Принцип наследования](https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5))
|
||||
> Возможность создавать новые объекты, которые наследуют свойства и методы существующих объектов. Это позволяет повторно использовать код и создавать иерархию классов.
|
||||
- [Принцип полиморфизма](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0))
|
||||
> Возможность реализовывать один и тот же метод по разному в классах наследниках.
|
||||
- [Композиция](https://github.com/f3ath/translations/blob/master/composition-vs-inheritance.md) вместо наследования
|
||||
> Часто принцип `наследования` может усложнить и запутать Вашу программу, если хорошенько не поразмыслить над тем, как выстраивать будущую иерархию. Поэтому существует альтернативный (более гибкий) подход, который называют композицией. В частности, в языке Go отсутствуют классы и многие ООП принципы, но широко [используется композиция](https://golangbyexample.com/oop-inheritance-golang-complete).
|
||||
|
||||
<details>
|
||||
<summary>🔗 <b>Ссылки на материалы</b></summary>
|
||||
|
||||
1. 📺 [**ООП на простых примерах** – YouTube](https://youtu.be/-6DWwR_R4Xk)
|
||||
2. 📄 [**Объектно-ориентированное программирование на примере**](https://doka.guide/js/oop/)
|
||||
3. 📺 [**Первые шаги в ООП: класс, объект, self в Python** – YouTube](https://youtu.be/odY5dlZifFE)
|
||||
4. 📺 [**Просто о ООП на примерах для TypeScript/JavaScript** – YouTube](https://youtu.be/VjGdjqyXbhg)
|
||||
5. 📺 [**ООП на примерах для Kotlin** – YouTube](https://youtu.be/3e8ZEO9ADrc)
|
||||
</details>
|
||||
|
||||
<div align="right"><a href="#top">Содержание ⬆️</a></div>
|
||||
|
Loading…
Reference in New Issue
Block a user