0% encontró este documento útil (0 votos)
136 vistas21 páginas

Conceptos Clave de Programación OO

1. El documento presenta las respuestas de Luis Fernando Mora Aroca a un examen de programación orientada a objetos. 2. El examen contiene preguntas sobre conceptos básicos de POO como objetos, mensajes, encapsulamiento e información oculta. 3. También incluye preguntas sobre tipos, polimorfismo, herencia, agregación y la utilidad de los objetos en la modelización.

Cargado por

Luis Mora Aroca
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
136 vistas21 páginas

Conceptos Clave de Programación OO

1. El documento presenta las respuestas de Luis Fernando Mora Aroca a un examen de programación orientada a objetos. 2. El examen contiene preguntas sobre conceptos básicos de POO como objetos, mensajes, encapsulamiento e información oculta. 3. También incluye preguntas sobre tipos, polimorfismo, herencia, agregación y la utilidad de los objetos en la modelización.

Cargado por

Luis Mora Aroca
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TRABAJO

PROGRAMACION #3
Luis Fernando Mora Aroca

Docente: Oscar Mauricio Melgarejo

UDI-2020
TEST # 1
1. ¿Cuáles son los conceptos básicos del paradigma ?
La programación orientada a objetos se basa en dos conceptos básicos:

• Hay objetos

• Solamente se comunican enviándose mensajes

El paradigma de programación lógica considera el cálculo como un


razonamiento automatizado sobre un cuerpo de conocimiento. Los hechos sobre el dominio
del problema se expresan como fórmulas lógicas y los programas se ejecutan aplicando reglas
de inferencia sobre ellos hasta que se encuentra una respuesta al problema o el conjunto de
fórmulas se demuestra que es inconsistente.

2. ¿Qué es el encapsulamiento y el ocultamiento de la


información?
Se dice que un objeto encapsula datos y funcionalidad y que, además, oculta su información, dado
que solamente expone lo que quiere hacer público a otros objetos. El paradigma no explica nada
acerca de su implementación, de cómo son los objetos ni de qué forma se envían los mensajes.

La ocultación de datos permite separar el aspecto de un componente, definido por su interfaz con
el exterior, de sus detalles internos de implementación.

3. ¿Que beneficios trae el encapsulamiento y el ocultamiento de la


información?
Los beneficios del encapsulamiento van por la facilidad para manejar la complejidad ya que
permite separar la interfaz de una clase de su implementación, o dicho en otras palabras: no es
necesario conocer los detalles de cómo están implementadas las propiedades para poder
utilizarlas. Los objetos funcionan a modo de caja negra, en la que están empaquetados los datos y
las instrucciones para su manipulación, de las que conocemos solo lo necesario para utilizarla.

4. ¿Para qué sirven los tipos?


Un tipo es un concepto que define un conjunto de objetos que comparten ciertas
características (responden a un mismo conjunto de mensajes) que tienen sentido en un
determinado contexto.

5. ¿qué es Polimorfismo?
El polimorfismo es la característica por la cual distintos objetos

pueden ser intercambiados entre sí, dado que responde a un cierto

conjunto interesante de mensajes. Un objeto es polimórfico con

otro objeto cuando ambos responden a un mismo mensaje (de formas


distintas).

6. ¿Defina herencia?
En la programación orientada a objetos se considera que una clase hereda de otra cuando la
primera es un tipo de la segunda. Una clase es un artefacto de implementación de tipo que
permiten los lenguajes.

7. ¿Diferencias entre el tipado y la clasificación?


Se trata de archivos pequeños que se almacenan en la máquina del usuario cliente y el
servidor web y guarda la información recopilada con respecto a los usuarios

8. ¿Para qué se utiliza la agregación?

La agregación se utiliza para modelar una relación composicional entre elementos de


modelo. Existen muchos ejemplos de relaciones composicionales: una Biblioteca contiene
Libros, en los Departamentos de una empresa hay Empleados, un Sistema está compuesto
por una serie de Dispositivos.

9. ¿Qué condición debe cumplir un modelo para hacer una buena


