SOLID Flashcards

1
Q

¿Qué significan las siglas de SOLID?

A
  1. Single Responsibility Principle
  2. Open-Closed Principle
  3. Liskov Substitution Principle
  4. Interface Segregation Principle
  5. Dependency Inversion Principle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

SRP: Single Responsibility Principle
¿Qué es?

A

Este principio establece que una clase debe tener una única responsabilidad, es decir, una única razón para cambiar. Si una clase tiene múltiples responsabilidades, se vuelve más difícil de mantener y extender.

Ejemplo: Supongamos que tenemos una clase llamada Empleado que se encarga tanto de almacenar la información de un empleado como de calcular su salario. Este sería un incumplimiento del SRP. En cambio, podríamos tener una clase Empleado que solo almacena la información del empleado y otra clase CalculadoraSalario que se encargue de calcular el salario.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

OCP: Open-Closed Principle
¿Qué es?

A

Este principio establece que las clases deben estar abiertas para la extensión pero cerradas para la modificación. Es decir, deberíamos poder agregar nuevas funcionalidades sin tener que modificar el código existente.

Ejemplo: Imagina una clase Forma que tiene un método calcularArea(). Si queremos agregar una nueva forma, como un triángulo, deberíamos poder hacerlo sin modificar la clase Forma. Podríamos crear una subclase Triángulo que implemente el método calcularArea() de manera diferente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

LSP: Liskov Substitution Principle
¿Qué es?

A

Este principio establece que las clases derivadas deben poder ser sustituidas por sus clases base sin alterar el comportamiento del programa. Es decir, cualquier instancia de una clase base debería poder ser reemplazada por una instancia de una clase derivada sin afectar la funcionalidad del programa.

Ejemplo: Supongamos que tenemos una clase Cuadrado y una clase Rectángulo, donde Cuadrado es un tipo especial de Rectángulo. Si se espera que un método funcione con cualquier objeto Rectángulo, entonces debería funcionar correctamente con un objeto Cuadrado sin necesidad de modificar el código.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

ISP: Interface Segregation Principle
¿Qué es?

A

Este principio establece que los clientes no deben verse obligados a depender de interfaces que no utilicen. Es decir, las interfaces deben ser lo suficientemente específicas para cada cliente, evitando interfaces genéricas que contengan métodos no relevantes para ciertos clientes.

Ejemplo: Supongamos que tenemos una interfaz Impresora que tiene métodos imprimir(), escanear() y faxear(). Si un cliente solo necesita imprimir, se verá obligado a depender de los métodos escanear() y faxear(), lo cual no es ideal. En cambio, podríamos dividir la interfaz en interfaces más específicas como Impresora, Escáner y Fax.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

DIP: Dependency Inversion Principle
¿Qué es?

A

Este principio establece que los módulos de alto nivel no deben depender de los módulos de bajo nivel, sino de abstracciones. Además, las abstracciones no deben depender de los detalles, sino que los detalles deben depender de las abstracciones.

Ejemplo: Supongamos que tenemos una clase Motor que depende directamente de una clase Coche. Esto hace que Motor esté fuertemente acoplado a Coche. En cambio, podríamos introducir una interfaz Vehículo y hacer que Motor dependa de Vehículo. Luego, Coche implementaría la interfaz Vehículo, cumpliendo así con el principio de inversión de dependencias.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly