Técnicas Flashcards

1
Q

¿Qué es la independencia de la plataforma?

A

La independencia de la plataforma significa que puede ejecutar el mismo programa Java en cualquier sistema operativo. Por ejemplo, puede escribir un programa Java en Windows y ejecutarlo en Mac OS.

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

¿Qué es JVM y es independiente de la plataforma?

A

Java Virtual Machine (JVM) es el corazón del lenguaje de programación Java. JVM es responsable de convertir el código de bytes en código legible por máquina. JVM no es independiente de la plataforma, por eso tiene diferentes JVM para diferentes sistemas operativos. Podemos personalizar JVM con Opciones de Java, como asignar memoria mínima y máxima a JVM. Se llama virtual porque proporciona una interfaz que no depende del sistema operativo subyacente.

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

¿Cuál es la diferencia entre JDK y JVM?

A

Java Development Kit (JDK) es para fines de desarrollo y JVM es parte de él para ejecutar los programas java.

JDK proporciona todas las herramientas, ejecutables y binarios necesarios para compilar, depurar y ejecutar un programa Java. La parte de ejecución es manejada por JVM para proporcionar independencia de la máquina.

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

¿Cuál es la diferencia entre JVM y JRE?

A

Java Runtime Environment (JRE) es la implementación de JVM. JRE consta de binarios JVM y java y otras clases para ejecutar cualquier programa con éxito. JRE no contiene ninguna herramienta de desarrollo como compilador java, depurador, etc. Si desea ejecutar cualquier programa java, debe tener JRE instalado.

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

¿El compilador de Java se almacena en JDK, JRE o JVM?

A

La tarea del compilador de Java es convertir el programa de Java en código de bytes, tenemos javacejecutables para eso. Por lo tanto, debe almacenarse en JDK, no lo necesitamos en JRE y JVM son solo las especificaciones.

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

¿Cómo logra Java la independencia de la plataforma?

A

Cuando decimos que Java es independiente de la plataforma, lo que significa que los programas de Java no dependen de ninguna plataforma, arquitectura o sistema operativo como Windows o Linux. Java logra esto mediante el uso de la máquina virtual Java, cuando los programas Java se compilan, se convierten en un archivo .class, que es una colección de código de bytes y JVM lo puede entender directamente.

Entonces, el mismo programa Java puede ejecutarse en cualquier sistema operativo, solo JVM puede diferir según el sistema operativo, pero todas las JVM pueden comprender el código de bytes convertido, así es como Java logra la independencia de la plataforma.
[Imagen]

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

¿Por qué Java no es un lenguaje puro orientado a objetos?

A

No se dice que Java sea puramente orientado a objetos porque admite tipos primitivos como int, byte, short, long, etc. Creo que aporta simplicidad al lenguaje al escribir nuestro código. Java podría tener objetos de envoltura para los tipos primitivos, pero solo para la representación, no habrían proporcionado ningún beneficio.

Como sabemos, para todos los tipos primitivos tenemos clases contenedoras como Integer, Long, etc. que proporcionan algunos métodos adicionales.

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

¿Java es pasar por valor o pasar por referencia?

A

Esta es una pregunta muy confusa, sabemos que las variables de objeto contienen la referencia a los Objetos en el espacio del montón. Cuando invocamos cualquier método, se pasa una copia de estas variables y se almacena en la memoria de pila del método. Podemos probar cualquier lenguaje, ya sea que se pase por referencia o pase por valor a través de un método de intercambio genérico simple, para obtener más información, lea Java es Pasar por valor y No pasar por referencia.

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

¿Qué es una clase?

A

Una clase es una plantilla que define la forma de un objeto; en ella se agrupan datos y métodos que operarán sobre esos datos.

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

¿Qué es un objeto?

A

Representa las entidades de la vida real. Un objeto consiste en:

  • Estado: está representado por atributos de un objeto. También refleja las propiedades de un objeto.
  • Comportamiento: se representa mediante métodos de un objeto. También refleja la respuesta de un objeto con otros objetos.
  • Identidad: le da un nombre único a un objeto y permite que un objeto interactúe con otros objetos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué es una interfaz en Java? ¿Cuál es el usuario real de una interfaz?

