Conceptos generales Flashcards

1
Q

Que es un patron de diseño?

A

Un patron es una solución a un problema que se repite, o a un problema común.
(Se lo puede pensar como una medicina a un problema de salud).
La idea es no reinventar la rueda y tener un lenguaje común con otros colegas.
En general, un patron consta de 4 elementos:
⁃ Un nombre
⁃ El planteo de un problema
⁃ La solución
⁃ Las consecuencias de aplicar esta solución

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

Que es el polimorfismo?

A

La capacidad de un mismo objeto de comportarse de distintas maneras en base a un mismo estimulo. Por ejemplo, un perro puede comportarse como un doberman o como un cocker en otro momento.

Perro d = new Doberman();
d.ladrar();//ladra como un doberman
d = new Cocker();
d.ladrar();//ladra como un cocker
d = new Beagle();
d.ladrar();//ladra como un beagle

Esto se logra haciendo uso de la herencia y dynamic binding.

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

Que es Dynamic binding?

A

Tiene que ver con cómo se ata una declaración con su tipo. Es Static binding ocurre en tiempo de compilación. En dynamic binding se realiza durante la ejecución del programa.

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

Explicar la diferencia entre Lenguajes fuertemente tipados, levemente tipados y no tipados.

A

En los lenguajes fuertemente tipados; el tipo sí o sí tiene que ser igual a la clase, ej.: C (Java no lo es).
~~~
impresoraHP = new ImpresoraHP()
~~~
En los lenguajes no tipados; el tipo y la clase pueden ser distintos (javascript, php, python, etc).
~~~
Casa c = new Auto();
~~~
Los lenguajes debilmente tipados son cuando el tipo puede ser distinto a la clase, siempre que el tipo este igual o por arriba de la linea de herencia (java).
* El tipo puede ser una clase, clase abstracta o interface.

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

Que es una clase abstracta?

A

Una clase abstracta es una clase que no se puede instanciar.
Cuando una clase tiene un método abstracto, la clase entonces es abstracta.
Un método abstracto es un método del que solo tengo la firma y no el cuerpo. Este tipo de método dicta lo que hay que hacer, el cómo se hace se define en las clases hijas.
En el código utilizamos la keyword “abstract” para definir una clase abstracta:
~~~
public abstract class Perro{}.
~~~
pregunta 1: Se puede tener métodos concretos en una clase abstracta? Si, y estos métodos tb se pueden heredar.
pregunta 2: Las clase hija de una clase abstracta debe implementar todos los métodos abstractos? Sí, siempre que sea una clase concreta, si la misa fuera abstracta podría derivar la implementación a la siguiente subclase concreta.

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

Que es un interface?

A

Son similares a las clases abstractas, sus métodos no definen un cuerpo.
A diferencia de las clases abstractas todos sus métodos son públicos y abstractos, por esto no es necesario poner abstract o public.
En el código, en vez de “class” se utiliza “interface”:
~~~
public interface Perro{}
~~~
Para utilizar la interface se utiliza “implements” en vez de extends.
Se utilizan para agregar comportamiento fuera de la jerarquía, es decir, comportamiento que se “enchufa”. En java el polimorfismo se hace utilizando interfaces.

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

Qué quiere decir “Favorecer la composición de objetos sobre la herencia de clase.” (Design Patterns)?

A

Esta relacionado con el principio 3 del diseño:
“Favorecer la composición por sobre la herencia”
Este principio es porque las composición entre clases da mayor flexibilidad que la herencia.

El principio de diseño 2 “Se debe programar contra una interfaz y no contra una implementación.” porque esto conduce a un código más flexible que puede funcionar con cualquier nueva implementación de la interfaz.
Vale aclarar que la herencia de interfaces es distinto que la herencia de clases. La primera es más flexible y se usa mucho en los patrones.
En general, los patrones convierten una solución simple de herencia de clase a una composición + una herencia de interface.

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

Cuales son los tres tipos de clasificaciones de patrones?

A

Los patrones creacionales
proporcionan mecanismos de creación de objetos que incrementan la flexibilidad y la reutilización de código existente.

Los patrones estructurales
explican cómo ensamblar objetos y clases en estructuras más grandes a la vez que se mantiene la flexibilidad y eficiencia de la estructura.

Los patrones de comportamiento
se encargan de una comunicación efectiva y la asignación de responsabilidades entre objetos.

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