Preparar Supuesto BL III Flashcards
Lista (List)
Conjunto ORDENADO de elementos HOMOGÉNEOS. Permite DUPLICADOS.
Es necesario tener un puntero inicio que apunta al primer elemento de la lista.
Permiten realizar inserciones en cualquier punto de la lista.
Permite eliminar cualquier elemento.
El acceso a los elementos es secuencial (tenemos que ir pasando por cada uno de ellos, ya que cada elemento nos direcciona al siguiente).
Tipos de listas
Listas enlazadas simples.
Listas enlazadas dobles.
Listas circulares.
Pilas.
Colas.
Listas enlazadas simples
Cada elemento tiene una variable “valor” (de un tipo de dato o estructura de datos) y un pun-tero denominado “siguiente” que apunta hacia su sucesor (siguiente elemento).
Listas enlazadas dobles
Son iguales a las listas enlazadas simples, pero añaden en cada elemento un nuevo fichero denominado “anterior” que apunta al antecesor.
Listas circulares
La lista circular es una lista enlazada simple o doble con las siguientes particularidades:
No tiene puntero “fin”.
El puntero “siguiente” del último elemento apunta al primer elemento.
Pilas
Denominada lista LIFO (Last In First Out) ya que almacena datos en este orden, es decir, el último elemento que se incorpora a la pila es el primero que sale.
Para entenderlo, imagina una pila de libros. Si quieres poner otro libro en la pila lo sitúas arri-ba del todo. Cuando quieres coger un libro tienes que empezar cogiendo el de arriba (el últi-mo que has puesto).
Colas
También denominada lista FIFO (First In First Out) ya que almacena datos en este orden, es decir, el primer elemento que se incorpora a la cola es el primero que sale.
Para entenderlo, imagina la cola de un cine. El primero que llega es el primero que entra al cine, y si llega alguien nuevo se sitúa al final de la cola.
Bicola
La bicola o doble cola es un tipo de cola especial que permiten la inserción y eliminación de elementos de ambos extremos de la cola.
Puede representarse a partir de un vector y dos índices, siendo su representación más fre-cuente una lista circular doblemente enlazada.
Todas las operaciones de este tipo de datos tienen coste constante.
Árboles
Es un tipo de datos estructurados, DINÁMICO y no lineal.
Diferencia principal entre árboles y listas
Los árboles utilizan una estructura JERÁRQUICA, mientras que las listas tienen una estructura LINEAL.
Grafos
Es un conjunto de nodos o vértices y un conjunto de arcos (aristas) que establecen relaciones (no jerárquicas) entre los nodos.
Archivo o fichero informático
Conjunto de información guardado en forma de bytes, en un soporte electrónico hardware de almacenamiento.
Conjunto (Set)
Colección de valores NO ORDENADOS que no permite elementos repetidos.
Sin orden y sin duplicados.
Mapa (Map)
Conjunto de elementos formados por pares clave-valor. NO ESTAN ORDENADOS.
Las claves no pueden estar repetidas pero los valores si.
Diccionario (Dictionary)
Un diccionario es un Mapa (Map) donde se le da un orden interno a las claves.
Concepto de “pipelines”
Es una serie de etapas de procesamiento de datos donde la salida de una etapa se convierte en la entrada de la siguiente.
Apps de Integración Continua (CI) y Entrega Continua (CD):
Jenkins
Travis CI
CircleCI
GitLab CI/CD
Bamboo
TeamCity
Apps de Sistema de Mensajería:
RabbitMQ
Apache Kafka
ActiveMQ
Redis Pub/Sub
Amazon SQS
NATS
Apps de Control de Versiones:
Git
Subversion (SVN)
Mercurial
Perforce
Bazaar
CVS (Concurrent Versions System)
Apps de Automatización de Tareas y DevOps:
Ansible
Puppet
Chef
SaltStack
Terraform
Kubernetes
Apps de Monitorización y Logging:
Prometheus
Grafana
Nagios
Splunk
ELK Stack (Elasticsearch, Logstash, Kibana)
Datadog
Apps de Gestión de Proyectos y Colaboración:
Jira
Trello
Asana
Monday.com
Basecamp
Microsoft Teams
Integración Continua (CI)
La Integración Continua es una práctica de desarrollo de software en la que los desarrolladores integran su código de trabajo en un repositorio compartido con frecuencia.
Entrega Continua (CD)
La Entrega Continua es una práctica que extiende la Integración Continua al automatizar el proceso de lanzamiento de software, permitiendo que los cambios en el código se desplieguen automáticamente en entornos de producción o preproducción.
Paquete java.lang
Contiene clases fundamentales del lenguaje Java.
String, System, Math, Thread, Exception
Paquete java.util
Proporciona clases utilitarias, incluyendo colecciones y estructuras de datos.
ArrayList, HashMap, Date, Calendar, Collections
Paquete java.io
Contiene clases para la entrada y salida (I/O), incluyendo la manipulación de archivos y flujos de datos.
File, FileInputStream, FileOutputStream, BufferedReader, PrintWriter
Paquete java.nio
Proporciona clases para operaciones de I/O no bloqueantes (NIO).
ByteBuffer, FileChannel, Path, Files, StandardOpenOption
Paquete java.net
Contiene clases para la implementación de aplicaciones de red.
URL, HttpURLConnection, Socket, ServerSocket, InetAddress
Paquete java.sql
Proporciona clases e interfaces para el acceso a bases de datos mediante JDBC (Java Database Connectivity).
Connection, Statement, ResultSet, DriverManager, PreparedStatement
Paquete java.math
Contiene clases para realizar operaciones matemáticas de alta precisión.
BigDecimal, BigInteger, MathContext, RoundingMode
Paquete java.time
Proporciona clases para la manipulación de fechas y horas.
LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Duration
Paquete java.awt
Contiene clases para la creación de interfaces gráficas de usuario (GUI).
Frame, Button, TextField, Label, Canvas
Paquete javax.swing
Proporciona un conjunto más avanzado de componentes GUI que java.awt.
JFrame, JButton, JLabel, JTextField, JPanel
Paquete javax.naming
Proporciona clases e interfaces para el acceso a servicios de directorio y de nombres.
InitialContext, Context, Name, NamingEnumeration, NameClassPair
Paquete javax.servlet
Proporciona clases e interfaces para manejar solicitudes y respuestas HTTP en aplicaciones web.
HttpServlet, ServletRequest, ServletResponse
Paquete javax.ejb
Define las interfaces y clases para Enterprise JavaBeans (EJB), que son componentes de servidor que encapsulan la lógica de negocio.
SessionBean, EntityBean, MessageDrivenBean
Paquete javax.persistence
Contiene las clases e interfaces para la API de persistencia de Java (JPA), que gestiona el almacenamiento y recuperación de datos en bases de datos.
EntityManager, EntityTransaction, Query
Paquete javax.sql
Proporciona clases e interfaces para trabajar con fuentes de datos y manejar conexiones a bases de datos, incluyendo el manejo de conexiones agrupadas y distribuidas.
DataSource, ConnectionPoolDataSource, RowSet
.Net Frameworks
ASP.NET: Framework para desarrollar aplicaciones web y servicios web.
Entity Framework: ORM (Object-Relational Mapping) para trabajar con bases de datos.
Xamarin: Framework para desarrollar aplicaciones móviles multiplataforma.
Blazor: Framework para construir aplicaciones web interactivas usando C# en lugar de JavaScript.
WPF (Windows Presentation Foundation): Framework para desarrollar aplicaciones de escritorio en Windows.
MAUI (Multi-platform App UI): Framework para crear aplicaciones nativas multiplataforma.
Java Frameworks
Spring: Framework completo para el desarrollo de aplicaciones empresariales.
Hibernate: ORM para trabajar con bases de datos relacionales.
Struts: Framework para desarrollar aplicaciones web basadas en MVC.
JSF (JavaServer Faces): Framework para construir interfaces de usuario web.
Vaadin: Framework para construir aplicaciones web modernas con Java.
GWT (Google Web Toolkit): Framework para construir aplicaciones web complejas en Java.
Python Frameworks
Django: Framework de alto nivel para el desarrollo rápido de aplicaciones web.
Flask: Framework ligero y flexible para aplicaciones web.
Pyramid: Framework para aplicaciones web que se puede escalar desde aplicaciones simples hasta complejas.
FastAPI: Framework moderno y de alto rendimiento para construir APIs con Python.
Tornado: Framework para construir aplicaciones web asíncronas y en tiempo real.
Bottle: Micro-framework simple y ligero para aplicaciones web.
PHP Frameworks
Laravel: Framework moderno y elegante para el desarrollo de aplicaciones web.
Symfony: Framework robusto y flexible para aplicaciones web empresariales.
CodeIgniter: Framework ligero y rápido para desarrollar aplicaciones web.
Yii: Framework de alto rendimiento para desarrollar aplicaciones web.
Zend Framework: Framework extensible y orientado a objetos para aplicaciones web.
CakePHP: Framework que facilita el desarrollo rápido de aplicaciones.
JavaScript Frameworks
React: Biblioteca para construir interfaces de usuario, desarrollada por Facebook.
Angular: Framework desarrollado por Google para crear aplicaciones web dinámicas y robustas.
Vue.js: Framework progresivo para construir interfaces de usuario, fácil de integrar con otros proyectos.
Svelte: Framework que compila el código en JavaScript eficiente en tiempo de construcción.
Ember.js: Framework para crear aplicaciones web ambiciosas con una arquitectura sólida.
Next.js: Framework basado en React para construir aplicaciones web con renderizado del lado del servidor (SSR) y generación estática.
En Java, que palabra se utiliza para poder usar un paquete:
import
// Importar una clase específica
import java.util.ArrayList;
// Importar todas las clases de un paquete
import java.util.*;
En Java, para que se utiliza extends:
Para indicar que una clase hereda de otra clase.
class Dog extends Animal {}
En Java, para que se utiliza implements:
Para indicar que una clase implementa una o más interfaces.
class Dog implements Animal {}
En Java, para que se utiliza import:
Para importar clases o paquetes en un archivo Java.
import java.util.List;
En Java, modificador public
Indica que el miembro es accesible desde cualquier otra clase.
En Java, modificador private
Indica que el miembro es accesible solo dentro de la clase en la que se define.
En Java, modificador protected
Indica que el miembro es accesible dentro de su propio paquete y por subclases.
En Java, modificador default
Indica que el miembro es accesible solo dentro de su propio paquete.
En Java, modificador static
Indica que el miembro pertenece a la clase, en lugar de a instancias de la clase.
En Java, modificador final
Indica que el valor del miembro no puede ser cambiado (para variables) o que el método no puede ser anulado (para métodos).
En Java, modificador abstract
Indica que la clase no puede ser instanciada directamente y puede contener métodos abstractos que deben ser implementados por subclases.
En Java, modificador synchronized
Indica que un método puede ser accedido por un solo hilo a la vez.
En Java, modificador volatile
Indica que el valor de una variable puede ser cambiado inesperadamente por diferentes threads.
En Java, modificador transient
Indica que un campo no debe ser serializado.
¿Qué es la serialización?
Es el proceso de convertir un objeto en una secuencia de bytes para su almacenamiento o transmisión.
En Java, se realiza con la clase ObjectOutputStream.
¿Qué es la deserialización?
Es el proceso de convertir una secuencia de bytes de vuelta a su correspondiente objeto en memoria.
En Java, se realiza con la clase ObjectInputStream.
Tipos de patrones GoF (Gang Of Four)
Creacionales
Estructurales
De comportamiento
Patrones GoF creacionales:
Abstract Factory (fábrica abstracta): permite trabajar con objetos de distintas familias.
Builder (constructor virtual): abstrae el proceso de creación de un objeto complejo, centralizando dicho proceso en un único punto.
Factory Method (método de fabricación): centraliza en una clase constructora la creación de objetos de un subtipo de un tipo determinado, ocultando al usuario la casuística.
Prototype (prototipo): crea nuevos objetos clonándolos de una instancia ya existente.
Singleton (instancia única): garantiza la existencia de una única instancia para una clase y la creación de un mecanismo de acceso global a dicha instancia.
Patrones GoF estructurales:
Adapter o Wrapper (Adaptador o Envoltorio): Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.
Bridge (Puente): Desacopla una abstracción de su implementación.
Composite (Objeto compuesto): Permite tratar objetos compuestos como si de uno simple se tratase.
Decorator (Decorador): Añade funcionalidad a una clase dinámicamente.
Facade (Fachada): Provee de una interfaz unificada simple para acceder a una interfaz o grupo de interfaces de un subsistema.
Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de objetos poseen idéntica información.
Proxy: Proporciona un intermediario de un objeto para controlar su acceso.
Module: Agrupa varios elementos relacionados, como clases, singletons, y métodos, utilizados globalmente, en una entidad única.
Patrones GoF de comportamiento:
Chain of Responsibility (Cadena de responsabilidad): Permite establecer la línea que deben llevar los mensajes para que los objetos realicen la tarea indicada.
Command (Orden): Encapsula una operación en un objeto, permitiendo ejecutar dicha operación sin necesidad de conocer el contenido de la misma.
Interpreter (Intérprete): Dado un lenguaje, define una gramática para dicho lenguaje, así como las herramientas necesarias para interpretarlo.
Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos independientemente de la implementación de estos.
Mediator (Mediador): Define un objeto que coordine la comunicación entre objetos de distintas clases, pero que funcionan como un conjunto.
Memento (Recuerdo): Permite volver a estados anteriores del sistema.
Observer (Observador): Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.
State (Estado): Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno.
Strategy (Estrategia): Permite disponer de varios métodos para resolver un problema y elegir cuál utilizar en tiempo de ejecución.
Template Method (Método plantilla): Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos, esto permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura.
Visitor (Visitante): Permite definir nuevas operaciones sobre una jerarquía de clases sin modificar las clases sobre las que opera.
Patrón GoF creacional “Abstract Factory (fábrica abstracta)”:
Permite trabajar con objetos de distintas familias de manera que las familias no se mezclen entre sí y haciendo transparente el tipo de familia concreta que se esté usando. El problema a solucionar por este patrón es el de crear diferentes familias de objetos, como por ejemplo, la creación de interfaces gráficas de distintos tipos (ventana, menú, botón, etc.).
Patrón GoF creacional “Builder (constructor virtual)”:
Abstrae el proceso de creación de un objeto complejo, centralizando dicho proceso en un único punto.
Patrón GoF creacional “Factory Method (método de fabricación)”:
Centraliza en una clase constructora la creación de objetos de un subtipo de un tipo determinado, ocultando al usuario la casuística, es decir, la diversidad de casos particulares que se pueden prever, para elegir el subtipo que crear. Parte del principio de que las subclases determinan la clase a implementar.
Patrón GoF creacional “Prototype (prototipo)”:
Crea nuevos objetos clonándolos de una instancia ya existente.
Patrón GoF creacional “Singleton (instancia única)”:
Garantiza la existencia de una única instancia para una clase y la creación de un mecanismo de acceso global a dicha instancia. Restringe la instanciación de una clase o valor de un tipo a un solo objeto.
Patrón GoF estructural “Adapter o Wrapper (Adaptador o Envoltorio)”:
Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.
Patrón GoF estructural “Bridge (Puente)”:
Desacopla una abstracción de su implementación.
Patrón GoF estructural “Composite (Objeto compuesto)”:
Permite tratar objetos compuestos como si de uno simple se tratase.
Patrón GoF estructural “Decorator (Decorador)”:
Añade funcionalidad a una clase dinámicamente.
Patrón GoF estructural “Facade (Fachada)”:
Provee de una interfaz unificada simple para acceder a una interfaz o grupo de interfaces de un subsistema.
Patrón GoF estructural “Flyweight (Peso ligero)”:
Reduce la redundancia cuando gran cantidad de objetos poseen idéntica información.
Patrón GoF estructural “Proxy”:
Proporciona un intermediario de un objeto para controlar su acceso.
Patrón GoF estructural “Module”:
Agrupa varios elementos relacionados, como clases, singletons, y métodos, utilizados globalmente, en una entidad única.
Patrón GoF de comportamiento “Chain of Responsibility (Cadena de responsabilidad)”:
Permite establecer la línea que deben llevar los mensajes para que los objetos realicen la tarea indicada.
Patrón GoF de comportamiento “Command (Orden)”:
Encapsula una operación en un objeto, permitiendo ejecutar dicha operación sin necesidad de conocer el contenido de la misma.
Patrón GoF de comportamiento “Interpreter (Intérprete)”:
Dado un lenguaje, define una gramática para dicho lenguaje, así como las herramientas necesarias para interpretarlo.
Patrón GoF de comportamiento “Iterator (Iterador)”:
Permite realizar recorridos sobre objetos compuestos independientemente de la implementación de estos.
Patrón GoF de comportamiento “Mediator (Mediador)”:
Define un objeto que coordine la comunicación entre objetos de distintas clases, pero que funcionan como un conjunto.
Patrón GoF de comportamiento “Memento (Recuerdo)”:
Permite volver a estados anteriores del sistema.
Patrón GoF de comportamiento “Observer (Observador)”:
Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él.
Patrón GoF de comportamiento “State (Estado)”:
Permite que un objeto modifique su comportamiento cada vez que cambie su estado interno.
Patrón GoF de comportamiento “Strategy (Estrategia)”:
Permite disponer de varios métodos para resolver un problema y elegir cuál utilizar en tiempo de ejecución.
Patrón GoF de comportamiento “Template Method (Método plantilla)”:
Define en una operación el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos, esto permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura.
Patrón GoF de comportamiento “Visitor (Visitante)”:
Permite definir nuevas operaciones sobre una jerarquía de clases sin modificar las clases sobre las que opera.
Función de los patrones GoF creacionales:
Solucionan problemas de creación de instancias. Nos ayudan a encapsular y abstraer dicha creación.
Se enfocan en la creación de objetos, ayudando a crear objetos de manera que se adapten a la situación dada. Facilitan la creación de objetos de una manera controlada y eficiente, asegurando que el sistema sea flexible y reutilizable.
Función de los patrones GoF estructurales:
Solucionan problemas de composición (agregación) de clases y objetos.
Se centran en la composición de clases y objetos. Su objetivo es facilitar la creación de estructuras complejas y grandes a partir de estructuras más simples, promoviendo la flexibilidad y la reutilización del código.
Función de los patrones GoF de comportamiento:
Ofrecen soluciones respecto a la interacción y responsabilidades entre clases y objetos.
Se enfocan en la interacción y responsabilidad entre objetos. Ayudan a definir cómo los objetos se comunican entre sí, promoviendo una mayor flexibilidad en la asignación de responsabilidades y en la comunicación entre objetos.
En SQL, la cláusula “IF EXISTS”
Se utiliza para verificar la existencia de un objeto (como una tabla, una vista, un índice, etc.) antes de realizar una acción sobre él. Es útil para evitar errores al intentar eliminar o modificar un objeto que puede no existir.
Ejemplos:
DROP TABLE IF EXISTS tabla;
DROP VIEW IF EXISTS vista;
DROP INDEX IF EXISTS indice;
DROP DATABASE IF EXISTS bd;
Última versión de UML
2.5.1
Qué es un patrón de diseño:
Son técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
¿Qué significa GoF?
Gang of Four
En 1994, cuatro autores Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides, a los que llamaron Gang of Four (GoF), publicaron un libro titulado Design Patterns, elementos de software orientado a objetos reutilizables.