Uploaded on

Introduccion y conceptos escenciales de java

Introduccion y conceptos escenciales de java

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
14,349
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
1,066
Comments
3
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.  
  • 2.
    • INTRODUCCIÓN
  • 3. DESCRIPCIÓN DEL LENGUAJE Y ANTECEDENTES IMPORTANTES
  • 4. 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.
  • 5. 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 Word Wide 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.
  • 6. 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"
  • 7. 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.
  • 8. ANTECEDENTES IMPORTANTES
  • 9. 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).
  • 10. 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.
  • 11. 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).
  • 12. 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.
  • 13. 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.
  • 14. 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
  • 15. 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 .
  • 16. 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).
  • 17. Esquema de un Programa
  • 18. 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
  • 19.
    • - 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
  • 20. Esquema de un Programa
  • 21.
    • 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
  • 22.
    • 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.
  • 23. Esquema de un Programa
  • 24. Elementos básicos de java
  • 25. 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
  • 26. Elementos básicos de java
    • Identificadores
    • 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úmero
    Tipo de identificador Convención Ejemplo nombre de una clase Comienza por letra mayúscula String, Rectangulo, CinematicaApplet nombre de función comienza con letra minúscula calcularArea, getValue, setColor nombre de variable comienza por letra minúscula area, color, appletSize nombre de constante En letras mayúsculas PI, MAX_ANCHO
  • 27. Elementos básicos de java
    • 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;
    • import java.awt.*;
    • 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.
  • 28. Elementos básicos de java
    • 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.
    • {
    • }
  • 29. Elementos básicos de java
    • Expresiones
    • Una expresión es todo aquello que se puede poner a la derecha del operador asignación =.
    • x=123;
    • y=(x+100)/4;
    • area=circulo.calcularArea(2.5);
    • 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 .
  • 30. Elementos básicos de java
    • 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.
  • 31. Elementos básicos de java
    • 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 Circulo
    • {
    • static final double PI=3.1416;
    • double radio;
    • //...
    • }
  • 32. Elementos básicos de java
    • Variables
    • 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 Circulo
    • {
    • //...
    • double calcularArea(){
    • double area=PI*radio*radio;
    • return area;
    • }
    • }
  • 33. Elementos básicos de 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 -2 31 hasta 2 31 -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)
  • 34. Elementos básicos de 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;
    • {...}
    • 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, -3598
    • Ejemplo de declaración de variable enteras tenemos:
    • int numero=1205;
    • int x,y;
    • long m=30L;
  • 35. Elementos básicos de 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 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 g=9.7805, c=2.9979e8 ;
  • 36. Elementos básicos de java
    • Cadenas 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 ''. Sin embargo, en Java son objetos de la clase String.
    • String mensaje="El primer programa";
    • Empleando strings, el primer programa quedaría de la forma equivalente
    • public class PrimeroApp{
    • public static void main(String[] args) {
    • //imprime un mensaje
    • String mensaje="El primer programa";
    • System.out.println(mensaje);
    • }
    • }
    • En una cadena se pueden insertar caracteres especiales como el carácter tabulador ' ' o el de nueva línea ' '
    • String texto="Un string con un carácter tabulador y un salto de línea";
  • 37. Elementos básicos de 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.
  • 38. Elementos 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 ----
  • 39. Entrada y Salida
  • 40. 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.
  • 41. Entrada y Salida Estándar
    • El acceso a la entrada y salida estándar es controlado por tres objetos que se crean
    • automá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 para
    • controlar la salida son:
    • print(a)
    • println(a)
    • System.err
    • Este objeto implementa la salida en caso de error.
  • 42. 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
  • 43. 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();
    • }
    • }
  • 44. 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();
    • }
    • }
  • 45. RANDOMACCESSFILE
    • Mediante los objetos de esta clase utilizamos ficheros binarios mediante un acceso
    • aleatorio, tanto para lectura como para escritura.
    • MÉTODOS DE DESPLAZAMIENTO
    • Cuenta 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.
  • 46. 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.
  • 47. 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
  • 48. Sobre Clases y Objetos
  • 49. 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.
  • 50. 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)
  • 51. 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
    • ...
    • }
  • 52. 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.
  • 53. Características importantes de las Clases
    • 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.
  • 54. 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.
  • 55. 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 .
  • 56. 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.
  • 57. 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.
  • 58. 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
  • 59. 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.
  • 60. 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)
  • 61. Creación de Objetos
    • Cuando 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.
  • 62. 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.
  • 63. 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.
  • 64. 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 (.).
  • 65. LA HERENCIA
  • 66.
    • 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
  • 67. 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.
  • 68. 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 .
  • 69.
    • 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 {
    • // Contenido de la clase
    • }
    Declaración de Herencia
  • 70. Por ejemplo, creamos una clase MiPunto3D , hija de la clase ya mostrada MiPunto : class MiPunto3D extends MiPunto { int z; MiPunto3D( ) { x = 0; // Heredado de MiPunto y = 0; // Heredado de MiPunto z = 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 .
  • 71. 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. 
  • 72. Crear una Interface 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.
  • 73. Ejemplo: Declaración y uso Una interface se declara: interface nombre_interface {     tipo_retorno nombre_metodo ( lista_argumentos ) ;     . . .  } Por ejemplo: interface InstrumentoMusical {     void tocar();     void afinar();     String tipoInstrumento(); }
  • 74. una clase que implementa la interface: class InstrumentoViento extends Object implements InstrumentoMusical {     void tocar() { . . . };     void afinar() { . . .};     String tipoInstrumento() {} } class Guitarra extends InstrumentoViento {     String tipoInstrumento() {         return "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
  • 75.
    • 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
  • 76.
    • 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]);
  • 77. 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
  • 78. Por ejemplo:
    • Por ejemplo:
    • class Padre { // Hereda de Object
    • // Atributos
    • private int numeroFavorito, nacidoHace, dineroDisponible;
    • // Métodos
    • public int getApuesta() {
    • return numeroFavorito;
    • }
    • protected int getEdad() {
    • return nacidoHace;
    • }
    • private int getSaldo() {
    • return dineroDisponible;
    • }
    • }
    • class Hija extends Padre {
    • // Definición
    • }
    • class Visita {
    • // Definición
    • }
  • 79. Polimorfismo
  • 80. E t i m o l o g í a… POLI : muchas MORFISMO : formas
  • 81. 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?
  • 82. 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
  • 83. Esta característica de que varios objetos de distintas clases puedan recibir el mismo mensaje y ser capaces de responderlo es conocido como Polimorfismo
  • 84. POLIMORFISMO el término Polimorfismo también es asociado con un concepto llamado “Late-Binding” (Ligamiento Tardío), por ejemplo: 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. Figura a = new Circulo(); Figura b = new Triangulo();
  • 85. 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ÍSTICAS
  • 86. 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ÍSTICAS
  • 87. CARACTERÍ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 EMPLEADO E = new JEFE(); e.departamento = &quot;Finanzas&quot;; //Incorrecto
  • 88. Constructores (Reserva de memoria)
  • 89. 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.
  • 90. 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
  • 91. Constructores (Reserva de memoria)
    • Los constructores pueden sobrecargarse
    • Cuando se declara una clase en Java, se pueden declarar uno o más constructores.
  • 92. 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 ();
  • 93. 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
  • 94. 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
  • 95. 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
  • 96. 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.
  • 97. 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.
  • 98. ¿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.
  • 99. 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.
  • 100. 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
  • 101. 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.
  • 102. 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.
  • 103.
    • 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
  • 104. 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.
  • 105. EJEMPLO DE PROGRAMA EN JAVA
    • EJEMPLO DE PROGRAMA EN JAVA
    • ESTE 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 escaner
    • Scanner stdin = new Scanner(System.in);
    • int edad,edad_en_dias;
    • System.out.println(&quot;ingrese su edad&quot;);
    • edad=stdin.nextInt();
    • edad_en_dias=edad*365;
    • System.out.println(&quot;su edad en dias es:&quot;);
    • System.out.println(edad_en_dias);
    • }
    • }
  • 106. 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