A
  1. Como una clase abstracta, la interfaz también está ahí para especificar el contrato de una API. Es compatible con el concepto de abstracción OOP, ya que define solo el comportamiento abstracto. Dirá que su programa dará salida, pero cómo queda en manos de los implementadores. El uso real de la interfaz para definir tipos y aprovechar el polimorfismo. Consulte la respuesta para obtener una explicación y una discusión más detalladas.
  2. Las interfaces son conceptos básicos del lenguaje de programación Java y se utilizan mucho no solo en JDK, sino también en los patrones de diseño de Java, la mayoría de los marcos y herramientas. Las interfaces proporcionan una forma de lograr la abstracción en Java y se utilizan para definir el contrato para que las subclases lo implementen.

Las interfaces son buenas como punto de partida para definir el tipo y crear una jerarquía de nivel superior en nuestro código. Dado que una clase Java puede implementar múltiples interfaces, es mejor usar interfaces como superclase en la mayoría de los casos. Lea más en la interfaz java.

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

¿Que es una clase abstracta?

A
  1. Una clase abstracta es una clase que está incompleta. No puede crear una instancia de una clase abstracta en Java. Se proporcionan para definir el comportamiento predeterminado y garantizar que el cliente de esa clase adore los contratos que se definen dentro de la clase abstracta. Para utilizarlo, debe ampliar e implementar sus métodos abstractos. Por cierto, en Java, una clase puede ser abstracta sin especificar ningún método abstracto.
  2. Las clases abstractas se utilizan en Java para crear una clase con alguna implementación de método predeterminada para las subclases. Una clase abstracta puede tener un método abstracto sin el cuerpo y también puede tener métodos con implementación.
    La palabra clave abstracta se utiliza para crear una clase abstracta. Las clases abstractas no se pueden instanciar y se usan principalmente para proporcionar una base para que las subclases extiendan e implementen los métodos abstractos y anulen o usen los métodos implementados en la clase abstracta.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Comparar clase abstracta vs interfaz?

A
  1. Desde Java 8 en adelante, la diferencia entre la clase abstracta y la interfaz en Java se ha minimizado, ahora incluso la interfaz puede tener una implementación en términos de método predeterminado y estático. Por cierto, en Java, aún puede extender una sola clase pero puede extender la herencia múltiple. Se usa una clase abstracta para proporcionar una implementación predeterminada con solo algo que se puede personalizar, mientras que una interfaz se usa mucho en la API para definir el contrato de una clase.
  2. En Java, la diferencia clave es que la clase abstracta puede contener un método no abstracto pero la interfaz no puede, pero desde Java 8 en adelante, la interfaz también puede contener métodos estáticos y predeterminados que no son abstractos. Vea la respuesta para una discusión más detallada, ya que he descrito muchos puntos allí.
    [Imagen]
  3. La palabra clave abstracta se utiliza para crear una clase abstracta, mientras que interfaz es la palabra clave para las interfaces.
    Las clases abstractas pueden tener implementaciones de métodos, mientras que las interfaces no.
    Una clase puede extender solo una clase abstracta pero puede implementar múltiples interfaces.
    Podemos ejecutar una clase abstracta si tiene un método main () mientras que no podemos ejecutar una interfaz.
    Algunas diferencias más en detalle se encuentran en Diferencia entre clase abstracta e interfaz.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Es Java un lenguaje puro orientado a objetos? si no por qué?

A

Java no es un lenguaje de programación orientado a objetos puro, por ejemplo, hay muchas cosas que puede hacer sin objetos, por ejemplo, métodos estáticos. Además, las variables primitivas no son objetos en Java. Consulte la respuesta para obtener una explicación más detallada.

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

¿Qué es el polimorfismo?

A

Propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos. El único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
Ejemplo: Animales, hacerSonido().

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

¿Cuál es la diferencia entre abstracción y polimorfismo en Java?

A

La abstracción generaliza el concepto y el polimorfismo le permite usar una implementación diferente sin cambiar su código. Sin embargo, este diagrama explica bastante bien la abstracción:

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

