Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Serviços

Boa tarde. No final do vídeo não entendi muito quando o professor falou que usar serviços ao invés de adicionar o comportamento a classe, viola o conceito de orientação a objetos. Já vi o conceito de usar Services em outras linguagens. O que estaria errado?

Nesse sisteminha aqui que fiz em C# eu tenho minha pasta de modelos que só tem as propriedades, depois tenho minha pasta de repositórios que faz essas consultas com o banco e tenho minha pasta de Services (que deveria ser o intermediário entre o banco e o meu modelo, mas aqui só usei pra adicionar comportamento diferenciados). Qual seria o certo pra fazer nesse caso? sistema: https://github.com/karolinagb/SaleTheaterTickets/tree/main/SaleTheaterTickets/SaleTheaterTickets

4 respostas

Karolina, ter uma classe que somente realiza alguma operação de negócio em cima dos valores de uma única entidade é separar os dados do seu comportamento, sendo que o princípio da orientação a objetos é unir ambos. Se fosse para termos as operações separadas dos atributos, nem precisaríamos ter classes. Poderíamos continuar usando struct como há em C.

Sobre onde colocar cada pedaço de código, sugiro o curso de arquitetura aqui na Alura. E sobre "Services": https://www.youtube.com/watch?v=wvQuLJ7ZUaQ

Entendi. Porém no caso de um repositório como fizemos no curso para um Student, não estamos separando também o que deveria ficar na classe em si? Estou tentando entender o que é código de comportamento e o que é de persistência de banco por exemplo

solução!

Aí é outra coisa, Karolina. Não é uma mera manipulação dos dados. É acesso a um sistema externo, que depende de infraestrutura, etc. O que eu digo que deve permanecer na mesma classe são as computações sobre os dados (calcular a idade a partir da data de nascimento, calcular um valor total baseado no valor de itens, esse tipo de coisa).

Entendi, ok obg