Объекты и классы

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Михаил_Калуга
Сообщения: 41
Зарегистрирован: Чт дек 03, 2015 4:19 pm
Откуда: Калуга
Благодарил (а): 7 раз
Поблагодарили: 0

Объекты и классы

Сообщение Михаил_Калуга » Чт мар 03, 2016 11:47 am

Здравствуйте. Уточните использование в системе объектов и классов.
1. Есть класс ROOMS с описанием свойств: температура влажность, освещенность, ТИП КОНТРОЛЛЕРА и тд в нем объекты комнаты: зал спальня гараж и тд. Есть класс Контроллеры в нем свойства IP, вход 1, выход1 итд. В нем объекты 1, 2, 3 и тд. Как указать, что в классе ROOMS я хочу использовать данные из класса Контроллеры?
2. В классе ROOMS свойства лампы_количество, лампы_мощность. В объекте зал у меня установлено 5 ламп 60вт и 10 ламп 75ватт - как указать?

Вопрос по организации самой таблицы объекты. В базовой поставке в таблице идут например классы Sensors все отдельно. Может правильнее организовать класс Датчики у которых например свойства наличие/отсутствие действия. В классе объекты температурный сенсор датчик движения, пожарные датчики, охранные датчики и тд. Это я к тому, что объектно ориентированное программирование (ООП) и разработали, чтобы не писать каждый раз свойства для каждого аналогичного устройства, а наследовать их от свойств класса.
Если заблуждаюсь поправьте.
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: Объекты и классы

Сообщение slgeo » Чт мар 03, 2016 1:46 pm

Cвойства объекта Rooms придется обновлять в методах объекта Controllers.
По поводу объявления классов:
Верно рассуждаете, это ошибочное представление в базовой поставке дополнительно сбивает новичков, слабо знакомых с ООП. Можете посмотреть у меня в коннекте, хотя еще не использовал объекты Sensors, но переписал объявление на более корректное.
За это сообщение автора slgeo поблагодарил:
Михаил_Калуга (Пт мар 04, 2016 2:38 am)
Рейтинг: 1.16%
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Объекты и классы

Сообщение ErmolenkoM » Чт мар 03, 2016 1:56 pm

1. Ошибка в понимании, что такое класс. У класса НЕТ данных. Данные есть только у экземпляра класса. К своим данным из своего метода объект может обратится через this. Методы описываются один раз в описании класса, в теле метода как раз и используют this для обращения к свойствам того экземпляра класса, который вызвал метод.
2. В реализации МЖД, свойства объектов не могут объектами. Только примитивы.
3. Объект может хранить имя другого объекта, и обращаться к его свойствам.
4. Списки (массивы) можно реализовать так: создаем много свойств: лампа1, лампа2, лампа3,... Далее перебираем все свойства в цикле и выбираем нужные.

По поводу организации своих объектов - тут кто во что горазд, _правильнее_ тут не подходит - все зависит от точки зрения и удобства реализации.
За это сообщение автора ErmolenkoM поблагодарил:
Михаил_Калуга (Пт мар 04, 2016 2:37 am)
Рейтинг: 1.16%
aka msh555
Cubian на Cubietruck, Connect
Михаил_Калуга
Сообщения: 41
Зарегистрирован: Чт дек 03, 2015 4:19 pm
Откуда: Калуга
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Объекты и классы

Сообщение Михаил_Калуга » Пт мар 04, 2016 2:30 am

Я понимаю, что у класса нет данных. И понимаю, что класс это таблица в базе данных. При заполнении одной таблицы нормально и правильно пользоваться "данными" из другой таблицы. Другое дело как это реализовано в МЖД. Из ответа я понял, что через панель управления это не реализовано. А насколько сложно реализовать?
Лампу взял как пример. Если лампа имеет еще свойства: тип (светодиодная, энергосберегающая, накаливания), цветность, цоколь и тд - то свойств получается очень много и напрашивается, чтобы эти свойства подставлялись из другой таблицы.

Делать можно кто во что горазд, но разработчик говорит, что использует ООП. У меня как у многих новичков возникает первый вопрос с чего начать? Ответ у меня таков - если делать правильно и чтобы это ООП работало первый шаг после установки и запуска системы это продумывание какие будут классы, свойства, объекты. После этого, если необходимо будет внести изменения, то данные изменения будут внесены во все связанные объекты автоматически.
Михаил_Калуга
Сообщения: 41
Зарегистрирован: Чт дек 03, 2015 4:19 pm
Откуда: Калуга
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Объекты и классы

Сообщение Михаил_Калуга » Пт мар 04, 2016 2:44 am

