SlideShare a Scribd company logo
1 of 148
Download to read offline
Java Básico
Anahí Salgado
@anncode
public class HolaMundo {
public static void main(String[] args) {
System.out.println(“Hola Mundo”);
}
}
¿Java?
Anahí Salgado
@anncode
•  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
•  Lenguaje más utilizado a
nivel mundial
•  Google
•  Amazon
•  Empresas financieras
–  Incrementa tus posibilidades
de conseguir trabajo
–  Aumentará tus aspiraciones
profesionales
Anahí Salgado
@anncode
Plan de Certificaciones
Anahí Salgado
@anncode
Anahí Salgado
@anncode
1991
Anahí Salgado
@anncode
Anahí Salgado
@anncode
Anahí Salgado
@anncode
James Goslin
Comunicación entre dispositivos
Anahí Salgado
@anncode
2009
Anahí Salgado
@anncode
Anahí Salgado
@anncode
•  Java es un lenguaje de
programación de alto nivel
–  Simple
–  Orientado a Objetos
–  Distribuido
–  Multihilo
–  Arquitectura Neutral
–  Portable
–  Alto desempeño
–  Seguro
Anahí Salgado
@anncode
Filosofía
Write Once
Anahí Salgado
@anncode
Run Anywere
¿Qué versión elegir?
Java EE Java SE Java ME
Anahí Salgado
@anncode
Java SE
Java Standard Edition
Anahí Salgado
@anncode
Componentes
Anahí Salgado
@anncode
JDK
Java
Development Kit
JRE
Java Runtime
Environment
Java Virtual Machine
Anahí Salgado
@anncode
Programando con Java
Verifica que lo tengas
instalado y configurado
$ java -version
$ javac
Anahí Salgado
@anncode
Instalando JDK
Anahí Salgado
@anncode
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
Hola Mundo
Anahí Salgado
@anncode
•  Editor de Textos
•  Consola de comandos (CMD)
Fases de programación
Editar
Anahí Salgado
@anncode
Compilar
Cargar
Verificar Interpretar1 2
3
4 4
Escribir código fuente
Compilador javac
Ejecución
Fases de programación
Anahí Salgado
@anncode
El método Main
Método que es el punto de entrada
de una aplicación Java.
Anahí Salgado
@anncode
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
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
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
Tipos de Datos
Anahí Salgado
@anncode
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
Tipos de Datos
Tipo Primitivo Tipo Objeto
Anahí Salgado
@anncode
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
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
Tipos TEXTOAnahí Salgado
@anncode
char
Rango
Unicode 2
byte
Tipos LOGICOSAnahí Salgado
@anncode
boolean
Rango
true o false 1
bit
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
Upper Camel Case
Lower Camel Case
CAST
Anahí Salgado
@anncode
En la programación hay situaciones donde
se necesita cambiar el tipo de dato
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
Cast
Anahí Salgado
@anncode
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
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
Arrays
Anahí Salgado
@anncode
Arrays
•  Los arreglos se pueden definir como
objetos en los que podemos guardar mas
de una variable
Anahí Salgado
@anncode
Arrays
•  La estructura de declaración de un
arreglo es la siguiente:
tipo_dedato[] nombre_variable;
tipo_dedato nombre_variable[];
Anahí Salgado
@anncode
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
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
OPERADORES
Anahí Salgado
@anncode
Una vez que el código fuente de Java tienen variables, las
podemos usar para crear y formar expresiones que
regresen valores.
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
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
Operadores de Asignación
=
+=
-=
/=
%=
x += 2; x = x + 2;
Anahí Salgado
@anncode
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
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
Incremento
Anahí Salgado
@anncode
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
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
•  Los operadores relacionales se
describen a continuación:
Equidad y operadores relacionales
Anahí Salgado
@anncode
•  Combinan expresiones que regresar un
valor boolean
AND &&
OR ||
NOT !
Operadores lógicos
Anahí Salgado
@anncode
Operadores lógicos
Anahí Salgado
@anncode
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.
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
Switch
•  A diferencia de sentencias if / else, la
sentencia switch puede tener un
número de posibles rutas de
ejecución
Anahí Salgado
@anncode
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
Cliclo For
•  La sentencia proporciona una forma
compacta para iterar sobre un rango
de valores.
for (inicializa; fin-condicion; incremento) {
instrucciones
}

