Skip to content

Commit 7ff684f

Browse files
committed
feat & style: add OOP page and fix code style
1 parent 68b8d90 commit 7ff684f

4 files changed

Lines changed: 102 additions & 51 deletions

File tree

docs/notes/OOP.md

Lines changed: 25 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,37 @@
1-
# Object-Oriented Programming
2-
3-
!!! danger "GPT ALERT!!!"
4-
Эта страница была сгенерирована и ещё не была отредактирована. Качество содержания под вопросом!
1+
# OOP
52

63
## Определение
74
!!! info ""
8-
**ООП (Object-Oriented Programming)** — это парадигма программирования, в которой программа строится вокруг **объектов** (данные + поведение), а не вокруг “голых” функций и структур данных.
9-
Класс в таком подходе служит “шаблоном”, по которому создаются объекты (экземпляры).
5+
**ООП (Object-Oriented Programming)** — методология программирования, в которой система строится вокруг объектов (данные + поведение), где каждый объект является экземпляром определенного класса, а классы образуют иерархию [наследования](./inheritance.md){:.link-accent}.
106

117
## Как это работает
128
ООП опирается на несколько базовых сущностей:
139

14-
- <span class="badge">Class</span> (класс) — описание типа: какие данные и методы будут у объектов.
15-
- <span class="badge">Object</span> (объект) — конкретный экземпляр класса.
16-
- <span class="badge">Attribute</span> (атрибут/поле) — данные объекта.
17-
- <span class="badge">Method</span> (метод) — функция, “живущая” в классе и работающая с данными объекта.
18-
19-
Обычно “ядро” ООП объясняют через 4 принципа:
20-
- [Encapsulation](./encapsulation.md){:.link-accent}
21-
- [Inheritance](./inheritance.md){:.link-accent}
22-
- [Polymorphism](./polymorphism.md){:.link-accent}
23-
- [Abstraction](./abstraction.md){:.link-accent}
24-
25-
## Пример
26-
!!! note "Пример:"
27-
Минимальный пример класса и объекта в Python: создаём класс, инициализируем объект, вызываем методы.
28-
29-
:::python
30-
class BankAccount:
31-
def __init__(self, owner: str, balance: int = 0):
32-
self.owner = owner
33-
self.balance = balance
34-
35-
def deposit(self, amount: int) -> None:
36-
self.balance += amount
10+
- <span class="badge">Class</span> — языковая конструкция, определяющий структуру (атрибуты) и поведение (методы) для создаваемых на его основе объектов.
3711

38-
def withdraw(self, amount: int) -> None:
39-
if amount > self.balance:
40-
raise ValueError("Not enough money")
41-
self.balance -= amount
12+
- <span class="badge">Attribute</span> — переменная, принадлежащая экземпляру или классу и содержащая данные, описывающие его состояние. <span class="badge">self.name = name</span>
4213

43-
# Object (instance)
44-
acc = BankAccount("Alice", 100)
14+
- <span class="badge">Method</span> — функция, объявленная в составе класса, которая вызывается у объекта (через self) и работает с его данными/атрибутами. <span class="badge">def meow(self):</span>
4515

46-
acc.deposit(50)
47-
acc.withdraw(30)
16+
- <span class="badge">Object</span> — конкретный экземпляр класса со своими значениями атрибутов и возможностью вызывать методы класса.
4817

49-
print(acc.owner, acc.balance) # Alice 120
18+
4 основных принципа ООП:
19+
- Инкапсуляция ([Encapsulation](./encapsulation.md){:.link-accent})
20+
- Наследование ([Inheritance](./inheritance.md){:.link-accent})
21+
- Полиморфизм ([Polymorphism](./polymorphism.md){:.link-accent})
22+
- Абстракция ([Abstraction](./abstraction.md){:.link-accent})
5023

51-
!!! info ""
52-
В этом примере объект `acc` хранит состояние (`owner`, `balance`) и умеет выполнять действия (методы `deposit`, `withdraw`) — это и есть базовая идея ООП.
24+
## Пример
25+
```python
26+
class Cat:
27+
def __init__(self, name, color):
28+
self.name = name # Attribute | Данные объекта
29+
self.color = color
30+
31+
def meow(self): # Method | Поведение объекта
32+
return f"{self.name}: meow!"
33+
34+
cat_object = Cat("Kitty", "black") # Object | Экземпляр класса
35+
print(cat_object.name) # Доступ к атрибуту
36+
print(cat_object.meow()) # Вызов метода
37+
```

docs/stylesheets/extra.css

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,21 +53,24 @@ VitePress-like (dark, purple)
5353
}
5454
[data-md-color-scheme="slate"] .md-typeset a:hover {
5555
color: #e6a6c9;
56+
text-decoration: underline;
5657
text-decoration-color: #e6a6c9;
5758
}
5859

5960
/* Блоки кода: скругление и “карточка” */
6061
[data-md-color-scheme="slate"] .md-typeset pre > code,
6162
[data-md-color-scheme="slate"] .md-typeset .highlight {
6263
background: #20232b;
64+
padding-left: 0;
6365
border-radius: 12px;
6466
}
6567

6668
/* Общая форма (пусть останется “карточкой”) */
6769
[data-md-color-scheme="slate"] .md-typeset .admonition,
6870
[data-md-color-scheme="slate"] .md-typeset details.admonition {
6971
border-radius: 12px;
70-
border: 1px solid rgba(255,255,255,.08);
72+
border: 0px solid;
73+
overflow: hidden;
7174
}
7275