representación?
• Un modelo puede ser sustituto de un sistema físico concreto
• Debe representar el conocimiento que se tiene de un sistema de modo que
facilite su interpretación, formalizando los factores relevantes para los
objetivos del modelado.
• Un modelo debe de ser tan sencillo como sea posible siempre y cuando
represente
10. ¿Por qué es necesario utilizar objetos?
El paradigma de objetos es un filtro que se encuentra entre el
problema y el modelo, que polariza el entendimiento de la
situación
acomodándolo a sus conceptos. Afortunadamente, el
paradigma de la
orientación a objetos permite que la interpretación entre la
realidad, la
problemática y el modelo sea muy fácil.
Test # 2
1. ¿Qué es una máquina virtual?
Una máquina virtual es un software que crea una capa independiente donde se
emula el funcionamiento de un ordenador real con todos los componentes de
hardware que necesita para funcionar (disco duro, memoria RAM, tarjetas de red,
tarjeta gráfica, etc.) y que puede ejecutar cualquier sistema operativo o programa,
tal y como lo haría un ordenador real.

2. Por qué triunfo Java frente a otras tecnologías


Java ha sido probado, ajustado, ampliado y probado por toda una comunidad de
desarrolladores, arquitectos de aplicaciones y entusiastas de Java. Java está
diseñado para permitir el desarrollo de aplicaciones portátiles de elevado
rendimiento para el más amplio rango de plataformas informáticas posible. Java es
la base para prácticamente todos los tipos de aplicaciones de red, además del
estándar global para desarrollar y distribuir aplicaciones móviles y embebidas,
juegos, contenido basado en web y software de empresa.

3. Cuál es la diferencia entre el JRD y SDK


JDK es el SDK para Java.

SDK significa "Software Development Kit", una


herramienta para desarrolladores que permite escribir el
código con más facilidad, eficacia y eficiencia. Los SDK
vienen para varios idiomas. Proporcionan muchas API
(interfaces de programación de aplicaciones) que facilitan
el trabajo del programador.
El JDK (Java Development Kit) es un SDK (Software Dev Kit).

Se utiliza para crear software/aplicaciones en Java y, por supuesto, incluye el JRE (Java
Runtime Edition) para ejecutar ese software.

Por cierto, Java EE (Enterprise Edition) contiene bibliotecas de


paquetes de clases "con métodos (funciones)" para crear
aplicaciones para el entorno WEB y Java ME (Micro Edition) para
dispositivos móviles. Si estás interesado en él (Java ME), te
recomendaría echar un vistazo al Android DevKit y la API de Google.

4. ¿Qué es y para qué sirve eclipse?


Eclipse es una plataforma de software compuesto por un conjunto de herramientas de
programación de código abierto multiplataforma para desarrollar lo que el proyecto
llama "Aplicaciones de Cliente Enriquecido", opuesto a las aplicaciones "Cliente-liviano"
basadas en navegadores.

¿Para que sirve eclipse?


Esta plataforma, típicamente ha sido usada para
desarrollar entornos de desarrollo integrados (del inglés IDE), como el IDE de Java
llamado Java Development Toolkit (JDT) y el compilador (ECJ) que se entrega como
parte de Eclipse (y que son usados también para desarrollar el mismo Eclipse).

5. ¿Que es TDD?
Desarrollo guiado por pruebas de software, o Test-driven
development (TDD) es una práctica de ingeniería de
software que involucra otras dos prácticas: Escribir las
pruebas primero (Test First Development) y
Refactorización (Refactoring).

6. ¿Cuál es el principal beneficio de desarrollar utilizando TDD?

• Permite un desarrollo más rápido y Seguro

Muchas veces al añadir una nueva característica puede que rompamos las previas.
Pero ¿si no se prueba cómo se puede saber que esto no es así? Posiblemente el
fallo pase a producción y será necesario corregirlo más tarde.

Además, es importante recordar la mayor parte del tiempo es para el


mantenimiento y evolución del código. Por lo que es clave optimizar el tiempo
gastado en esta fase.

7. ¿Que se utiliza JUnit ?


jUnit es un frameword java que permite la realización de la ejecución de clases de
manera controlada, para poder comprobar que los
métodos realizan su cometido de forma correcta.
Supongamos que nos encontramos en un grupo de
desarrollo en el que hay varios programadores, y cada uno
trabaja en un módulo/componente de la aplicación de manera independiente, pero
a su vez todos los módulos están interrelaciados.

8. ¿Cómo se define un test en JUnit?


9. ¿De qué manera se define un test JUnit ?

