Страница 1 из 4
Объекты и классы
Добавлено: Чт мар 03, 2016 11:47 am
Михаил_Калуга
Здравствуйте. Уточните использование в системе объектов и классов.
1. Есть класс ROOMS с описанием свойств: температура влажность, освещенность, ТИП КОНТРОЛЛЕРА и тд в нем объекты комнаты: зал спальня гараж и тд. Есть класс Контроллеры в нем свойства IP, вход 1, выход1 итд. В нем объекты 1, 2, 3 и тд. Как указать, что в классе ROOMS я хочу использовать данные из класса Контроллеры?
2. В классе ROOMS свойства лампы_количество, лампы_мощность. В объекте зал у меня установлено 5 ламп 60вт и 10 ламп 75ватт - как указать?
Вопрос по организации самой таблицы объекты. В базовой поставке в таблице идут например классы Sensors все отдельно. Может правильнее организовать класс Датчики у которых например свойства наличие/отсутствие действия. В классе объекты температурный сенсор датчик движения, пожарные датчики, охранные датчики и тд. Это я к тому, что объектно ориентированное программирование (ООП) и разработали, чтобы не писать каждый раз свойства для каждого аналогичного устройства, а наследовать их от свойств класса.
Если заблуждаюсь поправьте.
Re: Объекты и классы
Добавлено: Чт мар 03, 2016 1:46 pm
slgeo
Cвойства объекта Rooms придется обновлять в методах объекта Controllers.
По поводу объявления классов:
Верно рассуждаете, это ошибочное представление в базовой поставке дополнительно сбивает новичков, слабо знакомых с ООП. Можете посмотреть у меня в коннекте, хотя еще не использовал объекты Sensors, но переписал объявление на более корректное.
Re: Объекты и классы
Добавлено: Чт мар 03, 2016 1:56 pm
ErmolenkoM
1. Ошибка в понимании, что такое класс. У класса НЕТ данных. Данные есть только у экземпляра класса. К своим данным из своего метода объект может обратится через this. Методы описываются один раз в описании класса, в теле метода как раз и используют this для обращения к свойствам того экземпляра класса, который вызвал метод.
2. В реализации МЖД, свойства объектов не могут объектами. Только примитивы.
3. Объект может хранить имя другого объекта, и обращаться к его свойствам.
4. Списки (массивы) можно реализовать так: создаем много свойств: лампа1, лампа2, лампа3,... Далее перебираем все свойства в цикле и выбираем нужные.
По поводу организации своих объектов - тут кто во что горазд, _правильнее_ тут не подходит - все зависит от точки зрения и удобства реализации.
Re: Объекты и классы
Добавлено: Пт мар 04, 2016 2:30 am
Михаил_Калуга
Я понимаю, что у класса нет данных. И понимаю, что класс это таблица в базе данных. При заполнении одной таблицы нормально и правильно пользоваться "данными" из другой таблицы. Другое дело как это реализовано в МЖД. Из ответа я понял, что через панель управления это не реализовано. А насколько сложно реализовать?
Лампу взял как пример. Если лампа имеет еще свойства: тип (светодиодная, энергосберегающая, накаливания), цветность, цоколь и тд - то свойств получается очень много и напрашивается, чтобы эти свойства подставлялись из другой таблицы.
Делать можно кто во что горазд, но разработчик говорит, что использует ООП. У меня как у многих новичков возникает первый вопрос с чего начать? Ответ у меня таков - если делать правильно и чтобы это ООП работало первый шаг после установки и запуска системы это продумывание какие будут классы, свойства, объекты. После этого, если необходимо будет внести изменения, то данные изменения будут внесены во все связанные объекты автоматически.
Re: Объекты и классы
Добавлено: Пт мар 04, 2016 2:44 am
Михаил_Калуга
slgeo писал(а):Cвойства объекта Rooms придется обновлять в методах объекта Controllers.
Не понял или вопрос задал неправильно. В каждой комнате установлен контроллер со своим IP. Есть класс комнаты. Есть класс контроллеры. Как связать если я опрашиваю зал, программа понимала бы какой контроллер с каким IP я опрашиваю.
Re: Объекты и классы
Добавлено: Пт мар 04, 2016 3:04 am
Михаил_Калуга
slgeo писал(а): Можете посмотреть у меня в коннекте, хотя еще не использовал объекты Sensors, но переписал объявление на более корректное.
Напрашивается Relays и Relays27 объединить в один класс
Re: Объекты и классы
Добавлено: Пт мар 04, 2016 8:30 am
ErmolenkoM
Михаил_Калуга писал(а):
Делать можно кто во что горазд, но разработчик говорит, что использует ООП. У меня как у многих новичков возникает первый вопрос с чего начать? Ответ у меня таков - если делать правильно и чтобы это ООП работало первый шаг после установки и запуска системы это продумывание какие будут классы, свойства, объекты. После этого, если необходимо будет внести изменения, то данные изменения будут внесены во все связанные объекты автоматически.
Как программист с 20-ти летним стажем (блииииннннн.....) попробую рассказать где вы не правы.
1. Продумывать классы и прочее можно _только_ опираясь на опыт. То есть если бы за плечами были 100 разработанных умных домов, то да - можно сидеть продумывать систему. Судя по вопросам - это первый ваш УД. Поэтому не _продумывайте_, пробуйте. Создайте 2 разных класса, переделайте в 1, опять разбейте на 3. Поверьте: эффективность этого подхода в разы выше.
2.
изменения будут внесены во все связанные объекты автоматически
- ерунда полная. Глюков, ошибок и багов получите немерянное количество. Правильный подход: нужен код - пишем, нужен в другом месте - копируем, нужен в третьем месте - думаем и создаем общую функцию на все три места. То есть обобщение рождается из копирования. Спроектировать сразу правильное наследование и использование родительских общих методов для _развивающейся_ системы, на мой взгляд, невозможно. Другими словами: в теории общий код выглядит привлекательно, на практике - лучше разнести код. Единственное, ко всему надо подходить разумно и не возводить в абсалют.
Re: Объекты и классы
Добавлено: Пт мар 04, 2016 10:17 am
Михаил_Калуга
ErmolenkoM писал(а):
Как программист с 20-ти летним стажем (блииииннннн.....).
Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
(чтобы не искать :
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues)
Спасибо.
Re: Объекты и классы
Добавлено: Пт мар 04, 2016 10:35 am
ErmolenkoM
Михаил_Калуга писал(а):
Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
(чтобы не искать :
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues)
Спасибо.
Ничего не понял.
Вы хотите что-то поменять? Главный вопрос
зачем? Поверьте, то что сделано - правильно, и менять это не нужно. Просто разберитесь как это работает. Возможностей в существующем механизме объектов достаточно.
Не понимаю, зачем вам имена таблиц -
pvalues например. Есть методы gg и sg. Их достаточно. Зачем в какие-то таблицы добавлять записи?
Еще раз: объектная надстройка в МЖД существует исключительно для удобства и не соответствует полной концепции ООП. Нет например полиморфизма. Но это и не нужно. Это вспомогательный инструмент автоматизации рутины.
Re: Объекты и классы
Добавлено: Пт мар 04, 2016 11:05 am
Михаил_Калуга
ErmolenkoM писал(а):
Ничего не понял.
Править ничего не хочу.
Система МЖД работает так:
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues
Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
Установка связи между таблицами базы данных, чтобы можно было нормально работать через панель управления.
Те если у Вас есть зал , спальня, кухня и тд. В них установлены лампы разные. При заполнении таблиц (правильно) - в зал, спальню, кухню и тд подставлять данные из таблицы лампы. В МЖД так и сделано, но связь через панель управления установить нельзя.