INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ......

106

Transcript of INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ......

Page 1: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones
Page 2: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

INTRODUCCIÓN

Page 3: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

DESCRIPCIÓN DEL LENGUAJE Y

ANTECEDENTES IMPORTANTES

Page 4: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Descripción del Lenguaje

Java nace y da sus primeros pasos en 1991 formando parte de un proyecto de desarrollo de soporte software para electrónica de consumo (frigoríficos, lavadoras), llevado a cabo por un equipo de SUN llamado Green Team (Patrick Naughton, James Gosling y Mike Sheridan).

Este primer enfoque le da a Java una de sus más interesantes características: La portabilidad, dado que Java tenia que funcionar en numerosos tipos de CPUs, basándose en el lenguaje de programación C++ y por tanto se pensó para ser independiente de la plataforma sobre la que funcione. Esta característica es muy posiblemente la que ha permitido a Java convertirse actualmente en el lenguaje por excelencia para la creación de aplicaciones en Internet.

Page 5: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Descripción del Lenguaje

La expansión de Java se desarrollo principalmente cuando Netscape Inc. Integro en su navegador Netscape Navigator el código Java para su utilización en el que fue un éxito debido a sus características y su fácil acceso al sector de la WideWord Web.

Este salto de Java para convertirse en un lenguaje de programación para computadores se da definitivamente en 1995 cuando en la versión 2 del navegador web netscape se incluye un interprete para este lenguaje, produciendo de este modo una auténtica revolución en Internet.

Page 6: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Descripción del Lenguaje

Con este nuevo enfoque Java sigue creciendo y saca su versión 1.1 en 1997 con muchas mejoras y adaptaciones, fruto de una revisión sustancial del lenguaje. Java 1.2 aparece a finales de 1998 y más tarde se rebautizará como Java 2.

Sun describe a Java como “simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinámico"

Page 7: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Descripción del Lenguaje

LENGUAJE SIMPLE

Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo.

ORIENTADO A OBJETOS

Java fue diseñado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los métodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programación orientada a objetos, especialmente en entornos cada vez más complejos y basados en red.

Page 8: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

ANTECEDENTES IMPORTANTES

Page 9: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

ANTECEDENTES IMPORTANTES

DISTRIBUIDO

Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas.

INTERPRETADO Y COMPILADO A LA VEZ

Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador.Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time).

Page 10: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

ANTECEDENTES IMPORTANTES

ROBUSTO

Java fue diseñado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de una familia entera de errores (la aritmética de punteros), ya que se ha prescindido por completo los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.

SEGURO

Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. A nadie le gustaría ejecutar en su ordenador programas con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.

Page 11: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

ANTECEDENTES IMPORTANTES

INDIFERENTE A LA ARQUITECTURA

Java está diseñado para soportar aplicaciones que serán ejecutadas en los más variados entornos de red, desde Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas distintas y con sistemas operativos diversos. Para acomodar requisitos de ejecución tan variopintos, el compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura diseñado para transportar el código eficientemente a múltiples plataformas hardware y software. El resto de problemas los soluciona el intérprete de Java.

PORTABLE

La indiferencia a la arquitectura representa sólo una parte de su portabilidad. Además, Java especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos, de manera que los programas son iguales en todas las plataformas. Estas dos últimas características se conocen como la Máquina Virtual Java (JVM).

Page 12: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

ANTECEDENTES IMPORTANTES

ALTO RENDIMIENTO

Multihebra

Hoy en día ya se ven como terriblemente limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede interactuar con el usuario mientras otro presenta una animación en pantalla y otro realiza cálculos.

DINÁMICO

El lenguaje Java y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.

Page 13: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

ANTECEDENTES IMPORTANTES

PRODUCE APPLETS

Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets.

Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava, escrito íntegramente en Java.

Por su parte, las applets son pequeños programas que aparecen embebidos en las páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones de red, presentar menús y cuadros de diálogo para luego emprender acciones, etc.

Page 14: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Historia de java

La tecnología Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.

El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas y finalmente se renombró a Java

Page 15: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Historia de java

JDK 1.0 (23 de enero de 1996) — Primer lanzamiento.

JDK 1.1 (19 de febrero de 1997)

J2SE 1.2 (8 de diciembre de 1998) — Nombre clave Playground. Esta y las siguientes versiones fueron recogidas bajo la denominación Java 2 y el nombre "J2SE" (Java 2 Platform, Standard Edition), reemplazó a JDK para distinguir la plataforma base de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro Edition).

J2SE 1.3 (8 de mayo de 2000) — Nombre clave Kestrel.

J2SE 1.4 (6 de febrero de 2002) — Nombre Clave Merlin. Este fue el primer lanzamiento de la plataforma Java desarrollado bajo el Proceso de la Comunidad Java como JSR 59

J2SE 5.0 (30 de septiembre de 2004) — Nombre clave: Tiger. .

Java SE 6 (11 de diciembre de 2006) — Nombre clave Mustang

Java SE 7 — Nombre clave Dolphin.

Page 16: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Historia de java

Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la Licencia pública general de GNU, de acuerdo con las especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java todavía no es software libre).

Page 17: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Esquema de un Programa

Page 18: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Esquema de un Programa

• Los programas más simples escritos en lenguajes imperativos suelen realizar tres tareas de forma secuencial:

• Entrada de datos• Procesamiento de los datos• Salida de resultados

Page 19: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

- Un programa en Java presenta la estructura habitual en los lenguajes OOP(lenguajes orientados a objetos).