10. ¿En qué clase están definidas las aserciones?


En programación, una aserción es un predicado (i.e., una sentencia verdadero-falso) incluido en un
programa como indicación de que el programador piensa que dicho predicado siempre se cumple
en ese punto del flujo de programa. as aserciones suelen ser útiles para especificar programas y
para razonar la corrección de estos.

Por ejemplo, el siguiente código contiene dos aserciones:

x := 5;
{x > 0}
x := x + 1
{x > 1}
Aserciones Tipo EIFFEL en Java

Precondiciones

Una precondición en JavaA tiene la forma

f ( ... )

require {<cláusulas lógicas>}

{ ...

y se ubica entre el encabezado y el cuerpo de un método.

Las cláusulas lógicas deben evaluar verdadero (true) para

que se ejecute el cuerpo del método.


Test #3
1 ¿Para qué se usa final?
Es un modificador que puede aplicar a clases, métodos variables y argumentos, y puede tener un
significado distinto en cada caso. En las clases significa que se puede extender heredando. En caso
de los métodos, que las subclases de la clase que lo contiene no pueden redefinirlo. En las
variables (tanto las de instancia como las de clase, así como en las definidas en el cuerpo de los
métodos) significa que se puede asignar valor sólo una vez.

2 ¿Qué diferencias hay entre el while y el do while?


Básicamente en uno primero se ejecuta la comprobación, mientras que el otro se ejecuta el código
dentro de él y después la comprobación.

Usando la estructura while sólo se pasa a ejecutar su contenido si se comprueba una condición lo
que puede ocurrir 0, 1 o más veces. Do While funciona de forma similar, solo que se asegura de
que el contenido sea ejecutado al menos una vez, es decir que aunque su condición no se cumpla,
su contenido se ejecuta.

3 ¿Para qué sirve la estructura if/else/else if?


La estructura de control if ... permite que un programa ejecute unas instrucciones cuando se
cumplan una condición. En inglés "if" significa "si" (condición). especifica una bifurcación en la
ejecución del código guiada por una condición. Si la condición en verdadera (true) entonces se
ejecuta el cuerpo del if, si no se lo saltea.
4 ¿Qué son las expresiones?
Una expresión es una combinación de variables, operadores y envíos de mensajes que
evalúan un valor. El tipo del valor dependerá de los tipos de los elementos involucrados.
Ejemplo:

5 ¿Qué es una sentencia?


Las sentencias son la unidad completa de ejecución. En general finalizan con un punto y
coma (;) que las separa, salvo en el caso de los ciclos y las estructuras. Ejemplos:

6 ¿Un bloque es una sentencia?


SI. un bloque es una secuencia de sentencias encerradas entre llaves ({ y }) puede ser
usado en cualquier lugar donde va una sentencia (ya que un bloque es un sentencia). Los
bloques en general se utilizan como el cuerpo de las estructuras (como los ciclos) aunque
también se los puede utilizar solos, ya que definen un alcance léxico para los nombres.

7 ¿En qué difiere un import static de uno normal?


La diferencia del import static pertenece a la clase en sí y un método no estático (también
conocido como instancia) pertenece a cada objeto que se genera a partir de esa clase. Si
su método hace algo que no depende de las características individuales de su clase, hágalo
estático (hará que la huella del programa sea más pequeña). De lo contrario, debería ser
no estático.

8 ¿De qué forma se relacionan el for normal y el for each?


El ciclo for-each es una herramienta muy útil cuando tenemos que realizar
recorridos completos de colecciones en la mayoría de los lenguajes, es que un
for itera sobre cosas que no tienen porqué existir, y nos garantiza el orden de
acceso; por su parte, un for-each itera sobre cosas que, obligatoriamente, han de existir.
Además, no nos garantiza el orden en el que se accede.
9 ¿Cuáles son las palabras claves relacionadas con el manejo de
excepciones?
El control de excepciones usa las palabras clave try, catch y finally para intentar realizar
acciones que pueden no completarse correctamente, para controlar errores cuando
decide que es razonable hacerlo y para limpiar recursos más adelante

10 ¿Con que tipo de dato se pueden utilizar los operadores lógicos?


Java permite operar sobre los tipos numéricos primitivos, usando los conocidos
operadores matemáticos.

• Números enteros (byte, short, int, long).


• Números reales (float, double).
• Carácter (char).
• Booleano o lógico (boolean).

Operadores aritméticos
• +, -, /, *: suma, resta, división, multiplicación.
• %: módulo.
• -: negación de un número.
Test #4
1 ¿De cuántas clases se puede heredar?
Cuando heredamos de una clase, nuestros objetos entienden todos los mensajes
declarados en ella y en toda la ascendencia de clases. Una clase sólo puede heredar de
una clase base y de ninguna otra. Una clase puede heredar las características de varias
clases base, es decir, puede tener varios padres.

2 ¿Cuántas interfaces puede implementar una clase?


Una clase puede implementar varias interfaces, pero sólo puede tener una clase
ascendiente directa. Una clase abstracta pertenece a una jerarquía de clases mientras que
una interfaz no pertenece a una jerarquía de clases. En consecuencia, clases sin relación
de herencia pueden implementar la misma interfaz.

3 ¿Qué es un atributo?
Los colaboradores internos, también conocidos como variables de instancia o atributos, se
definen en el cuerpo de la clase. un atributo es una especificación que define una
propiedad de un objeto Su definición es similar a la de cualquier variable, con la
particularidad que se le puede agregar los modificadores de visibilidad.

4 ¿Qué son los getters y los setters?


Los Setters y Getters son métodos de acceso lo que indica que son siempre declarados
públicos, y nos sirven para dos cosas Del Inglés Get, que significa obtener, pues nos sirve
para obtener (recuperar o acceder) el valor ya asignado a un atributo y utilizarlo para
cierto método.

5 ¿Qué es this?
El uso de la palabra this se utiliza para hacer referencia al objeto "actual". Si estás
diseñando una clase, this hace referencia a la propia clase.

6 ¿Qué es super?
El método super() es un uso especial de la palabra clave super donde se llama un
constructor principal sin parámetros. En general, la palabra clave super se puede utilizar
para llamar a métodos anulados, acceder a propiedades ocultas o invocar al constructor
de una superclase. Para estas últimas preguntas se realiza un ejemplo
7 ¿Cómo funcionan los argumentos variables?
Con argumentos variables se quiere indicar que podemos tener
una función que no sabemos cuál es la cantidad de argumentos
que va a tener, es decir, puede que no reciba ningún argumento
o puede que reciba muchos.

8 ¿Cuáles son las características de los


constructores?
• Los constructores también se pueden sobrecargar, como cualquier método,
variando la cantidad de parámetros que reciben.
• El nombre del constructor debe ser el mismo que el de su clase
• No debe tener ningún tipo de retorno ni siquiera void
• Una clase puede tener distintos tipos de constructores o ninguno, el compilador
asigna uno automáticamente a esa clase
• Un constructor predeterminado es aquel que no tiene ningún tipo de parámetro o
posee una lista de parámetros donde todos ellos son predeterminados

9 Enumere algunas diferencias entre el alcance estático y el alcance


de instancia.
1. Una const es una promesa de que no intentará modificar el valor una vez
establecido.
2. Una variable static significa que la vida útil del objeto es la ejecución completa del
programa y su valor se inicializa solo una vez antes de que se inicie el programa.
3. Todas las estadísticas están inicializadas si no les establece un valor explícitamente.
La forma y el momento de la inicialización estática es sin especificar.
4. Tiene la misma semántica en su mayoría, excepto como se indica en la respuesta
corta. Además, no hay ningún parámetro que califique statics.

10 ¿Existe un this cuando estamos en el alcance estático?


Los métodos y atributos que definimos como estáticos pueden parecer que pertenecen a
la clase, ya que no pertenecen a las instancias, y los accedemos mediante el nombre de la
clase. Recordemos que el uso de this es opcional salvo cuando tenemos que desambiguar
algún nombre.
Test #5
1 ¿Qué es una clase abstracta?
Las clases abstractas son aquellas que por sí mismas no se pueden identificar con algo
'concreto' (no existen como tal en el mundo real), pero sí poseen determinadas
características que son comunes en otras clases que pueden ser creadas a partir de ellas.

2 ¿En qué se diferencia una clase estática de una interna?


Las clases anidadas se dividen en dos categorías: estáticas y no estáticas. Las clases
anidadas que se declaran estáticas simplemente se llaman clases anidadas estáticas. Las
clases anidadas no estáticas se denominan clases internas.
Se accede a las clases anidadas estáticas usando el nombre de la clase adjunta:
[Link]
Por ejemplo, para crear un objeto para la clase anidada estática, use esta sintaxis:

[Link] nestedObject = new [Link]();

3 ¿Para qué se utilizaría una clase anónima?


Las clases locales son clases internas que definen los métodos de instancia de la clase
contenedora. son locales, que no tienen nombre y sólo existen para especificar el
comportamiento de la única instancia que tienen.
Clases anónimas en java se usan mucho por ejemplo en escuchadores, callbacks o
eventos. La ventaja de una clase anónima es que puede acceder variables locales en su
alcance.

4 ¿Debemos evitar los ifs? ¿Cuándo tiene sentido usarlos?


Pues creo que va a depender de quien programe. si se genera un método de cientos de
lineas de código con multiples IF, hay un problema. lo importante es analizar si existe
algún patron de diseño que me ayude a programar de manera más modular.

Si nos apegamos a los principios de programación orientada a objetos, las líneas de código
que incluyen IF para verificar un valor de una propiedad de un objeto "rompen" el
principio de encapsulación. En cuanto a Rendimiento, los compiladores ven los If / Else
como un salto a otro bloque de código. esta operación es muy estándar y bien optimizada
para que se cumpla de manera fácil para cualquier procesador, así que en este ámbito es
un rotundo NO.
5 ¿Tiene sentido marcar una clase como abstract y final al mismo
tiempo?
Una clase que declara la existencia de métodos, pero no la implementación de dichos
métodos, se considera una clase abstracta.
Una clase abstracta puede contener métodos no abstractos, pero al menos uno de los
métodos debe ser abstracto.
Para declarar una clase o método como abstractos, se utiliza la palabra reservada abstract.
Una clase abstracta no se puede instanciar (es decir no se pueden volver en objetos) pero
si se puede heredar y las clases hijas serán las encargadas de agregar la funcionalidad a los
métodos abstractos.

6 enumere algunas ventajas de usar static factory methods.


1. Es más fácil de utilizar y sobre todo más cómodo de leer para el cliente.
2. Es que no están obligados a retornar una nueva instancia cada vez que se los
invoca

7 ¿Cuál es el problema de que un objeto tenga muchos atributos?


Por tanto, una definición de objeto se puede ampliar mediante la imposición de tipos de datos: un
formato de representación, un valor por defecto, y las operaciones legales (normas) y restricciones
("¡División por cero no está permitida!") Son todos los que podrían participar en la definición un
atributo, o por el contrario, se puede decir que son atributos de ese tipo de objeto. Un archivo
JPEG no es decodificado por las mismas operaciones (por muy similares que sean, estos son todos
formatos de datos de gráficos) como un archivo BMP o PNG, ni es un número de coma flotante
operado por las normas aplicadas a los enteros largos.

8 Si un cambio en una clase repercute en muchas otras, ¿qué está


pasando?
Cuando se una clase, declaras su forma y exactas. Para ello, especificarás las variables de
instancia que contiene y los métodos que operan en ellas. Aunque las clases muy simples
pueden contener solo métodos o solo variables de instancia, la mayoría de las clases del
mundo real contienen No olvides que poner información no relacionada en la misma clase
desestructurará rápidamente tu código puede dar errores al instante.

9 ¿A qué nos referimos cuando hablamos de alta cohesión y bajo


acoplamiento?
Alta Cohesión
La cohesión en términos de software se refiere a la medida de que tanto un módulo de un
sistema tiene una sola responsabilidad por ende un módulo con esta cuestión será aquel
que guarde una alta relación entre sus funcionalidades manteniendo el enfoque su único
propósito qué
Bajo Acoplamiento
Se refiere a la relación que guardan entre los muros del sistema y la dependencia entre
ellos el bajo acoplamiento entre un sistema indica que los módulos no conocen o conoce
muy poco del funcionamiento de otros módulos evitando la fuerte dependencia entre
ellos .

10 ¿Qué dice el principio Abierto/Cerrado?


Descripción del principio abierto-cerrado

Esto significa que el comportamiento de un módulo puede ser extendido. ... Extender el
comportamiento de un módulo no debería tener como resultado cambiar el código
original del módulo, es decir, el código original del módulo debería permanecer intocable.

También podría gustarte