¿Qué es la composición en Java?

A

La composición es la técnica de diseño para implementar una relación en las clases. Podemos usar la composición de objetos para la reutilización de código.

La composición de Java se logra mediante el uso de variables de instancia que hacen referencia a otros objetos. El beneficio de usar la composición es que podemos controlar la visibilidad de otros objetos para las clases del cliente y reutilizar solo lo que necesitamos. Lea más con el ejemplo en Java Composition example.

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

¿Cuál es el beneficio de la composición sobre la herencia?

A

Una de las mejores prácticas de la programación Java es “favorecer la composición sobre la herencia”. Algunas de las posibles razones son:

Cualquier cambio en la superclase podría afectar a la subclase aunque no estemos usando los métodos de la superclase. Por ejemplo, si tenemos un método test () en la subclase y de repente alguien introduce un método test () en la superclase, obtendremos errores de compilación en la subclase. La composición nunca enfrentará este problema porque estamos usando solo los métodos que necesitamos.
La herencia expone todos los métodos y variables de superclase al cliente y si no tenemos control en el diseño de superclase, puede conducir a agujeros de seguridad. La composición nos permite proporcionar acceso restringido a los métodos y, por lo tanto, más seguro.
Podemos obtener un enlace en tiempo de ejecución en la composición donde la herencia enlaza las clases en tiempo de compilación. Por tanto, la composición proporciona flexibilidad en la invocación de métodos.
Puede leer más sobre los beneficios anteriores de la composición sobre la herencia en composición java vs herencia.

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

¿Qué es Enum en Java?

A

Enum se introdujo en Java 1.5 como un nuevo tipo cuyos campos consisten en un conjunto fijo de constantes. Por ejemplo, en Java, podemos crear Dirección como una enumeración con campos fijos como ESTE, OESTE, NORTE, SUR.
enum es la palabra clave para crear un tipo enum y similar a la clase. Las constantes de enumeración son implícitamente estáticas y finales. Lea más en detalle en java enum.

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

¿Qué es la recolección de basura?

A

La recolección de basura es el proceso de mirar la memoria del montón, identificar qué objetos están en uso y cuáles no, y eliminar los objetos no usados. En Java, el recolector de basura maneja automáticamente el proceso de desasignación de memoria.

Podemos ejecutar el recolector de basura con código Runtime.getRuntime().gc()o usar el método de utilidad System.gc(). Para obtener un análisis detallado de la memoria de pila y la recolección de basura, lea Java Garbage Collection.

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

¿Qué es la programación funcional?

A

El nombre ya lo sugiere: la programación funcional o functional programming se centra en las funciones. En un programa funcional, todos los elementos pueden entenderse como funciones y el código puede ejecutarse mediante llamadas de función secuenciales.
- Scala.

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

¿Qué es spring?

A

Spring es un framework de código abierto para la creación de aplicaciones empresariales Java, con soporte para Groovy y Kotlin.
Tiene estructura modular y una gran flexibilidad para implementar diferentes tipos de arquitecturas según las necesidades de la aplicación.

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

¿Qué es un framework?

A

Framework = marco de trabajo
La librería es (es una “definición” por arriba): es un conjunto de clases, funciones que te permiten realizar algunos procesos. Ej: librería matemática que se puede utilizar para realizar una integral.

Un framework es un entorno de “trabajo compuesto” por “reglas” y “herramientas” que facilitan enormemente el desarrollo de aplicaciones.

Un framework es un marco de trabajo, es un conjunto de
Convenciones, estándares o paradigmas y buenas prácticas.
Funcionalidades costosas ya desarrolladas.
Nos ayuda a ahorrarnos trabajos.

El objetivo:
Servir como base para tus programas.
No reinventar la rueda.
Evitar tareas repetitivas.
Aumentar la productividad.
Favorecer el trabajo en equipo.
Infundirte buenas prácticas.

Un framework va más allá que una API.

Spring MVC nos permite escribir fácilmente una página web.

