Está en la página 1de 47

FUNDAMENTO DE PROGRAMACIÓN

JAVA
26/09/2018 www.ul.edu.co 2

Tipos de Soluciones

• Aplicaciones StandAlone
• Aplicaciones basadas Modelo Cliente/Servidor
• Aplicaciones Side Server (Web / Wap)
26/09/2018 www.ul.edu.co 3

Soluciones StandAlone

Lógica
Cliente

Lógica del
Negocio
Recursos
Locales

Sistema Op.
26/09/2018 www.ul.edu.co 4

Modelo Cliente / Servidor

process p process q

send m receiv e

Communic ation c hannel


Outgoing mes sage buffer Inc oming mes sage buffer
26/09/2018 www.ul.edu.co 5

Soluciones Side – Server (WEB)


26/09/2018 www.ul.edu.co 6

Soluciones Side- Server (WAP)

Módulo
Comunicaciones

CARRIER Lógica
aplicación

Sistema
Operativo

Cliente Servidor
26/09/2018 www.ul.edu.co 7

Soluciones Side- Server (WAP)


26/09/2018 www.ul.edu.co 8

Paradigmas de programación

Los programas están formados por:


• Código
• Datos
Modelo Orientado a procesos:
Serie de pasos lineales implementados en código
Modelo basado en objetos:
Datos que controlan el acceso al código
26/09/2018 www.ul.edu.co 9

Programación Orientada a Objetos


Principios básicos de la programación
Orientada a objetos:

• Abstracción (uso de jerarquías)


• Encapsulamiento
• Polimorfismo
26/09/2018 www.ul.edu.co 10

Tecnologías de Desarrollo de Software


Java es una de las Mejores tecnologías de
desarrollo de software a nivel de soluciones
standalone y distribuidas (100% basado en
objetos)
Ventajas:
• Existe una especificación java para cada necesidad especifica.
• Multiplataforma real
• Administración automática de la memoria
• Modelo de Seguridad
• corta curva de aprendizaje
• Recolector de Objetos huérfanos
26/09/2018 www.ul.edu.co 11


Servers  Java™ 2 Platform
Desktop
machines 
Optional
Packages
High-end
consumer

Low-end
Optional devices
Packages consumer
devices 
Java 2 Java 2 Smart-
Personal Profile
Enterprise Standard cards
Edition Edition Foundation Profile MIDP
(J2EE) (J2SE)
Java
CDC CLDC Card
APIs

Java Virtual Machine KVM CardVM

Java 2 Micro Edition (J2ME)


26/09/2018 www.ul.edu.co 12

Tipos de datos validos


• byte: 8 bits
• short: entero de 16 bits
• int: entero de 32 bits
• long: entero de 64 bits
• float: punto flotante de 32 bits
• double: punto flotante de 64 bits
• char: carácter ASCII
• boolean: true o false
26/09/2018 www.ul.edu.co 13

Tipos de operadores
• De asignación
• a+=b; a-=b; a*=b; a/=b; a%=b;
• Aritméticos
• unarios: a++; b- - ; binarios: a+b; a-b;
• Relacionales
• a>b; a<b; a>=b; b<=a;b==a; b!=a;
• Lógicos
• a && b; a||b;
• A nivel de bit
• a >> b; a << b; a & b; a | b;
26/09/2018 www.ul.edu.co 14

Palabras Reservadas I
abstract Especifica la clase o método que se va a implementar más tarde en una subclase.

boolean Tipo de dato que sólo puede tomar valores true o false.

break Sentencia de control para salirse de los bucles.

byte Tipo de dato que soporta valores en 8 bits.

byvalue Reservada para uso futuro.

case Se utiliza en las sentencias switch para indicar bloques de texto.

cast Reservada para uso futuro.

catch Captura las excepciones generadas pro las sentencias try.

char Tipo de dato que puede soportar caracteres Unicode sin signo en 16 bits.

class Declara una clase nueva.

const Reservada para uso futuro.

continue Devuelve el control a la salida de un bucle.

default Indica el bloque de código por defecto en una sentencia switch.

do Inicia un bucle del tipo do-while.

double Tipo de dato que soporta números en coma flotante, 64 bits.

else Indica la opción alternativa en una sentencia if.

extends Indica que una clase es derivada de otra o de una intefaz.

final Indica que una variable soporta un valor constante o que un método no se sobrescribirá.
26/09/2018 www.ul.edu.co 15