Anahí Salgado
@anncode
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
PROGRAMACIÓN
ORIENTADA A OBJETOS
(POO)
Anahí Salgado
@anncode
Programación Orientada a
Objetos
Una nueva forma de pensar
Anahí Salgado
@anncode
Programación Orientada a
Objetos
Se trata de descomponer el problema
en subproblemas y más
subproblemas
Anahí Salgado
@anncode
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
Programación Orientada a
Objetos
Fijarnos en el
escenario del problema
y tratar de simularlo con objetos
Anahí Salgado
@anncode
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)
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
Programación Orientada a
Objetos
Anahí Salgado
@anncode
•  Vehiculo
atributos:
•  matricula
•  marca
•  modelo
•  año
comportamiento:
•  arrancar
•  frenar
•  reversa
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
Programación Orientada a
Objetos
Anahí Salgado
@anncode
•  Clase Vehiculo
atributos:
•  matricula
•  marca
•  modelo
•  año
comportamiento:
•  arrancar
•  frenar
•  reversa
Byte
Short
Integer
Long
Float
Double
Characer
Boolean
String
Tipos Datos Objeto
Anahí Salgado
@anncode
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
CODIGO
Anahí Salgado
@anncode
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
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
Control de acceso
Anahí Salgado
@anncode
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);
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
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
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
Métodos de la interfaz list
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
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
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
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
Clases que implementan la
interfaz List
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
¿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
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
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
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
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
Sobreescritura de constructores
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
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
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
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
Sobreescritura de constructores
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
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
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
Java I/O
Anahí Salgado
@anncode
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
Streams
•  Entre una fuente y un destino fluye una
secuencia de datos
Anahí Salgado
@anncode
Clasificación de Flujos
Anahí Salgado
@anncode
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
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
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
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
Readers
•  Los readers permiten leer datos en una
aplicación, estos datos se leen como
caracteres.
Anahí Salgado
@anncode
Readers
•  Java provee otros readers que extienden
la funcionalidad de los anteriores para
hacer la lectura más conveniente.
Anahí Salgado
@anncode
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
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
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
Jerarquía de flujos de bytes
Anahí Salgado
@anncode
Jerarquía de flujos de caracteres
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
Entrada de caracteres
Anahí Salgado
@anncode
Combinación de flujos
Anahí Salgado
@anncode
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
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
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
Java Básico
Anahí Salgado
@anncode
public class HolaMundo {
public static void main(String[] args) {
System.out.println(“Hola Mundo”);
}
}
Hilos
Threads
Anahí Salgado
@anncode
Hilos
Un Hilo es un trozo de código de nuestro
programa que puede ser ejecutado al
mismo tiempo que otro.
Anahí Salgado
@anncode
¿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
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
Hilos – Threads
Cuando se ejecuta, los threads
corren al mismo tiempo pero
realizan operaciones separadas.
Anahí Salgado
@anncode
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
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
Ciclo de vida de un thread
Anahí Salgado
@anncode
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
Métodos de un thread
Anahí Salgado
@anncode
Anahí Salgado
@anncode
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
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
•  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
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
Prioridad
Puedes trabajar con esta característica
usando sincronización y poniendo
horarios a los threads.
Anahí Salgado
@anncode
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
Prioridad
Ing. Anahí Salgado - @anncode
Anahí Salgado
@anncode
Anahí Salgado
@anncode
Java Básico
Anahí Salgado
@anncode
public class HolaMundo {
public static void main(String[] args) {
System.out.println(“Hola Mundo”);
}
}
JDBC
Java DataBase Connectivity
Anahí Salgado
@anncode
JDBC
•  Es una API que permite la ejecución de
operaciones sobre bases de datos desde
el lenguaje de programación Java.
Anahí Salgado
@anncode
Paquete java.sql
•  JDBC ofrece el paquete java.sql, en el
que existen clases muy útiles para
trabajar con bases de datos.
Anahí Salgado
@anncode
Diagrama E-R
Anahí Salgado
@anncode
Java Básico
Anahí Salgado
@anncode
public class HolaMundo {
public static void main(String[] args) {
System.out.println(“Hola Mundo”);
}
}