Usamos spring para desarrollar…
Aplicaciones de escritorio, web clásicas, web reactivas, microservicios…
Aplicaciones que acceden a bases de datos via SQL, con un ORM, bases de datos NoSQL…
Aplicaciones con seguridad clásica, OAuth 2.0, JWT…
Aplicaciones pequeñas, medianas y grandes, escalables, a través de contenedores, en la nube…

(Esto no se si importa)
Principio de Inversión de Dependencia (DIP)
Los módulos de alto nivel no deben depender de los módulos de bajo nivel.
Abstracciones sobre implementaciones.
Nos ayudará a crear código desacoplado.
El patrón IoC es una aplicación de este principio.

Inversión de Control (IoC)
También se lo llama como principio de hollywood.
“No nos llames, nosotros te llamamos” (Principio de Hollywood)
—-

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

¿Qué significa REST?

A

REST son las siglas de REpresentational State Transfer, que utiliza el protocolo HTTP para enviar datos de cliente a servidor, p. un libro en el servidor se puede entregar al cliente usando JSON o XML.

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

¿Qué es un recurso?

A

Un recurso es cómo se representan los datos en la arquitectura REST. Al exponer entidades como el recurso, permite que un cliente lea, escriba, modifique y cree recursos utilizando métodos HTTP como GET, POST, PUT, DELETE, etc.

26
Q

¿Qué son las operaciones REST seguras?

A

REST API utiliza métodos HTTP para realizar operaciones. Algunas de las operaciones HTTP que no modifican el recurso en el servidor se conocen como operaciones seguras, p. Ej. GET Y HEAD. Por otro lado, PUT, POST y DELETE no son seguros porque modifican el recurso en el servidor.

27
Q

¿Qué son las operaciones idempotentes? ¿Por qué es importante la idempotencia?

A

Hay algunos métodos HTTP, p. Ej. GET que producen la misma respuesta sin importar cuántas veces los use, p. Ej. enviar varias solicitudes GET al mismo URI dará como resultado la misma respuesta sin ningún efecto secundario, por lo que se conoce como idempotente. Por otro lado, el POST no es idempotente porque si envía múltiples solicitudes POST, resultará en la creación de múltiples recursos en el servidor, pero nuevamente, PUT es idempotente si lo está usando para actualizar el recurso. Incluso, varias solicitudes PUT para actualizar un recurso en un servidor darán el mismo resultado final. Además, puede realizar el curso de Fundamentos de HTTP de Pluralsight para obtener más información sobre los métodos idempotentes del protocolo HTTP y HTTP en general.

28
Q

¿REST es escalable y / o interoperable?

A

Sí, REST es escalable e interoperable. No exige una elección específica de tecnología ni en el cliente ni en el servidor. Puede utilizar Java, C ++, Python o JavaScript para crear servicios web RESTful y consumirlos en el extremo del cliente. Le sugiero que lea un buen libro sobre API REST, por ejemplo Servicios web RESTful para obtener más información sobre REST.

29
Q

¿Qué métodos HTTP usa REST?

A

REST puede usar cualquier método HTTP, pero los más populares son GET para recuperar un recurso, POST para crear un recurso, PUT para actualizar el recurso y DELETE para eliminar un recurso del servidor.

30
Q

MVC es la abreviatura de un patrón de diseño. ¿Qué representa y cuál es la idea detrás de él?

A

MVC es una abreviatura del patrón de diseño Modelo-Vista-Controlador. Este patrón se basa en el principio de diseño de separación de preocupaciones que promueve el manejo de diferentes funcionalidades en diferentes capas y un acoplamiento flexible entre capas. En el patrón MVC, el modelo contiene los datos que son procesados ​​por View y Controler para ayudar en el procesamiento y enrutamiento de solicitudes. Ni el modelo conoce la vista, ni la vista depende del modelo, lo que significa que el mismo modelo puede ser renderizado por diferentes vistas, p. JSP, FreeMarker o incluso se puede escribir como JSON o XML en el caso de servicios web RESTful. Puede obtener más información sobre MVC en mi curso favorito Spring Framework 5: Beginner to Guru. Si te tomas en serio la primavera, este es el curso que debes considerar.
[Imagen]

31
Q

¿Para qué se utiliza la anotación @Controller? ¿Cómo se puede crear un controlador sin una anotación?

