3. • Empezar rápidamente
– C y C++
• Escribir menos código
– POO – Reutilización
• Escribir mejor código
– Buenas prácticas de
codificación
• Desarrollar con mayor
rapidez
– Más simple que C++
Anahí Salgado
@anncode
4. • Lenguaje más utilizado a
nivel mundial
• Google
• Amazon
• Empresas financieras
– Incrementa tus posibilidades
de conseguir trabajo
– Aumentará tus aspiraciones
profesionales
Anahí Salgado
@anncode
21. Instalando JDK
Variables de entorno
Vamos a Mi Pc -> Propiedades,
• Pestaña Opciones avanzadas,
seleccionamos Variables de
entorno -> Path
• Hacemos click en Modificar y
añadimos la ruta completa del
directorio
• “C:Program FilesJava
jdk1.7.0_51bin”.
Anahí Salgado
@anncode
25. El método Main
Método que es el punto de entrada
de una aplicación Java.
Anahí Salgado
@anncode
26. El método Main
• Declara todas las acciones realizadas por tu
aplicación
public static void main (String[] args) {
// acciones
}
• Sin él, la aplicación no se ejecutará, regresando
el siguiente error: In class NoMain: void
main(String args[]) no está definido.
Anahí Salgado
@anncode
27. El método Main
• El método main contiene dos modificadores
requeridos, public y static.
• No devuelve ningún valor, por lo que tiene un tipo de
retorno de vacío.
• El método principal tiene un identificador método
(nombre) de ”main".
• Acepta cero o más objetos de tipo String (String []
args). Esta sintaxis le permite escribir en los valores de
la línea de comandos para ser utilizado por el
programa mientras se está ejecutando.
Anahí Salgado
@anncode
28. Usando un IDE
(Eclipse)• IDE (Integrated
Development Enviroment):
• Es un entorno de
programación que ha sido
empaquetado como un
programa de aplicación.
• Editor de código
• Compilador
• Depurador
• Constructor de
interfaz Gráfica
Hola Mundo
Anahí Salgado
@anncode
30. Tipos de Datos
• DEFINICIÓN:
– Un espacio de memoria al que le asignamos
un contenido, puede ser un valor numérico,
de tipo carácter o cadena de caracteres.
• Por ejemplo:
– a = 8
– a = 56
– a = b
Anahí Salgado
@anncode
32. Tipos ENTEROSAnahí Salgado
@anncode
byte
Rango
-128 a 127
short
Rango
-32,768 a 32,7676
int
Rango
-2,147,483,648 to
2,147,483,647
long
Rango
-9,223,372,036,85
4,775,808
to
+9,223,372,036,85
4,775,807
1
byte
2
bytes
4
bytes
8
bytes
33. Tipos PUNTO FLOTANTEAnahí Salgado
@anncode
float
Rango
1.40129846432481707e-45
to
3.40282346638528860e+38
double
Rango
4.94065645841246544e-324d
to
1.79769313486231570e+308d
4
byte
8
bytes
36. Nombres en Java
• Java sigue la siguiente convención para
nombrar variables
– Es sensible al uso de mayúsculas y minúsculas
– Debe comenzar con una letra, se permite usar $ y “_”
– Las letras posteriores pueden ser letras, números, $ y “_”
– Por convención se debe usar la técnica “camello”
– También por convención, las constantes se escriben en
mayúsculas y contienen “_”.
Anahí Salgado
@anncode
39. Cast
• Un Cast es una operación en Java que:
– Da como resultado una variable con un tipo
de datos diferente a su fuente.
– Puede usarse entre tipos de datos
primitivos, instancias de una clase y tipos de
objetos primitivos.
Anahí Salgado
@anncode
41. Cast a tipos primitivos
• Se puede realizar el cast para todos los
tipos de datos primitivos, con excepción
de boolean.
• A menudo, el tipo cast de tipos primitivos
se realiza en situaciones donde el tipo
del resultado es más grande que su tipo
original.
Anahí Salgado
@anncode
42. Cast a tipos primitivos
• Por lo tanto, a menudo se puede usar un
byte o char como un int, un int como un
long, un int como un float y como un
doble también.
Anahí Salgado
@anncode
44. Arrays
• Los arreglos se pueden definir como
objetos en los que podemos guardar mas
de una variable
Anahí Salgado
@anncode
45. Arrays
• La estructura de declaración de un
arreglo es la siguiente:
tipo_dedato[] nombre_variable;
tipo_dedato nombre_variable[];
Anahí Salgado
@anncode
46. Arrays. Definir tamaño
• Para asignar a un arreglo su tamaño o
capacidad, se hace de la siguiente
forma:
arreglo = new tipo_dedato[capacidad];
Anahí Salgado
@anncode
47. Arrays. Asignar valores
• Una vez se tiene declarado un arreglo, y
al mismo se le ha asignado un tamaño o
capacidad, podemos accesar a los
datos dentro del mismo y asignarle
valores.
arreglo[indicador] = valor;
Anahí Salgado
@anncode
49. Operadores aritméticos
• Son los símbolos que se usan para
realizar aritmética básica en el lenguaje
de programación java
Anahí Salgado
@anncode
50. Concatenación de cadenas
• El operador + puede usarse para
agregar o concatenar cadenas
• Unión de dos elementos.
System.out.println (“El balance de la cuenta es: “ +
balance );
Anahí Salgado
@anncode
52. Operadores de incremento y
decremento
• Incremento: Se usan para agregar un 1 al
valor de la expresión
++
• Decremento: Se usan para substraer un 1
del valor de la expresión.
--
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
53. Prefijo y postfijo
• Un prefijo se refiere a colocar un
operador antes del operando
++i
--i
• Un posfijo se refiere a colocar un
operador después del operando.
i++
i--
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
55. Equidad y operadores relacionales
• Todas las expresiones creadas con equidad y
operadores relacionales regresaran un valor
booleano, dependiendo si la comparación se
realiza o no.
Anahí Salgado
@anncode
56. Equidad y operadores relacionales
• Hace uso de dos operandos, uno en cada lado
del operador.
• Los operadores de equidad se describen a
continuación:
Anahí Salgado
@anncode
57. • Los operadores relacionales se
describen a continuación:
Equidad y operadores relacionales
Anahí Salgado
@anncode
58. • Combinan expresiones que regresar un
valor boolean
AND &&
OR ||
NOT !
Operadores lógicos
Anahí Salgado
@anncode
60. CONTROL FLUJO
Anahí Salgado
@anncode
Las sentencias de código en java son ejecutadas secuencialmente
desde arriba hasta abajo en el orden en que van apareciendo.
Sin embargo podemos controlar el flujo usando sentencias
condicionales, ciclos, etc.
61. If/Else
• Un condicional es una expresión
booleana.
• La sentencia se ejecuta solamente si
la expresión booleana es verdadera.
if (condición) {
instrucciones
} else {
instrucciones
}
Anahí Salgado
@anncode
62. Switch
• A diferencia de sentencias if / else, la
sentencia switch puede tener un
número de posibles rutas de
ejecución
Anahí Salgado
@anncode
63. Cliclo While
• Se ejecuta continuamente un bloque
de código mientras una condición
particular, es cierto. Su sintaxis se
puede expresar como:
while (condicion) {
//instrucciones
}
Anahí Salgado
@anncode
64. Cliclo For
• La sentencia proporciona una forma
compacta para iterar sobre un rango
de valores.
for (inicializa; fin-condicion; incremento) {
instrucciones
}
Anahí Salgado
@anncode
65. Cliclo For extendido
foreach
• Es más fácil para recorrer colecciones
de datos sin necesidad de conocer o
definir el número de elementos a
recorrer
for ( TipoDato elemento : coleccion ) {
Instrucciones
}
Anahí Salgado
@anncode
69. Programación Orientada a
Objetos
Definir un Dominio del Problema
PROBLEM DOMAIN
Recopilación de requisitos del cliente y
tener por escrito un alcance
¿Qué queremos lograr?
Anahí Salgado
@anncode
71. Programación Orientada a
Objetos
Identificar mis objetos
Anahí Salgado
@anncode
• Pueden ser Físicos o Conceptuales
• Los objetos tienen atributos (características)
• tamaño
• nombre
• forma
• representan el estado del objeto
• Los objetos tienen operaciones (las cosas
que puede hacer el objeto)
72. Programación Orientada a
Objetos
Anahí Salgado
@anncode
• Los nombres de los objetos por lo general son
sustantivos
cuenta, cliente
• Los atributos de los objetos también
• Las operaciones suelen ser verbos o
sustantivo y verbo
mostar, Enviar Pedido
73. Programación Orientada a
Objetos
Anahí Salgado
@anncode
• Vehiculo
atributos:
• matricula
• marca
• modelo
• año
comportamiento:
• arrancar
• frenar
• reversa
74. Programación Orientada a
Objetos
Anahí Salgado
@anncode
• Diseñando un modelo de Clase
• Una Clase es la forma en como defines tu
objeto
• Las Clases son descriptivas – plantillas
75. Programación Orientada a
Objetos
Anahí Salgado
@anncode
• Clase Vehiculo
atributos:
• matricula
• marca
• modelo
• año
comportamiento:
• arrancar
• frenar
• reversa
77. Variables ≠ Objetos
• Variables son entidades
elementales (muy
sencillas)
– Un número
– Un carácter
– Un valor verdadero
falso
• Objetos son entidades
complejas que pueden
estar formadas por la
agrupación de muchas
variables y métodos.
Anahí Salgado
@anncode
79. Declaración de métodos
• Una declaración de un método es un elemento de
código en Java que:
– Consiste de cuatro partes: tipo de datos de regreso,
nombre, argumentos y cuerpo entre llaves.
public int suma (int a int b)
Anahí Salgado
@anncode
mod. acceso valor regreso nombre argumentos
80. Declaración de métodos
– Tiene un valor de regreso explícitamente invocado
en su cuerpo usando la palabra reservada return.
– No regresa ningún valor si es declarado void.
– No puede declararse dentro de otro método.
public int suma(int a int b){
return a+b;
}
Anahí Salgado
@anncode
82. Constructor
Anahí Salgado
@anncode
• Un constructor es un conjunto se sentencias que:
– Crea nuevas instancias de una clase.
– Tiene el mismo nombre que la clase que inicializa.
– Usa la palabra reservada new para invocarlo.
– Usa cero o más argumentos contenidos dentro de
los paréntesis que siguen al nombre.
– No regresa un valor.
• La sintaxis para llamarlo es:
TipoClase variable = new TipoClase(argumentos);
83. Getters y Setters
• Un conjunto de métodos se crean por lo
general en una clase para leer/escribir
específicamente los valores de las variables
miembro.
• Estos se llaman getters - se utilizan para
obtener los valores
• Y setters - se utilizan para cambiar los valores
de las variables miembro.
Anahí Salgado
@anncode
84. Getters y Setters
• Los getters y setters son cruciales en las
clases de Java, ya que se utilizan para
gestionar el estado de un objeto.
Anahí Salgado
@anncode
85. List
• Una list es una interfaz del framework de
collections de Java que:
– Contiene datos en un orden definido y
puede tener elementos duplicados.
– Tiene implementaciones generales de
ArrayList y Vector.
– Requiere del paquete java.util
– Almacena elementos por medio de un
índice entero, iniciando con cero.
– Extiende a la interfaz Collection.
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
86. Métodos de la interfaz list
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
87. Clases que implementan la
interfaz List
• La implementación general de la interfaz
List son las clases ArrayList y Vector.
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
88. Clases que implementan la
interfaz List
• La clase ArrayList almacena un arreglo que
puede cambiar de tamaño, tiene una
capacidad especifica que crece
automáticamente.
Ing. Anahí Salgado - @anncode
ArrayList a = new ArrayList();
a.add("Lenguaje");
a.add(3);
a.add('a');
a.add(23.5);
Anahí Salgado
@anncode
89. Clases que implementan la
interfaz List
• Un vector es similar a un array, la
diferencia estriba en que un vector crece
automáticamente cuando alcanza la
dimensión inicial máxima.
• Además, proporciona métodos
adicionales para añadir, eliminar
elementos, e insertar elementos entre
otros dos existentes.
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
90. Clases que implementan la
interfaz List
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
91. ¿Cómo obtener datos de un List?
• La interfaz List provee de múltiples
formas para la obtención de datos. El
método más común para obtener los
datos es get. Este método permite
obtener un elemento de una lista por
medio de un índice.
• miLista.get(i);
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
92. Extendiendo una clase
• En algunas circunstancias, es necesario
utilizar el estado y comportamiento de
una clase en conjunto con otras clases.
• La jerarquía de herencia en java permite
tener esta opción al escribir código.
Anahí Salgado
@anncode
93. Herencia
Ing. Anahí Salgado - @anncode
• Se establece una relación padre-hijo
entre dos objetos diferentes.
• La idea de la herencia es permitir la
creación de nuevas clases basadas
en clases existentes.
Anahí Salgado
@anncode
94. Herencia
Ing. Anahí Salgado - @anncode
• La herencia sirve para crear objetos
que incorporen propiedades y
métodos de otros objetos.
• Así podremos construir unos objetos
a partir de otros sin tener que
reescribirlo todo.
Anahí Salgado
@anncode
95. Subclase y Súper Clase
• Una subclase es una clase que:
– Hereda de una súper clase.
– Es declarada con la palabra reservada extends
– Puede acceder miembros de la súper clase con
el mismo nombre con la palabra super y la
notación punto.
– Se debe tener una implementación de los
métodos de la superclase y constructores en su
cuerpo.
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
97. Miembros heredados en la
subclase
• Una subclase hereda todos los miembros
de su súper clase que están declarados
como public o protected.
• Los miembros heredados pueden tener
múltiples formas dentro de la subclase y
superclase, esto se conoce como
polimorfismo.
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
98. Sobreescritura de constructores
• La sobreescritura de constructores es la
definición de un constructor en una
subclase usando los miembros
heredados de la superclase, con
argumentos diferentes.
• Tu sobrescribes constructores
simplemente cambiando cualquier
argumento que sea necesario.
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
99. Sobreescritura de constructores
• El constructor de la subclase invoca al
constructor de la superclase.
• Para ello se incluye, obligatoriamente, la
palabra clave super como primera línea
del constructor de la subclase.
• La palabra super irá seguida de paréntesis
dentro de los cuales pondremos los
parámetros que requiera el constructor de la
superclase al que queramos invocar.
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
101. Polimorfismo
• Posibilidad de construir varios métodos
con el mismo nombre, pero con relación
a la clase a la que pertenece cada uno,
con comportamientos diferentes.
Anahí Salgado
@anncode
102. Implementando Interfaces
• En Java una interface es una clase
abstracta pura, es decir una clase donde
todos los métodos son abstractos (no se
implementa ninguno).
• Permite al diseñador de clases establecer
la forma de una clase (nombres de
métodos, listas de argumentos y tipos de
retorno, pero no bloques de código).
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
104. Streams
• En Java la información se escribe y lee
de diferentes lugares a través del uso de
streams (flujos).
• El paquete java.io contiene muchas
clases streams. Dependiendo de que tipo
de I/O se necesita, se puede ocupar el
stream más adecuado.
Anahí Salgado
@anncode
105. Streams
• Entre una fuente y un destino fluye una
secuencia de datos
Anahí Salgado
@anncode
107. Input Stream
• Los streams de entrada se usan para leer
bytes en un programa. La fuente de los
datos puede ser un archivo, un soquet u
otra parte del programa.
Anahí Salgado
@anncode
108. Input Stream
• Java provee otros input stream que extienden la
funcionalidad de los anteriores para hacer la
lectura más conveniente.
• Entre las clases se tienen:
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
109. OutputStreams
• Los output streams se usan para escribir
bytes de datos a un destino.
• Para crear un nuevo output stream,
necesitas especificar un destino para los
datos.
Anahí Salgado
@anncode
110. OutputStreams
• Java a su vez provee otros output stream que
extienden la funcionalidad de los anteriores
para hacer la escritura más conveniente.
• Entre las clases se tienen:
Anahí Salgado
@anncode
111. Readers
• Los readers permiten leer datos en una
aplicación, estos datos se leen como
caracteres.
Anahí Salgado
@anncode
112. Readers
• Java provee otros readers que extienden
la funcionalidad de los anteriores para
hacer la lectura más conveniente.
Anahí Salgado
@anncode
113. Writers
• Los writers se usan para escribir caracteres a
un destino.
• Java a su vez provee otros writers que extienden la funcionalidad
de los anteriores para hacer la escritura más conveniente.
Anahí Salgado
@anncode
114. Convirtiendo entre bytes y
caracteres
• Los reader y writer trabajan con
caracteres
• Mientras que los stream trabajan con
bytes.
• Algunas veces es necesario ocupar
ambos para obtener la funcionalidad
requerida.
Anahí Salgado
@anncode
115. Convirtiendo entre bytes y
caracteres
• La clase InputStreamReader permite leer
caracteres de un flujo de bytes, por ejemplo:
InputStream in;
InputStreamReader rd = new InputStreamReader(in);
• La clase OutputStreamWriter permite escribir
caracteres aun flujo de bytes, por ejemplo:
OutputStream out;
OutputStreamWriter wt= new OutputStreamWriter(out);
Anahí Salgado
@anncode
120. Escribiendo Archivos
• La habilidad de escribir archivos
permite la persistencia de los datos.
• Algunas razones para escribir archivos
son:
– Dar al usuario la posibilidad de salvar su
trabajo.
– Respaldar datos.
– Exportar datos de un sistema a otro.
Anahí Salgado
@anncode
121. Pasos para escribir un archivo
• Los pasos que usualmente se siguen para escribir un
archivo son:
1. Abrir el archivo.
2. Escribir algunos datos.
3. Sí hay más datos, repetir el paso 2.
4. Cerrar el archivo.
Anahí Salgado
@anncode
122. Pasos para leer un archivo
Leer un archivo usualmente envuelve los
siguientes pasos:
1. Abrir el archivo
2. Leer algunos datos
3. Procesar los datos
4. Si hay más datos, repetir el paso 2.
5. Cerrar el archivo.
Anahí Salgado
@anncode
125. Hilos
Un Hilo es un trozo de código de nuestro
programa que puede ser ejecutado al
mismo tiempo que otro.
Anahí Salgado
@anncode
126. ¿Cuál de las dos opciones
siguientes elegirías?
• A) Descargar las imágenes 100
imágenes, haciendo esperar al
usuario con una pantalla de
“cargando” hasta que se
descargan todas. Luego podrá
ver el listado con las imágenes.
• B) Que mientras se
descargan las 100 imágenes,
el usuario pueda ir viendo y
usando las que ya se han
descargado.
Anahí Salgado
@anncode
127. Hilos – Threads
• Threading es la creación de múltiples
líneas de flujo de control a través de un
programa, o creando múltiples threads.
• Los creas extendiendo la clase Thread o
implementando la interfaz Runnable.
Anahí Salgado
@anncode
128. Hilos – Threads
Cuando se ejecuta, los threads
corren al mismo tiempo pero
realizan operaciones separadas.
Anahí Salgado
@anncode
129. Ciclo de vida de un thread
1. Comienza cuando una nueva instancia
de un thread se crea, llamando a este
estado New o Born.
2. Cuando es iniciado, el thread pasa al
estado Runnable o Ready.
Anahí Salgado
@anncode
130. Ciclo de vida de un thread
3. Después, se mueve al estado Running,
recibiendo tiempo del procesador de la
computadora.
4. Una vez estando en Running, el thread tiene
varias opciones para su siguiente estado
dependiendo de su propósito, como
Dead, Blocked, Deadlock,Waiting o
Sleeping.
Anahí Salgado
@anncode
132. Métodos de un thread
• Un objeto Thread se puede entender
como el panel de control sobre una
tarea o hilo de ejecución.
• Dispone de métodos para controlar el
comportamiento de las tareas
Anahí Salgado
@anncode
136. Ejecutando threads
• El método run invocado sobre un objeto thread no
hace nada. En su lugar, debes hacer uno de esas dos
cosas.
• Puedes crear una clase que extiende a la clase
Thread y entonces crear un nuevo método run para
esa clase.
Anahí Salgado
@anncode
137. • De forma alternativa, puedes crear un objeto
Runnable usando la interfaz Runnable.
• Una vez creado, puedes directamente usar el
método run de la interfaz Runnable.
Anahí Salgado
@anncode
Ejecutando threads
138. Prioridad
• Los threads se ejecutan en el orden de su
prioridad.
• Los threads con alta prioridad pueden
continuamente ganar los recursos del equipo a
los thread con prioridad más baja.
• Esto puede causar que los threads con baja
prioridad no se ejecuten.
Anahí Salgado
@anncode
139. Prioridad
Puedes trabajar con esta característica
usando sincronización y poniendo
horarios a los threads.
Anahí Salgado
@anncode
140. Prioridad
Puedes usar el método yield para poner en
calendarización y usar la sincronización
para definir la prioridad de los threads a través
del método setPriority.
Anahí Salgado
@anncode