- El fichero fuente tendrá extensión .java, mientras que el compilado tendrá extensión .class.

La estructura de los programas escritos en Java está sujeta a la siguientes reglas principales:

- Cada clase debe encontrarse en un fichero diferente.

- El nombre del fichero debe ser el mismo que el de la clase, y la extensión debe ser .java

- Adicionalmente, los programas java comienzan su ejecución por la función main.Esta función debe Pertenecer como es lógico a una clase, ya que en java nada puede estar fuera de una clase.

Esquema de un Programa

Page 20: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Esquema de un Programa

Page 21: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

En realidad, Java es un lenguaje de programación orientada a objetos y todo debe estar dentro de una clase, incluida la función “main”, tal como muestra el siguiente programa…

public class MiPrimerPrograma{

public static void main (String args[]) { System.out.println("Mensaje por pantalla”); } }

Esquema de un Programa

Page 22: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Aplicaciones vs. Applets

Las características propias del lenguaje JAVA hacen que además de poder desarrollar aplicaciones que se ejecutan en el intérprete local, se puedan desarrollar módulos descargables a través de una página web y ejecutables en la JVM (Java Virtual Machine) del navegador. Estos módulos reciben el nombre de Applets.

Esquema de un Programa

Veamos ejemplos sencillos de cada tipo de desarrollo para apreciar las diferencias de estructura gramatical.

Page 23: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Esquema de un Programa

Page 24: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos Elementos básicosbásicos de java de java

Page 25: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos de java

• Entre los elementos fundamentales de Java se encuentran:

– Identificadores– Sentencias– Bloques de código– Expresiones– Variables– Tipos básicos de datos– Cadenas de caracteres o strings– Palabras claves

Page 26: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

IdentificadoresIdentificadores

Un identificador es un nombre que identifica a una variable, a un método o función miembro, a una clase. Y entre las reglas fundamentales como todo lenguaje de programación son:

• No se pueden utilizar las palabras reservadas como identificadores

• Distingue entre letras mayúsculas y minúsculas

• No puede incluir el carácter espacio en blanco

• Puede incluir, pero no comenzar por un númeroTipo de identificador Convención Ejemplo

nombre de una clase Comienza por letra mayúscula String, Rectangulo, CinematicaAppletString, Rectangulo, CinematicaApplet

nombre de función comienza con letra minúscula calcularArea, getValue, setColorcalcularArea, getValue, setColor

nombre de variable comienza por letra minúscula area, color, appletSizearea, color, appletSize

nombre de constante En letras mayúsculas PI, MAX_ANCHOPI, MAX_ANCHO

Page 27: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Sentencias Sentencias

Una sentencia es una orden que se le da al programa para realizar una tarea específica, esta puede ser: mostrar un mensaje en la pantalla, declarar una variable (para reservar espacio en memoria), inicializarla, llamar a una función, etc.

int i=1;int i=1;

import java.awt.*;import java.awt.*;

System.out.println("El primer programa");System.out.println("El primer programa");

Otra característica bien importante en java es que volvemos a utilizar el ; para terminar cualquier sentencia.

También cabe recordar que el editor del IDE nos ayudará a tabular todo nuestro código fuente sin apenas darnos cuenta.

Page 28: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Bloques de código Bloques de código

Un bloque de código es un grupo de sentencias que se comportan como una unidad.

También volvemos a utilizar las mismas llaves como lo hacíamos en c.

{{

……

……

}}

Page 29: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Expresiones Expresiones

Una expresión es todo aquello que se puede poner a la derecha del operador asignación =.

x=123;x=123;

y=(x+100)/4;y=(x+100)/4;

area=circulo.calcularArea(2.5);area=circulo.calcularArea(2.5);

Rectangulo r=new Rectangulo(10, 10, 200, 300);Rectangulo r=new Rectangulo(10, 10, 200, 300);

La primera expresión asigna un valor a la variable x.

La segunda, realiza una operación

La tercera, es una llamada a una función miembro calcularArea desde un objeto circulo de una clase determinada

La cuarta, reserva espacio en memoria para un objeto de la clase Rectángulo mediante la llamada a una función especial denominada constructor.

Page 30: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Variables Variables

Una variable es un nombre que se asocia con una porción de la memoria del ordenador, en la que se guarda el valor asignado a dicha variable.

Java tiene tres tipos de variables:

– de instancia

– de clase

– Locales

Las variables de instancia o miembros dato, se usan para guardar los atributos de un objeto particular.

Page 31: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos de javaElementos básicos de java

Variables Variables

Las variables de clase o miembros dato estáticos son similares a las variables de instancia, con la excepción de que los valores que guardan son los mismos para todos los objetos de una determinada clase.

En el siguiente ejemplo, PI es una variable de clase y radio es una variable de instancia. PI guarda el mismo valor para todos los objetos de la clase Circulo, pero el radio de cada círculo puede ser diferente

class Circuloclass Circulo

{{

static final double PI=3.1416;static final double PI=3.1416;

double radio;double radio;

//...//...

}}

Page 32: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

VariablesVariables Las variables locales se utilizan dentro de las funciones miembro o métodos. En el siguiente ejemplo área es una variable local a la función calcularArea en la que se guarda el valor del área de un objeto de la clase Circulo. Una variable local existe desde el momento de su definición hasta el final del bloque en el que se encuentra.

class Circuloclass Circulo

{{

//...//...

double calcularArea(){double calcularArea(){

double area=PI*radio*radio;double area=PI*radio*radio;

return area;return area;

}}

}}

Page 33: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

• Tipos básicos de datos

• Los tipos básicos que mas se utilizan en la mayor parte de los programas son boolean, int y double.

Tipo Descripcion

int Tamaño 32 bits.  El intervalo de valores va desde -231 hasta 231-1 (-2147483648 a 2147483647)

boolean Tiene dos valores true o false

float Tamaño 32 bits. Números en coma flotante de simple precisión. Estándar IEEE 754-1985  (de 1.40239846e–45f a 3.40282347e+38f)

Page 34: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Variables booleanas

En lenguaje Java existe el tipo de dato boolean. Una variable booleana solamente puede guardar uno de los dos posibles valores: true (verdadero) y false (falso).

boolean encontrado=false;boolean encontrado=false;

{...}{...}

encontrado=true;encontrado=true;

Variables enteras

Una variable entera consiste en cualquier combinación de cifras precedidos por el signo más (opcional), para los positivos, o el signo menos, para los negativos. Son ejemplos de números enteros:

12, -36, 0, 4687, -359812, -36, 0, 4687, -3598

Ejemplo de declaración de variable enteras tenemos:

int numero=1205;int numero=1205;

int x,y;int x,y;

long m=30L;long m=30L;

Page 35: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Valores constantes

Cuando se declara una variable de tipo final, se ha de inicializar y cualquier intento de modificarla en el curso de la ejecución del programa da lugar a un error en tiempo de compilación.

Normalmente, las constantes de un programa se suelen poner en letras mayúsculas, para distinguirlas de las que no son constantes. He aquí ejemplos de declaración de constantes.

final double PI=3.141592653589793;final double PI=3.141592653589793;

final int MAX_DATOS=150;final int MAX_DATOS=150;

Variables en coma flotante

Las variables del tipo float o double (flotante) se usan para guardar números en memoria que tienen parte entera y parte decimal.

double PI=3.14159; double PI=3.14159; double g=9.7805, c=2.9979e8double g=9.7805, c=2.9979e8;

Page 36: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Cadenas de caracteres o stringsCadenas de caracteres o strings

Además de los ocho tipos de datos primitivos, las variables en Java pueden ser declaradas par guardar una instancia de una clase. Las cadenas de caracteres o strings son distintas en Java y en el lenguaje C/C++, en este último, las cadenas son arrays de caracteres terminados en el carácter '\0'. Sin embargo, en Java son objetos de la clase String.

String mensaje="El primer programa";String mensaje="El primer programa";

Empleando strings, el primer programa quedaría de la forma equivalente

public class PrimeroApp{public class PrimeroApp{ public static void main(String[] args) {public static void main(String[] args) {//imprime un mensaje//imprime un mensaje

String mensaje="El primer programa";String mensaje="El primer programa"; System.out.println(mensaje);System.out.println(mensaje); }}}}

En una cadena se pueden insertar caracteres especiales como el carácter tabulador '\t' o el de nueva línea '\n'

String texto="Un string con \t un carácter tabulador y \n un salto de línea";String texto="Un string con \t un carácter tabulador y \n un salto de línea";

Page 37: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos Elementos básicos de javade java

Palabras claves o restringidas

Las palabras reservadas se pueden clasificar en las siguientes categorías:

• Tipos de datos: boolean, float, double, int, char

• Sentencias condicionales: if, else, switch

• Sentencias iterativas: for, do, while, continue

• Tratamiento de las excepciones: try, catch, finally, throw

• Estructura de datos: class, interface, implements, extends

• Modificadores y control de acceso: public, private, protected, transient

• Otras: super, null, this.

Page 38: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Elementos básicos de javaElementos básicos de java

Abstract default if private throw

Boolean do implements protected throws

Break double import public transient

Byte else instanceof return try

case extends int short void

catch final interface static volatile

char finally long super whle

class float native switch ----

Const For New Synchronized ----

continue Goto Package This ----

Page 39: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Entrada y Salida

Page 40: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Introducción

• La Entrada/Salida estándar.

• La Entrada/Salida a través de fichero.

• Todas las operaciones de E/S en Java vienen proporcionadas por el paquete estándar de la API de Java denominado java.io.

Page 41: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Entrada y Salida Estándar

El acceso a la entrada y salida estándar es controlado por tres objetos que se creanautomáticamente al iniciar la aplicación:

• System.in

Este objeto implementa la entrada estándar (normalmente el teclado). Los métodos que nos proporciona para controlar la entrada son:

read()skip(n)

• System.out

Este objeto implementa la salida estándar. Los métodos que nos proporciona paracontrolar la salida son:

print(a)println(a)

• System.err

Este objeto implementa la salida en caso de error.

Page 42: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Entrada y Salida por fichero

Tipos de ficheros

En Java es posible utilizar dos tipos de ficheros (de texto o binarios) y dos tipos de acceso a los ficheros (secuencial o aleatorio).

• Los ficheros de texto están compuestos de caracteres legibles.• Los binarios pueden almacenar cualquier tipos de datos (int, float,

boolean, etcétera).• Una lectura secuencial implica tener que acceder a un elemento antes

de acceder al siguiente.• Los ficheros de acceso aleatorio permiten acceder a sus datos de una

forma aleatoria.

Clases a estudiar

En el paquete java.io existen varias clases de las cuales podemos crear instancias de clases para tratar todo tipo de ficheros.

• FileOutputStream• FileInputStream• RandomAccessFile

Page 43: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

FILEOUTPUTSTREAM

Mediante los objetos de esta clase escribimos en ficheros de texto de forma secuencial.

Presenta el método write() para la escritura en el fichero. Presenta varios formatos:

• int write( int c ):• int write( byte a[ ] )• int write( byte a[ ], int off, int len )

Ejemplo

import java.io.*;class CreaCarta {public static void main(String args[]) throws IOException{int c;FileOutputStream f=new FileOutputStream("/carta.txt");while( ( c=System.in.read() ) != -1 )f.write( (char)c );f.close();}

}

Page 44: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

FILEINPUTSTREAM

Mediante los objetos de esta clase leemos de ficheros de texto de forma secuencial.

• int read()• int read( byte a[] )• int read( byte a[], int off, int len )

Ejemplo

import java.io.*;class MuestraCarta {public static void main(String args[]) throws IOException {int c;FileInputStream f=new FileInputStream("/carta.txt");while( ( c=f.read() ) != -1 )System.out.print( (char)c );f.close();}}

Page 45: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

RANDOMACCESSFILE

Mediante los objetos de esta clase utilizamos ficheros binarios mediante un acceso

aleatorio, tanto para lectura como para escritura.

MÉTODOS DE DESPLAZAMIENTOCuenta con una serie de funciones para realizar el desplazamiento del puntero del

fichero.

• long getFilePointer(): Devuelve la posición actual del puntero del fichero.

• void seek( long l ): Coloca el puntero del fichero en la posición indicada por l. Un fichero siempre empieza en la posición 0.

• int skipBytes( int n ): Intenta saltar n bytes desde la posición actual.

• long length(): Devuelve la longitud del fichero.

• void setLength( long l ): Establece a l el tamaño de este fichero.

• FileDescriptor getFD(): Devuelve el descriptor de este fichero.

Page 46: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Métodos de escritura

La escritura del fichero se realiza con una función que depende el tipo de datos que se

desee escribir.

• void write( byte b[], int ini, int len ): Escribe len caracteres del vector b.

• void write( int i ): Escribe la parte baja de i (un byte) en el flujo.

• void writeBoolean( boolean b ): Escribe el boolean b como un byte.

• void writeByte( int i ): Escribe i como un byte.

• void writeBytes( String s ): Escribe la cadena s tratada como bytes, no caracteres.

• void writeChar( int i ): Escribe i como 1 byte.

• void writeChars( String s ): Escribe la cadena s.

• void writeDouble( double d ): Convierte d a long y le escribe como 8 bytes.

• void writeFloat( float f ): Convierte f a entero y le escribe como 4 bytes.

• void writeInt( int i ); Escribe i como 4 bytes.

• void writeLong( long v ): Escribe v como 8 bytes.

• void writeShort( int i ): Escribe i como 2 bytes.

• void writeUTF( String s ): Escribe la cadena s utilizando la codificación UTF-8.

Los métodos que escriben números de más de un byte escriben el primero su parte alta.

Page 47: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

MÉTODOS DE LECTURA

La lectura del fichero se realiza con una función que depende del tipo de datos que queremos leer.

• boolean readBoolean(): Lee un byte y devuelve false si vale 0 o true sino.• byte readByte(): Lee y devuelve un byte.• char readChar(): Lee y devuelve un caracter.• double readDouble(): Lee 8 bytes, y devuelve un double.• float readFloat(): Lee 4 bytes, y devuelve un float.• void readFully( byte b[] ): Lee bytes del fichero y los almacena en un vector

b.• void readFully( byte b[], int ini, int len ): Lee len bytes del fichero y los

almacena en un vector b.• int readInt(): Lee 4 bytes, y devuelve un int.• long readLong(): Lee 8 bytes, y devuelve un long.• short readShort(): Lee 2 bytes, y devuelve un short.• int readUnsignedByte(): Lee 1 byte, y devuelve un valor de 0 a 255.• int readUnsignedShort(): Lee 2 bytes, y devuelve un valor de 0 a 65535.• String readUTF(): Lee una cadena codificada con el formato UTF-8.• int skipBytes(int n): Salta n bytes del fichero.

Si no es posible la lectura devuelven –1

Page 48: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Sobre Clases y Objetos

Page 49: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Clase en POO

Es elemento básico de la POO.

Define la forma, y el comportamiento de un objeto, de un miembro real o una entidad abstracta y atributos de un grupo de objetos de características similares.

En simples palabras una clase es una “plantilla” que describe un conjunto de objetos con atributos y comportamiento similares.

Page 50: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Estructura de una Clase

En este ejemplo el nombre de la clase es Coche, los métodos son el comportamiento (Ej.: en reposo, en movimiento, en reparación, etc.) y comparten ciertas características: los atributos ( tamaño, peso, color, potencia del motor, etc. ).

• -Nombre de la Clase• -Métodos (Funciones)• -Atributos (Datos)

Page 51: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Clase en JAVA

Para crear una clase sólo se necesita un archivo fuente que contenga la palabra clave reservada class seguida del nombre de la clase ( identificador legal) y un bloque delimitado por dos llaves para el cuerpo de la clase.

EJEMPLO DE CLASE:

[public] class Classname {

// definición de variables y métodos

...

}

Page 52: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Características importantes

de las Clases

1. Todas las variables y funciones de Java deben pertenecer a una clase. No hay variables y funciones globales.

2. Si una clase deriva de otra (extends), hereda todas sus variables y métodos.

3. Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que crean los usuarios.

• Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple). Si al definir una clase no se especifica de qué clase deriva, por defecto la clase deriva de Object. La clase Object es la base de toda la jerarquía de clases de Java.

5. En un fichero se pueden definir varias clases, pero en un fichero no puede haber más que una clase public. Este fichero se debe llamar como la clase public que contiene con extensión .java. Con algunas excepciones, lo habitual es escribir una sola clase por fichero.

Page 53: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Características importantes

de las Clases

1. Si una clase contenida en un fichero no es public, no es necesario que el

fichero se llame como la clase.

7. Los métodos de una clase pueden referirse de modo global al objeto de esa clase al que se aplican por medio de la referencia this.

8. Las clases se pueden agrupar en packages, introduciendo una línea al comienzo del fichero (package packageName;). Esta agrupación en packages está relacionada con la jerarquía de directorios y ficheros en la que se guardan las clases.

Page 54: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Clases ya definidas y utilizables

java.lang - clases esenciales, números, strings, objetos, compilador,runtime, seguridad y threads (es el único paquete que se incluye automáticamente en todo programa Java).

java.io - clases que manejan entradas y salidas.

java.util - clases útiles, como estructuras genéricas, manejo de fecha, hora y strings, número aleatorios, etc.

java.net - clases para soportar redes: URL, TCP, UDP, IP, etc.

Page 55: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Clases ya definidas y utilizables

java.awt - clases para manejo de interface gráfica, ventanas, etc.

java.awt.image - clases para manejo de imágenes.

java.awt.peer - clases que conectan la interface gráfica implementaciones dependientes de la plataforma (motif, windows).

java.applet - clases para la creación de applets y recursos para reproducción de audio.

Page 56: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Otros modificadores de clases

Public

Las clases public son accesibles desde otras clases, bien sea directamente o por herencia, desde clases declaradas fuera

del paquete que contiene a esas clases públicas, ya que, por

defecto, las clases solamente son accesibles por otras clases

declaradas dentro del mismo paquete en el que se han

declarado.

public class miClase extends SuperClase implements miInterface,TuInterface

{

// cuerpo de la clase

}

Aquí la palabra clave public se utiliza en un contexto diferente del que se emplea cuando se define internamente la clase, junto con private y protected.

Page 57: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Otros modificadores de clases

Abstract

Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia. Es el equivalente al prototipo de una función en C++.

Final Una clase final se declara como la clase que termina una cadena de herencia, es lo contrario a una clase abstracta. Nadie puede heredar de una clase final. Por ejemplo, la clase Math es una clase final. Aunque es técnicamente posible declarar clases con varias combinaciones de public, abstract y final, la declaración de una clase abstracta y a la vez final no tiene sentido, y el compilador no permitirá que se declare una clase con esos dos modificadores juntos.

Synchronizable

Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.

Page 58: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

No Olvidar

Por convención, los identificadores que se les asignan a las clases en Java comienzan con mayúscula.

Un archivo de Java debe tener el mismo nombre que la clase que contiene, y se les suele asignar la extensión ".java". Por ejemplo la clase MiPunto se guardaría en un fichero llamado MiPunto.java. Hay que tener presente que en Java se diferencia entre mayúsculas y minúsculas; el nombre de la clase y el de archivo fuente deben ser exactamente iguales.

Si no se utiliza alguno de los modificadores expuestos, por defecto, Java asume que una clase es:

-No final-No abstracta-Subclase de la clase Object-No implementa interfaz alguno

Page 59: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Objetos en POO

Lo primero que se nos viene a la mente para describir la palabra objeto es:

“…una cosas que se pueden percibir por los 5 sentidos...”

“…algo tangible...”

“…una cosa sobre la que se puede accionar y carece de

autonomía de acción...”

Como definición un Objeto es la instanciación de una clase y tiene un estado y un funcionamiento. El estado está contenido en sus variables (variables miembro), y el funcionamiento viene determinado por sus métodos. Las variables miembro pueden ser variables de instancia o variables de clase. Se activa el funcionamiento del objeto invocando a uno de sus métodos, que realizará una acción o modificará su estado, o ambas cosas.

Page 60: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Creación de Objetos

Antes de poder usar un objeto hemos de crearlo.

El operador new nos permite crear objetos en Java.

Tipo identificador = new Tipo () ;

Tanto en Java como en C++, la creación de un objeto se realiza en tres pasos (aunque se pueden combinar):

•Declaración (proporcionar un nombre al objeto)

•Instanciación (asignar memoria al objeto)

•Inicialización (opcionalmente se pueden proporcionar valores iniciales a las variables de instancia del objeto)

Page 61: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Creación de ObjetosCuando se trata de Java, es importante reconocer la diferencia entre objetos y variables de tipos básicos, porque en C++ se tratan de forma similar, cosa que no ocurre en Java.

Tanto en Java como en C++ la declaración e instanciación de una variable de tipo básico, utiliza una sentencia que asigna un nombre a la variable y reserva memoria para almacenar su contenido:

int miVariable;

En los dos lenguajes se puede inicializar la variable con un valor determinado en el momento de declararla, es decir, podemos resumir los tres pasos anteriormente citados de declaración, instanciación e inicialización, en una sola sentencia:

int miVariable = 7;

Y, lo más importante, este sucede en tiempo de compilación.

Page 62: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Creación de Objetos

Java es mucho más restrictivo que C++. Por ejemplo, Java no permite la instanciación de variables de tipos básicos en memoria dinámica, aunque hay una serie de objetos que coinciden con los tipos básicos y que pueden utilizarse para este propósito.

Java tampoco permite la instanciación de objetos en memoria estática.

El formato en que se presenta un objeto en Java, cuando el compilador no conoce el tipo de que se trata, consiste en el identificador de la clase y el valor hexadecimal de la dirección.

Page 63: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Creación de Objetos

En Java no siempre es necesaria la declaración de un objeto (darle un nombre). Se instancia un nuevo objeto que se usa en una expresión, sin previamente haberlo declarado.

import java.util.*;

class java502 {

public static void main( String args[] ) {

System.out.println( new Date() );

}

}

La inicialización de un objeto en Java, se puede realizar utilizando las constantes de la clase, de forma que un objeto de un mismo tipo puede ser declarado e inicializado de formas diferentes.

Page 64: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Utilización de Objetos

Una vez que se tiene declarado un objeto con sus variables y sus métodos, podemos acceder a ellos para que el uso para el que se ha creado ese objeto entre en funcionamiento.

Para acceder a variables o métodos en Java se especifica el nombre del

objeto y el nombre de la variable, o método, separados por un punto (.).

Page 65: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

LA HERENCIA

Page 66: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

• Las personas percibimos la realidad como un conjunto de objetos interrelacionados. Dichas interrelaciones, pueden verse como un conjunto de abstracciones y generalizaciones que se han ido asimilando desde la niñez. Así, los defensores de la programación orientada a objetos afirman que esta técnica se adecua mejor al funcionamiento del cerebro humano, al permitir descomponer un problema de cierta magnitud en un conjunto de problemas menores subordinados del primero

Introducción

Page 67: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Jerarquía

Ejemplo de otro árbol

La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona las clases de manera jerárquica; una clase padre o superclase sobre otras clases hijas o subclases.

En todo lenguaje orientado a objetos existe una jerarquía, mediante la que las clases se relacionan en términos de herencia. En Java, el punto más alto de la jerarquía es la clase Object de la cual derivan todas las demás clases.

Page 68: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Herencia múltiple

• Simple y Múltiple

• En el caso de la primera, una clasólo puede derivar de una única superclase. Para el segundo tipo, una clase puede descender de varias superclases.

En Java sólo se dispone de herencia simple, para una mayor sencillez del lenguaje, si bien se compensa de cierta manera la inexistencia de herencia múltiple con un concepto denominado interface.

Page 69: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Declaración de Herencia

Para indicar que una clase deriva de otra, heredando sus propiedades (métodos y atributos), se usa el término extends, como en el siguiente ejemplo:

public class SubClase extends SuperClase {public class SubClase extends SuperClase {

// Contenido de la clase// Contenido de la clase

}}

Page 70: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Por ejemplo, creamos una clase MiPunto3D, hija de la clase ya mostrada MiPunto:

class MiPunto3D extends MiPunto {class MiPunto3D extends MiPunto { int z;int z; MiPunto3D( ) {MiPunto3D( ) { x = 0; // Heredado de MiPuntox = 0; // Heredado de MiPunto y = 0; // Heredado de MiPuntoy = 0; // Heredado de MiPunto z = 0; // Nuevo atributoz = 0; // Nuevo atributo }}}}

Ejemplo:

Declaración de Herencia

La palabra clave extends se utiliza para decir que deseamos crear una subclase de la clase que es nombrada a continuación, en nuestro caso MiPunto3D es hija de MiPunto.

Page 71: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Interface

• El concepto de Interface lleva un paso más adelante la idea de las clases abstractas.

• En Java una interface es una clase abstracta pura, es decir una clase donde todos los métodos son abstractos . Permite al diseñador de clases establecer la forma de una clase.

• Una interface puede también contener datos miembro, pero estos son siempre static y final.

• Una interface sirve para establecer un 'protocolo' entre clases. 

Page 72: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Para crear una interface, se utiliza la palabra clave interface en lugar de class. La interface puede definirse public o sin modificador de acceso, y tiene el mismo significado que para las clases. Todos los métodos que declara una interface son siempre public. 

Para indicar que una clase implementa los métodos de una interface se utiliza la palabra clave implements.

El compilador se encargará de verificar que la clase efectivamente declare e implemente todos los métodos de la interface. Una clase puede implementar más de una interface.

Crear una Interface

Page 73: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Ejemplo:Declaración y uso

Una interface se declara:

interfaceinterface nombre_interface { nombre_interface {    tipo_retorno nombre_metodo ( lista_argumentos ) ;    tipo_retorno nombre_metodo ( lista_argumentos ) ;    . . .     . . . }}

Por ejemplo:

interfaceinterface InstrumentoMusical { InstrumentoMusical {    void tocar();    void tocar();    void afinar();    void afinar();    String tipoInstrumento();    String tipoInstrumento();}}

Page 74: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

una clase que implementa la interface:

classclass InstrumentoViento InstrumentoViento extendsextends Object Object implementsimplements InstrumentoMusical { InstrumentoMusical {        voidvoid tocar() { . . . }; tocar() { . . . };        voidvoid afinar() { . . .}; afinar() { . . .};    String tipoInstrumento() {}    String tipoInstrumento() {}}}classclass Guitarra Guitarra extendsextends InstrumentoViento { InstrumentoViento {    String tipoInstrumento() {    String tipoInstrumento() {                returnreturn "Guitarra"; "Guitarra";    }    }}  }  

La clase InstrumentoViento implementa la interface, declarando los métodos y escribiendo el código correspondiente. Una clase derivada puede también redefinir si es necesario alguno de los métodos de la interface. 

Declaración y uso

Page 75: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

• Referencias a Interfaces

• Es posible crear referencias a interfaces, pero las interfaces no pueden ser instanciadas. Una referencia a una interface puede ser asignada a cualquier objeto que implemente la interface.

Por ejemplo:

InstrumentoMusical instrumento = new Guitarra();instrumento.play();System.out.prinln(instrumento.tipoInstrumento());

InstrumentoMusical i2 = new InstrumentoMusical(); //error.No se puede instanciar

Page 76: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

• Extensión de interfaces Las interfaces pueden extender otras interfaces y, a diferencia de las clases, una

interface puede extender más de una interface. La sintaxis es:

interface nombre_interface  extends nombre_interface  , . . . {

    tipo_retorno nombre_metodo ( lista_argumentos ) ;    . . . }

• Agrupaciones de constantes

Dado que, por definición, todos los datos miembros que se definen en una interface son static y final, y dado que las interfaces no pueden instanciarse resultan una buena herramienta para implantar grupos de constantes. Por ejemplo:

public interface Meses {

    int ENERO = 1 , FEBRERO = 2 . . . ;    String [] NOMBRES_MESES = { " " , "Enero" , "Febrero" , . . . };}

Esto puede usarse simplemente: System.out.println(Meses.NOMBRES_MESES[ENERO]);

Page 77: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Limitaciones en la herencia

Todos los campos y métodos de una clase son siempre accesibles para el código de la misma clase.Para controlar el acceso desde otras clases, y para controlar la herencia por las subclase, los miembros (atributos y métodos) de las clases tienen tres modificadores posibles de control de acceso:

public: Los miembros declarados public son accesibles en cualquier lugar en que sea accesible la clase, y son heredados por las subclases.

private: Los miembros declarados private son accesibles sólo en la propia clase.

protected: Los miembros declarados protected son accesibles sólo para sus subclases

Limitaciones en la herencia

Page 78: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Por ejemplo:

Por ejemplo:Por ejemplo:

class Padre { // Hereda de Objectclass Padre { // Hereda de Object

// Atributos// Atributos

private int numeroFavorito, nacidoHace, dineroDisponible;private int numeroFavorito, nacidoHace, dineroDisponible;

// Métodos// Métodos

public int getApuesta() {public int getApuesta() {

return numeroFavorito;return numeroFavorito;

}}

protected int getEdad() {protected int getEdad() {

return nacidoHace;return nacidoHace;

}}

private int getSaldo() {private int getSaldo() {

return dineroDisponible;return dineroDisponible;

}}

}}

class Hija extends Padre {class Hija extends Padre {

// Definición// Definición

}}

class Visita {class Visita {

// Definición// Definición

}}

Page 79: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Polimorfismo

Page 80: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

E t i m o l o g í a…

POLI : muchas

MORFISMO : formas

Page 81: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Es la capacidad que tienen los objetos de una clase de

responder al mismo mensaje o evento en función de los

parámetros utilizados durante su invocación.

¿Qué es?

Page 82: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Polimorfismo

Clase Figura

Método Dibujar()

Triángulo Círculo

Dibujar() Dibujar()

(sobrecarga)

Figura[] figuras = new figura[2]; figuras[0]= new triangulo(); figuras[1]= new circulo(); for (i=0;i<2;i++) { figuras[i].dibujar();

} clase clase

Ahora creamos un arreglo de clases

figuras

Page 83: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Esta característica de que varios objetos de distintas

clases puedan recibir el mismo mensaje y ser capaces de

responderlo es conocido como Polimorfismo

Page 84: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

POLIMORFISMOPOLIMORFISMO

el término Polimorfismo también es asociado con un concepto llamado “Late-Binding” (Ligamiento Tardío),

por ejemplo:

Figura a = new Circulo(); Figura b = new

Triangulo();

Inicialmente se puede pensar que este código generaría un error debido a que el tipo de referencia es

distinta a la instancia del objeto, sin embargo, el fragmento anterior es correcto y demuestra el

concepto de Polimorfismo.

Page 85: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

El polimorfismo es una habilidad de tener varias formas; por ejemplo, la clase Jefe tiene acceso a los métodos de la clase Empleado.

Un objeto tiene sólo una forma.

Una variable tiene muchas formas, puede apuntar a un objeto de diferentes maneras.

CARACTERÍSTICASCARACTERÍSTICAS

Page 86: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

En Java hay una clase que es la clase padre de todas las demás: java.lang.Object.

Un método de esta clase (por ejemplo: toString() que convierte cualquier elemento de Java a cadena de caracteres), puede ser utilizada por todos.

Java permite apuntar a un objeto con una variable definida como tipo de clase padre.

CARACTERÍSTICASCARACTERÍSTICAS

Page 87: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

EMPLEADO E = new JEFE();

CARACTERÍSTICASCARACTERÍSTICAS

Sólo se puede acceder a las partes del objeto que pertenecen a la clase Empleado; las partes específicas de la clase Jefe no se ven. Este efecto se consigue porque, para el compilador, e es sólo una

variable de tipo Empleado, no Jefe

e.departamento = "Finanzas";//Incorrecto

Page 88: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

Page 89: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• Tanto Java como C++ soportan la noción de constructor.

• Que es un constructor ?

El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase y se utiliza para construir objetos de esa clase.

Page 90: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• No tiene tipo de dato específico de retorno, ni siquiera void.

• Esto se debe a que el tipo específico que debe devolver un constructor de clase es el propio tipo de la clase.

– En este caso, pues, no se puede especificar un tipo de retorno

– Ni se puede colocar ninguna sentencia que devuelva un valor

Page 91: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• Los constructores pueden sobrecargarse

• Cuando se declara una clase en Java, se pueden declarar uno o más constructores.

Page 92: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• Cuando se crea una nueva instancia de MiClase, se crean (instancias) todos los métodos y variables, y se llama al constructor de la clase:

MiClase mc;

mc = new MiClase ();

Page 93: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• La palabra clave new se usa para crear una instancia de la clase

– Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo.

• Después de ser instanciado un nuevo objeto mc, el valor de i en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto

Page 94: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• En Java, cuando se instancia un objeto, siempre se hace una llamada directa al constructor como argumento del operador new. Este operador se encarga de que el sistema proporcione memoria para contener al objeto que se va a crear

Page 95: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• En ambos lenguajes, si se proporciona uno o más constructores, el constructor de defecto no se proporciona automáticamente y si fuese necesaria su utilización, tendría que proporcionarlo explícitamente el programa

Page 96: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Constructores(Reserva de memoria)

• En Java, cuando un método o una función comienza su ejecución.

• En este caso, el objeto es instanciado

• Como son automáticas, cuando el método concluye su ejecución, será marcado para su destrucción.

Page 97: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Memoria en Java

• Cuando se invoca el JVM para ejecutar una aplicación, pedirá al sistema operativo suficiente memoria para ejecutar la JVM propiamente dichas y algo de memoria libre para que la aplicación pueda crear nuevos objetos.

•Cuando se crea un nuevo objeto, la JVM reservará memoria para ese objeto dentro del área de memoria libre.

•Cuando el área de memoria libre se vuelve demasiado pequeño, la JVM pedirá al sistema operativo más memoria.

•Cuando un objeto no se utiliza más, será destruido. Su memoria será liberada y devuelta al área de memoria libre.

Page 98: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

¿Como Funciona la Memoria en Java?

•Básicamente, cuando ejecutamos un programa en Java, el sistema operativo le reserva a la JVM, una zona de memoria libre lo suficientemente grande como para que pueda ejecutar el programa.

•El recolector de basura es informado de todas las reservas de memoria que se producen en el programa.

Page 99: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Zona de datos

• Donde se almacena el código ejecutable (las clases, constantes, etc.). El tamaño de esta zona es fijo, y nada de lo que está acá cambia durante la ejecución del programa.

Page 100: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Stack

• Se almacenan las variables locales, parámetros y métodos de retorno de los métodos, etc. El tamaño de esta zona también es fijo y conocido en tiempo de compilación

Page 101: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Heap

• Esto es lo que se conoce como la memoria “dinámica”, el tamaño de esta zona NO es conocido en tiempo de compilación, ya que acá es donde se crean los objetos, y puede variar su tamaño según vayan creándose/eliminándose objetos.

Page 102: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Garbage Collector

•Java podría ser el lenguaje más utilizados que depende de la recolección de basura .

•Los beneficios de Garbage Collector son indiscutibles.

•El concepto de Garbage Collector fue inventado por John McCarthy en 1959.

•El programador no tiene que invocar a una subrutina para liberar memoria.

Page 103: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

•Cuando se invoca el recolector de basura, recorre la lista de espacios reservados observando el contador de referencias de cada espacio. Si un contador ha llegado a cero significa que ese espacio de memoria ya no se usa y, por tanto, puede ser liberado.

•Sugerir pasar el Garbage Collector?

-No tiene mucho sentido

Page 104: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Entorno de Desarrollo

• NetBeans es un entorno de desarrollo visual de código abierto que ocupa bastantes recursos a comparación del kit JVK, hecho completamente con java; Mediante NetBeans es posible diseñar aplicaciones con solo arrastrar y soltar objetos sobre la interfaz de un formulario.

• Pero también existe un entorno de desarrollo que no es visual pero es también muy bueno, es el mas básico que NetBeans lo proporciona Sun, que es el kit JVK, que con solo instalarlo podemos escribir las líneas de código en cualquier editor de texto y luego compilar con la consola de Windows, Linux, Macintosh, etc. Así mismo en la misma consola podemos interpretar el programa compilado y ejecutarlo.

• COMPONENTES DEL JDK

Compilador de Java.Interprete de Java (JVM).Interprete de applets Java.Depurador de Java.generador de documentación.Integrador de c y c++ (JNI).Desensamblador.

Page 105: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

EJEMPLO DE PROGRAMA EN JAVA

EJEMPLO DE PROGRAMA EN JAVAESTE EJEMPLO CONVIERTE LA EDAD DE UNA PERSONA EN DÍAS

import java.util.*; //este asterisco me indica que uso todas las funciones del java util

public class convertidor{

public static void main(String[] args){//scanner stdin =new scanner(system.in); //esta linea crea el escanerScanner stdin = new Scanner(System.in);int edad,edad_en_dias;System.out.println("ingrese su edad");

edad=stdin.nextInt();

edad_en_dias=edad*365;System.out.println("su edad en dias es:");System.out.println(edad_en_dias);}

}

Page 106: INTRODUCCIÓN - Educación Dialogica · PDF fileinstrucciones de ensamblador. ... pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones

Conclusión

Mediante este trabajo de investigación, el cual se basó en la realización de un informe y la preparación de una disertación, pudimos hallar y realizar numerables puntos de los cuales podemos destacar.

- Las formas básicas de programación en el lenguaje java

- Las herramientas de java.

- Las formas de aplicar ciertas funciones

- Aplicaciones en la programación.

- Formas de aplicación en java.

- Los entornos de programación.

También logramos percatarnos de las diferencias existentes entre el lenguaje trabajado en la anterioridad como es C y este nuevo lenguaje Java.

Logramos también realizar un programa en el lenguaje investigado, java, aplicando todo lo aprendido en la investigación