Форум сайта python.su
xam1816
У объекта есть границы, отделяющее его внутреннее состояние от всего другого, что не является этим же объектом. Соответственно объект занимает какое-то пространство.
У объекта есть поведение - способность изменять свое состояние. Под состоянием подразумевается его характеристики, свойства, данные
Объект сообщается с внешним миром. Он получает сообщения, реагирует, отправляет сообщения.
xam1816
Скажите, какие объекты вы можете выделить в вашей программе?
Отредактировано bootcd (Май 6, 2024 23:44:49)
Офлайн
bootcdГде хранится канал? Где хранится громкость?
Как я понимаю объект:
Объект: Телевизор(42 дюйма, 10кг, черный, выключен)
Свойства:
размер диагонали (число),
вес (число),
цвет (строка),
состояние (включен, выключен - логический),
кнопка вкл/выкл (объект типа Кнопка),
кнопка громкости (тише, громче, объект типа Кнопка)
Функции:
1. Включить,
2. Выключить
3. Переключить канал вперед
4. Переключить канал назад
5. Повысить громкость
6. Понизить громкость
Офлайн
py.user.next
Где хранится канал? Где хранится громкость?
Если кнопку громкости извлечь из телевизора, у него не будет звука?
Офлайн
bootcdОт поставленной задачи это зависит. Например, если телевизор надо в окно выкинуть, там нужен только вес, размер. Если телевизор продаётся, то его, может быть, надо включить, но хранить настройки в нём, переключать параметры - это всё не надо. Если телевизор используется для просмотра передач в каком-то помещении, то нужно иметь в нём громкость. То есть телевизор там, телевизор там и телевизор там - это всё разные телевизоры, хоть это может быть и один и тот же реальный телевизор. Это абсолютно разные объекты. Объект - это не сам телевизор, объект - это его модель (математическая). А модель - это обеднённое описание чего-то из реального мира. Поэтому и нельзя сразу сказать “телевизор будет иметь молекулы”. Молекулы, конечно, есть в телевизоре реальном, только вот для задачи они совсем не нужны. Так-то там бесконечно можно всё добывать через разложение. Неизвестно, где мир реальный заканчивается.
Правильно ли я понимаю, что декомпозиция зависит от бизнес логики?
Отредактировано py.user.next (Май 7, 2024 12:48:54)
Офлайн
> По крайней мере сджойнить что-то с фильтрами, сортировками и подзапросами смогу.
Это уже неплохо. Процентов 90 чебурашек на это не способны.
> Вот с этого момента и начались все мои приключения.
Для начала тебе нужно понять что объект состоит из двух частей:
1) Интерфейс - механизма взаимодействия с другими объектами
2) Реализация - внутреннее устройство объекта взаимодействие с которым происходит только через интерфейс
В этом и состоит вся суть абстракции при помощи объектов.
> Вот я как раз не могу уловить эти моменты. … я использую сессии, которые насколько я понимаю, как раз и призваны обеспечивать транзакции в БД.
Суть того примера который я приводил в том что весь код взаимодействующий с БД находится в реализации объекта. Это даёт возможность описывать бизнес процессы через взаимодействие объектов не прибегая к прямому обращению к БД. Вот так формируются слои абстракций.
Проблема с транзакциями в том что ты не сможешь описать их внутри объекта и будешь вынужден вытащить их на уровень бизнес процессов. Это называется протеканием абстракции, по этому я и написал что может быть больно
Офлайн
> Соответственно тот, кто пишет книги про то, как писать программы, сам не особо этим занят, раз есть время возиться с книгами.
Всё ещё хуже. Тот кто пишет книги очень часто сидит на грантах. А что бы грант получить книга должна быть “очень умной” по этому их намеренно переусложняют.
Офлайн
С точки зрения ООП База Данных - это объект. Этот объект имеет четкие границы, внутри него есть данные, которыми только он (объект) распоряжается, он может принимать сообщения в виде запросов, реагировать на них и отправлять сообщения обратно. Этот объект может существовать сам по себе.
Пример из реальности - машинка на радио управлении. У нее как объекта есть границы, у нее есть состояние, она может менять свое состояние - двигаться, поворачивать колеса, включать сирену, она принимает сообщения в виде радио сигналов, реагирует, возвращает сообщение обратно, в реальности сообщение не обязательно слова какие-то, а вообще сам факт того что ты видишь, что машина переместилась в пространстве и извлекла звуки которые передались по воздуху - это все сообщение.
сообщение => “черный ящик” => сообщение. Что в черном ящике никого еб…ть не должно, это его дело. Но мы точно знаем что у него есть какая-то функциональность, и чтобы ей воспользоваться нужно отправить ему сообщение, которое он понимает и реагирует на него.
Интернет построен по принципу ООП.
Удаленный сервер - объект. Как там в нем все устроено никому не интересно. Мы просто отправляем ему сообщение, он дает нам ответ обратно с полезными данными или бесполезными. Сервер существует сам по себе, браузер может жить сам по себе.
Так вот когда ты пишешь ключевое слово class, ты говоришь интерпретатору, что собираешься выделить пространство для объекта, там внутри будешь творить все что хочешь, это уже будет дело объекта, единственное, чтобы он мог сообщаться с внешним миром, он должен уметь принимать сообщения и возвращать их обратно. Этот объект может существовать сам по себе.
Наделаешь таких объектов, и налаживаешь между ними взаимодействие, кто за что отвечает, подобно в организации из людей.
Офлайн
xam1816
С точки зрения ООП База Данных - это объект. Этот объект имеет четкие границы, внутри него есть данные, которыми только он (объект) распоряжается, он может принимать сообщения в виде запросов, реагировать на них и отправлять сообщения обратно. Этот объект может существовать сам по себе.Пример из реальности - машинка на радио управлении. У нее как объекта есть границы, у нее есть состояние, она может менять свое состояние - двигаться, поворачивать колеса, включать сирену, она принимает сообщения в виде радио сигналов, реагирует, возвращает сообщение обратно, в реальности сообщение не обязательно слова какие-то, а вообще сам факт того что ты видишь, что машина переместилась в пространстве и извлекла звуки которые передались по воздуху - это все сообщение.сообщение => “черный ящик” => сообщение. Что в черном ящике никого еб…ть не должно, это его дело. Но мы точно знаем что у него есть какая-то функциональность, и чтобы ей воспользоваться нужно отправить ему сообщение, которое он понимает и реагирует на него.Интернет построен по принципу ООП.Удаленный сервер - объект. Как там в нем все устроено никому не интересно. Мы просто отправляем ему сообщение, он дает нам ответ обратно с полезными данными или бесполезными. Сервер существует сам по себе, браузер может жить сам по себе.Так вот когда ты пишешь ключевое слово class, ты говоришь интерпретатору, что собираешься выделить пространство для объекта, там внутри будешь творить все что хочешь, это уже будет дело объекта, единственное, чтобы он мог сообщаться с внешним миром, он должен уметь принимать сообщения и возвращать их обратно. Этот объект может существовать сам по себе.Наделаешь таких объектов, и налаживаешь между ними взаимодействие, кто за что отвечает, подобно в организации из людей.
Офлайн
bootcdТам тоже должны быть объекты. Объект Форма запросил данные у объекта Пользователь. Объект Пользователь передал данные в сообщении объекту Форма. Объект Форма позвал объект Менеджер. Объект Менеджер пришёл и запросил данные у объекта Форма. Объект Форма передал данные объекту Менеджер. Процесс надо себе представлять, что там за объекты и как они общаются друг с другом, посылая друг другу сообщения.
Например. Пришли данные из формы.
bootcdОбъект создаётся и начинает жить. Жизнь объекта включает его состояния и его поведения. Потом объект умирает. От жизни до смерти он может побывать в одном состоянии, а может побывать в пяти состояниях, возвращаться из одних состояний в другие или переходить всё время в новые состояния безвозвратно. Состояние объекта хранится в его свойствах.
Мне понятный объекты, когда я их порождаю, задавая начальное состояние.
Отредактировано py.user.next (Май 8, 2024 08:00:13)
Офлайн