poo Flashcards

1
Q

¿Qué es la Programación Orientada a Objetos (POO)?”

A

Es un paradigma de programación que organiza el código en objetos, se centra en la creación de código reutilizable y modela entidades del mundo real mediante abstracción.

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

¿Qué caracteriza a un programa orientado a objetos?

A
  • Un programa es un conjunto de objetos enviándose mensajes y reaccionando antes los mismo
  • Es responsabilidad de cada objeto saber cómo responder a esos mensajes
  • Cada objeto podría responder a los mensajes de manera distinta
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué dos condiciones son fundamentales para el enfoque del paradigma?

A
  1. Encapsulamiento: cada componente debe tener el comportamiento esperado, sin que nuestro desarrollo dependa de la manera en que está implementado.
  2. Contrato: debemos conocer qué nos ofrece cada componente y cómo conectarnos con él.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Cuáles son los pilares de POO?

A
  1. Abstracción
  2. Encapsulamiento
  3. Polimorfismo
  4. Delegación
  5. Herencia
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué es un atributo en POO?

A

En POO llamamos atributo o variable de instancia a una variable interna del objeto que sirve para almacenar parte del estado del mismo.

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

¿Qué tipos des atributos puede haber?

A
  • Atributo Público
  • Atributo Privado
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Qué es un atributo Público?

A

Atributo Público: Se puede acceder a él y modificarlo directamente desde fuera de la clase, lo que puede provocar un comportamiento inesperado y dificultar el mantenimiento de la clase.

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

¿Qué es un atributo Privado?

A

Atributo Privado: Solo se puede acceder y modificar el estado interno de la clase a través de métodos. Se permite así controlar cómo se puede acceder y modificar el atributo, y agregar lógica o validación adicional antes de permitir que ocurra el cambio.

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

¿Qué es una propiedad?

A

Una Propiedad es algo propio del objeto que puede no estar en el atributo

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

¿Cómo será la solución a un problema en POO?

A
  1. Debemos encontrar entidades del dominio del problema (objetos)
  2. Debemos hallar cómo interactúan esas entidades para resolver el problema (mensajes)
  3. Debemos determinar cómo hacen esos objetos para responder a los mensajes (comportamiento)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué es un objeto en POO?

A

Es una entidad con identidad, estado y responsabilidades, capaz de enviar y recibir mensajes.

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

¿Qué es la identidad en un objeto?

A

Identidad: es lo que distingue a un objeto de otro

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

¿Qué es el estado en un objeto?

A

Estado: es la situación en que un objeto se encuentra. Se puede cambiar a través del tiempo. Por lo general es privado . Sirve como soporte interno para brindar determinado comportamiento. Si fuese necesario accederemos a él mediante mensajes (comportamiento)

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

¿Qué es la responsabilidad en un objeto?

A

Responsabilidades: la suma del comportamiento más el manejo de su estado interno.

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

¿Qué es un mensaje en POO?

A

Es la interacción entre un objeto que pide un servicio y otro que lo brinda.

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

¿Qué tipos de mensajes existen?

A

Unarios, binarios y keyword.

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

¿Qué tipos de mensajes existen en el contexto de envío de mensajes?

A

Cliente: el objeto que envía el mensaje
Receptor: el objeto que recibe el mensaje

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

¿Qué es el comportamiento?

A

Las posibles respuestas a los mensajes recibidos por un objeto.

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

¿Qué puede provocar el comportamiento?

A
  1. Un cambio de estado en el objeto receptor del mensaje
  2. La devolución del estado de un objeto, en su totalidad o parcialmente
  3. El envío de un mensaje desde el objeto receptor a otro objeto (delegación)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Qué es la delegación?

A

Es cuando un objeto, para responder un mensaje, envía mensajes a otros objetos, “delega ese comportamiento en otros objetos”.

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

¿Qué es un método?”

A

Es la implementación de la respuesta de un objeto a un mensaje.

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

¿Cuáles son los 6 pasos para diseñar una solución?

A
  1. Presentación del problema
  2. Solución rápida
  3. Limitaciones
  4. Buscando Objetos
  5. Modificaciones a la solución
  6. Conclusiones
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué es un contrato en POO?

A

Es un acuerdo entre un cliente y un servidor que establece cómo deben interactuar mediante precondiciones, postcondiciones e invariantes.

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

¿Qué es SUnit en Smalltalk?

A