More Related Content

What's hot

Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Eduardo Lagares
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Core java concepts
Core java  conceptsCore java  concepts
Core java conceptsRam132
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Cuestionario
CuestionarioCuestionario
Cuestionariojpauly4
 
Variáveis - Linguagem C
Variáveis - Linguagem CVariáveis - Linguagem C
Variáveis - Linguagem Cprofjr
 
Estructuras repetitivas for y while
Estructuras repetitivas for y whileEstructuras repetitivas for y while
Estructuras repetitivas for y whilechristianlopezth
 
Presentación sobre java lenguaje de programacion
Presentación sobre java lenguaje de programacionPresentación sobre java lenguaje de programacion
Presentación sobre java lenguaje de programacionbautistavidalalberto
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Ricardo Longa
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetosClara Patricia Avella Ibañez
 
DevOps - Cultura e Filosofia
DevOps - Cultura e FilosofiaDevOps - Cultura e Filosofia
DevOps - Cultura e FilosofiaJônatan Gouveia
 

What's hot (20)

Preguntas de examen
Preguntas de examenPreguntas de examen
Preguntas de examen
 
Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
Core java concepts
Core java  conceptsCore java  concepts
Core java concepts
 
Java
JavaJava
Java
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Variáveis - Linguagem C
Variáveis - Linguagem CVariáveis - Linguagem C
Variáveis - Linguagem C
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Estructuras repetitivas for y while
Estructuras repetitivas for y whileEstructuras repetitivas for y while
Estructuras repetitivas for y while
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Presentación sobre java lenguaje de programacion
Presentación sobre java lenguaje de programacionPresentación sobre java lenguaje de programacion
Presentación sobre java lenguaje de programacion
 
Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)Android - Programação para dispositivos móveis (Aula 1)
Android - Programação para dispositivos móveis (Aula 1)
 
9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos9 Curso de POO en java - variables, constantes y objetos
9 Curso de POO en java - variables, constantes y objetos
 
Introdução a java
Introdução a javaIntrodução a java
Introdução a java
 
DevOps - Cultura e Filosofia
DevOps - Cultura e FilosofiaDevOps - Cultura e Filosofia
DevOps - Cultura e Filosofia
 
POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 

Viewers also liked

Viewers also liked (13)

Manual de java basico
Manual de java basicoManual de java basico
Manual de java basico
 
tutorial Java EE
tutorial Java EEtutorial Java EE
tutorial Java EE
 
Motor CA 2º Bto
Motor CA 2º BtoMotor CA 2º Bto
Motor CA 2º Bto
 
Control de calidad en procesos de confección
Control de calidad en procesos de confecciónControl de calidad en procesos de confección
Control de calidad en procesos de confección
 
Mantenimiento De Motores Electricos
Mantenimiento De Motores ElectricosMantenimiento De Motores Electricos
Mantenimiento De Motores Electricos
 
Mantenimiento máquinas taller confección.
Mantenimiento máquinas taller confección.Mantenimiento máquinas taller confección.
Mantenimiento máquinas taller confección.
 