A

El @Controller es una anotación de Spring MVC para definir Controller, pero en realidad, es solo una anotación de estereotipo. Incluso puede crear un controlador sin @Controller anotando las clases de Spring MVC Controller usando la anotación @Component. El trabajo real de la asignación de solicitudes al método del controlador se realiza mediante la anotación @RequestMapping.

32
Q

¿Para qué se utiliza @RequestParam?

A

@RequestParam es una anotación Spring MVC que se usa para extraer el parámetro de solicitud o los parámetros de consulta de la URL en el método del controlador del controlador como se muestra a continuación: public String personDetail (@RequestParam (“id”) long id) { …. return “personDetails”; } La anotación @RequestParam también admite la conversión de tipos de datos, p. Aquí puede ver que una cadena se convierte en larga automáticamente, pero también puede dar lugar a una excepción si el parámetro de consulta no está presente o en caso de que el tipo no coincida. También puede hacer que el parámetro sea opcional usando requried = false p. Ej. @RequestParam (value = “id”, required = falso).

33
Q

¿Cuáles son las diferencias entre @RequestParam y @PathVariable?

A

Aunque las anotaciones @RequestParam y @PathVariable se utilizan para extraer algunos datos de la URL, existe una diferencia clave entre ellas. El @RequestParam se utiliza para extraer parámetros de consulta, p. Ej. algo después de “?” en URL mientras que @PathVariable se usa para extraer la parte del URI en sí. Por ejemplo, si la URL proporcionada es

http://localhost:8080/SpringMVC/books/3232233/?format=json

Luego puede acceder al parámetro de consulta “formato” usando la anotación @RequestParam y / books / {id} usando @PathVariable, lo que le dará 3232233. Aquí hay otro ejemplo de @PathVariable,

@RequestMapping(“/persons/{id}” )
public String personDetail (@PathVariable (“id” ) long id) {…}

Este código puede extraer person id = 123 de / persons / 123. Se usa particularmente en los servicios web RESTful porque su identificación suele ser parte de la ruta URI o URL.
[Imagen]

34
Q

Diferencia entre ArrayList y LinkedList

A

ArrayList y LinkedList implementan la interfaz List y mantienen el orden de inserción. Ambas son clases no sincronizadas.

Sin embargo, existen muchas diferencias entre las clases ArrayList y LinkedList que se indican a continuación.

Lista de arreglo

1) ArrayList utiliza internamente una matriz dinámica para almacenar los elementos.
2) La manipulación con ArrayList es lenta porque utiliza internamente una matriz. Si se elimina cualquier elemento de la matriz, todos los bits se desplazan en la memoria.
3) Una clase ArrayList puede actuar como una lista solo porque implementa solo List.
4) ArrayList es mejor para almacenar y acceder a datos.

Lista enlazada

1) LinkedList utiliza internamente una lista doblemente enlazada para almacenar los elementos.
2) La manipulación con LinkedList es más rápida que ArrayList porque usa una lista doblemente vinculada, por lo que no se requiere ningún cambio de bits en la memoria.
3) La clase LinkedList puede actuar como una lista y una cola porque implementa las interfaces List y Deque.
4) LinkedList es mejor para manipular datos.

35
Q

Nombrer conceptos OOP

A

OOP (sistema de programación orientado a objetos)
La programación orientada a objetos es una metodología o paradigma para diseñar un programa usando clases y objetos. Simplifica el desarrollo y el mantenimiento de software al proporcionar algunos conceptos:

  • Objeto
  • Clase
  • Herencia
  • Polimorfismo
  • Abstracción
  • Encapsulamiento
    Aparte de estos conceptos, hay algunos otros términos que se utilizan en el diseño orientado a objetos:
  • Acoplamiento
  • Cohesión
  • Asociación
  • Agregación
  • Composición
36
Q

OOP - Abstracción

A

Ocultar detalles internos y mostrar funcionalidad se conoce como abstracción. Por ejemplo, una llamada telefónica, no conocemos el procesamiento interno.

En Java, utilizamos la clase y la interfaz abstractas para lograr la abstracción.

37
Q

OOP - Encapsulamiento

A

