Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JAVA .................................................................................................................................................................... 5
DEFINICIÓN ..................................................................................................................................................................... 5
INSTALACIÓN .................................................................................................................................................................. 5
VARIABLES ...................................................................................................................................................................... 6
TIPOS DE VARIABLES ....................................................................................................................................................... 7
• PRIMITIVOS .................................................................................................................................................... 7
o TIPOS DE VARIABLES .................................................................................................................................. 7
o RESUMEN................................................................................................................................................... 8
o PALABRAS RESERVADAS DEL LENGUAJE.................................................................................................... 9
• REFERENCIA ................................................................................................................................................. 10
o TIPOS DE VARIABLES ................................................................................................................................ 10
• NORMAS PARA EL NOMBRE DE UNA VARIABLE .......................................................................................... 11
ENTRADAS DE DATOS ................................................................................................................................................... 12
• VENTANAS ................................................................................................................................................... 12
• TERMINAL .................................................................................................................................................... 12
CONVERSIONES............................................................................................................................................................. 13
• CONVERSIÓN DE CADENAS A TIPOS PRIMITIVOS ........................................................................................ 13
• CONVERSIÓN DE TIPOS PRIMITIVOS A CADENAS ........................................................................................ 13
• CONVERSIÓN ENTRE TIPOS PRIMITIVOS ..................................................................................................... 14
OPERACIONES ............................................................................................................................................................... 15
PRECEDENCIA DE OPERADORES ................................................................................................................................... 16
OPERADORES DE ASIGNACIÓN (INCREMENTALES O DECREMÉNTALES) ..................................................................... 16
HERENCIA...................................................................................................................................................................... 17
• EJEMPLO ...................................................................................................................................................... 18
DIFERENCIA MÉTODO Y FUNCIÓN ................................................................................................................................ 18
CLASES ABSTRACTAS..................................................................................................................................................... 19
• EJEMPLO ...................................................................................................................................................... 20
INTERFACES .................................................................................................................................................................. 21
• CARACTERISTICAS ........................................................................................................................................ 22
MODIFICADOR DE ACCESO ........................................................................................................................................... 23
VALORES DE RETORNO ................................................................................................................................................. 24
• TIPOS DE VALORES DE RETORNO ................................................................................................................ 24
ENCAPSULACIÓN .......................................................................................................................................................... 26
• VENTAJAS..................................................................................................................................................... 26
1
POLIMORFISMO ............................................................................................................................................................ 27
• EJEMPLO ...................................................................................................................................................... 27
• SOBRECARGA DE MÉTODOS (OVERLOADING) ............................................................................................ 29
• SOBREESCRITURA DE MÉTODOS (OVERRIDING) ......................................................................................... 30
o EJEMPLO .................................................................................................................................................. 30
CONSTRUCTOR ............................................................................................................................................................. 32
TABLAS DE VERDAD ...................................................................................................................................................... 33
UPCASTING & DOWNCASTING ..................................................................................................................................... 33
• UPCASTING .................................................................................................................................................. 33
• DOWNCASTING............................................................................................................................................ 33
PALABRAS RESERVADAS DE JAVA (KEYWORDS) ........................................................................................................... 34
• THIS .............................................................................................................................................................. 34
• FINAL ............................................................................................................................................................ 34
• SUPER........................................................................................................................................................... 35
• STATIC .......................................................................................................................................................... 37
NOTAS TIPOS DE DATOS...................................................................................................................................... 38
CADENAS....................................................................................................................................................................... 38
MÉTODOS........................................................................................................................................................... 39
DEFINICIÓN ................................................................................................................................................................... 39
NORMAS PARA EL NOMBRE DE UN MÉTODO .............................................................................................................. 39
EXPRESIONES LAMBDA ................................................................................................................................................. 39
MÉTODOS DE LA CLASE STRING ................................................................................................................................... 40
• INT LENGHT() ............................................................................................................................................... 40
• BOOLEAN EQUALS(STRING B) ...................................................................................................................... 40
• BOOLEAN EQUALSIGNORECASE(STRING B)................................................................................................. 40
• INT COMPARETO(STRING B) ........................................................................................................................ 40
• STRING TRIM() ............................................................................................................................................. 40
• CHAR CHARAT(INT POSICION) ..................................................................................................................... 40
• CHAR[] TOCHARARRAY() .............................................................................................................................. 40
• STRING SUBSTRING(INT A, INT B) ................................................................................................................ 41
• STRING SUBSTRING(INT DESDE) .................................................................................................................. 41
• INT INDEXOF(STRING CADENA) ................................................................................................................... 41
• INT LASTINDEXOF(STRING CADENA) ........................................................................................................... 41
• BOOLEAN STARTSWITH(STRING PREFIJO) ................................................................................................... 41
• BOOLEAN ENDSWITH(STRING SUFIJO) ........................................................................................................ 41
• STRING[] SPLIT(STRING PATRON) ................................................................................................................ 41
2
POO ................................................................................................................................................................... 42
DEFINICIÓN ................................................................................................................................................................... 42
CLASES .......................................................................................................................................................................... 42
CONTROLADORES DE FLUJO ................................................................................................................................ 43
IF ................................................................................................................................................................................... 43
SWITCH ......................................................................................................................................................................... 43
WHILE ........................................................................................................................................................................... 44
DO-WHILE ..................................................................................................................................................................... 44
FOR ............................................................................................................................................................................... 45
FOREACH....................................................................................................................................................................... 45
ARREGLOS .......................................................................................................................................................... 46
DEFINICIÓN ................................................................................................................................................................... 46
ESTRUCTURA................................................................................................................................................................. 46
MATRICES........................................................................................................................................................... 48
DEFINICIÓN ................................................................................................................................................................... 48
EJEMPLO ....................................................................................................................................................................... 49
MATRIZ DE 3 X 3 CON LOS NÚMEROS DEL 1 AL 9 ........................................................................................................ 49
LLENADO DE UNA MATRIZ............................................................................................................................................ 49
RECORRIDO DE UNA MATRIZ........................................................................................................................................ 50
COLECCIONES ..................................................................................................................................................... 52
ARRAYLIST ..................................................................................................................................................................... 52
• MÉTODOS .................................................................................................................................................... 53
o .GET() ....................................................................................................................................................... 54
o .ADD() ...................................................................................................................................................... 54
o .SIZE() ....................................................................................................................................................... 54
STACK - PILA .................................................................................................................................................................. 55
• MÉTODOS .................................................................................................................................................... 56
o .PUSH() ..................................................................................................................................................... 56
o .POP() ....................................................................................................................................................... 56
o .CLEAR() ................................................................................................................................................... 56
QUEUE - COLA............................................................................................................................................................... 57
• MÉTODOS .................................................................................................................................................... 58
o .ADD() ...................................................................................................................................................... 58
o .PEEK()...................................................................................................................................................... 58
o .POLL()...................................................................................................................................................... 58
HASHTABLE - DICCIONARIO .......................................................................................................................................... 59
• MÉTODOS .................................................................................................................................................... 60
3
o .PUT() ....................................................................................................................................................... 60
o .GET() ....................................................................................................................................................... 60
ARCHIVOS O DATA .............................................................................................................................................. 61
PROPERTY FILE .............................................................................................................................................................. 61
• PASOS PARA CREAR UN PROPERTY FILE ...................................................................................................... 61
• REGLAS PARA UN PROPERTY FILE ................................................................................................................ 61
• OBTENER DATOS DE UN PROPERTY FILE ..................................................................................................... 62
MANEJO DE ARCHIVOS ....................................................................................................................................... 63
LEER UN ARCHIVO POR MEDIO DE FILEREADER ........................................................................................................... 63
LEER UN ARCHIVO POR MEDIO DE BUFFERREAD ......................................................................................................... 63
CREAR UN ARCHIVO Y ESCRIBIR EN ÉL POR MEDIO DE FILEWRITER ............................................................................ 64
CREAR UN ARCHIVO Y ESCRIBIR EN ÉL POR MEDIO DE BUFFEREDWRITER ................................................................. 65
MANEJO DE EXCEPCIONES .................................................................................................................................. 66
DEFINICIÓN ................................................................................................................................................................... 66
¿QUE HACER PARA EL MANEJO DE EXCEPCIONES?...................................................................................................... 67
• AÑADIENDO EXCEPCIONES PARA QUE ALGO MÁS SE ENCARGUE DE ELLAS .............................................. 67
• USANDO TRY – CATCH - FINALLY ................................................................................................................. 68
• ARROJANDO EXCEPCIONES MANUALMENTE .............................................................................................. 69
DEBUGGING (DEPURACIÓN) ................................................................................................................................ 70
DEFINICIÓN ................................................................................................................................................................... 70
PASO A PASO ................................................................................................................................................................ 70
INTELLIJ .............................................................................................................................................................. 71
COMANDOS .................................................................................................................................................................. 71
OTROS ................................................................................................................................................................ 72
4
JAVA
DEFINICIÓN
• Java es un lenguaje fuertemente tipado (Cada variable debe estar asociada a un tipo de dato).
• Java es un lenguaje orientado a objetos.
INSTALACIÓN
5
VARIABLES
• CONSTANTE: Una variable constante es aquella que se inicializa en un valor y ese valor nunca cambia en el
recorrido del código.
• VARIABLE ESTÁTICA: Pertenece a la clase y no al objeto, y se inicializa solo una vez al inicio de una ejecución.
o Vamos a tener 1 sola copia de esa variable que va a ser compartida por todas las instancias de la
clase.
o Estas variables se inicializarán primero, antes de la inicialización de cualquier variable de instancia
o Para acceder, se accede directamente por el nombre de la clase y no se necesita hacer referencia a
ningún objeto.
o Ósea que, se puede acceder directamente con el nombre de la clase sin necesidad de crear un objeto.
o Son, esencialmente, variables globales.
o Cuando se declara un objeto, no se realiza una copia de una variable estática; En cambio, todas las
instancias de la clase comparten la misma variable estática.
6
TIPOS DE VARIABLES
PRIMITIVOS
o Contienen 1 solo valor e incluyen los tipos como los enteros, flotantes, caracteres, booleanos, etc.
o Como todo en Java es de tipado estático, es decir, se define el tipo de dato de la variable a la hora de
definir esta.
o El tipo de dato se escribe completamente en minúscula.
TIPOS DE VARIABLES
7
▪ NÚMEROS REALES: Es un tipo de dato para guardar números reales en coma flotante con
precisión simple y doble.
➢ Los números de punto flotante (También conocidos como “Flotantes”, “Dobles” o
“Números reales”).
➢ Se utiliza punto y no coma.
➢ Son 2 tipos:
❖ FLOAT: Entre -1.4E-45 a 3.4028235E8.
Para poner un decimal debemos poner una f F al final (1.0f).
Puede escribirse en notación científica.
✓ 2.12e3 = 2120
✓ 1.5e-10f = 0.00000000015f
RESUMEN
8
PALABRAS RESERVADAS DEL LENGUAJE
9
REFERENCIA
TIPOS DE VARIABLES
➢ Aunque también los String se pueden representar con una sintaxis especialmente
cómoda.
➢ Los String son siempre inmutables (No cambian).
➢ Un String es un arreglo.
➢ El tipo String tiene una característica especial, permite crear objetos también en la
literal entre comillas:
❖ String cadena = “Hola como estas”;
10
NORMAS PARA EL NOMBRE DE UNA VARIABLE
11
ENTRADAS DE DATOS
• Existen 2 formas globales de ingresar datos en un programa de Java, puede ser por medio de ventanas o de la
terminal.
VENTANAS
TERMINAL
12
CONVERSIONES
▪ FORMA 1:
➢ 1. Creamos la variable String donde vamos a convertir el dato primitivo.
➢ 2. Ingresamos la clase Wrapper del dato primitivo que vamos a convertir (Integer,
Double, etc.)
➢ 3. Invocamos el método toString
➢ 4. Ingresamos el dato primitivo dentro del paréntesis.
▪ FORMA 2:
➢ 1. Creamos la variable String donde vamos a convertir el dato primitivo.
➢ 2. Ingresamos la clase String para convertir el dato.
➢ 3. Invocamos el método valueOf y dentro del paréntesis ponemos el dato primitivo.
13
CONVERSIÓN ENTRE TIPOS PRIMITIVOS
o NÚMEROS:
▪ Debemos tener cuidado al convertir entre números cuidando los límites de cada tipo de dato.
▪ Para convertir entre número debo hacer un Cast, que es poner un paréntesis con el tipo de
dato que voy a convertir y al lado la variable que voy a convertir.
▪ Existen 2 tipos de conversión:
➢ IMPLICIT TYPE CASTING: Cuando convertimos archivos de tipo de dato pequeño o
del mismo tipo de dato hacia un tipo de dato mayor.
❖ Ejemplo: int i = s (s es un tipo short)
➢ EXPLICIT TYPE CASTING: Cuando convertimos archivos de tipo de dato más grandes
hacia un tipo de dato menor.
❖ Ejemplo:
14
OPERACIONES
• MAYOR: (1 > 2)
• MENOR: (1 < 2)
• IGUAL: (1 == 2)
• DIFERENTE: (1 != 2)
• Y: (1 && 2)
• O: (1 || 2)
15
PRECEDENCIA DE OPERADORES
o += : n = n + 1
o -= : n = n - 1
o *= : n = n * 1
o /= : n = n / 1
o %= : n = n % 1
o **= : n = n ** 1
16
HERENCIA
• En Java la herencia es, permitirle a una clase utilizar las mismas variables y los mismos métodos para un fin.
• La herencia es un mecanismo que permite la definición de una clase a partir de la definición de otra ya
existente.
• La herencia permite compartir automáticamente métodos y datos entre clases, subclases y objetos.
• La herencia está fuertemente ligada a la reutilización del código en la OOP.
o Esto es, el código de cualquiera de las clases puede ser utilizado sin más que crear una clase derivada
de ella, o bien una subclase.
• El concepto de herencia conduce a una estructura jerárquica de clases o estructura de árbol, lo cual significa
que en la POO todas las relaciones entre clases deben ajustarse a dicha estructura.
• En esta estructura jerárquica, cada clase tiene sólo una clase padre.
17
EJEMPLO
o Aquí vemos la clase Transporte con variables y funciones públicas para su uso en otras clases.
o Esta es la clase Aeronave que se encuentra en un archivo externo dentro del mismo paquete.
o Para que esta clase pueda usar las variables y las funciones de la clase Transporte añadimos:
▪ extends nombreClase
o Esta clase es la clase Main que se encuentra en un archivo externo dentro del mismo paquete.
o Aquí podemos ejecutar el código creando un objeto de la clase Aeronave y usando una función de la
clase Transporte.
• Un método es lo mismo que una función, pero el método es llamado por una variable.
o Método: .nombre()
o Función: nombre() (Se escribe antes que la lista para la cual es llamada, sin punto).
18
CLASES ABSTRACTAS
• Una clase abstracta es prácticamente idéntica a una clase convencional; las clases abstractas pueden poseer
atributos, métodos, constructores, etc.
• La principal diferencia entre una clase convencional y una clase abstracta es que la clase abstracta debe
poseer por lo menos un método abstracto.
o Un método abstracto no es más que un método vacío, un método el cual no posee cuerpo, por ende,
no puede realizar ninguna acción.
o La utilidad de un método abstracto es definir qué se debe hacer, pero no el cómo se debe hacer.
o No tiene cuerpo (Llaves): Sólo consta de signatura con paréntesis.
o Su signatura termina con un punto y coma.
o Sólo puede existir dentro de una clase abstracta.
▪ De esta forma se evita que haya métodos que no se puedan ejecutar dentro de clases
concretas.
▪ Visto de otra manera, si una clase incluye un método abstracto, forzosamente la clase será
una clase abstracta.
o Un método abstracto para Java es un método que nunca va a ser ejecutado porque no tiene cuerpo.
o Simplemente, un método abstracto referencia a otros métodos de las subclases.
o ¿QUÉ UTILIDAD TIENE UN MÉTODO ABSTRACTO?: Podemos ver un método abstracto como una
palanca que fuerza dos cosas:
▪ La primera, que no se puedan crear objetos de una clase.
▪ La segunda, que todas las subclases sobrescriban el método declarado como abstracto.
• En Java se dice que son clases abstractas aquellas clases base (Superclases) de las que no se permite la
creación de objetos.
• Para ello, se utiliza la palabra clave abstract.
• En una clase abstracta es posible definir métodos abstractos, los cuales se caracterizan por el hecho de que
no pueden ser implementados en la clase base.
• La diferencia principal radica en que no se pueden crear objetos de esta clase.
19
EJEMPLO
public Figura() {
this.numeroLados = 0;
}
o En este caso la clase posee un atributo, un constructor y un método, a partir de esta clase podré
generar la n cantidad de figuras que necesite, ya sean cuadrados, rectángulos, triángulos, círculos etc.
o Dentro de la clase encontramos el método área, método que se encuentra pensado para obtener el
área de cualquier figura, sin embargo, cómo sabemos todas las figuras poseen su propia fórmula
matemática para calcular su área.
o Si yo comienzo a heredar de la clase Figura todas las clases hijas tendrían que sobre escribir el
método área e implementar su propia fórmula para así poder calcular su área.
o En estos casos, en los casos donde la clase hija siempre deba que sobre escribir el método lo que
podemos hacer es convertir al método convencional en un método abstracto, un método que defina
qué hacer, pero no cómo se deba hacer.
o Ahora que el método área es un método abstracto la clase se convierte en una clase abstracta.
o Es importante mencionar que las clases abstractas pueden ser heredadas por la n cantidad de clases
que necesitemos, pero no pueden ser instanciadas (No resulta posible crear objetos de ese tipo en la
clase Main, sino que otras clases hereden métodos y atributos de ella).
o Para heredar de una clase abstracta basta con utilizar la palabra reservada extends.
o Al nosotros heredar de una clase abstracta es obligatorio implementar todos sus métodos abstractos,
es decir debemos definir comportamiento, definir cómo se va a realizar la tarea.
20
INTERFACES
• Una interfaz () es sintácticamente similar a una clase abstracta, en la que puede especificar uno o más
métodos que no tienen cuerpo ({}).
• Una interfaz puede tener metodos con una estructura definida solo si son Estáticos o Default:
o static void nombreMetodo(){}
o default void nombreMetodo(){}
• Esos métodos deben ser implementados por una clase para que se definan sus acciones.
• Por lo tanto, una interfaz especifica qué se debe hacer, pero no cómo hacerlo.
• Una vez que se define una interfaz, cualquier cantidad de clases puede implementarla.
• Además, una clase puede implementar cualquier cantidad de interfaces.
• Para implementar una interfaz, una clase debe proporcionar cuerpos (Implementaciones) para los métodos
descritos por la interfaz.
• Cada clase es libre de determinar los detalles de su propia implementación.
• Una interfaz es una lista de acciones que puede llevar a cabo un determinado objeto.
• ¿Eso no eran los métodos que se definen en una clase? Casi, en una clase además de aparecer los métodos
aparecía el código para dichos métodos, en cambio en un interfaz sólo existe el prototipo de una función, no
su código.
• Veámoslo con un ejemplo: Pensemos en un interfaz que en su lista de métodos aparezcan los métodos
despegar, aterrizar, servirComida y volar.
o Todos pensamos en un avión, ¿verdad? El motivo es sencillamente que avión es el concepto que
engloba las acciones que hemos detallado antes, a pesar de que existan muchos objetos avión
diferentes entre sí, por ejemplo, Boeing 747, Boeing 737, MacDonell-Douglas.
o Lo realmente interesante es que todos ellos, a pesar de pertenecer a clases distintas, poseen el
interfaz avión, es decir poseen los métodos detallados en la lista del interfaz avión.
o Esto significa también que a cualquier avión le podemos pedir que vuele, sin importarnos a que clase
real pertenezca el avión, evidentemente cada clase especificará como volará el avión (Porque
proporciona el código de la función volar).
21
CARACTERISTICAS
o Todos los métodos de una interfaz se declaran implícitamente como abstractos y públicos.
o Una clase abstracta no puede implementar los métodos declarados como abstractos, una interfaz no
puede implementar ningún método (ya que todos son abstractos).
o Una interfaz no declara variables de instancia.
o Una clase puede implementar varias interfaces, pero sólo puede tener una clase ascendiente directa.
o 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.
o Dos clases pueden implementar la misma interfaz de diferentes maneras, pero cada clase aún admite
el mismo conjunto de métodos.
▪ Por lo tanto, el código que tiene conocimiento de la interfaz puede usar objetos de cualquier
clase, ya que la interfaz con esos objetos es la misma.
o Sí una clase incluye una interfaz, pero no implementa completamente los métodos definidos por esa
interfaz, esa clase debe declararse como abstracta ().
▪ No se pueden crear objetos de dicha clase, pero se puede usar como una superclase
abstracta, lo que permite que las subclases proporcionen la implementación completa.
22
MODIFICADOR DE ACCESO
• En este gráfico hay representados paquetes que contienen clases, clases con rectángulos, las flechas indican
herencia entre clases y las clases que están coloreadas indican que tienen visibilidad de la propiedad y
método según el ámbito de acceso, la ubicación de la clase que accede y si hay una relación de herencia.
23
VALORES DE RETORNO
• Los métodos pueden realizar una función y no devolver un valor, lo que se indica con la cláusula void, o
pueden comportarse como una función y devolver un valor primitivo o una referencia a un objeto.
• En este caso, se pone delante del nombre del método el tipo o clase del valor devuelto.
• En algunas ocasiones, no es necesario que el método estático tenga que devolver un valor al finalizar su
ejecución.
o En este caso, el tipo de dato que debe indicar en la cabecera de declaración del método es el tipo
void y la sentencia return no viene seguida de ninguna expresión.
• Si no hay sentencia return dentro de un método, su ejecución continúa hasta que se alcanza el final del
método y entonces se devuelve la secuencia de ejecución al lugar dónde se invocó al método.
}
Hola
}
5
24
o QUE DEVUELVEN Y RECIBEN VALORES:
}
El resultado de la suma es: 13
25
ENCAPSULACIÓN
• Quiere decir que una clase encapsula todos sus atributos (Ósea que los hace privados y no puede acceder una
clase externa a ellos, solamente puede acceder otra clase a estos atributos a través de métodos (Getters y
Setters)).
o GETTER: Es una función o método que va a devolver el valor de un atributo privado (Dame ese valor).
o SETTER: Es una función o método que le va a asignar un valor a un atributo privado (Ponle este valor).
• Es acceder a atributos que están privados por medio de los métodos get y set.
• Este concepto consiste en la ocultación del estado o de los datos miembro de un objeto, de forma que sólo es
posible modificar los mismos mediante los métodos definidos para dicho objeto.
• Hace referencia a limitar el acceso a las variables de nuestras clases Java de tal forma que podamos tener un
mayor control sobre ellas.
• La encapsulación se trata más de “cómo” lograr una funcionalidad.
• La abstracción se trata más de “Qué” puede hacer una clase.
• Un simple ejemplo para entender esta diferencia es un teléfono móvil; donde la lógica compleja en la placa
de circuito está encapsulada en una pantalla táctil, y se proporciona la interfaz para abstraerla.
VENTAJAS
o La encapsulación vincula los datos con sus funcionalidades relacionadas; Aquí las funcionalidades
significan “métodos” y los datos significan “variables”.
o Entonces mantenemos variables y métodos en un solo lugar; Ese lugar es “clase”; La clase es la base
para la encapsulación.
o Con Java Encapsulation, puede ocultar (Restringir el acceso) a los miembros de datos críticos en su
código, lo que mejora la seguridad.
o Como mencionamos anteriormente, si un miembro de datos se declara “privado”, solo se puede
acceder a él dentro de la misma clase; Ninguna clase externa puede acceder al miembro de datos
(Variable) de otra clase.
o Sin embargo, si necesita acceder a estas variables, debe utilizar los métodos públicos “getter” y
“setter” .
26
POLIMORFISMO
EJEMPLO
o Como todos los objetos Gato y Perro son objetos Animales, podemos hacer lo siguiente:
27
o Creamos dos variables de referencia de tipo Animal y las apuntamos a los objetos Gato y Perro.
o Ahora, podemos llamar a los métodos makeSound().
o Como decía el polimorfismo, que se refiere a la idea de "tener muchas formas", ocurre cuando hay
una jerarquía de clases relacionadas entre sí a través de la herencia y este es un buen ejemplo.
o Por lo general diremos que existen 3 tipos de polimorfismo:
▪ SOBRECARGA: El más conocido y se aplica cuando existen funciones con el mismo nombre en
clases que son completamente independientes una de la otra.
▪ PARAMÉTRICO: Existen funciones con el mismo nombre, pero se usan diferentes parámetros
(Nombre o tipo).
❖ Se selecciona el método dependiendo del tipo de datos que se envíe.
▪ INCLUSIÓN: Es cuando se puede llamar a un método sin tener que conocer su tipo, así no se
toma en cuenta los detalles de las clases especializadas, utilizando una interfaz común.
o En líneas generales en lo que se refiere a la POO, la idea fundamental es proveer una funcionalidad
predeterminada o común en la clase base y de las clases derivadas se espera que provean una
funcionalidad más específica.
o Generalmente existen 2 tipo de polimorfismo: OVERLOADING y OVERRIDING.
28
SOBRECARGA DE MÉTODOS (OVERLOADING)
o Básicamente es cuando tenemos dentro de una misma clase más de 1 método con el mismo nombre,
pero diferentes armazones.
o Estos armazones pueden significar 2 cosas:
▪ Que el número de argumentos sea diferente.
▪ Que el tipo de datos sean diferentes.
o La sobrecarga de métodos es la creación de varios métodos con el mismo nombre, pero con diferente
lista de tipos de parámetros.
o Java utiliza el número y tipo de parámetros para seleccionar cuál definición de método ejecutar.
o Java diferencia los métodos sobrecargados con base en el número y tipo de parámetros o
argumentos que tiene el método y no por el tipo que devuelve.
o También existe la sobrecarga de constructores: Cuando en una clase existen constructores múltiples,
se dice que hay sobrecarga de constructores.
o ¿Y No es igual? para que sobrecargar si en ultimas se crea el mismo número de métodos?
▪ Por ejemplo, encender un motor; Y si tenemos diferentes tipos de encendido como el
eléctrico, encendido térmico, encendido de combustión etc.
▪ Donde los procesos son muy diferentes, pero en ultimas el objetivo es el mismo, pero cada
uno necesita ciertas características únicas para encender.
▪ Aquí podríamos aplicar la sobrecarga para no preocuparnos por llamar los métodos por su
nombre sino tan solo llamando al mismo, pero enviando los parámetros (Características)
propios de cada tipo de motor y listo, dependiendo de lo que mandemos java sabrá que
motor queremos iniciar.
/* Métodos sobrecargados */
int calculaSuma(int x, int y, int z){
...
}
int calculaSuma(double x, double y, double z){
...
}
29
SOBREESCRITURA DE MÉTODOS (OVERRIDING)
o Es cuando la clase padre y la clase hija tienen el mismo nombre y armazón, pero los métodos pueden
tener diferentes tipos de acciones.
o
o Estos armazones pueden significar 2 cosas:
▪ Que el número de argumentos sea diferente.
▪ Que el tipo de datos sean diferentes.
o Si yo tengo una clase padre, donde tengo un método declarado y tengo una clase hijo, donde quiero
yo definir nuevamente este método, lo puedo hacer sobrescribiéndolo.
o Ósea que creo un objeto desde una clase, pero utilizando el método en una clase distinta con una
ejecución diferente.
o La Sobreescritura es la forma por la cual una clase que hereda puede redefinir los métodos de su
clase Padre, de esta manera puede crear nuevos métodos con el mismo nombre de su superclase.
o Las subclases emplean la sobreescritura de métodos la mayoría de las veces para agregar o modificar
la funcionalidad del método heredado de la clase padre.
o Para sobrescribir un método en una clase hacemos lo siguiente:
▪ 1. Heredamos la clase de la cual queremos sobrescribir con extends en la clase.
▪ 2. Nos paramos en la clase donde vamos a sobrescribir el método existente.
▪ 3. Clic Derecho dentro de la clase/ Source/ Override/Implement Methods…
▪ 4. Seleccionamos el método que queremos sobrescribir.
▪ 5. Podemos eliminar super().
▪ 6. Modificamos el método a nuestro gusto.
EJEMPLO
▪ Esta es la clase Circulo, que hereda las variables y los métodos de la clase Figura, pero donde
sobreescrimos el método de area().
@Override
public void area() {
System.out.println("R2 * D");
}
}
30
▪ Este es el Main de la aplicación, donde creamos un objeto de la clase Figura, pero como si
fuera un Circulo.
R2 * D
31
CONSTRUCTOR
• Por defecto toda clase tiene un constructor sin parámetros cuyo identificador coincide con el de la clase y
que, al ejecutarse, inicializa el valor de cada atributo de la nueva instancia: los atributos de tipo primitivo se
inicializan a 0 o false, mientras que los atributos de tipo objeto (referencia) se inicializan a null.
• Los constructores son métodos que se llaman automáticamente a la hora de crear un objeto a partir de una
clase, no necesitan llamar un método en particular para ejecutarse, solo con crear el objeto de una clase se
activan.
• Los constructores son inicializadores.
• Los constructores los usamos cuando queremos ejecutar una tarea al principio de la clase.
• El constructor es similar a un método.
• El nombre del constructor siempre es igual al nombre de la clase.
• El constructor puede tomar argumentos, pero nunca retornar un valor.
• Los constructores son llamados automáticamente cuando creamos el objeto de una clase.
• Pueden existir varios constructores, pero siguiendo las reglas de la sobrecarga de funciones.
• De entre los constructores que existan, tan sólo uno se ejecutará al crear un objeto de la clase.
• Dentro del código de un constructor generalmente suele existir inicializaciones de variables y objetos, para
conseguir que el objeto sea creado con dichos valores iniciales.
• Para definir los constructores se emplea la siguiente sintaxis:
• Para modifVisibilidad se aplica las mismas normas que para atributos y métodos:
o public: indica que es un método accesible a través de una instancia del objeto.
o private: indica que a través de una instancia no es accesible el método. Al heredar el método se
convierte en inaccesible.
o protected: indica que a través de una instancia no es accesible el método. Al heredar si se puede usar
desde la clase derivada.
o Sin especificar: indica visibilidad de paquete, se puede acceder a través de una instancia, pero sólo de
clases que se encuentren en el mismo paquete.
32
TABLAS DE VERDAD
• True: 1.
• False: 0.
• not True: Negación de la verdad (Es la mentira).
• not False: Negación de la mentira (Es la verdad).
• AND (Y): Viene de conjunto, sinónimo de unido, contiguo o cercano (Agrupa uniendo).
• OR (O): Viene de disyunto, sinónimo de separado, apartado o distante (Agrupa separando).
UPCASTING
DOWNCASTING
33
PALABRAS RESERVADAS DE JAVA (KEYWORDS)
THIS
o Con la ayuda de esta palabra, podemos diferenciar entre miembros locales y globales.
o Con ella podemos acceder a los miembros de nuestra propia la clase.
FINAL
o Puede usarse para especificar que una variable es constante (No cambia).
o Puede usarse con las clases para que no puedan heredar hacia otras clases.
o Puede usarse con métodos para que no puedan sobrescribirse.
34
SUPER
o Con esta palabra podemos acceder desde una clase hija, a las variables de la clase padre.
o Con esta palabra podemos acceder desde una clase hija, a los métodos de la clase padre en caso de
que sobrescribamos alguno.
35
o Con esta palabra podemos acceder desde una clase hija, al constructor de la clase padre
explícitamente.
36
STATIC
o Con esta palabra podemos llamar miembros de una clase sin tener que crear un objeto ni heredar de
esa clase.
o En si se usa para compartir múltiples objetos.
o Los métodos estáticos solo pueden llamar variables estáticas.
37
NOTAS TIPOS DE DATOS
CADENAS
38
MÉTODOS
DEFINICIÓN
EXPRESIONES LAMBDA
• Una expresión Lambda es una función anónima (Una función sin nombre y que no pertenece a ninguna
clase).
• Para crear una expresión Lambda necesitamos especificar los parámetros de entrada (Si hay) en la parte
izquierda del operador lambda ->, y poner la expresión o bloque de argumentos en la parte derecha del
operador.
• Para utilizar la expresión lambda, es necesario crear una interfaz funcional propia o utilizar la interfaz
funcional predefinida que proporciona Java.
o Una interfaz con un solo método abstracto es llamada una interfaz funcional.
39
MÉTODOS DE LA CLASE STRING
INT LENGHT()
lenght()
BOOLEAN EQUALS(STRING B)
equals(cadena)
BOOLEAN EQUALSIGNORECASE(STRING B)
equalsIgnoreCase(cadena)
INT COMPARETO(STRING B)
compareTo(cadena)
STRING TRIM()
trim()
o Crea un nuevo objeto eliminado el espacio en blanco que pudiera haber al principio o al final.
CHAR[] TOCHARARRAY()
toCharArray()
40
STRING SUBSTRING(INT A, INT B)
substring(int a, int b)
o Indica en que posición se encuentra el carácter (O cadena) indicando por primera vez, buscando
desde el principio.
o Indica en que posición se encuentra el carácter (O cadena) indicando por primera vez, buscando
desde el final.
41
POO
DEFINICIÓN
CLASES
Automovil.java
//Clase Automovil
//Atributos o Características
boolean estado = false;
//Método o Acción
public void encender() {
if(estado == true) {
System.out.println("El automóvil ya está encendido");
}else {
System.out.println("El automóvil ha encendido");
estado = true;
}
}
}
Main.java
//Función principal, todo lo que ejecute el programa, va a venir a hacerlo aquí
}
}
El automóvil ha encendido
42
CONTROLADORES DE FLUJO
IF
SWITCH
int var = 3;
switch(var) {
case 0:
System.out.println("La variable está vacía");
break;
case 1:
System.out.println("La variable Contiene el número 1");
break;
case 2:
System.out.println("La variable Contiene el número 2");
break;
default:
System.out.println("La variable es diferente");
break;
}
}
La variable es diferente
43
WHILE
• Se basa en repetir un bloque a partir de evaluar una condición lógica, siempre que esta sea True.
• Se debe planificar un momento en que la condición cambie a False y el While finalice su ejecución.
• Se usa cuando:
o No tenemos confirmado cuantas veces necesito iterar.
o El incremento o decremento no es constante.
int num = 0;
while(num < 10) {
System.out.println("Hola Mundo");
num++;
}
}
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
DO-WHILE
• A diferencia del While, este ciclo si se ejecuta por lo menos 1 vez y luego se evalúa la condición.
• Se puede poner un break para terminar la iteración.
• Podemos poner un continue para seguir la iteración.
do {
System.out.println("Hola");
num++;
}while(num < 10);
}
Hola
44
FOR
}
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
Hola Mundo
FOREACH
• Se usa para ejecutar iteraciones por cada elemento de un arreglo de datos, como una lista, arreglo, etc.
45
ARREGLOS
DEFINICIÓN
ESTRUCTURA
(int[] juguete = new int[10];)
arregloEnteros[0] = 10;
arregloEnteros[1] = 20;
System.out.println(arregloEnteros[0]);
}
10
46
• Para recorrer un arreglo entero, usamos el ciclo For.
arregloEnteros[0] = 10;
arregloEnteros[1] = 20;
arregloEnteros[2] = 30;
arregloEnteros[3] = 40;
arregloEnteros[4] = 50;
arregloEnteros[5] = 60;
arregloEnteros[6] = 70;
arregloEnteros[7] = 80;
arregloEnteros[8] = 90;
arregloEnteros[9] = 100;
47
MATRICES
DEFINICIÓN
• Gráficamente podemos representar la disposición real en memoria del array anterior así:
48
EJEMPLO
matriz[0][0] = 5;
matriz[1][2] = 8;
System.out.println(numeros[0][1]);
}
7
for(int j=0;j<matriz[0].length;j++){
matriz[i][j]=(i*matriz.length)+(j+1);
System.out.print(matriz[i][j]+" ");
System.out.println("");
}
49
RECORRIDO DE UNA MATRIZ
• Vemos que los bucles for van desde la posición 0 hasta el tamaño que tenga la matriz Java.
• En el caso de las filas será el tamaño general.
matriz.length;
matriz[x].length;
• Ahora, por cada fila vamos a imprimir los elementos, pero sin salto de línea.
• Es decir, utilizando un System.out.print:
• Además, hemos añadido, una tabulación, es decir, una separación entre cada posición.
• Recuerda que las tabulaciones se consiguen mediante el carácter escapado \t
• La tabulación la aplicaremos detrás de cada número, excepto del último.
• Es por ello que hacemos la validación:
if (y!=matriz[x].length-1) System.out.print("\t");
50
• Una vez impresa cada fila, ahora es cuando hay que dar un salto de línea mediante un System.out.println
• Ya solo nos quedará meter algún decorador adicional, al gusto, y el código final Java que nos imprimirá la
matriz quedará de la siguiente forma:
51
COLECCIONES
ARRAYLIST
• Es una estructura de datos, pero es un poco más amigable que el arreglo y las matrices.
• La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los
Arrays, con la ventaja de que el número de elementos que almacena, lo hace de forma dinámica, es decir,
que no es necesario declarar su tamaño como pasa con los Arrays.
• los ArrayList nos permiten añadir, eliminar y modificar elementos (Que pueden ser objetos o elementos
atómicos) de forma trasparente para el programador.
• Tienen la opción de que se les defina un tamaño al inicio, o a medida que se le ingresen elementos.
• Lo mejor es dejarlo vacío, para que sea más dinámico.
• Va a guardar la información en forma de lista.
• Ósea que vamos a poder acceder a cualquier elemento de la lista en cualquier momento, no necesitamos
como en un arreglo tener una posición definida y recorrer todo el arreglo mediante un ciclo).
• A diferencia de los arreglos, con el ArrayList podemos imprimir todos los elementos que tenga con solo
imprimir el nombre del ArrayList, no son necesarios ciclos para recórrelo.
//Definiéndole un tamaño
ArrayList datos = new ArrayList(40);
//Insertar datos
ArrayList datos1 = new ArrayList();
datos1.add(5);
datos1.add(10);
datos1.add(8);
10
3
52
MÉTODOS
import java.util.ArrayList;
// Copiar un ArrayList
ArrayList arrayListCopia = (ArrayList) nombreArrayList.clone();
53
.GET()
nombreArrayList.get(5);
▪ Sirve para mostrar el elemento que halla en la posición que pongamos dentro del paréntesis.
▪ Funciona igual que en los arreglos.
.ADD()
nombreArrayList.add(5);
.SIZE()
nombreArrayList.size();
▪ Sirve para mostrar el tamaño REAL de un ArrayList, ósea que muestra cuantos elementos
tiene realmente el ArrayList, no muestra el tamaño con el que fue definido inicialmente.
54
STACK - PILA
miPila2.push("Lola");
miPila2.push("Carmen");
miPila2.push("La mona Lisa");
String elemento;
elemento = (String) miPila2.pop();
System.out.println(elemento);
}
La mona Lisa
55
MÉTODOS
.PUSH()
pares.push(“Lola”)
.POP()
pares.pop()
La mona Lisa
.CLEAR()
pares.clear()
56
QUEUE - COLA
cola.add(5);
cola.add(10);
cola.add(15);
//Mostramos la cola
System.out.println(cola);
57
MÉTODOS
.ADD()
pares.add(10)
.PEEK()
pares.peek()
.POLL()
pares.poll()
[10, 15]
58
HASHTABLE - DICCIONARIO
• Es una estructura de datos dinámica que nos va a permitir guardar objetos dentro de ella.
• Es parecido al diccionario de Python.
• Cada elemento de la colección se encuentra identificado con una clave única.
• No puede haber 2 claves iguales en el mismo diccionario.
• No existen índices numéricos, sino claves asociativas a elementos.
• Los registros del diccionario se muestran de forma desordenada.
• No es recomendable poner valores con tilde en el diccionario.
tabla2.put(1, "Bienvenido");
tabla2.put(2, "Hola");
tabla2.put(5, "Adios");
59
MÉTODOS
.PUT()
diccionario.put(10, “Juegos”)
.GET()
diccionario.get(“Ferrari”)
400
{“Ferrari=400, 6=”Samsung”, 2=”Sony”, 1=”Apple”}
60
ARCHIVOS O DATA
PROPERTY FILE
• Es un archivo separado donde vamos a poner unos datos que pueden cambiar en el tiempo.
• Básicamente es un archivo desde el cual se toma información para alimentar el framework.
• La ventaja de este archivo es que no vamos a tener que cambiar dato por dato en el código, sino que solo
cambiamos el valor de una variable y automáticamente se cambia para todo el framework.
61
OBTENER DATOS DE UN PROPERTY FILE
62
MANEJO DE ARCHIVOS
• Primero debemos especificar donde se encuentra el archivo que queremos leer, luego creamos un objeto que
deja leer el archivo, pero solo carácter por carácter y los almacena en enteros, y luego creamos un ciclo para
recorrer todos los caracteres y convertirlos en char (Caracteres).
• Primero debemos especificar donde se encuentra el archivo que queremos leer, luego creamos un objeto que
deja leer el archivo, luego creamos otro objeto que deja leer líneas completas del archivo, y luego creamos un
ciclo para recorrer todas las líneas.
63
CREAR UN ARCHIVO Y ESCRIBIR EN ÉL POR MEDIO DE FILEWRITER
• Primero debemos especificar donde se va a crear el archivo, luego creamos un objeto que deja escribir en el
archivo, hay 2 formas, una para que lo sobrescriba y otra para que añada texto al archivo si ya existe; luego
escribimos lo que queramos en el archivo, luego lo guardamos, y por último lo cerramos.
64
CREAR UN ARCHIVO Y ESCRIBIR EN ÉL POR MEDIO DE BUFFEREDWRITER
• La diferencia, es que con este método tenemos un mayor control sobre lo que suceda con el texto (Como
añadir nuevas líneas); primero debemos especificar donde se va a crear el archivo, luego creamos un objeto
que deja escribir en el archivo, hay 2 formas, una para que lo sobrescriba y otra para que añada texto al
archivo si ya existe; luego escribimos lo que queramos en el archivo, luego lo guardamos, y por último lo
cerramos.
65
MANEJO DE EXCEPCIONES
DEFINICIÓN
• Son las acciones que queremos ejecutar en caso de que una excepción ocurra en el tiempo de ejecución.
• Si no manejamos excepciones, en el caso de que una línea falle, entonces mi ejecución va a parar en esa
línea, pero si manejamos excepciones, podemos continuar el flujo de ejecución.
• En Java podemos tener 2 tipos de error:
o COMPILE TIME (TIEMPO DE COMPILACIÓN): Es algo que ocurre cuando tenemos un error de sintaxis
o semántica en el código (Cuando nos aparece en el IDE subrayado con rojo).
o RUNTIME (TIEMPO DE EJECUCIÓN): Es algo que ocurre cuando la compilación no arrojo ningún
problema y al momento de la ejecución la prueba falla por lógica o problemas de interacción entre
líneas de código.
▪ también llamado excepción.
▪ Es el tipo de error que arroja excepciones.
▪ Existen 2 tipos de excepciones:
➢ CHECKED: Cuando el mismo compilador me dice que una línea de código puede tener
una excepción (Cuando me dice que la añada al método en cuestión).
➢ UNCHECKED: Cuando el compilador NO me dice que una línea de código puede tener
una excepción, pero al momento de ejecutar el código me aparece un error con su
excepción.
66
¿QUE HACER PARA EL MANEJO DE EXCEPCIONES?
o Esto sucede cuando tenemos una línea de código que podría arrojar una excepción, entonces
debemos declarar esta excepción a nivel de método, pero ya existe un manejo de excepciones
interno de Java para que trate estos casos.
▪ Ejemplo:
67
USANDO TRY – CATCH - FINALLY
▪ FINALLY: Contiene el código que queremos ejecutar en todos los casos (Pase TRY o CATCH).
o Si declaramos una Excepción general en un bloque CATCH y tenemos otros bloques CATCH con otras
excepciones, debemos mover el bloque CATCH con la excepción general para lo último, porque si no
nunca se van a arrojar las demás excepciones.
68
ARROJANDO EXCEPCIONES MANUALMENTE
o Es cuando consideramos que una condición especifica puede generar una excepción.
o Esto lo hacemos con el comando Throw.
o Necesita invocarse en el cuerpo del método.
o Solo se puede arrojar 1 excepción a la vez.
o Se debe crear el objeto de la clase de la excepción.
o La diferencia entre Throw y Throws es:
69
DEBUGGING (DEPURACIÓN)
DEFINICIÓN
PASO A PASO
• Básicamente creamos un BREAKPOINT (Ponemos un punto rojo al lado izquierdo de la línea que queremos
depurar), y luego cuando ejecutemos en el modo depurador tendremos los siguientes comandos:
o STEP INTO (F7): Nos redirige a la función o método que estemos invocando línea por línea.
o STEP OVER (F8): Con esto pasamos para la siguiente línea de código, pero si la línea invoca un
método o función la pasa por alto para seguir a la siguiente línea.
▪ Si cuando ejecutamos este comando no pasa para la siguiente línea, significa que tenemos un
error en esa línea.
▪ Y si lo volvemos a ejecutar nos va a arrojar la excepción que se disparó.
o STEP OUT (F8 + SHIFT): O STEP RETURN solo puede usarse si utilizamos STEP INTO, y lo que hace es
devolvernos a la línea donde invocamos el método o la función en la que nos encontremos parados.
70
INTELLIJ
COMANDOS
71
OTROS
• CONSTRUCTOR: Es el primero método que se ejecuta al crear un objeto del tipo de clase que sea.
• PARA QUE SIRVE NEW: Al momento de crear un objeto sin la sentencia new (Figura fig) lo único que estoy
haciendo es reservando el espacio de memoria para que este objeto pueda ser creada, pero en ningún
momento la estoy inicializando.
o Con la sentencia new (Figura fig = new Figura();) lo que hacemos nosotros es mandar a llamar al
constructor de esa clase y dentro de ese constructor, nosotros podemos definir cualquier cosa (Es
decir inicializar los datos de esa variable).
• PARA QUE SIRVE THIS: Con esto hacemos referencia a todas las variables o métodos que están dentro de la
misma clase.
o This nos sirve para hacer referencia a nuestros atributos sin prestarse a errores ni ambigüedades,
como, por ejemplo:
//Con esto le decimos que la variable nombre que esta por fuera sea igual a
la que está por dentro
this.nombre = nombre;
//No tiene ningún efecto, porque siempre estamos llamando a la misma variable
interna
nombre = nombre;
}
}
72
• Es importante la precedencia de las variables a la hora de imprimir en consola para que pueda saber qué tipo
de variable tiene mayor presencia.
73