Es el framework de pruebas unitarias que permite escribir y ejecutar tests de forma estructurada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué es una excepción?"
Es un objeto que se usa para comunicar una situación excepcional desde el entorno que la detecta al ámbito invocante.
26
¿Cuál es la diferencia entre framework y biblioteca?
Una biblioteca está lista para ser usada mediante la invocación de sus servicios, mientras que un framework es un programa que invoca a los comportamientos definidos por el programador.
27
¿Qué significa que una excepción es un objeto?
Significa que tiene comportamiento, identidad y estado; en lenguajes con clases, son instancias de clases especiales.
28
¿Quién lanza una excepción?
El entorno que detecta un problema que no puede resolver.
29
¿A dónde se dirige una excepción lanzada?
Al ámbito que invocó al método que lanzó la excepción. Este ámbito podrá recibir ese objeto y ver de qué manera tratar el problema.
30
¿Cuál es el uso principal de una excepción?
Comunicar un problema entre el ámbito que lo detecta y el que debe tratarlo.
31
¿Cómo se lanza una excepción en Smalltalk?
ValorInvalido new signal.
32
¿Cómo se captura una excepción en Smalltalk?
[bloqueDeCodigo] on: TipoDeExcepcion do: [:e | manejador].
33
¿Para qué sirve heredar excepciones?
Para capturar también excepciones de subclases y manejar jerarquías de errores.
34
¿Qué error se puede cometer con excepciones derivadas?
Capturar primero una clase base y después una derivada, haciendo que esta última nunca se capture.
35
¿Qué ventaja tiene tratar excepciones en lenguajes de tipado estático?
El compilador obliga a capturar excepciones, lo que evita olvidos y errores en tiempo de ejecución.
36
¿Qué ventaja tiene que las excepciones sean objetos?
Se pueden agregar atributos para transmitir más información sobre el error.
37
¿Qué clase se debe elegir como ancestro para una excepción personalizada?
La más cercana en significado al problema que se quiere representar.
38
¿Qué es el manejador?
El manejador es una porción del código que va a decidir qué hacer con la excepción que recibe.
39
¿Qué es un método de clase?
Un método de clase es un método cuyo fin es implementar la respuesta de un mensaje enviado a la clase.
40
¿Qué es un atributo de clase?
Un atributo de clase es un atributo cuyo fin es almacenar estado de la clase.
41
¿Qué es una metaclase?
Una metaclase es una clase cuyas instancias son también clases. Las metaclases mantienen una jerarquía de herencia paralela a la jerarquía de clases del sistema.
42
¿Tienen sentido los objetos como entidades aisladas?
No
43
¿Qué deben hacer los objetos en un programa orientado a objetos?
Interactuar con otros objetos
44
¿Qué hacen los objetos en un programa orientado a objetos?
Envían y reciben mensajes entre sí
45
¿Cómo se llaman los objetos que envían mensajes solicitando un servicio?
Clientes
46
¿Cómo se llaman los objetos que reciben mensajes y brindan servicios?
Receptores o servidores
47
¿Todo mensaje tiene un objeto cliente y uno receptor?
48
¿Un mismo objeto puede ser cliente en un mensaje y servidor en otro?
49
¿Cuándo decimos que hay una dependencia entre objetos?
Cuando un objeto conoce a otro y le puede enviar un mensaje
50
¿Cuál es una forma de generar una dependencia?
Cuando el objeto servidor se envía como argumento
51
¿Cuál es otra forma de generar una dependencia?
Cuando el objeto servidor se obtiene como respuesta al envío de un mensaje
52
¿Cuál es una tercera forma de generar una dependencia?
Cuando el cliente tiene una referencia al servidor
53
¿Qué significa que un objeto depende de otro?
Que debe conocerlo para poder enviarle un mensaje
54
¿Todo objeto cliente depende de su servidor?
55
¿Qué es una asociación entre objetos?
Una dependencia donde el cliente mantiene una referencia al servidor
56
¿Qué es una forma especial de dependencia?
La asociación
57
¿Qué forma de vinculación es la más simple entre objetos?
La asociación
58
¿Cuándo una dependencia se considera asociación?
Cuando el cliente mantiene una referencia al servidor
59
¿Qué opción tenemos si un objeto que necesitamos aún no está implementado?
Implementar el otro método u objeto inmediatamente
60
¿Qué otra opción tenemos si un objeto que necesitamos aún no está implementado?
Crear una versión mínima del método o clase
61
¿Qué tercera opción existe si un objeto aún no está implementado?
Crear un objeto ficticio y seguir trabajando
62
¿Qué permite un objeto ficticio durante el desarrollo?
Diferir la implementación del método o clase auxiliar
63
¿Qué tipo de prueba es cuando se prueba el comportamiento de más de una clase?
Una prueba de integración
64
¿Qué tipo de prueba es cuando se prueba más de una responsabilidad de un objeto?
Una prueba de integración
65
¿Una prueba que involucra más de una clase es una prueba unitaria?
No
66
¿Qué es una clase abstracta?
Una clase que no puede tener instancias en forma directa
67
¿Por qué una clase puede ser abstracta?
Porque sus clases descendientes cubren todos los casos posibles
68
¿Tiene sentido crear instancias de una clase abstracta?
No
69
¿Para qué se utilizan las clases abstractas?
Para generalizar estructura y comportamiento
70
¿Qué finalidad tienen las clases abstractas?
Declarar atributos, propiedades y métodos comunes para las clases descendientes
71
¿Cómo se suelen definir las clases abstractas?
Anteponiéndoles la palabra abstract
72
¿En qué lenguaje una clase es abstracta si tiene algún método abstracto?
Smalltalk
73
¿En Smalltalk hay que declarar explícitamente una clase como abstracta?
No
74
¿Cómo se llama una clase que sí puede tener instancias?
Clase concreta
75
¿Qué es un método abstracto?
Un método sin implementación que las clases descendientes deben entender
76
¿Qué es un método concreto?
Un método que tiene implementación
77
¿Qué se define en un método abstracto?
Solo su firma
78
¿Quién debe implementar un método abstracto?
Las clases descendientes
79
¿Qué rol cumplen los métodos abstractos en lenguajes de comprobación dinámica?
Obligan a las clases descendientes a implementar el comportamiento
80
¿Por qué a veces es necesario definir métodos abstractos en lenguajes de comprobación estática?
Para que funcione el polimorfismo
81
¿Qué es un constructor?
Un método que inicializa un objeto apenas creado
82
¿Qué deben hacer los constructores cuando una clase hereda de otra?
Invocarse en cascada en las clases descendientes
83
¿Qué ocurre si al crear un objeto también se crean en cascada todos los objetos referenciados?
Los objetos referenciados quedan atados al objeto de arranque de la asociación
84
¿Cómo se llama en UML la relación en la que los objetos referenciados quedan atados al objeto que los crea?
Composición
85
¿Qué implica la composición entre dos objetos?
Que están tan acoplados que no se admite su existencia sin el otro
86
¿Qué sucede en una composición al crear un objeto?
También se crea el otro
87
¿Qué sucede en una composición al destruir un objeto?
También se destruye el otro
88
¿Cuándo no se debe usar la creación en cascada de objetos referenciados?
Cuando los objetos referenciados deben tener una existencia independiente
89
¿Qué significa TDD?
Test-Driven Development
90
¿Qué guía la creación de código en TDD?
Las pruebas automatizadas
91
¿Cuándo se puede escribir nuevo código según TDD?
Si y sólo si hay una prueba automatizada fallando
92
¿Qué se debe eliminar según las reglas de TDD?
Todo tipo de código repetido
93
¿Cuál es el primer paso del ciclo de TDD?
Rojo: escribir una pequeña prueba que no funcione
94
¿Cuál es el segundo paso del ciclo de TDD?
Verde: hacer pasar la prueba con el menor código posible
95
¿Cuál es el tercer paso del ciclo de TDD?
Refactor: eliminar código repetido
96
¿Qué busca evitar la refactorización?
La degradación de la calidad del código
97
¿Qué es la entropía del software?
Una degradación de la calidad continua y creciente
98
¿Qué es una refactorización como técnica?
Una técnica para mejorar la calidad del código sin alterar su comportamiento observable
99
¿Qué es una refactorización como cambio?
Un cambio sobre el código que mejora su calidad sin afectar el comportamiento observable
100
¿Qué atributos internos mejora la refactorización?
Legibilidad, comprensión, extensibilidad
101
¿Qué garantiza que una refactorización fue correcta?
Que las pruebas sigan funcionando tras la refactorización
102
¿Qué se debe hacer si no hay pruebas antes de refactorizar?
Escribir pruebas que verifiquen el comportamiento
103
¿Qué se debe hacer después de realizar una refactorización?
Volver a ejecutar las pruebas
104
¿Qué busca preservar una refactorización basada en requerimientos?
Que se sigan cumpliendo los requerimientos de la aplicación
105
¿Qué se debe hacer si hay código repetido en dos métodos de la misma clase?
Extraer el código a un método privado
106
¿Qué se hace si el código repetido está en dos clases hermanas?
Extraerlo a un método en la clase madre
107
¿Qué se hace si el código repetido está en clases sin ancestros comunes?
Crear una clase nueva con el método repetido y acceder por delegación
108
¿Qué incluye el ciclo de TDD después de pasar una prueba?
Una refactorización
109
¿Por qué la refactorización es importante en TDD?
Porque mejora el diseño luego de pasar las pruebas
110
¿Qué exige una refactorización segura?
Pruebas automáticas previas
111
¿Cómo se relacionan TDD y refactorización?
Se realimentan positivamente: TDD necesita refactorización y viceversa
112
¿Qué es una gran refactorización?
Una refactorización de larga duración que involucra a todo el equipo y no puede dividirse
113
¿Qué dificultad tienen las grandes refactorizaciones?
Es difícil estimar el avance y mantener la traza
114
¿Qué se debe garantizar si se interrumpe una gran refactorización?
Que el sistema quede en un estado válido
115
¿Por qué las grandes refactorizaciones requieren desarrolladores experimentados?
Porque es difícil prever todos los cambios intermedios
116
¿Cómo se pueden evitar las grandes refactorizaciones?
Realizando refactorizaciones pequeñas y frecuentes