11 GUIAS Programación Orientada A Objetos (Cardacci 2020)
11 GUIAS Programación Orientada A Objetos (Cardacci 2020)
OBJETOS
CÓDIGO DE MATERIA 11
Titular: Darío Guillermo Cardacci
2020
UNIVERSIDAD ABIERTA
INTERAMERICANA
1
INDICE
GUÍA DE REVISIÓN CONCEPTUAL ........................................................................................................ 3
GUÍA DE TRABAJOS PRÁCTICOS ........................................................................................................ 18
GUÍA DE ABORDAJE BIBLIOGRÁFICO................................................................................................. 21
2
GUÍA DE REVISIÓN CONCEPTUAL
UNIDAD I
1. Enumere y explique los aspectos más relevantes que hacen que un software de gran
magnitud sea complejo.
3. ¿Cuáles son las dos jerarquías más importantes que consideramos en la orientación a
objetos para sistemas complejos?
4. ¿Con qué podemos enfrentar a la complejidad para obtener partes cada vez más pequeñas
y simplificadas del dominio del problema?
10. ¿Cuántos y cuáles son los modelos básicos que se manejan en el diseño orientado a
objetos?
3
20. Explique el significado de la tipificación.
23. ¿Cómo se denotan las características esenciales de un objeto que lo distinguen de todos
los demás tipos de objetos y proporciona así fronteras conceptuales nítidamente
definidas respecto a la perspectiva del observador?
28. ¿Cómo se denomina a las formas en que un objeto puede actuar y/o reaccionar,
constituyendo estas formas la visión externa completa, estática y dinámica de la
abstracción?
29. ¿Cómo se denomina al conjunto completo de operaciones que puede realizar un cliente
sobre un objeto, junto con las formas de invocación u órdenes que admite?
30. ¿A qué nos referimos cuando decimos que un concepto central de la idea de abstracción
es el de invariancia?
38. ¿Cómo se denomina al elemento de un objeto que captura su vista interna la cual incluye
los mecanismos que consiguen el comportamiento deseado?
39. ¿El concepto de “ocultar los detalles de implementación” lo asociaría a “esconder los
detalles de implementación” o a “evitar el uso inapropiado de los detalles de
implementación”? Justifique.
4
40. ¿Cuáles son los dos aspectos que hacen importante considerar a la modularidad?
45. ¿Cómo denominamos a los lenguajes que hacen una comprobación de tipos estricta?
46. ¿Cómo denominamos a los lenguajes que no hacen una comprobación de tipos estricta?
50. ¿Cómo se denomina la característica que permite a diferentes objetos actuar al mismo
tiempo?
53. ¿La concurrencia es la propiedad que distingue un objeto activo de uno que no lo está?
59. ¿Cuáles son las tres cosas que debe tener un objeto?
5
63. ¿A qué definimos propiedad de un objeto?
66. ¿El comportamiento de un objeto se ve afectado por el estado del mismo o bien que el
comportamiento del objeto es función de su estado?
68. Se puede afirmar que el estado de un objeto termina siendo los resultados acumulados de
su comportamiento.
71. ¿Cuáles son las dos operaciones habituales que se utilizan para crear y destruir instancias
de clases?
77. ¿Cómo denominamos operaciones fuera de las clases en aquellos programas orientados a
objetos que permiten colocarlas (ej. C++)?
80. Dado el protocolo de un objeto (todos sus métodos y subprogramas libres asociados al
objeto si el lenguaje lo permite) es conveniente dividirlo en grupos lógicos más pequeños
de comportamiento?¿Por qué?
81. ¿Cómo denominamos a los grupos lógicos más pequeños de comportamiento del
protocolo total de un objeto?
82. ¿Cuáles son las dos responsabilidades más importantes que posee un objeto?
6
84. ¿Por qué decimos que los objetos se pueden considerar como máquinas?
86. Dadas dos variable X e Y del mismo tipo ¿qué significa que ambas son iguales?
87. Dadas dos variable X e Y del mismo tipo ¿qué significa asignarle Y a X?
88. Dadas dos variable X e Y del mismo tipo ¿qué significa clonar X en Y?
95. ¿Cómo pueden ser los mensajes entre dos objetos en una relación de enlace?
98. ¿Quién inicia el paso de un mensaje entre dos objetos en una relación de enlace?
99. ¿Cuáles son los roles o papeles que puede desempeñar un objeto en una relación de
enlace?
104. ¿Cuáles son las cuatro formas de visibilidad que puede poseer un objeto servidor
respecto de un objeto cliente?
105. En una relación de enlace de dos objetos, cuando uno le pasa un mensaje al otro,
además de adoptar roles ambos deben estar:…………………………………………………………………..
7
106. ¿Cuáles son las posibles formas de sincronización?
107. ¿Qué significa que dados dos objetos A y B estos están secuencialmente sincronizados?
114. ¿En una relación de agregación las “partes” forman parte del estado del “todo”?
120. ¿En cuántas partes la podemos dividir una interfaz en términos de la accesibilidad o
visibilidad que posee?
122. ¿Qué relaciones entre clases se desprenden de las tres relaciones básicas?
123. ¿La asociación denota una dependencia semántica y la dirección de esta asociación?
125. ¿Qué cardinalidad puede existir entre clases relacionadas por asociación?
8
130. ¿Cómo se denomina a la clase que no se espera tener instancias de ella y solo se utilizará
para heredar a otras clases?
131. ¿Cómo se denomina a la clase que se espera tener instancias de ella y puede utilizarse
para heredar a otras clases o no?
132. ¿Cómo se denomina al método de una clase abstracta que no posee implementación y
fue pensado para que sea implementado en las sub clases que lo heredan?
135. ¿Cómo se denomina cuando una clase posee métodos que comparten el nombre y se
diferencias por su firma?
145. ¿Qué métricas hay que observar para determinar la calidad de una abstracción?
9
151. ¿Qué se debe observar al momento de decidir si una abstracción debe implementar un
determinado comportamiento o no?
160. ¿Cuáles son las cuatro formas fundamentales por las cuales un objeto X puede hacerse
visible a un objeto Y?
UNIDAD II
10
172. ¿A qué denominamos sobrecarga?
175. ¿Qué ámbitos pueden tener los campos, métodos y propiedades de las clases?
176. ¿Qué características posee cada ámbito existente si se lo aplico a un campo, un método y
una propiedad de una clase?
180. ¿Qué objeto es el encargado de liberar el espacio ocupado por objetos que ya no se
utilizan?
185. ¿Cómo le indica a un evento que desea cambiar el tipo del argumento que por defeto es
EventArgs?
190. ¿Qué son y para que se pueden utilizar las clases anidadas?
191. ¿Qué ámbitos / modificadores de acceso existen? Explique las característcas de cada uno.
11
195. ¿Qué representa this?
UNIDAD III
12
217. ¿Cómo construiría un objeto del tipo “Exception” personalizado?
218. ¿Qué ocurre si en el bloque de código donde se produce la excepción el error no está
siendo tratado?
221. ¿Cuáles son las dos clases genéricas más importantes definidas en el FrameWork además
de Exception?
222. ¿Qué instrucción se utiliza para poner en práctica el control e interceptar las
excepciones?
223. ¿Dónde se coloca el código protegido contra excepciones si se iniciara una excepción?
224. ¿Qué tipo de excepción se utiliza para interceptar un error de división por cero?
225. ¿Qué tipo de excepción se utiliza para interceptar una DLL que tiene problemas al ser
cargada?
226. ¿Qué colocaría dentro de una clausula “Catch” para especificar una condición adicional
que el bloque “Catch” deberá evaluar como verdadero para que sea seleccionada?
227. ¿Si se desea colocar código de limpieza y liberación de recursos para que se ejecute
cuando una excepción se produzca, dónde lo colocaría?
228. ¿Qué instrucción se utiliza para provocar un error y que el mismo se adapte al
mecanismo de control de excepciones?
229. ¿Escriba el código que permitiría provocar una excepción del tipo “ArgumentException”?
231. ¿Cómo armaría un “Catch” personalizado para que se ejecute cuando se de la excepción
“ClienteNoExisteException”?
232. ¿Dónde se encuentran las instancias de los objetos administrados por el GC?
233. ¿Cuáles son los dos métodos más notorios que deben implementar las clases para
trabajar correctamente con la recolección de elementos no utilizados y matar las
instancias administradas y no administradas?
13
236. ¿Qué método se utiliza para que el GC recolecte los elementos no utilizados?
237. ¿Qué método se utiliza para suspender el subproceso actual hasta que el subproceso que
se está procesando en la cola de finalizadores vacíe dicha cola?
238. ¿Qué método se ejecuta en los objetos cuando se ejecuta el método collect del GC?
239. ¿Qué método debería exponer una clase bien diseñada teniendo en consideración que
no posee destructor?
248. ¿Cómo se puede recuperar el número de bytes que se considera que están asignados en
la actualidad?
249. ¿Qué utiliza para convertir un objeto en “no” válido para la recolección de elementos no
utilizados desde el principio de la rutina actual hasta el momento en que se llamó a este
método?
250. ¿Cómo se solicita que el sistema no llame al finalizador del objeto especificado?
251. ¿Cómo se solicita que el sistema llame al finalizador del objeto especificado, para el que
previamente se ha llamado a “SuppressFinalize”?
UNIDAD IV
14
1. ¿Para qué se utilizan las interfaces?
UNIDAD V
22. ¿Cués es la diferencia entre heredar de una clase genérica abierta y una clase genérica
cerrada?
15
23. ¿Por qué es importante colocar restricciones en los parámetros de tipo?
24. ¿Cuáles son los tipos de restricciones que se le pueden colocar a un parámetro de tipo?
30. Mencione al menos tres clausulas (las más importantes) que se usan en una expresión de
consulta LinQ.
32. Dado que una expreseión de consulta genera un Ienumerable, enumere y explique los
métodos de extensión que posee Ienumerable. (p.e Count)
34. ¿Qué utilizaría para lograr una unión entre dos origenes de datos en una expresión LinQ?
37. Ejemplifique cómo se puede utilizar una expresión lambda para realizar una consulta.
39. ¿Indique como puede declarar un delegado utilizndo Func y que significa cada elemento
utilizado?
40. Crear un delegado utilizando Func que posea tres parámetros de entrada y uno de salida.
Los parámetros de entrada son: el primero int, el segundo double y el tercero bool. El
parámetro de retorno es de tipo bool.
UNIDAD VI
16
42. ¿Qué significa pasar información batch?
17
GUÍA DE TRABAJOS PRÁCTICOS
UNIDAD I
1. Desarrollar una jerarquía de clases relacionadas por herencia y agregación que represente
la estructura necesaria para identificar claramente los elementos encontrados en un
sistema de calificaciones de una universidad. En cada clase detallar métodos y
propiedades.
2. Defina una situación donde se desee llegar desde un estado inicia a uno final, por ejemplo,
una cuenta bancaria que posee un saldo inicial y se la somete a una operación bancaria.
Desarrollar la clase cuenta con las propiedades y métodos que considere pertinentes y
demuestre como cambia el estado del objeto en la medida que se le realizan depósitos,
extracciones y transferencias.
UNIDAD II
1. Desarrollar un programa que posea una estructura de clases donde se puedan observar
dos métodos y el constructor sobrecargados.
2. Desarrollar un programa que posea una estructura de clases donde se pueda observar una
propiedad de solo lectura, una propiedad de solo escritura, una propiedad de escritura-
lectura, una propiedad de predeterminada y una propiedad con argumentos.
3. Desarrollar un programa que posea una clase que aplique un destructor que finalice el
ciclo de vida de un onjeto que se instranció en el constructor.
4. Desarrollar un programa que posea una clase que tenga propiedades, métodos y sucesos.
Los sucesos deben tener suscripciones manuales realizadas por el programador a
funciones de la clase donde se en cuentra instanciado el objeto que posee los sucesos.
5. Desarrollar un programa que posea una clase que contenga al menos dos campos, tres
métodos, un constructor y dos sucesos estáticos. Comente que característica le otorga
esta característica a cada miembro.
18
finalizadores. Demuestre en el mismo programa el uso de this. Establezca las diferencias y
en qué caso se justifica utilizar cada uno.
7. Desarrollar un programa que posea al menos una clase abstracta, un método virtual, una
clase sellada y una clase anidada.
UNIDAD III
8. Desarrollar un programa que genera varias instancias (una cantidad importante), verifique
la memoria utilizada, pase el GC y vuelva a verificar el espacio de memoria. ¿Qué se
observa?
11. Desarrollar un programa que aplique el concepto de manejo de errores. Generar un error
personalizado por medio de una clase que herede de Exception y disparar el error con
Throw.
UNIDAD IV
14. Desarrollar un programa que implemente la interfaz ICloneable. Clone el objeto que posee
la interfaz y demuestre que la clonación funcionó.
UNIDAD V
19
UNIDAD VI
4. Desarrollar un programa que utilizando socket permita escribir en una aplicación que se
esté ejecutando en una PC de la red y lo escrito se pueda visualizar en la aplicación que
está corriendo en otra PC de la red.
5. Desarrollar un programa que utilizando socket que emule un servidor de chat. También
desarrollar el software cliente que se ejecutará en las Pc’s que se conecten al servidor.
Cada mensaje enviado por un cliente lo podrán recibir todos los demás. En el caso que un
cliente solicite comunicación privada el mensaje se verá solo por los que participan de esta
comunicación. Un cliente puede solicitar armar un grupo y el resto unirse a él, para que
esto suceda el propietario del grupo deberá aceptarlos y tiene la potestad de
desconectarlos. El servidor es quien modera todo y por allí pasan todos los mensajes.
6. Desarrollar un programa que haciendo uso del puerto paralelo y un emulador que permita
enviar señales al mismo y recolectar las entradas que se producen en él.
20
GUÍA DE ABORDAJE BIBLIOGRÁFICO
UNIDAD I
Deitel Harvey M. Y Paul J. Deitel. Cómo programar en C#. Segunda edición. Pearson.
México 2007. Capítulos 9 al 11
UNIDAD II
Deitel Harvey M. Y Paul J. Deitel. Cómo programar en C#. Segunda edición. Pearson.
México 2007. Capítulos 9 al 11
UNIDAD III
https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/exception-
handling-statements
Balena, Francesco. Programación avanzada con Visual Basic 2005. -- México, DF:
McGraw-Hill Interamericana, c2008. Capítulo 1.
Deitel Harvey M. Y Paul J. Deitel. Cómo programar en C#. Segunda edición. Pearson.
México 2007. Capítulos 12.
UNIDAD IV
https://docs.microsoft.com/es-es/dotnet/csharp/tour-of-csharp/interfaces
https://docs.microsoft.com/es-es/dotnet/csharp/tour-of-csharp/delegates
UNIDAD V
Deitel Harvey M. Y Paul J. Deitel. Cómo programar en C#. Segunda edición. Pearson.
México 2007. Capítulos 25
21
https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/concepts/linq/
https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/generics/
https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/concepts/linq/linq-and-
generic-types
https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/statements-expressions-
operators/lambda-expressions
UNIDAD VI
Deitel Harvey M. Y Paul J. Deitel. Cómo programar en C#. Segunda edición. Pearson.
México 2007. Capítulos 23
22