Объекты и классы
Модератор: immortal
-
- Сообщения: 41
- Зарегистрирован: Чт дек 03, 2015 4:19 pm
- Откуда: Калуга
- Благодарил (а): 7 раз
- Поблагодарили: 0
Объекты и классы
Здравствуйте. Уточните использование в системе объектов и классов.
1. Есть класс ROOMS с описанием свойств: температура влажность, освещенность, ТИП КОНТРОЛЛЕРА и тд в нем объекты комнаты: зал спальня гараж и тд. Есть класс Контроллеры в нем свойства IP, вход 1, выход1 итд. В нем объекты 1, 2, 3 и тд. Как указать, что в классе ROOMS я хочу использовать данные из класса Контроллеры?
2. В классе ROOMS свойства лампы_количество, лампы_мощность. В объекте зал у меня установлено 5 ламп 60вт и 10 ламп 75ватт - как указать?
Вопрос по организации самой таблицы объекты. В базовой поставке в таблице идут например классы Sensors все отдельно. Может правильнее организовать класс Датчики у которых например свойства наличие/отсутствие действия. В классе объекты температурный сенсор датчик движения, пожарные датчики, охранные датчики и тд. Это я к тому, что объектно ориентированное программирование (ООП) и разработали, чтобы не писать каждый раз свойства для каждого аналогичного устройства, а наследовать их от свойств класса.
Если заблуждаюсь поправьте.
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: Объекты и классы
Cвойства объекта Rooms придется обновлять в методах объекта Controllers.
По поводу объявления классов:
Верно рассуждаете, это ошибочное представление в базовой поставке дополнительно сбивает новичков, слабо знакомых с ООП. Можете посмотреть у меня в коннекте, хотя еще не использовал объекты Sensors, но переписал объявление на более корректное.
По поводу объявления классов:
Верно рассуждаете, это ошибочное представление в базовой поставке дополнительно сбивает новичков, слабо знакомых с ООП. Можете посмотреть у меня в коннекте, хотя еще не использовал объекты Sensors, но переписал объявление на более корректное.
- За это сообщение автора slgeo поблагодарил:
- Михаил_Калуга (Пт мар 04, 2016 2:38 am)
- Рейтинг: 1.16%
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
CONNECT
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Объекты и классы
1. Ошибка в понимании, что такое класс. У класса НЕТ данных. Данные есть только у экземпляра класса. К своим данным из своего метода объект может обратится через this. Методы описываются один раз в описании класса, в теле метода как раз и используют this для обращения к свойствам того экземпляра класса, который вызвал метод.
2. В реализации МЖД, свойства объектов не могут объектами. Только примитивы.
3. Объект может хранить имя другого объекта, и обращаться к его свойствам.
4. Списки (массивы) можно реализовать так: создаем много свойств: лампа1, лампа2, лампа3,... Далее перебираем все свойства в цикле и выбираем нужные.
По поводу организации своих объектов - тут кто во что горазд, _правильнее_ тут не подходит - все зависит от точки зрения и удобства реализации.
2. В реализации МЖД, свойства объектов не могут объектами. Только примитивы.
3. Объект может хранить имя другого объекта, и обращаться к его свойствам.
4. Списки (массивы) можно реализовать так: создаем много свойств: лампа1, лампа2, лампа3,... Далее перебираем все свойства в цикле и выбираем нужные.
По поводу организации своих объектов - тут кто во что горазд, _правильнее_ тут не подходит - все зависит от точки зрения и удобства реализации.
- За это сообщение автора ErmolenkoM поблагодарил:
- Михаил_Калуга (Пт мар 04, 2016 2:37 am)
- Рейтинг: 1.16%
-
- Сообщения: 41
- Зарегистрирован: Чт дек 03, 2015 4:19 pm
- Откуда: Калуга
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Объекты и классы
Я понимаю, что у класса нет данных. И понимаю, что класс это таблица в базе данных. При заполнении одной таблицы нормально и правильно пользоваться "данными" из другой таблицы. Другое дело как это реализовано в МЖД. Из ответа я понял, что через панель управления это не реализовано. А насколько сложно реализовать?
Лампу взял как пример. Если лампа имеет еще свойства: тип (светодиодная, энергосберегающая, накаливания), цветность, цоколь и тд - то свойств получается очень много и напрашивается, чтобы эти свойства подставлялись из другой таблицы.
Делать можно кто во что горазд, но разработчик говорит, что использует ООП. У меня как у многих новичков возникает первый вопрос с чего начать? Ответ у меня таков - если делать правильно и чтобы это ООП работало первый шаг после установки и запуска системы это продумывание какие будут классы, свойства, объекты. После этого, если необходимо будет внести изменения, то данные изменения будут внесены во все связанные объекты автоматически.
Лампу взял как пример. Если лампа имеет еще свойства: тип (светодиодная, энергосберегающая, накаливания), цветность, цоколь и тд - то свойств получается очень много и напрашивается, чтобы эти свойства подставлялись из другой таблицы.
Делать можно кто во что горазд, но разработчик говорит, что использует ООП. У меня как у многих новичков возникает первый вопрос с чего начать? Ответ у меня таков - если делать правильно и чтобы это ООП работало первый шаг после установки и запуска системы это продумывание какие будут классы, свойства, объекты. После этого, если необходимо будет внести изменения, то данные изменения будут внесены во все связанные объекты автоматически.
-
- Сообщения: 41
- Зарегистрирован: Чт дек 03, 2015 4:19 pm
- Откуда: Калуга
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Объекты и классы
Не понял или вопрос задал неправильно. В каждой комнате установлен контроллер со своим IP. Есть класс комнаты. Есть класс контроллеры. Как связать если я опрашиваю зал, программа понимала бы какой контроллер с каким IP я опрашиваю.slgeo писал(а):Cвойства объекта Rooms придется обновлять в методах объекта Controllers.
-
- Сообщения: 41
- Зарегистрирован: Чт дек 03, 2015 4:19 pm
- Откуда: Калуга
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Объекты и классы
Напрашивается Relays и Relays27 объединить в один классslgeo писал(а): Можете посмотреть у меня в коннекте, хотя еще не использовал объекты Sensors, но переписал объявление на более корректное.
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Объекты и классы
Как программист с 20-ти летним стажем (блииииннннн.....) попробую рассказать где вы не правы.Михаил_Калуга писал(а): Делать можно кто во что горазд, но разработчик говорит, что использует ООП. У меня как у многих новичков возникает первый вопрос с чего начать? Ответ у меня таков - если делать правильно и чтобы это ООП работало первый шаг после установки и запуска системы это продумывание какие будут классы, свойства, объекты. После этого, если необходимо будет внести изменения, то данные изменения будут внесены во все связанные объекты автоматически.
1. Продумывать классы и прочее можно _только_ опираясь на опыт. То есть если бы за плечами были 100 разработанных умных домов, то да - можно сидеть продумывать систему. Судя по вопросам - это первый ваш УД. Поэтому не _продумывайте_, пробуйте. Создайте 2 разных класса, переделайте в 1, опять разбейте на 3. Поверьте: эффективность этого подхода в разы выше.
2.
- ерунда полная. Глюков, ошибок и багов получите немерянное количество. Правильный подход: нужен код - пишем, нужен в другом месте - копируем, нужен в третьем месте - думаем и создаем общую функцию на все три места. То есть обобщение рождается из копирования. Спроектировать сразу правильное наследование и использование родительских общих методов для _развивающейся_ системы, на мой взгляд, невозможно. Другими словами: в теории общий код выглядит привлекательно, на практике - лучше разнести код. Единственное, ко всему надо подходить разумно и не возводить в абсалют.изменения будут внесены во все связанные объекты автоматически
- За это сообщение автора ErmolenkoM поблагодарил:
- Михаил_Калуга (Пт мар 04, 2016 10:17 am)
- Рейтинг: 1.16%
-
- Сообщения: 41
- Зарегистрирован: Чт дек 03, 2015 4:19 pm
- Откуда: Калуга
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Объекты и классы
Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.ErmolenkoM писал(а):
Как программист с 20-ти летним стажем (блииииннннн.....).
(чтобы не искать :
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues)
Спасибо.
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Объекты и классы
Ничего не понял.Михаил_Калуга писал(а): Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
(чтобы не искать :
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues)
Спасибо.
Вы хотите что-то поменять? Главный вопрос зачем? Поверьте, то что сделано - правильно, и менять это не нужно. Просто разберитесь как это работает. Возможностей в существующем механизме объектов достаточно.
Не понимаю, зачем вам имена таблиц - pvalues например. Есть методы gg и sg. Их достаточно. Зачем в какие-то таблицы добавлять записи?
Еще раз: объектная надстройка в МЖД существует исключительно для удобства и не соответствует полной концепции ООП. Нет например полиморфизма. Но это и не нужно. Это вспомогательный инструмент автоматизации рутины.
-
- Сообщения: 41
- Зарегистрирован: Чт дек 03, 2015 4:19 pm
- Откуда: Калуга
- Благодарил (а): 7 раз
- Поблагодарили: 0
Re: Объекты и классы
Править ничего не хочу.ErmolenkoM писал(а):
Ничего не понял.
Система МЖД работает так:
При создании класса добавляется новая запись в таблицу classes
объекта добавляется новая запись в таблицу objects
свойства объекта добавляется новая запись в таблицу properties
числовые значения добавляется новая запись в таблицу pvalues
Помогите пожалуйста добавить - когда в классе добавляем новое свойство была возможность или новое свойство или выбираем класс. Те если новое свойство вид как есть, если выбрать из класса появляется список классов и выбираем из списка.
Установка связи между таблицами базы данных, чтобы можно было нормально работать через панель управления.
Те если у Вас есть зал , спальня, кухня и тд. В них установлены лампы разные. При заполнении таблиц (правильно) - в зал, спальню, кухню и тд подставлять данные из таблицы лампы. В МЖД так и сделано, но связь через панель управления установить нельзя.