Se eu entendi bem, a ideia de usar Orientação a Objetos seria a de unir o dado com o comportamento associado ao dado.
Então a lógica deveria ser no sentido de criar o método filtrar na classe FotoComponent - que possui o dado a ser filtrado. Ou não?
Se eu entendi bem, a ideia de usar Orientação a Objetos seria a de unir o dado com o comportamento associado ao dado.
Então a lógica deveria ser no sentido de criar o método filtrar na classe FotoComponent - que possui o dado a ser filtrado. Ou não?
Em OO saber onde o comportamento entra é a tarefa mais difícil. Se tudo fosse entrar em FotoComponent está classe se tornaria uma god class violando SRP e outras boas práticas.
O filtro opera sobre uma coleção de dados e não sobre uma instância de FotoComponent. No máximo você poderia tentar adicionar o filtro como método estático mais ainda assim fereria o Single Respinsability Principle (SRP), aliás um dos princípios mais importantes de OO.
Sucesso e bom estudo.
Eu só vi até o fim da aula 5 do curso do Angular 2 - pt1. Não sei se a classe FiltroPorTitulo (foto.pipes.ts) evoluiu depois desse ponto.
Mas até aqui, o filtro opera não sobre uma coleção de dados genéricos, mas sobre uma coleção de fotos mesmo. Tanto é que o instrutor (aliás, muito bom por sinal) fez questão de tipar o retorno do método transform() para que retorna-se apenasum array de FotoComponent[].
export class FiltroPorTitulo implements PipeTransform{
transform(fotos: FotoComponent[], digitado: string): FotoComponent[] {
digitado = digitado.toLowerCase();
return fotos.filter(foto => foto.titulo.toLowerCase().includes(digitado));
}
}
Eu confesso que meu estilo de programação ainda é muito voltado a programação estruturada. Apesar de trabalhar com Java. (Alias, God Classes são comigo mesmo). Existe algum curso que possa ajudar a gente a incorporar o paradigma OO ? Porque os conceitos eu conheço (herança, interface, polimorfismo, etc). O problema pra mim é como utilizar esses conceitos fugindo da tradicional programação estruturada.
Valeu!
Tem um curso de SOLID na Alura. Já conferiu?
https://www.alura.com.br/curso-online-orientacao-a-objetos-avancada-e-principios-solid
É em Java, mas os conhecimentos podem ser utilizados com TypeScript, a linguagem utilizada pela Angular
Sucesso e bom estudo!