No sistema, a classe Estoque é responsável pelos métodos registrarEntrada(), registrarSaida() e consultarQuantidade(), pois possui as informações necessárias para controlar a quantidade disponível de cada insumo.
Da mesma forma, a classe Insumo gerencia seus próprios dados por meio dos métodos cadastrar(), consultar() e atualizar(), concentrando as responsabilidades relacionadas aos insumos.
A classe Estoque mantém uma relação direta com diversos objetos da classe Insumo, sendo responsável pelo gerenciamento dos itens armazenados. Dessa forma, ela possui responsabilidade natural pela criação e gerenciamento desses objetos dentro do sistema.
Na arquitetura em camadas adotada, o Controller recebe as solicitações da View, coordena o fluxo da aplicação e encaminha as operações para a camada Service, responsável pela execução das regras de negócio.
A arquitetura em camadas reduz o acoplamento entre os componentes da aplicação, separando claramente as responsabilidades entre View, Controller, Service, Repository e Model, facilitando manutenção e evolução do sistema.
Cada classe possui uma responsabilidade específica.