La vinculación (o envoltura) de código y datos en una sola unidad se conoce como encapsulación . Por ejemplo, una cápsula, se envuelve con diferentes medicamentos.

Una clase Java es el ejemplo de encapsulación. Java bean es la clase completamente encapsulada porque todos los miembros de datos son privados aquí.

38
Q

OOP - Acoplamiento

A

El acoplamiento se refiere al conocimiento, la información o la dependencia de otra clase. Surge cuando las clases se conocen unas a otras. Si una clase tiene la información detallada de otra clase, existe un fuerte acoplamiento. En Java, usamos modificadores privados, protegidos y públicos para mostrar el nivel de visibilidad de una clase, método y campo. Puede utilizar interfaces para el acoplamiento más débil porque no hay una implementación concreta.

39
Q

OOP - Cohesión

A

La cohesión se refiere al nivel de un componente que realiza una única tarea bien definida. Una sola tarea bien definida se realiza mediante un método altamente cohesivo. El método débilmente cohesivo dividirá la tarea en partes separadas. El paquete java.io es un paquete altamente cohesivo porque tiene clases e interfaz relacionadas con E / S. Sin embargo, el paquete java.util es un paquete débilmente cohesivo porque tiene clases e interfaces no relacionadas.

40
Q

OOP - Asociación

A

La asociación representa la relación entre los objetos. Aquí, un objeto se puede asociar con un objeto o con muchos objetos. Puede haber cuatro tipos de asociación entre los objetos:

  • Doce y cincuenta y nueve de la noche
  • Uno a muchos
  • Muchos a uno, y
  • Muchos a muchos
    Entendamos la relación con ejemplos en tiempo real. Por ejemplo, un país puede tener un primer ministro (uno a uno) y un primer ministro puede tener muchos ministros (uno a muchos). Además, muchos diputados pueden tener un primer ministro (muchos a uno) y muchos ministros pueden tener muchos departamentos (muchos a muchos).

La asociación puede ser unidireccional o bidireccional.

41
Q

OOP - Agregación

A

La agregación es una forma de lograr Asociación. La agregación representa la relación en la que un objeto contiene otros objetos como parte de su estado. Representa la débil relación entre objetos. También se denomina relación tiene-a en Java. Como, la herencia representa la relación es-a . Es otra forma de reutilizar objetos.

42
Q

OOP - Composición

A

La composición también es una forma de lograr Asociación. La composición representa la relación en la que un objeto contiene otros objetos como parte de su estado. Existe una fuerte relación entre el objeto contenedor y el objeto dependiente. Es el estado en el que los objetos que los contienen no tienen una existencia independiente. Si elimina el objeto principal, todos los objetos secundarios se eliminarán automáticamente.

43
Q

Ventaja de los POO sobre el lenguaje de programación orientado a procedimientos

A

1) Los POO facilitan el desarrollo y el mantenimiento, mientras que, en un lenguaje de programación orientado a procedimientos, no es fácil de administrar si el código crece a medida que aumenta el tamaño del proyecto.

2) Los POO proporcionan ocultación de datos, mientras que, en un lenguaje de programación orientado a procedimientos, se puede acceder a los datos globales desde cualquier lugar.
[Imagenx2]

3) Los OOP brindan la capacidad de simular eventos del mundo real de manera mucho más efectiva. Podemos proporcionar la solución de un problema verbal real si usamos el lenguaje de programación orientado a objetos.

44
Q

¿Cuál es la diferencia entre un lenguaje de programación orientado a objetos y un lenguaje de programación basado en objetos?

A

El lenguaje de programación basado en objetos sigue todas las características de los POO excepto la herencia. JavaScript y VBScript son ejemplos de lenguajes de programación basados ​​en objetos.

45
Q

Definición de plataforma.

A

Una plataforma es el entorno de hardware o software en el que se ejecuta una pieza de software. Hay dos tipos de plataformas, basadas en software y basadas en hardware. Java proporciona la plataforma basada en software.

46
Q

¿Qué es el cargador de clases (Classsdoader)?

A

