-
Notifications
You must be signed in to change notification settings - Fork 1
Uso de SOLID com C para Projeto em IoT
Estevam edited this page Jun 2, 2024
·
1 revision
Neste projeto de IoT, aplicamos os princípios SOLID para garantir que nosso código seja modular, extensível e fácil de manter.
Cada classe ou módulo deve ter apenas uma razão para mudar.
- Exemplo: Nossa classe SensorTemperature é responsável apenas pela leitura da temperatura do ambiente e não tem conhecimento sobre outros aspectos do sistema.
As entidades de software devem estar abertas para extensão, mas fechadas para modificação.
- Exemplo: Podemos estender a funcionalidade do nosso sistema adicionando novos sensores ou dispositivos de saída sem modificar o código existente.
Objetos de um programa devem ser substituíveis por instâncias de seus subtipos sem afetar a corretude do programa.
- Exemplo: Podemos substituir um sensor de temperatura por um sensor de umidade sem alterar o comportamento do sistema.
Muitas interfaces específicas são melhores do que uma interface única genérica.
- Exemplo: Dividimos interfaces específicas para sensores (ISensor) e dispositivos de saída (IOutputDevice) em vez de ter uma única interface genérica.
Dependa de abstrações e não de implementações.
- Exemplo: Nossas classes dependem de interfaces (por exemplo, ISensor) em vez de implementações concretas, permitindo a troca fácil de implementações específicas.
class ISensor {
public:
virtual float readData() = 0;
virtual ~ISensor() {}
};
class SensorTemperature : public ISensor {
public:
float readData() override {
// Código para ler temperatura
}
};
class IOutputDevice {
public:
virtual void displayData(float data) = 0;
virtual ~IOutputDevice() {}
};
class DisplayLCD : public IOutputDevice {
public:
void displayData(float data) override {
// Código para exibir dados no LCD
}
};
class DisplayLED : public IOutputDevice {
public:
void displayData(float data) override {
// Código para exibir dados em LEDs
}
};
class DataProcessor {
private:
ISensor* sensor;
IOutputDevice* outputDevice;
public:
DataProcessor(ISensor* sensor, IOutputDevice* outputDevice)
: sensor(sensor), outputDevice(outputDevice) {}
void processData() {
float data = sensor->readData();
outputDevice->displayData(data);
}
};
Neste exemplo, aplicamos SRP dividindo as responsabilidades entre as classes SensorTemperature, DisplayLCD e DisplayLED. Usamos OCP permitindo a extensão de funcionalidades sem modificar o código existente. Seguimos o LSP garantindo que os sensores possam ser substituídos por instâncias de seus subtipos. Aplicamos ISP dividindo as interfaces em ISensor e IOutputDevice. E finalmente, usamos DIP dependendo de abstrações em vez de implementações concretas.
© 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