Все равно, не доходит до меня, что же в ООП "Объект".
Написано "Объект это экземпляр класса". Класс может иметь множество экземпляров. Но, эти экземпляры просто ссылки на класс. Класс содержит поля. Поля - это свойства объекта. Методы - элементы движка, обрабатывающие значения конктретных свойств объекта.
В моем понимании, объект - именованный (или нумерованный) комплекс свойств. Значения свойств обрабатываются различными механизмами больших блоков. В принципе - тоже самое. Только записывается по другому. В ООП происходит дробление функционала ради его инкапсуляции. У меня - наоборот - объединение функционала.
Если перевести вопрос в область графики, То класс - "CButton" это тоже, что мой элемент Кнопка. В моей реализации, это три объекта в ядре, каждый из которых - ряд свойств. В классе, это тоже список свойств (полей), методов кнопки (у меня методов принадлежащих отдельно кнопке нет. Функционал кнопки находится внутри глобальных функциональных блоков). В этих блоках кнопка обрабатывается как любой элемент, но в определенных местах есть ее личные условия и обработчики. В ООП тот же самый функцонал кнопки, только инкапсулирован в классе, доступ к которому через экземпляры.
Джорж, в каждой библиотеке, в каждом решении, заложена какая то концепция. Если я беру чужую концепцию и на ее основе пытаюсь развивать свою, я могу получить концептуальный "краш", потому что система, построенная на двух или более концепциях не может быть стабильной. Поэтому, инновационные вещи нужно разрабатывать самому и с нуля. Чтобы не бороться с "родовыми" ошибками и противоречиями остальных авторов.
Петр, вы зря спорите. Доказать ничего невозможно. Я так-же не понимаю такой подход к программированию когда вместо использования _Symbol предлагают подключить библиотеку CSymbolInfo и писать объект.Name()
Не понимаю использования например таких методов СБ
//+------------------------------------------------------------------+//| Set the property value "SYMBOL_SELECT" |//+------------------------------------------------------------------+bool CSymbolInfo::Select(constboolselect)
{
return(SymbolSelect(m_name,select));
}
в чём сложность написать
SymbolSelect("Нужный символ", включить или выключить);
И в том и другом случае всего одна строка кода.
С другой стороны, Артём мне демонстрировал возможности ООП в которых я заблудился, ничего не понял и не использую
Вот объясню по другому. Обычно так никто не объясняет.
Все программисты знают что такое например int x;
Теперь представим что слово int это как название класса. А что он описывает ? что это:
1. целое число
2. занимает в памяти 4 байта
3. принимает значения +- в каких то пределах. (столько хватит);
И когда мы пишем int x; то объявляем объект x, int типа. x уже физически занимает 4-х байтовое поле в оперативной памяти.
Спасибо. В этом случае - класс это инкапсулированная сущность, контейнер, который по сути - Объект сам по себе, находящийся в иерархической взаимосвязи с другими объетами-классами. Класс описывает свою сущность через свойства (поля) и методы (инкапсулированную фунциональность), отделенную от функциональности других объектов.
Петр, вы зря спорите. Доказать ничего невозможно. Я так-же не понимаю такой подход к программированию когда вместо использования _Symbol предлагают подключить библиотеку CSymbolInfo и писать объект.Name()
Не понимаю использования например таких методов СБ
в чём сложность написать
И в том и другом случае всего одна строка кода.
С другой стороны, Артём мне демонстрировал возможности ООП в которых я заблудился, ничего не понял и не использую
Ничего.)) Стараюсь понять концепцию ООП, чтобы найти различия и сходства с моей концепцией. Думаю, это обогатит мои знания.))
Реter Konow: В этом варианте смысла, Класс - склад инструментов, материалов, сырья и станков. Иерархия наследующихся классов - вроде цехов "завода".
Пётр, зачем вам углубляться в такие тонкости?
Класс - это описание объекта, его свойств и методов установки и доступа к этим свойствам.
Объект - это когда мы объявили переменную с типом класса, или создали новый объект этого класса оператором new.
Например, вот это класс:
//+------------------------------------------------------------------+class CClass
{
//--- Приватные члены класса. Доступны только в объекте этого классаprivate:
int m_type; // Тип объекта//--- Защищённые члены класса. Доступны в объекте этого класса и его наследникахprotected:
string m_name; // Имя объекта//--- Публичные члены класса. Доступны вездеpublic:
void SetType(constint type) { this.m_type=type; }
int GetType(void) const { returnthis.m_type; }
void SetName(conststring name) { this.m_name=name; }
string GetName(void) const { returnthis.m_name; }
};
//+------------------------------------------------------------------+
В нём всего два члена класса - тип и наименование. Это его свойства. И это ещё не объект. Это план, чертёж, проект... будущего объекта.
Создаём объект:
CClass class_obj; // Объявили переменную class_obj с типом класса CClass. Теперь class_obj - это объект
Создаём объект и указатель на него:
CClass *class_ptr = new CClass(); // Оператором new создали новый объект класса CClass, и в переменную class_ptr получили на него указатель. // Теперь в памяти сидит объект CClass, и получить к нему доступ можно по этому указателю, // и по этому же указателю обязательно удалить объект по завершении работы оператором delete
Как я уже говорил, в ООП взгляд на Объект более широкий, чем в моей концепции. Я имел дело только с графическими объектами, с однообразным набором свойств. ООП предлагает взгляд на любую сущность через понятие Объект. Это конечно здорово, потому что любая сущность есть Объект. Конечно, я против чрезмерной инкапсуляции и дробления функционала объектов. Почему? Да потому что это делает механизмы менее эффективными. Но, сама возможность смотреть на Объект в более широком контексте меня привлекает.
Джорж, в каждой библиотеке, в каждом решении, заложена какая то концепция. Если я беру чужую концепцию и на ее основе пытаюсь развивать свою, я могу получить концептуальный "краш", потому что система, построенная на двух или более концепциях не может быть стабильной. Поэтому, инновационные вещи нужно разрабатывать самому и с нуля. Чтобы не бороться с "родовыми" ошибками и противоречиями остальных авторов.
Есть всего семь (!) нот. А сколько музыки на них? И ни один композитор не задумывается о крахе. Он просто пишет музыку, играющую в душе. Не придумывает что-то иное, а использует эти семь нот.
Класс - это описание объекта, его свойств и методов установки и доступа к этим свойствам.
Объект - это когда мы объявили переменную с типом класса, или создали новый объект этого класса оператором new.
Например, вот это класс:
В нём всего два члена класса - тип и наименование. Это его свойства. И это ещё не объект. Это план, чертёж, проект... будущего объекта.
Создаём объект:
Создаём объект и указатель на него:
Класс - это описание объекта. Хорошо. Содержит свойства объекта и его функционал. Ок. Все это упорядочено, открыто или защищено.
Тогда САМ ОБЪЕКТ - за кадром. Он в контексте класса. В контексте его названия и описания. То есть в ООП, Объект, - именнованный комплекс атрибутов (не только свойств, но и функциональных элементов - методов), но более упорядоченный и инкапсулированный, чем у меня. (Так мне понятнее).
Не понимаю использования например таких методов СБ
в чём сложность написать
сама концепция ООП подразумевает как раз и не писать - Вы не должны знать реализацию метода (в Вашем примере return(SymbolSelect(m_name,select)))
представьте, что вместо этой строчки:
SymbolSelect("Нужный символ", включить или выключить);
нужно выполнить очень много запросов, различных проверок и т.п. - на это у Вас уйдет время на написание собственной библиотеки и на само изучение материала
Пусть Ваша задача как раз и сводится всего к использованию одного метода уже готового решения в виде класса - Вы создаете экземпляр класса (обьект) и используете готовый метод Select(const bool select)
Если дальше не предполагается выполнять еще такие операции, освободим память = уничтожим обьект
Пусть Ваша задача сводится к отображению кнопки по нажатию которой Вы включаете / отключаете символ в обзоре рынка ---> создаете свой класс и инкапсулируете в него уже готовый класс кнопка и готовый класс CSymbolInfo - все задача решена
Парадигме ООП дает лишь общие сведения что можно делать с классом - не хотите инкапсулировать CSymbolInfo - ну возьмите наследуйте от него свой класс
ЗЫ: если "на пальцах", то суть ООП - это быстрое решение поставленной задачи без знания реализации
Класс - это описание объекта. Хорошо. Содержит свойства объекта и его функционал. Ок. Все это упорядочено, открыто или защищено.
Тогда САМ ОБЪЕКТ - за кадром. Он в контексте класса. В контексте его названия и описания. То есть в ООП, Объект, - именнованный комплекс атрибутов (не только свойств, но и функциональных элементов - методов), но более упорядоченный и инкапсулированный, чем у меня. (Так мне понятнее).
Чтобы всё было понятно, надо читать книги. Хотя бы VC++ за 21 день.
Советую на первое время использовать MFC, создавать windows приложение на основе CDialog, создавая всякие объекты и посмотреть как легко они управляются.
После этого будете выбросить вашу затею. К сожалению.
Все равно, не доходит до меня, что же в ООП "Объект".
Написано "Объект это экземпляр класса". Класс может иметь множество экземпляров. Но, эти экземпляры просто ссылки на класс. Класс содержит поля. Поля - это свойства объекта. Методы - элементы движка, обрабатывающие значения конктретных свойств объекта.
В моем понимании, объект - именованный (или нумерованный) комплекс свойств. Значения свойств обрабатываются различными механизмами больших блоков. В принципе - тоже самое. Только записывается по другому. В ООП происходит дробление функционала ради его инкапсуляции. У меня - наоборот - объединение функционала.
Если перевести вопрос в область графики, То класс - "CButton" это тоже, что мой элемент Кнопка. В моей реализации, это три объекта в ядре, каждый из которых - ряд свойств. В классе, это тоже список свойств (полей), методов кнопки (у меня методов принадлежащих отдельно кнопке нет. Функционал кнопки находится внутри глобальных функциональных блоков). В этих блоках кнопка обрабатывается как любой элемент, но в определенных местах есть ее личные условия и обработчики. В ООП тот же самый функцонал кнопки, только инкапсулирован в классе, доступ к которому через экземпляры.
Джорж, в каждой библиотеке, в каждом решении, заложена какая то концепция. Если я беру чужую концепцию и на ее основе пытаюсь развивать свою, я могу получить концептуальный "краш", потому что система, построенная на двух или более концепциях не может быть стабильной. Поэтому, инновационные вещи нужно разрабатывать самому и с нуля. Чтобы не бороться с "родовыми" ошибками и противоречиями остальных авторов.
Петр, вы зря спорите. Доказать ничего невозможно. Я так-же не понимаю такой подход к программированию когда вместо использования _Symbol предлагают подключить библиотеку CSymbolInfo и писать объект.Name()
Не понимаю использования например таких методов СБ
в чём сложность написать
И в том и другом случае всего одна строка кода.
С другой стороны, Артём мне демонстрировал возможности ООП в которых я заблудился, ничего не понял и не использую
Не очень так.
Вот объясню по другому. Обычно так никто не объясняет.
Все программисты знают что такое например int x;
Теперь представим что слово int это как название класса. А что он описывает ? что это:
1. целое число
2. занимает в памяти 4 байта
3. принимает значения +- в каких то пределах. (столько хватит);
И когда мы пишем int x; то объявляем объект x, int типа. x уже физически занимает 4-х байтовое поле в оперативной памяти.
Петр, вы зря спорите. Доказать ничего невозможно. Я так-же не понимаю такой подход к программированию когда вместо использования _Symbol предлагают подключить библиотеку CSymbolInfo и писать объект.Name()
Не понимаю использования например таких методов СБ
в чём сложность написать
И в том и другом случае всего одна строка кода.
С другой стороны, Артём мне демонстрировал возможности ООП в которых я заблудился, ничего не понял и не использую
В этом варианте смысла, Класс - склад инструментов, материалов, сырья и станков. Иерархия наследующихся классов - вроде цехов "завода".
Пётр, зачем вам углубляться в такие тонкости?
Класс - это описание объекта, его свойств и методов установки и доступа к этим свойствам.
Объект - это когда мы объявили переменную с типом класса, или создали новый объект этого класса оператором new.
Например, вот это класс:
В нём всего два члена класса - тип и наименование. Это его свойства. И это ещё не объект. Это план, чертёж, проект... будущего объекта.
Создаём объект:
CClass class_obj; // Объявили переменную class_obj с типом класса CClass. Теперь class_obj - это объектСоздаём объект и указатель на него:
Джорж, в каждой библиотеке, в каждом решении, заложена какая то концепция. Если я беру чужую концепцию и на ее основе пытаюсь развивать свою, я могу получить концептуальный "краш", потому что система, построенная на двух или более концепциях не может быть стабильной. Поэтому, инновационные вещи нужно разрабатывать самому и с нуля. Чтобы не бороться с "родовыми" ошибками и противоречиями остальных авторов.
Есть всего семь (!) нот. А сколько музыки на них? И ни один композитор не задумывается о крахе. Он просто пишет музыку, играющую в душе. Не придумывает что-то иное, а использует эти семь нот.
Пётр, зачем вам углубляться в такие тонкости?
Класс - это описание объекта, его свойств и методов установки и доступа к этим свойствам.
Объект - это когда мы объявили переменную с типом класса, или создали новый объект этого класса оператором new.
Например, вот это класс:
В нём всего два члена класса - тип и наименование. Это его свойства. И это ещё не объект. Это план, чертёж, проект... будущего объекта.
Создаём объект:
Создаём объект и указатель на него:
Класс - это описание объекта. Хорошо. Содержит свойства объекта и его функционал. Ок. Все это упорядочено, открыто или защищено.
Тогда САМ ОБЪЕКТ - за кадром. Он в контексте класса. В контексте его названия и описания. То есть в ООП, Объект, - именнованный комплекс атрибутов (не только свойств, но и функциональных элементов - методов), но более упорядоченный и инкапсулированный, чем у меня. (Так мне понятнее).
Не понимаю использования например таких методов СБ
в чём сложность написать
сама концепция ООП подразумевает как раз и не писать - Вы не должны знать реализацию метода (в Вашем примере return(SymbolSelect(m_name,select)))
представьте, что вместо этой строчки:
нужно выполнить очень много запросов, различных проверок и т.п. - на это у Вас уйдет время на написание собственной библиотеки и на само изучение материала
Пусть Ваша задача как раз и сводится всего к использованию одного метода уже готового решения в виде класса - Вы создаете экземпляр класса (обьект) и используете готовый метод Select(const bool select)
Если дальше не предполагается выполнять еще такие операции, освободим память = уничтожим обьект
Пусть Ваша задача сводится к отображению кнопки по нажатию которой Вы включаете / отключаете символ в обзоре рынка ---> создаете свой класс и инкапсулируете в него уже готовый класс кнопка и готовый класс CSymbolInfo - все задача решена
Парадигме ООП дает лишь общие сведения что можно делать с классом - не хотите инкапсулировать CSymbolInfo - ну возьмите наследуйте от него свой класс
ЗЫ: если "на пальцах", то суть ООП - это быстрое решение поставленной задачи без знания реализации
Класс - это описание объекта. Хорошо. Содержит свойства объекта и его функционал. Ок. Все это упорядочено, открыто или защищено.
Тогда САМ ОБЪЕКТ - за кадром. Он в контексте класса. В контексте его названия и описания. То есть в ООП, Объект, - именнованный комплекс атрибутов (не только свойств, но и функциональных элементов - методов), но более упорядоченный и инкапсулированный, чем у меня. (Так мне понятнее).
Чтобы всё было понятно, надо читать книги. Хотя бы VC++ за 21 день.
Советую на первое время использовать MFC, создавать windows приложение на основе CDialog, создавая всякие объекты и посмотреть как легко они управляются.
После этого будете выбросить вашу затею. К сожалению.