Classloader es un subsistema de JVM que se utiliza para cargar archivos de clases. Siempre que ejecutamos el programa java, el cargador de clases lo carga primero. Hay tres cargadores de clases integrados en Java.

  1. Bootstrap ClassLoader: este es el primer cargador de clases que es la superclase del cargador de clases.
    Extension. Carga el archivo rt.jar que contiene todos los archivos de clase de Java Standard Edition como clases de paquetes java.lang, clases de paquetes java.net, clases de paquetes java.util, clases de paquetes java.io, clases de paquetes java.sql, etc.
  2. Extension ClassLoader: este es el cargador de clases hijo de Bootstrap y el cargador de clases padre del cargador de clases del sistema. Carga los archivos jar ubicados dentro del directorio $ JAVA_HOME / jre / lib / ext.
  3. Cargador de clases de sistema / aplicación: este es el cargador de clases hijo del cargador de clases de extensión. Carga los archivos de clase desde el classpath. De forma predeterminada, la ruta de clase se establece en el directorio actual. Puede cambiar la ruta de clases utilizando el modificador “-cp” o “-classpath”. También se conoce como cargador de clases de aplicaciones.
47
Q

¿Cuáles son los distintos especificadores de acceso en Java?

A
  • public: Se puede acceder a las clases, métodos o variables que se definen como públicos mediante cualquier clase o método.
  • protected: Se puede acceder a Protegido por la clase del mismo paquete, o por la subclase de esta clase, o dentro de la misma clase.
  • default: Default son accesibles dentro del paquete solamente. De forma predeterminada, todas las clases, métodos y variables tienen un alcance predeterminado.
  • private: Solo se puede acceder a la clase privada, los métodos o las variables definidas como privadas dentro de la clase.
48
Q

¿Cuál es el propósito de los métodos y variables estáticos?

A

Los métodos o variables definidos como estáticos se comparten entre todos los objetos de la clase. Lo estático es parte de la clase y no del objeto. Las variables estáticas se almacenan en el área de la clase y no es necesario crear el objeto para acceder a dichas variables. Por lo tanto, se usa static en el caso, donde necesitamos definir variables o métodos que son comunes a todos los objetos de la clase.

Por ejemplo, en la clase que simula la colección de estudiantes en una universidad, el nombre de la universidad es el atributo común a todos los estudiantes. Por lo tanto, el nombre de la universidad se definirá como estático.

49
Q

¿Qué es la variable estática?

A

La variable estática se usa para referirse a la propiedad común de todos los objetos (que no es única para cada objeto), por ejemplo, el nombre de la empresa de los empleados, el nombre de la universidad de los estudiantes, etc. La variable estática obtiene memoria solo una vez en el área de clase en el momento de la carga de la clase. El uso de una variable estática hace que su programa sea más eficiente en memoria (ahorra memoria). La variable estática pertenece a la clase más que al objeto.

50
Q

¿Qué es el método estático?

A
  • Un método estático pertenece a la clase en lugar del objeto.
  • No es necesario crear el objeto para llamar a los métodos estáticos.
  • Un método estático puede acceder y cambiar el valor de la variable estática.
51
Q

¿Cuáles son las restricciones que se aplican a los métodos estáticos de Java?

A

Se aplican dos restricciones principales a los métodos estáticos.

  • El método estático no puede utilizar miembros de datos no estáticos ni llamar directamente al método no estático.
  • this y super no se pueden usar en un contexto estático ya que no son estáticos.
52
Q

¿Por qué el método principal es estático?

A

Porque no se requiere que el objeto llame al método estático. Si hacemos que el método principal no sea estático, JVM tendrá que crear su objeto primero y luego llamar al método main () que conducirá a la asignación de memoria adicional. Más detalles.

53
Q

¿Qué es la herencia?

A

La herencia es un mecanismo por el cual un objeto adquiere todas las propiedades y el comportamiento de otro objeto de otra clase. Se utiliza para la reutilización de código y la invalidación de métodos. La idea detrás de la herencia en Java es que puede crear nuevas clases que se basan en clases existentes. Cuando hereda de una clase existente, puede reutilizar métodos y campos de la clase principal. Además, también puede agregar nuevos métodos y campos en su clase actual. La herencia representa la relación IS-A que también se conoce como relación padre-hijo.