Palabras Reservadas II
finally Indica un bloque de código en una estructura try-catch que siempre se ejecutará.
float Tipo de dato que soporta un número en coma flotante de 32 bits.
for Utilizado para iniciar un bucle for.
future Reservada para uso futuro.
generic Reservada para uso futuro.
goto Reservada para uso futuro.
if Evalúa si una expresión es verdadera o falsa y la dirige adecuadamente.
implements Especifica que una clase implementa una interfaz.
import Referencia a otras clases.
inner Reservada para uso futuro.
instanceof Indica si un objeto es una instancia de una clase específica o implementa una interfaz específica.

int Tipo de dato que puede soportar un entero con signo de 32 bits.
interface Declara una interfaz.
long Tipo de dato que soporta un entero de 64 bits.
native Especifica que un método está implementado con código nativo (específico de la plataforma).

new Crea objetos nuevos.


null Indica que una referencia no se refiere a nada.
operator Reservada para uso futuro.
outer Reservada para uso futuro.
26/09/2018 www.ul.edu.co 16

Palabras Reservadas III


package Declara un paquete Java.
private Especificador de acceso que indica que un método o variable sólo puede ser accesible desde la clase en la que se está declarando.

protected Especificador de acceso que indica que un método o variable solo puede ser accesible desde la clase en la que está declarado ( o
una subclase de la clase en la que está declarada u otras clases del mismo paquete).
public Especificador de acceso utilizado para clases, interfaces, métodos y variables que indican que un tema es accesible desde la
aplicación (o desde donde la clase defina que es accesible).
rest Reservada para uso futuro.
return Envía control y posiblemente devuelve un valor desde el método que fue invocado.

short Tipo de dato que puede soportar un entero de 16 bits.


static Indica que una variable o método es un método de una clase (más que estar limitado a un objeto particular).

super Se refiere a una clase base de la clase utilizada en un método o constructor de clase.

switch Sentencia que ejecuta código basándose en un valor.


synchronized Especifica secciones o métodos críticos de código multihilo.
this Se refiere al objeto actual en un método o constructor.
throw Crea una excepción.
throws Indica qué excepciones puede proporcionar un método.
transiente Especifica que una variable no es parte del estado persistente de un objeto.
try Indica un bloque de código que es comprobado para las excepciones.
var Reservado para uso futuro.
void Especifica que un método no devuelve ningún valor.
volatile Indica que una variable puede cambiar de forma asíncrona.
while Inicia un bucle while.
26/09/2018 www.ul.edu.co 17

Permisos y Declaración de clases,


propiedades o métodos
• PROTECCIÓN DE ACCESO: Estos modificadores nos
indican en que partes de un programa podemos utilizar
los métodos y variables. Tenemos tres:
private: Solo tendrán acceso los de la misma
clase donde estén definidos.
public: Se puede hacer referencia desde
cualquier parte del programa.
protected: Se puede hacer referencia desde la
misma clase y las subclases.
26/09/2018 www.ul.edu.co 18

Nombre de Variables y Funciones


26/09/2018 www.ul.edu.co 19

Clases y Objetos
26/09/2018 www.ul.edu.co 20

Clases y Objetos
Como podemos ver en la imagen anterior la fábrica de objetos utiliza memoria del
sistema para fabricar los objetos, pero para fabricarlos necesita la información
pregrabada llamada clases, las clases son las que almacenan las propiedades y
métodos que contendrá un objeto.

Un objeto cambiará sus propiedades o las propiedades de otros objetos por medio
de los métodos. Los métodos que sólo pueden ejecutarse cuando el objeto existe,
son los denominados dinámicos, y los métodos que pertenecen a la clase son
denominados estáticos, porque pueden ser llamados sin necesidad de la existencia
de un objeto.
26/09/2018 www.ul.edu.co 21

Procedimiento Principal
El programa en ejecución inicia en un método estático ya que no existen
inicialmente objetos en nuestro programa, este método se llama main que se define
como:

Donde args es un vector o arreglo unidimensional que contendrá los argumentos


que hayan sido pasados al comando java después de las órdenes y el nombre de la
clase principal que alojará este método. El entorno de ejecución o la JVM fabricará
objetos de sistema que podrán ser utilizados llamando a métodos estáticos de
clases pertenecientes a la biblioteca de java.
26/09/2018 www.ul.edu.co 22

Salida por pantalla y entrada por teclado


Las secuencias de escape son aquellas combinaciones de caracteres que nos
permiten insertar un carácter especial que no es posible tipear con el teclado
estándar o que no es posible utilizar porque denota un trozo de texto, por ejemplo
las comillas dobles en el ejemplo hola mundo que están dentro de la función println.

System.out
El objeto System es parte de la biblioteca de Java y es instanciado o fabricado al
iniciar la JVM mucho antes que se comience a ejecutar nuestro programa. Este
almacena 3 objetos, son out, in y err.
26/09/2018 www.ul.edu.co 23

System.in
El objeto in que es una propiedad de System es de la clase o tipo InputStream, que
también es parte de la biblioteca de Java.