slgeo писал(а):Cвойства объекта Rooms придется обновлять в методах объекта Controllers.
Не понял или вопрос задал неправильно. В каждой комнате установлен контроллер со своим IP. Есть класс комнаты. Есть класс контроллеры. Как связать если я опрашиваю зал, программа понимала бы какой контроллер с каким IP я опрашиваю.
Михаил_Калуга
Сообщения: 41
Зарегистрирован: Чт дек 03, 2015 4:19 pm
Откуда: Калуга
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Объекты и классы

Сообщение Михаил_Калуга » Пт мар 04, 2016 3:04 am

slgeo писал(а): Можете посмотреть у меня в коннекте, хотя еще не использовал объекты Sensors, но переписал объявление на более корректное.
Напрашивается Relays и Relays27 объединить в один класс
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Объекты и классы

Сообщение ErmolenkoM » Пт мар 04, 2016 8:30 am

Михаил_Калуга писал(а): Делать можно кто во что горазд, но разработчик говорит, что использует ООП. У меня как у многих новичков возникает первый вопрос с чего начать? Ответ у меня таков - если делать правильно и чтобы это ООП работало первый шаг после установки и запуска системы это продумывание какие будут классы, свойства, объекты. После этого, если необходимо будет внести изменения, то данные изменения будут внесены во все связанные объекты автоматически.
Как программист с 20-ти летним стажем (блииииннннн.....) попробую рассказать где вы не правы.
1. Продумывать классы и прочее можно _только_ опираясь на опыт. То есть если бы за плечами были 100 разработанных умных домов, то да - можно сидеть продумывать систему. Судя по вопросам - это первый ваш УД. Поэтому не _продумывайте_, пробуйте. Создайте 2 разных класса, переделайте в 1, опять разбейте на 3. Поверьте: эффективность этого подхода в разы выше.
2.
изменения будут внесены во все связанные объекты автоматически
- ерунда полная. Глюков, ошибок и багов получите немерянное количество. Правильный подход: нужен код - пишем, нужен в другом месте - копируем, нужен в третьем месте - думаем и создаем общую функцию на все три места. То есть обобщение рождается из копирования. Спроектировать сразу правильное наследование и использование родительских общих методов для _развивающейся_ системы, на мой взгляд, невозможно. Другими словами: в теории общий код выглядит привлекательно, на практике - лучше разнести код. Единственное, ко всему надо подходить разумно и не возводить в абсалют.
За это сообщение автора ErmolenkoM поблагодарил:
Михаил_Калуга (Пт мар 04, 2016 10:17 am)
Рейтинг: 1.16%
aka msh555
Cubian на Cubietruck, Connect
Михаил_Калуга
Сообщения: 41
Зарегистрирован: Чт дек 03, 2015 4:19 pm
Откуда: Калуга
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Объекты и классы

Сообщение Михаил_Калуга » Пт мар 04, 2016 10:17 am

ErmolenkoM писал(а):
Как программист с 20-ти летним стажем (блииииннннн.....).
Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
(чтобы не искать :
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues)
Спасибо.
ErmolenkoM
Сообщения: 560
Зарегистрирован: Ср сен 04, 2013 10:31 am
Откуда: Самара
Благодарил (а): 99 раз
Поблагодарили: 140 раз
Контактная информация:

Re: Объекты и классы

Сообщение ErmolenkoM » Пт мар 04, 2016 10:35 am

Михаил_Калуга писал(а): Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
(чтобы не искать :
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues)
Спасибо.
Ничего не понял.
Вы хотите что-то поменять? Главный вопрос зачем? Поверьте, то что сделано - правильно, и менять это не нужно. Просто разберитесь как это работает. Возможностей в существующем механизме объектов достаточно.
Не понимаю, зачем вам имена таблиц - pvalues например. Есть методы gg и sg. Их достаточно. Зачем в какие-то таблицы добавлять записи?

Еще раз: объектная надстройка в МЖД существует исключительно для удобства и не соответствует полной концепции ООП. Нет например полиморфизма. Но это и не нужно. Это вспомогательный инструмент автоматизации рутины.
aka msh555
Cubian на Cubietruck, Connect
Михаил_Калуга
Сообщения: 41
Зарегистрирован: Чт дек 03, 2015 4:19 pm
Откуда: Калуга
Благодарил (а): 7 раз
Поблагодарили: 0

Re: Объекты и классы

Сообщение Михаил_Калуга » Пт мар 04, 2016 11:05 am

ErmolenkoM писал(а):
Ничего не понял.
Править ничего не хочу.

Система МЖД работает так:
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues

Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
Установка связи между таблицами базы данных, чтобы можно было нормально работать через панель управления.
Те если у Вас есть зал , спальня, кухня и тд. В них установлены лампы разные. При заполнении таблиц (правильно) - в зал, спальню, кухню и тд подставлять данные из таблицы лампы. В МЖД так и сделано, но связь через панель управления установить нельзя.
Ответить