-
Notifications
You must be signed in to change notification settings - Fork 1
SOLID em Python IoT
Neste projeto de IoT, buscamos aplicar os princípios SOLID da programação orientada a objetos para garantir que nosso código seja mais modular, flexível e de fácil manutenção. Aqui estão algumas das maneiras pelas quais implementamos esses princípios:
O Princípio da Responsabilidade Única afirma que uma classe deve ter apenas uma razão para mudar. Para isso, dividimos nosso código em classes e módulos distintos, cada um responsável por uma única tarefa ou funcionalidade. Por exemplo:
- Temos uma classe dedicada à leitura de dados dos sensores.
- Outra classe é responsável por processar esses dados e tomar decisões com base neles.
- Uma terceira classe cuida da comunicação com o broker MQTT.
O Princípio Aberto/Fechado enfatiza que uma classe deve ser aberta para extensão, mas fechada para modificação. Em nosso projeto, buscamos alcançar isso através do uso de interfaces e classes abstratas, permitindo que novas funcionalidades sejam adicionadas sem modificar o código existente. Por exemplo:
- Definimos uma interface genérica para leitores de sensores, permitindo a fácil adição de novos tipos de sensores sem alterar o código principal.
- Usamos classes abstratas para representar dispositivos, como relés ou atuadores, facilitando a integração de novos dispositivos.
O Princípio da Substituição de Liskov declara que os objetos de uma classe filha devem ser capazes de substituir os objetos de sua classe pai sem quebrar o programa. Em nosso projeto, garantimos que todas as subclasses sigam o contrato definido pelas superclasses, permitindo que sejam substituídas sem problemas. Por exemplo:
- Todas as classes de sensores implementam uma interface comum para leitura de dados, garantindo que possam ser usadas de maneira intercambiável no código principal.
- As classes de dispositivos (relés, atuadores, etc.) seguem um conjunto padrão de métodos, facilitando sua substituição ou extensão.
O Princípio da Segregação de Interfaces afirma que uma classe não deve ser forçada a depender de interfaces que não utiliza. Em nosso projeto, buscamos criar interfaces coesas e específicas para cada cliente, evitando interfaces monolíticas que exigem a implementação de métodos desnecessários. Por exemplo:
- Cada tipo de sensor tem sua própria interface para leitura de dados, com métodos relevantes apenas para aquele tipo específico de sensor.
- As interfaces de comunicação com o broker MQTT são segregadas por funcionalidade, permitindo que diferentes partes do sistema usem apenas os métodos necessários.
© 2024 - Cafeteira IoT com MQTT & Alexa. Todos os direitos reservados.
Desenvolvido por Aplic-de-cloud-iot-industria-4-0-python.
- Home
- Arquitetura do Sistema
- Changelog
- Configuração
- Configurações do projeto e do sistem
- Conhecimentos Necessários para o Projeto
- Contribuição
- Cronograma do Projeto Cafeteira IoT
- Custo total do projeto
- Depuração
- Descrição
- Developer Guide
- Está perdido? E não sabe por onde começa
- FAQs
- Fluxo de Dados
- Getting Started
- Git
- Instalação
- Integração com MQTT
- Interface com o Usuário
- Lista de possíveis projeto IoT
- Maintenance: Manutenção e Atualizaçõ
- Manutenção e Atualizações
- Padrões de Projeto para o Desenvolvim
- Plataformas para o projeto IoT
- Problemas e Soluções
- Requisitos
- Resources
- Roadmap para C com IoT
- Roadmap para Python com IoT
- SOLID em Python IoT
- Tecnologias Utilizadas
- Testing: Testes e Validação
- Tipos de Protocolos IoT
- Troubleshooting
- Uso
- Uso da cafeteira IoT
- Uso de SOLID com C para Projeto em IoT
- Utilizando a plataforma Sinric Pro
- Visão Geral do Projeto
- Wireshark