Leer líneas de la entrada estándar


Para leer líneas de la entrada estándar podemos utilizar una combinación de objetos
de la biblioteca que nos permitirán simplemente esperar a que el usuario ingrese
texto y presione enter, o podemos codificar la lectura secuencial de caracteres uno
en uno hasta que se detecte un salto de línea, tengamos en cuenta que java es
multiplataforma, y si el sistema operativo no es Linux, es probable que se introduzca
más de un carácter para el salto de línea lo cual incrementa la complejidad del
problema.
26/09/2018 www.ul.edu.co 24

Crear Objetos (de la biblioteca de Java)


En java para crear objetos utilizamos una palabra clave, new, esta misma crea un
objeto del tipo indicado a su derecha, repasemos del ejemplo anterior la siguiente
línea:

La clase Scanner de Java provee métodos para leer valores de entrada de varios
tipos y está localizada en el paquete java.util. Los valores de entrada pueden venir
de varias fuentes, incluyendo valores que se entren por el teclado o datos
almacenados en un archivo..

El propósito de pasar a System.in como argumento es conectar o establecer una


relación entre el objeto tipo Scanner, con nombre teclado en la declaración anterior,
y el objeto System.in, que representa el sistema estándar de entrada de información
en Java.
26/09/2018 www.ul.edu.co 25

Ejemplo
26/09/2018 www.ul.edu.co 26
26/09/2018 www.ul.edu.co 27

Crear Objetos (de la biblioteca de Java)


En java para crear objetos utilizamos una palabra clave, new, esta misma crea un
objeto del tipo indicado a su derecha, repasemos del ejemplo anterior la siguiente
línea:

La clase BufferedReader, pertenece a la biblioteca de Java “java.io” la cual fue


importada antes de la declaración de la clase LeerRenglones, InputStreamReader,
pertenece a la misma biblioteca.

El concepto de “BufferedReader br=” es una asignación y una declaración


simultánea, el signo “=” asigna a la variable un nombre de objeto de la izquierda el
contenido de la derecha. Eso quiere decir que “br” será una variable que apuntará a
un objeto del tipo BufferedReader, br no será un objeto, será el nombre con el que
accederemos al objeto en memoria ram, si en la siguiente línea repitiéramos otra
asignación a br, es decir “br=....” sin la declaración porque ya se sabe que es del tipo
BufferedReader, entonces la variable br apuntará a otro objeto del tipo
BufferedReader, el anterior sigue existiendo en memoria, pero será eliminado en la
próxima ejecución del recolector de basura de la JVM
26/09/2018 www.ul.edu.co 28

Leer líneas de la entrada estándar


26/09/2018 www.ul.edu.co 29

Paquetes
se utilizan para diferenciar una clase respecto de otras con el mismo nombre, si nos
ponemos a pensar sobre la cantidad de nombres diferentes de clases que podemos
poner a los tipos de objetos en nuestros programas es infinita, pero dos
programadores diferentes pueden llegar a usar dos veces el mismo nombre para
una misma clase, de esta manera podemos hacer que sólo las clases de objetos
que haremos visibles a otros programadores o que ejecutarán el componente
principal del programa (el método estático main) sean públicas.

package prueba;
26/09/2018 www.ul.edu.co 30

Estructuras de Control
26/09/2018 www.ul.edu.co 31

Condicional (if)

If(condicion){
sentencia1;
sentencia2;
}else {
sentencias;
}
26/09/2018 www.ul.edu.co 32

Dependiendo de - switch()
switch(posicion)
{
case 1:{ sentencias; break;}
case 2:{ sentencias; break;}
case 3:{ sentencias; break;}

default:{ sentencias; se ejecuta si no hay
coincidencias;break;}
}
26/09/2018 www.ul.edu.co 33

Ciclos repetitivos - for

for(ini_contador; control; incremento;)


{
sentencia1;
sentencia2;
}
26/09/2018 www.ul.edu.co 34

Ciclo repetitivo - while

while (condicion)
{
sentencia1;
sentencia2;
}
26/09/2018 www.ul.edu.co 35

Ciclo repetitivo - do

do{
sentencia1;
sentencia2;
sentencia3;
}while(condicion);
26/09/2018 www.ul.edu.co 36

Sentencia try
try {
sentencia1;
sentencia2;
sentencia3;
} catch(Excepcion e)
{
sentenciaN;
}
26/09/2018 www.ul.edu.co 37

Clase String
La manipulación de cadenas tiene una clase incorporada en el paquete
java.lang. Esta clase llama a la clase String que es la representación de
una matriz de caracteres que no se puede modificar.

CREACIÓN DE CADENAS:
String nombre=”cadena”;