7376
/* INFO / NOTE (синяя) */
@@ -76,7 +79,7 @@ VitePress-like (dark, purple)
7679
[data-md-color-scheme="slate"] .md-typeset details.info,
7780
[data-md-color-scheme="slate"] .md-typeset details.note {
7881
background-color: rgba(56, 139, 253, 0.12);
79-
border-color: rgba(56, 139, 253, 0.30);
82+
box-shadow: none;
8083
}
8184

8285
/* WARNING (жёлтая) */
@@ -92,7 +95,6 @@ VitePress-like (dark, purple)
9295
[data-md-color-scheme="slate"] .md-typeset details.danger,
9396
[data-md-color-scheme="slate"] .md-typeset details.error {
9497
background-color: rgba(248, 81, 73, 0.12);
95-
border-color: rgba(248, 81, 73, 0.35);
9698
}
9799

98100

Lines changed: 61 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,67 @@
1-
/* Общий фон и скругление для блоков кода в тёмной теме */
1+
/* Общий фон и скругление */
22
[data-md-color-scheme="slate"] .md-typeset pre > code,
33
[data-md-color-scheme="slate"] .md-typeset .highlight {
44
background: #171717;
55
border-radius: 10px;
66
}
77

8-
/* Токены Pygments (цвета как у вас раньше) */
9-
[data-md-color-scheme="slate"] .md-typeset .highlight .k { color: #ff7b72; } /* keyword */
10-
[data-md-color-scheme="slate"] .md-typeset .highlight .kn { color: #D990B9; }
11-
[data-md-color-scheme="slate"] .md-typeset .highlight .nf { color: #d2a8ff; } /* function name */
12-
[data-md-color-scheme="slate"] .md-typeset .highlight .s { color: #a5d6ff; } /* string */
13-
[data-md-color-scheme="slate"] .md-typeset .highlight .c { color: #8b949e; } /* comment */
14-
[data-md-color-scheme="slate"] .md-typeset .highlight .nn { color: #a5d6ff; } /* import / module */
8+
/* Полный набор Pygments-токенов для Python (GitHub Dark style) */
9+
[data-md-color-scheme="slate"] .md-typeset .highlight .k,
10+
[data-md-color-scheme="slate"] .md-typeset .highlight .kc,
11+
[data-md-color-scheme="slate"] .md-typeset .highlight .kd,
12+
[data-md-color-scheme="slate"] .md-typeset .highlight .kp {
13+
color: #ff7b72; /* keyword: class, def, return, if */
14+
}
15+
16+
[data-md-color-scheme="slate"] .md-typeset .highlight .kn {
17+
color: #ff7b72; /* import/from */
18+
}
19+
20+
[data-md-color-scheme="slate"] .md-typeset .highlight .nf,
21+
[data-md-color-scheme="slate"] .md-typeset .highlight .fm {
22+
color: #d2a8ff; /* function name */
23+
}
24+
25+
[data-md-color-scheme="slate"] .md-typeset .highlight .nc {
26+
color: #79c0ff; /* class name */
27+
}
28+
29+
[data-md-color-scheme="slate"] .md-typeset .highlight .bp {
30+
color: #79c0ff; /* self, cls */
31+
}
32+
33+
[data-md-color-scheme="slate"] .md-typeset .highlight .nb {
34+
color: #d2a8ff; /* print, len и другие built-in */
35+
}
36+
37+
[data-md-color-scheme="slate"] .md-typeset .highlight .s,
38+
[data-md-color-scheme="slate"] .md-typeset .highlight .s1,
39+
[data-md-color-scheme="slate"] .md-typeset .highlight .s2 {
40+
color: #a5d6ff; /* strings */
41+
}
42+
43+
[data-md-color-scheme="slate"] .md-typeset .highlight .c,
44+
[data-md-color-scheme="slate"] .md-typeset .highlight .c1 {
45+
color: #8b949e; /* comments */
46+
}
47+
48+
[data-md-color-scheme="slate"] .md-typeset .highlight .mi,
49+
[data-md-color-scheme="slate"] .md-typeset .highlight .mf {
50+
color: #79c0ff; /* numbers */
51+
}
52+
53+
[data-md-color-scheme="slate"] .md-typeset .highlight .o {
54+
color: #ff7b72; /* operators: =, +, - */
55+
}
56+
57+
[data-md-color-scheme="slate"] .md-typeset .highlight .p {
58+
color: #c9d1d9; /* punctuation: (), [] */
59+
}
60+
61+
[data-md-color-scheme="slate"] .md-typeset .highlight .nn {
62+
color: #79c0ff; /* module/import name */
63+
}
64+
65+
[data-md-color-scheme="slate"] .md-typeset .highlight .n {
66+
color: #c9d1d9; /* обычные имена переменных */
67+
}

notes/oop.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Cat:
2+
def __init__(self, name, color):
3+
self.name = name # attribute (данные объекта)
4+
self.color = color # attribute
5+
6+
def meow(self): # method (поведение объекта)
7+
return f"{self.name}: meow!"
8+
9+
cat_object = Cat("Kitty", "black") # object (экземпляр класса)
10+
print(cat_object.name) # доступ к атрибуту
11+
print(cat_object.meow()) # вызов метода

0 commit comments

Comments
 (0)