PLAN DE MANTENIMIENTO PREVENTIVO PARA LA CORTADORA DELTA Y LA ASERRADORA LAPR...
PLAN DE MANTENIMIENTO PREVENTIVO PARA LA CORTADORA DELTA Y LA ASERRADORA LAPR...PLAN DE MANTENIMIENTO PREVENTIVO PARA LA CORTADORA DELTA Y LA ASERRADORA LAPR...
PLAN DE MANTENIMIENTO PREVENTIVO PARA LA CORTADORA DELTA Y LA ASERRADORA LAPR...
 
Trazo de polo cuellobox
Trazo de polo cuelloboxTrazo de polo cuellobox
Trazo de polo cuellobox
 
Trazo De Polo BáSico De Dama
Trazo De Polo BáSico De DamaTrazo De Polo BáSico De Dama
Trazo De Polo BáSico De Dama
 
Teoria de la produccion
Teoria de la produccionTeoria de la produccion
Teoria de la produccion
 
Mantenimiento a Motor Electrico
Mantenimiento a Motor ElectricoMantenimiento a Motor Electrico
Mantenimiento a Motor Electrico
 
U13 Arranque de motores eléctricos
U13 Arranque de motores eléctricosU13 Arranque de motores eléctricos
U13 Arranque de motores eléctricos
 
La Producción y Costos de Producción
La Producción y Costos de ProducciónLa Producción y Costos de Producción
La Producción y Costos de Producción
 

Similar to Java Basico Platzi

Clase 2 Variables Entorno y Pseudocodigo.pptx
Clase 2 Variables Entorno y Pseudocodigo.pptxClase 2 Variables Entorno y Pseudocodigo.pptx
Clase 2 Variables Entorno y Pseudocodigo.pptxLuisAlberto353863
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 
Giseproi curso de programación - sesión 7 - reglas de codificación
Giseproi   curso de programación - sesión 7 - reglas de codificaciónGiseproi   curso de programación - sesión 7 - reglas de codificación
Giseproi curso de programación - sesión 7 - reglas de codificacióngiseproi
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcursojorg_marq
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C SharpEdgardo Martinez
 
Introducción a programación con PHP
Introducción a programación con PHPIntroducción a programación con PHP
Introducción a programación con PHPyanburbano
 
Intro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaIntro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaDaniel Gómez
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...Eudris Cabrera
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07adrianpro
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosDoris Aguagallo
 
2. Introduccion Programabilidad Arquitectura IOT
2. Introduccion Programabilidad Arquitectura IOT2. Introduccion Programabilidad Arquitectura IOT
2. Introduccion Programabilidad Arquitectura IOTDavid Narváez
 

Similar to Java Basico Platzi (20)

Java basico
Java basicoJava basico
Java basico
 
JAVA
JAVAJAVA
JAVA
 
Clase 2 Variables Entorno y Pseudocodigo.pptx
Clase 2 Variables Entorno y Pseudocodigo.pptxClase 2 Variables Entorno y Pseudocodigo.pptx
Clase 2 Variables Entorno y Pseudocodigo.pptx
 
Introduccion a php
Introduccion a phpIntroduccion a php
Introduccion a php
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Aprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación PythonAprendizaje de Lenguaje de Programación Python
Aprendizaje de Lenguaje de Programación Python
 
Giseproi curso de programación - sesión 7 - reglas de codificación
Giseproi   curso de programación - sesión 7 - reglas de codificaciónGiseproi   curso de programación - sesión 7 - reglas de codificación
Giseproi curso de programación - sesión 7 - reglas de codificación
 
Clase 1
Clase 1 Clase 1
Clase 1
 
Clase1 introduccinalcurso
Clase1 introduccinalcursoClase1 introduccinalcurso
Clase1 introduccinalcurso
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Introducción a programación con PHP
Introducción a programación con PHPIntroducción a programación con PHP
Introducción a programación con PHP
 
Intro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - AlgoritmiaIntro. Lenguaje de Programación Java - Algoritmia
Intro. Lenguaje de Programación Java - Algoritmia
 