LONGITUD DE CADENAS:
Objeto_cadena.length();

CONCATENAR CADENAS:
Objeto_cadena1+Objeto_cadena2

EXTRACCIÓN DE CARACTERES:
Objeto_cadena.charAt(índice);
Obj_cad.getChars(inicio,fin,cadena,0);
26/09/2018 www.ul.edu.co 38

Clase String
COMPARAR CADENAS:

equals: Devuelve true si las 2 cadenas son iguales.


Hace distinción entre minúsculas y mayúsculas.
Para ignorar esta diferencia se utiliza la segunda sentencia.

Objeto_cadena1.equals(Objeto_cadena2);
Objeto_cadena1.equalsIgnoreCase(Objeto_cadena2);

Int compareTo: Compara 2 cadenas indicando si son iguales,


si la primera es menor a la segunda o si la primera es mayor
a la segunda. Devuelve un valor numérico.
26/09/2018 www.ul.edu.co 39

Clase String
REMPLAZAR: Recibe 2 parámetros. Letra que reemplaza y la
letra a reemplazar.
Obj_cad.replace(‘letra reemplaza’,’letr a reemplazar’);

ELIMINAR ESPACIOS:
Quita los espacios iniciales y finales de una cadena.

Objeto_cadena.trim();

CONVERSION:

De minúsculas a mayúsculas y viceversa.


Objeto_cadena.toLowerCase();
Objeto_cadena.toUpperCase();
26/09/2018 www.ul.edu.co 40

El bloque de control de errores, try{}catch(){}


Como podemos ver en este ejemplo utilizamos la estructura de control de errores
que es obligatoria para esa conversión que hicimos para poder leer líneas con el
método readLine(), la estructura try{} encierra entre las llaves el código que puede
producir una excepción (un error grave) que debe ser manejado por el bloque
catch(Exception ex){}, en este caso solo capturamos la excepción que puede surgir
y cualquier otra que no sea IOException no será capturada.

Catch captura un tipo de error dentro del bloque try{}, y el bloque encerrado entre
llaves ejecutará código que debería manejar la excepción, en este caso ignoramos
todo tipo de acción que podríamos llevar a cabo y usamos la variable ex del tipo
IOException para imprimir en pantalla los errores con el método printStackTrace de
dicho objeto.
26/09/2018 www.ul.edu.co 41

La Clase Vector
• VECTOR
Matriz ampliable de referencias a objeto.
Los objetos se pueden almacenar al final de un
vector o añadirlos en cualquier posición.
26/09/2018 www.ul.edu.co 42

La Clase Vector
• CONSTRUCTOR:
TipoDato nombre_objeto [ ]=new TipoDato [Tamaño];
Int v[] = new int [10];
• AÑADIR ELEMENTO:
nombreVector [ Indice]= Dato
V[0]=150;
AÑADIR ELEMENTOS:
for( int i=0;i<TamañoVector;i++)
{
nombreVector[i]=Dato;
}
26/09/2018 www.ul.edu.co 43

La Clase Vector
• MOSTRAR UN ELEMENTO:
System.out.println(Vector[indice]);

• MOSTRAR ELEMENTOS:
for( int i=0;i<TamañoVector;i++)
{
System.out.println(Vector[i]);
}
26/09/2018 www.ul.edu.co 44

EJEMPLOS
26/09/2018 www.ul.edu.co 45
import java.io.*;
public class Vector{
public static void main(String[] args) throws IOException {
int v[];
int t = 0;
//Variable para capturar datos digitados por el usuario
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader teclado= new BufferedReader(reader);
//Se lee el tamaño del vector
try {
System.out.println("Digite Tamaño del Vector");
//Convertimos el dato leído a entero
t = Integer.parseInt(teclado.readLine());
}
catch (Exception e) {
e.printStackTrace(System.err);
System.out.println("Error imprevisto");
System.exit( -1);
}
//Asignamos el tamaño al vector
v= new int[t];
//Leemos el vector
for( int j=0;j<t;j++){
System.out.println("introduce el numero en la pocision "+j);
v[j]=Integer.parseInt(teclado.readLine()) ;
}
System.out.println("__________________________________");
//Imprime el vector
for( int j=0;j<t;j++){
System.out.print(v[j]+ " ");
}
}
}
26/09/2018 www.ul.edu.co 46

EJERCICIOS
- Realice un algoritmo que dado dos números , realice la Suma, resta,
Multiplicación y división.

- Realice un algoritmo que sume los datos de un vector.

- Hacer un algoritmo que lea una matriz y calcule la suma de su diagonal


principal en Java. Consideremos la diagonal principal a aquellas posiciones
donde un elemento tiene el mismo valor de fila y de columna.
47