Hay cinco tipos de herencia en Java.

  • Herencia de un solo nivel
  • Herencia multinivel
  • Herencia múltiple
  • Herencia jerárquica
  • Herencia híbrida
    La herencia múltiple no se admite en Java a través de la clase.
54
Q

¿Por qué se usa la herencia en Java?

A

Hay varias ventajas de usar la herencia en Java que se detallan a continuación.

  • La herencia proporciona reutilización de código. La clase derivada no necesita redefinir el método de la clase base a menos que necesite proporcionar la implementación específica del método.
  • El polimorfismo en tiempo de ejecución no se puede lograr sin usar la herencia.
  • Podemos simular la herencia de clases con los objetos en tiempo real, lo que hace que los POO sean más realistas.
  • La herencia proporciona ocultación de datos. La clase base puede ocultar algunos datos de la clase derivada haciéndola privada.
  • La invalidación de métodos no se puede lograr sin herencia. Al anular el método, podemos dar una implementación específica de algún método básico contenido en la clase base.
55
Q

¿Por qué no se admite la herencia múltiple en Java?

A

Para reducir la complejidad y simplificar el lenguaje, la herencia múltiple no es compatible con java. Considere un escenario donde A, B y C son tres clases. La clase C hereda las clases A y B. Si las clases A y B tienen el mismo método y lo llama desde el objeto de la clase secundaria, habrá ambigüedad para llamar al método de la clase A o B.

Dado que los errores en tiempo de compilación son mejores que los errores en tiempo de ejecución, Java genera un error en tiempo de compilación si hereda 2 clases. Entonces, ya sea que tenga el mismo método o uno diferente, habrá un error de tiempo de compilación.

class A{  
void msg(){System.out.println("Hello");}  
}  
class B{  
void msg(){System.out.println("Welcome");}  
}  
class C extends A,B{//suppose if it were  
 Public Static void main(String args[]){  
   C obj=new C();  
   obj.msg();//Now which msg() method would be invoked?  
}  
}
56
Q

¿Qué es la sobrecarga de métodos (overloading)?

A

La sobrecarga de métodos es la técnica del polimorfismo que nos permite crear varios métodos con el mismo nombre pero con una firma diferente. Podemos lograr la sobrecarga de métodos de dos maneras.

Cambiando el número de argumentos
Cambiando el tipo de datos de los argumentos
La sobrecarga de métodos aumenta la legibilidad del programa. La sobrecarga de métodos se realiza para descubrir el programa rápidamente.

public void respirar();
public void respirar(int oxigeno)

En Java, la sobrecarga de métodos no es posible cambiando el tipo de retorno del programa debido a evitar la ambigüedad.

static int add ( int a, int b) { return a + b;}
static double add ( int a, int b) { return a + b;}

57
Q
  1. ¿Qué es la anulación del método (overriding)?
  2. ¿Podemos anular el método estático?
  3. ¿Por qué no podemos anular el método estático?
A
  1. Si una subclase proporciona una implementación específica de un método que ya proporciona su clase principal, se conoce como Anulación de método. Se utiliza para el polimorfismo en tiempo de ejecución y para implementar los métodos de interfaz.

Reglas para anular el método

El método debe tener el mismo nombre que en la clase principal.
El método debe tener la misma firma que en la clase principal.
Dos clases deben tener una relación IS-A entre ellas.

  1. No, no puede anular el método estático porque son parte de la clase, no el objeto.
  2. Sí.
58
Q

¿Cuál es la variable final?

A

En Java, la variable final se usa para restringir que el usuario la actualice. Si inicializamos la variable final, no podemos cambiar su valor. En otras palabras, podemos decir que la variable final una vez asignada a un valor, nunca se puede cambiar después de eso. La variable final que no está asignada a ningún valor solo se puede asignar a través del constructor de clases.

59
Q

¿Cuál es el método final?

A

Si cambiamos cualquier método a un método final, no podemos anularlo.

60
Q

¿Qué es la clase final?

A

Si hacemos que cualquier clase sea final, no podemos heredarla en ninguna de las subclases.