Skip to content

SOLID em Python IoT

Estevam edited this page Jun 2, 2024 · 1 revision

Uso de SOLID com Python para Projeto em 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:

1. Single Responsibility Principle (SRP)

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.

2. Open/Closed Principle (OCP)

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.

3. Liskov Substitution Principle (LSP)

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.

4. Interface Segregation Principle (ISP)

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.
Clone this wiki locally