214 похожих чатов

Мудрецы. Помогите разрешить вопрос по ООП, плиз. В чем принципиальная

разница между классом, создающим объекты и функцией, которая создаёт джейсоны по переданным параметрам? Ну или словари. А методом тогда будет функция из джейсона того же. В общем смысле. Не привязываясь к языку. Никак не могу понять. Чем объект вообще от просто набора полей-словаря отличается? И чем класс не функция.

9 ответов

26 просмотров

так, жсон объект обладает поведением (своими методами)?

С-Т Автор вопроса
Aniki Hi$ok@ 🌈 Z 🐀
так, жсон объект обладает поведением (своими метод...

ну никто ж не мешает положить кусок кода в джейсон и заюзать его как код

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

С Т
ну никто ж не мешает положить кусок кода в джейсон...

так, а ограничения? Можно ли сделать поле жсона приватным? Можно ли унаследоваться и дописать поля и методы?

С-Т Автор вопроса
Aniki Hi$ok@ 🌈 Z 🐀
так, а ограничения? Можно ли сделать поле жсона пр...

ну дописать можно, конечно. Приватное поле не очень понимаю, сорри. Это как приватность организована? Аутентификацией чтоль какой?

С Т
ну дописать можно, конечно. Приватное поле не очен...

ну, приватные поля доступны только методам самого объекта. То есть ни прочитать, ни изменить их из вне нельзя

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

С Т
ну дописать можно, конечно. Приватное поле не очен...

Как реализовано в принципе не важно. В некоторых языках в принципе деления на private/public нет. Тут скорее важна сама концепция, что ты можешь как-то пометить детали реализации, чтобы потребитель понимал, что их трогать не нужно, они могут поменяться итд.

1. Объект от просто данных отличается наличием поведения. 2. Класс от функции отличается тем что это в принципе разные вещи. Функция - штука, которая принимает что-то на вход и отдаёт что-то на выход. У функции нет состояния (не должно быть, хотя некоторые языки позволяют добавить) Класс - описание объекта (его внутренней структуры) и его публичного интерфейса (публичных полей aka свойств и методов) Тоесть получается, что класс в принципе объекты не создаёт Вообще без привязки к конкретному языку сложно сказать, тк в разных языках ООП реализовано по разному. В целом кажется что главное: 1. Наличие объектов, как объединения некоторой предопределённой структуры данных и поведения. 2. Взаимозаменяемость объектов с идентичным публичным интерфейсом 3. Наличие возможности расширения существующих описаний объектов и поведений без переписывания и копирования исходных.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Карта сайта