Introducción a JavaScript
Introducción a JavaScriptIntroducción a JavaScript
Introducción a JavaScript
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Lenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetosLenguajes de programación orientados a objetos
Lenguajes de programación orientados a objetos
 
2. Introduccion Programabilidad Arquitectura IOT
2. Introduccion Programabilidad Arquitectura IOT2. Introduccion Programabilidad Arquitectura IOT
2. Introduccion Programabilidad Arquitectura IOT
 

Java Basico Platzi

  • 1. Java Básico Anahí Salgado @anncode public class HolaMundo { public static void main(String[] args) { System.out.println(“Hola Mundo”); } }
  • 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
  • 13. •  Java es un lenguaje de programación de alto nivel –  Simple –  Orientado a Objetos –  Distribuido –  Multihilo –  Arquitectura Neutral –  Portable –  Alto desempeño –  Seguro Anahí Salgado @anncode
  • 15. ¿Qué versión elegir? Java EE Java SE Java ME Anahí Salgado @anncode
  • 16. Java SE Java Standard Edition Anahí Salgado @anncode
  • 18. Java Virtual Machine Anahí Salgado @anncode
  • 19. Programando con Java Verifica que lo tengas instalado y configurado $ java -version $ javac 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
  • 22. Hola Mundo Anahí Salgado @anncode •  Editor de Textos •  Consola de comandos (CMD)
  • 23. Fases de programación Editar Anahí Salgado @anncode Compilar Cargar Verificar Interpretar1 2 3 4 4 Escribir código fuente Compilador javac Ejecución
  • 24. Fases de programación 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
  • 29. Tipos de Datos 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
  • 31. Tipos de Datos Tipo Primitivo Tipo Objeto 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
  • 38. CAST Anahí Salgado @anncode En la programación hay situaciones donde se necesita cambiar el tipo de dato
  • 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
  • 48. OPERADORES Anahí Salgado @anncode Una vez que el código fuente de Java tienen variables, las podemos usar para crear y formar expresiones que regresen valores.
  • 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
  • 51. Operadores de Asignación = += -= /= %= x += 2; x = x + 2; 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
  • 67. Programación Orientada a Objetos Una nueva forma de pensar Anahí Salgado @anncode
  • 68. Programación Orientada a Objetos Se trata de descomponer el problema en subproblemas y más subproblemas 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
  • 70. Programación Orientada a Objetos Fijarnos en el escenario del problema y tratar de simularlo con objetos 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
  • 81. Control de acceso 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
  • 96. Sobreescritura de constructores 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
  • 100. Sobreescritura de constructores 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
  • 106. Clasificación de Flujos 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
  • 116. Jerarquía de flujos de bytes Anahí Salgado @anncode
  • 117. Jerarquía de flujos de caracteres Ing. Anahí Salgado - @anncode Anahí Salgado @anncode
  • 118. Entrada de caracteres Anahí Salgado @anncode
  • 119. Combinación de flujos 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
  • 123. Java Básico Anahí Salgado @anncode public class HolaMundo { public static void main(String[] args) { System.out.println(“Hola Mundo”); } }
  • 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
  • 131. Ciclo de vida de un thread 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
  • 133. Métodos de un thread Anahí Salgado @anncode
  • 135. Ing. Anahí Salgado - @anncode 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
  • 141. Prioridad Ing. Anahí Salgado - @anncode Anahí Salgado @anncode
  • 143. Java Básico Anahí Salgado @anncode public class HolaMundo { public static void main(String[] args) { System.out.println(“Hola Mundo”); } }
  • 145. JDBC •  Es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java. Anahí Salgado @anncode
  • 146. Paquete java.sql •  JDBC ofrece el paquete java.sql, en el que existen clases muy útiles para trabajar con bases de datos. Anahí Salgado @anncode
  • 148. Java Básico Anahí Salgado @anncode public class HolaMundo { public static void main(String[] args) { System.out.println(“Hola Mundo”); } }