Você está na página 1de 106

INTRODUCCIN

DESCRIPCIN DEL LENGUAJE Y ANTECEDENTES IMPORTANTES

Descripcin del Lenguaje


Java nace y da sus primeros pasos en 1991 formando parte de un proyecto de desarrollo de soporte software para electrnica de consumo (frigorficos, 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 ms interesantes caractersticas: La portabilidad, dado que Java tenia que funcionar en numerosos tipos de CPUs, basndose en el lenguaje de programacin C++ y por tanto se pens para ser independiente de la plataforma sobre la que funcione. Esta caracterstica es muy posiblemente la que ha permitido a Java convertirse actualmente en el lenguaje por excelencia para la creacin de aplicaciones en Internet.

Descripcin del Lenguaje


La expansin de Java se desarrollo principalmente cuando Netscape Inc. Integro en su navegador Netscape Navigator el cdigo Java para su utilizacin en el que fue un xito debido a sus caractersticas y su fcil acceso al sector de la Word Wide Web. Este salto de Java para convertirse en un lenguaje de programacin para computadores se da definitivamente en 1995 cuando en la versin 2 del navegador web netscape se incluye un interprete para este lenguaje, produciendo de este modo una autntica revolucin en Internet.

Descripcin del Lenguaje


Con este nuevo enfoque Java sigue creciendo y saca su versin 1.1 en 1997 con muchas mejoras y adaptaciones, fruto de una revisin sustancial del lenguaje. Java 1.2 aparece a finales de 1998 y ms 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 dinmico"

Descripcin del Lenguaje


LENGUAJE SIMPLE Java posee una curva de aprendizaje muy rpida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarn que Java es ms sencillo, ya que se han eliminado ciertas caractersticas, como los punteros. Debido a su semejanza con C y C++, y dado que la mayora de la gente los conoce aunque sea de forma elemental, resulta muy fcil aprender Java. Los programadores experimentados en C++ pueden migrar muy rpidamente a Java y ser productivos en poco tiempo. ORIENTADO A OBJETOS Java fue diseado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los mtodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programacin orientada a objetos, especialmente en entornos cada vez ms complejos y basados en red.

ANTECEDENTES IMPORTANTES

ANTECEDENTES IMPORTANTES
DISTRIBUIDO Java proporciona una coleccin 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 creacin de aplicaciones distribuidas. INTERPRETADO Y COMPILADO A LA VEZ Java es compilado, en la medida en que su cdigo fuente se transforma en una especie de cdigo mquina, los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier mquina a la cual se hayan portado el intrprete y el sistema de ejecucin en tiempo real (run-time).

ANTECEDENTES IMPORTANTES
ROBUSTO Java fue diseado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilacin y en tiempo de ejecucin. Sus caractersticas de memoria liberan a los programadores de una familia entera de errores (la aritmtica de punteros), ya que se ha prescindido por completo los punteros, y la recoleccin de basura elimina la necesidad de liberacin explcita 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 gustara 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 ejecucin en tiempo real.

ANTECEDENTES IMPORTANTES
INDIFERENTE A LA ARQUITECTURA Java est diseado para soportar aplicaciones que sern ejecutadas en los ms 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 ejecucin tan variopintos, el compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura diseado para transportar el cdigo eficientemente a mltiples plataformas hardware y software. El resto de problemas los soluciona el intrprete de Java. PORTABLE La indiferencia a la arquitectura representa slo una parte de su portabilidad. Adems, Java especifica los tamaos de sus tipos de datos bsicos y el comportamiento de sus operadores aritmticos, de manera que los programas son iguales en todas las plataformas. Estas dos ltimas caractersticas se conocen como la Mquina Virtual Java (JVM).

ALTO RENDIMIENTO Multihebra

ANTECEDENTES IMPORTANTES

Hoy en da ya se ven como terriblemente limitadas las aplicaciones que slo pueden ejecutar una accin a la vez. Java soporta sincronizacin de mltiples hilos de ejecucin (multithreading) a nivel de lenguaje, especialmente tiles en la creacin de aplicaciones de red distribuidas. As, mientras un hilo se encarga de la comunicacin, otro puede interactuar con el usuario mientras otro presenta una animacin en pantalla y otro realiza clculos. DINMICO El lenguaje Java y su sistema de ejecucin en tiempo real son dinmicos en la fase de enlazado. Las clases slo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos mdulos de cdigo bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.

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 pequeos programas que aparecen embebidos en las pginas Web, como aparecen los grficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imgenes, establecer conexiones de red, presentar mens y cuadros de dilogo para luego emprender acciones, etc.

Historia de java
La tecnologa Java se cre como una herramienta de programacin para ser usada en un proyecto de set-top-box en una pequea operacin denominada the Green Project en Sun Microsystems en el ao 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 haba 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 grficas y finalmente se renombr a Java

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 denominacin 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. .

Historia de java
Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus tecnologas Java bajo la Licencia pblica general de GNU, de acuerdo con las especificaciones del Java Community Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java todava no es software libre).

Esquema de un Programa

Esquema de un Programa
Los programas ms simples escritos en lenguajes imperativos suelen realizar tres tareas de forma secuencial: Entrada de datos Procesamiento de los datos Salida de resultados

Esquema de un Programa
- Un programa en Java presenta la estructura habitual en los lenguajes OOP (lenguajes orientados a objetos). - El fichero fuente tendr extensin .java, mientras que el compilado tendr extensin .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 extensin debe ser .java - Adicionalmente, los programas java comienzan su ejecucin por la funcin main. Esta funcin debe Pertenecer como es lgico a una clase, ya que en java nada puede estar fuera de una clase.

Esquema de un Programa

Esquema de un Programa
En realidad, Java es un lenguaje de programacin orientada a objetos y todo debe estar dentro de una clase, incluida la funcin 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
Aplicaciones vs. Applets
Las caractersticas propias del lenguaje JAVA hacen que adems de poder desarrollar aplicaciones que se ejecutan en el intrprete local, se puedan desarrollar mdulos descargables a travs de una pgina web y ejecutables en la JVM (Java Virtual Machine) del navegador. Estos mdulos reciben el nombre de Applets. Veamos ejemplos sencillos de cada tipo de desarrollo para apreciar las diferencias de estructura gramatical.

Esquema de un Programa

Elementos bsicos de java

Elementos bsicos de java


Entre los elementos fundamentales de Java se encuentran: Identificadores Sentencias Bloques de cdigo Expresiones Variables Tipos bsicos de datos Cadenas de caracteres o strings Palabras claves

Elementos bsicos de java


Identificadores Un identificador es un nombre que identifica a una variable, a un mtodo o funcin miembro, a una clase. Y entre las reglas fundamentales como todo lenguaje de programacin son: No se pueden utilizar las palabras reservadas como identificadores Distingue entre letras maysculas y minsculas No puede incluir el carcter espacio en blanco Puede incluir, pero no comenzar por un nmero
Tipo de identificador nombre de una clase nombre de funcin nombre de variable nombre de constante Convencin Comienza por letra mayscula comienza con letra minscula comienza por letra minscula En letras maysculas Ejemplo String, Rectangulo, CinematicaApplet calcularArea, getValue, setColor area, color, appletSize PI, MAX_ANCHO

Elementos bsicos de java


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

int i=1; import java.awt.*; System.out.println("El primer programa");

Otra caracterstica bien importante en java es que volvemos a utilizar el ; para terminar cualquier sentencia. Tambin cabe recordar que el editor del IDE nos ayudar a tabular todo nuestro cdigo fuente sin apenas darnos cuenta.

Elementos bsicos de java


Bloques de cdigo Un bloque de cdigo es un grupo de sentencias que se comportan como una unidad. Tambin volvemos a utilizar las mismas llaves como lo hacamos en c. { }

Elementos bsicos de java


Expresiones
Una expresin es todo aquello que se puede poner a la derecha del operador asignacin =.

x=123; y=(x+100)/4; area=circulo.calcularArea(2.5); Rectangulo r=new Rectangulo(10, 10, 200, 300);

La primera expresin asigna un valor a la variable x. La segunda, realiza una operacin La tercera, es una llamada a una funcin miembro calcularArea desde un objeto circulo de una clase determinada La cuarta, reserva espacio en memoria para un objeto de la clase Rectngulo mediante la llamada a una funcin especial denominada constructor.

Elementos bsicos de java


Variables
Una variable es un nombre que se asocia con una porcin 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.

Elementos bsicos de java


Variables
Las variables de clase o miembros dato estticos son similares a las variables de instancia, con la excepcin 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 crculo puede ser diferente class Circulo { static final double PI=3.1416; double radio; //... }

Elementos bsicos de java


Variables
Las variables locales se utilizan dentro de las funciones miembro o mtodos. En el siguiente ejemplo rea es una variable local a la funcin 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 definicin hasta el final del bloque en el que se encuentra. class Circulo { //... double calcularArea(){ double area=PI*radio*radio; return area; } }

Elementos bsicos de java


Tipos bsicos de datos Los tipos bsicos que mas se utilizan en la mayor parte de los programas son boolean, int y double.

Tipo

Descripcion

int

Tamao 32 bits. El intervalo de valores va desde -231 hasta 231-1 (-2147483648 a 2147483647)

boolean

Tiene dos valores true o false

float

Tamao 32 bits. Nmeros en coma flotante de simple precisin. Estndar IEEE 7541985 (de 1.40239846e45f a 3.40282347e+38f)

Elementos bsicos 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 combinacin de cifras precedidos por el signo ms (opcional), para los positivos, o el signo menos, para los negativos. Son ejemplos de nmeros enteros: 12, -36, 0, 4687, -3598 Ejemplo de declaracin de variable enteras tenemos: int numero=1205;

Elementos bsicos 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 ejecucin del programa da lugar a un error en tiempo de compilacin. Normalmente, las constantes de un programa se suelen poner en letras maysculas, para distinguirlas de las que no son constantes. He aqu ejemplos de declaracin 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 nmeros en memoria que tienen parte entera y parte decimal.

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

Elementos bsicos de java


Cadenas de caracteres o strings Adems 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 carcter '\0'. Sin embargo, en Java son objetos de la clase String.

String mensaje="El primer programa"; Empleando strings, el primer programa quedara 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 carcter tabulador '\t' o el

Elementos bsicos de java


Palabras claves o restringidas Las palabras reservadas se pueden clasificar en las siguientes categoras: 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.

Elementos bsicos de java


Abstract Boolean Break Byte case catch char class Const continue default do double else extends final finally float For Goto if implements import instanceof int interface long native New Package private protected public return short static super switch Synchronized This throw throws transient try void volatile whle ----------

Entrada y Salida

Introduccin
La Entrada/Salida estndar. La Entrada/Salida a travs de fichero. Todas las operaciones de E/S en Java vienen proporcionadas por el paquete estndar de la API de Java denominado java.io.

Entrada y Salida Estndar


El acceso a la entrada y salida estndar es controlado por tres objetos que se crean automticamente al iniciar la aplicacin: System.in Este objeto implementa la entrada estndar (normalmente el teclado). Los mtodos que nos proporciona para controlar la entrada son:

read() skip(n) System.out Este objeto implementa la salida estndar. Los mtodos que nos proporciona para controlar la salida son: print(a) println(a) System.err

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 estn compuestos de caracteres legibles. Los binarios pueden almacenar cualquier tipos de datos (int, float, boolean, etctera). 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

FILEOUTPUTSTREAM
Mediante los objetos de esta clase escribimos en ficheros de texto de forma secuencial. Presenta el mtodo 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(); } }

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(); } }

RANDOMACCESSFILE
Mediante los objetos de esta clase utilizamos ficheros binarios mediante un acceso aleatorio, tanto para lectura como para escritura.

MTODOS DE DESPLAZAMIENTO
Cuenta con una serie de funciones para realizar el desplazamiento del puntero del fichero. long getFilePointer(): Devuelve la posicin actual del puntero del fichero. void seek( long l ): Coloca el puntero del fichero en la posicin indicada por l. Un fichero siempre empieza en la posicin 0. int skipBytes( int n ): Intenta saltar n bytes desde la posicin actual. long length(): Devuelve la longitud del fichero. void setLength( long l ): Establece a l el tamao de este fichero. FileDescriptor getFD(): Devuelve el descriptor de este fichero.

Mtodos de escritura
La escritura del fichero se realiza con una funcin 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 codificacin UTF-8.

Los mtodos que escriben nmeros de ms de un byte escriben el primero su parte alta.

MTODOS DE LECTURA
La lectura del fichero se realiza con una funcin 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

Sobre Clases y Objetos

Clase en POO
Es elemento bsico 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 caractersticas similares. En simples palabras una clase es una plantilla que describe un conjunto de objetos con atributos y comportamiento similares.

Estructura de una Clase


-Nombre de la Clase -Mtodos (Funciones) -Atributos (Datos)

En este ejemplo el nombre de la clase es Coche, los mtodos son el comportamiento (Ej.: en reposo, en movimiento, en reparacin, etc.) y comparten ciertas caractersticas: los atributos ( tamao, peso, color, potencia del motor, etc. ).

Clase en JAVA
Para crear una clase slo 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 { // definicin de variables y mtodos ... }

Caractersticas 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 mtodos.

3.

Java tiene una jerarqua de clases estndar de la que pueden derivar las clases que crean los usuarios. Una clase slo puede heredar de una nica clase (en Java no hay herencia mltiple). 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 jerarqua de clases de Java. En un fichero se pueden definir varias clases, pero en un fichero no puede haber ms que una clase public. Este fichero se debe llamar como la clase public que contiene con extensin .java. Con algunas excepciones, lo habitual es escribir una sola clase por fichero.

4.

5.

Caractersticas importantes de las Clases

6.

Si una clase contenida en un fichero no es public, no es necesario que el fichero se llame como la clase.

7.

Los mtodos 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 lnea al comienzo del fichero (package packageName;). Esta agrupacin en packages est relacionada con la jerarqua de directorios y ficheros en la que se guardan las clases.

Clases ya definidas y utilizables


java.lang - clases esenciales, nmeros, strings, objetos, compilador,runtime, seguridad y threads (es el nico paquete que se incluye automticamente en todo programa Java).

java.io

- clases que manejan entradas y salidas.

java.util

- clases tiles, como estructuras genricas, manejo de fecha, hora y strings, nmero aleatorios, etc.

java.net

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

Clases ya definidas y utilizables


java.awt - clases para manejo de interface grfica, ventanas, etc. java.awt.image - clases para manejo de imgenes.

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

java.applet - clases para la creacin de applets y recursos para reproduccin de audio.

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 pblicas, 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.

Otros modificadores de clases


Abstract Una clase abstract tiene al menos un mtodo abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia. Es el equivalente al prototipo de una funcin 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 tcnicamente posible declarar clases con varias combinaciones de public, abstract y final, la declaracin 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 mtodos 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.

No Olvidar
Por convencin, los identificadores que se les asignan a las clases en Java comienzan con mayscula. Un archivo de Java debe tener el mismo nombre que la clase que contiene, y se les suele asignar la extensin ".java". Por ejemplo la clase MiPunto se guardara en un fichero llamado MiPunto.java. Hay que tener presente que en Java se diferencia entre maysculas y minsculas; 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

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 autonoma de accin...

Como definicin un Objeto es la instanciacin 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 mtodos. Las variables miembro pueden ser variables de instancia o variables de clase. Se activa el funcionamiento del objeto invocando a uno de sus mtodos, que realizar una accin o modificar su estado, o ambas cosas.

Creacin 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 creacin de un objeto se realiza en tres pasos (aunque se pueden combinar): Declaracin (proporcionar un nombre al objeto) Instanciacin (asignar memoria al objeto) Inicializacin (opcionalmente se pueden proporcionar valores iniciales a las variables de instancia del objeto)

Creacin de Objetos
Cuando se trata de Java, es importante reconocer la diferencia entre objetos y variables de tipos bsicos, porque en C++ se tratan de forma similar, cosa que no ocurre en Java. Tanto en Java como en C++ la declaracin e instanciacin de una variable de tipo bsico, 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 declaracin, instanciacin e inicializacin, en una sola sentencia: int miVariable = 7; Y, lo ms importante, este sucede en tiempo de compilacin.

Creacin de Objetos
Java es mucho ms restrictivo que C++. Por ejemplo, Java no permite la instanciacin de variables de tipos bsicos en memoria dinmica, aunque hay una serie de objetos que coinciden con los tipos bsicos y que pueden utilizarse para este propsito. Java tampoco permite la instanciacin de objetos en memoria esttica. 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 direccin.

Creacin de Objetos
En Java no siempre es necesaria la declaracin de un objeto (darle un nombre). Se instancia un nuevo objeto que se usa en una expresin, sin previamente haberlo declarado. import java.util.*; class java502 { public static void main( String args[] ) { System.out.println( new Date() ); } } La inicializacin 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.

Utilizacin de Objetos

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

Para acceder a variables o mtodos en Java se especifica el nombre del objeto y el nombre de la variable, o mtodo, separados por un punto (.).

LA HERENCIA

Introduccin
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 niez. As, los defensores de la programacin orientada a objetos afirman que esta tcnica 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

Jerarqua
La herencia es el mecanismo fundamental de relacin entre clases en la orientacin a objetos. Relaciona las clases de manera jerrquica; una clase padre o superclase sobre otras clases hijas o subclases.

Ejemplo de otro rbol

En todo lenguaje orientado a objetos existe una jerarqua, mediante la que las clases se relacionan en trminos de herencia. En Java, el punto ms alto de la jerarqua es la clase Object de la cual derivan todas las dems clases.

Herencia mltiple

Simple y Mltiple En el caso de la primera, una claslo puede derivar de una nica superclase. Para el segundo tipo, una clase puede descender de varias superclases.

En Java slo se dispone de herencia simple, para una mayor sencillez del lenguaje, si bien se compensa de cierta manera la inexistencia de herencia mltiple con un concepto denominado interface.

Declaracin de Herencia
Para indicar que una clase deriva de otra, heredando sus propiedades (mtodos y atributos), se usa el trmino extends, como en el siguiente ejemplo:

public class SubClase extends SuperClase { // Contenido de la clase }

Ejemplo:

Declaracin de Herencia
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 } }

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

Interface
El concepto de Interface lleva un paso ms adelante la idea de las clases abstractas. En Java una interface es una clase abstracta pura, es decir una clase donde todos los mtodos son abstractos . Permite al diseador de clases establecer la forma de una clase. Una interface puede tambin contener datos miembro, pero estos son siempre static y final. Una interface sirve para establecer un 'protocolo' entre clases.

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 mtodos que declara una interface son siempre public. Para indicar que una clase implementa los mtodos de una interface se utiliza la palabra clave implements. El compilador se encargar de verificar que la clase efectivamente declare e implemente todos los mtodos de la interface. Una clase puede implementar ms de una interface.

Ejemplo: Declaracin 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(); }

Declaracin y uso
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 mtodos y escribiendo el cdigo correspondiente. Una clase derivada puede tambin redefinir si es necesario alguno de los mtodos de la interface.

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

Extensin de interfaces Las interfaces pueden extender otras interfaces y, a diferencia de las clases, una interface puede extender ms de una interface. La sintaxis es: interface nombre_interface extends nombre_interface , . . . { tipo_retorno nombre_metodo ( lista_argumentos ) ; ... }

Agrupaciones de constantes Dado que, por definicin, 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]);

Limitaciones en la herencia
Limitaciones en la herencia Todos los campos y mtodos de una clase son siempre accesibles para el cdigo de la misma clase. Para controlar el acceso desde otras clases, y para controlar la herencia por las subclase, los miembros (atributos y mtodos) 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 slo en la propia clase. protected: Los miembros declarados protected son accesibles slo para sus subclases

Por ejemplo:
Por ejemplo: class Padre { // Hereda de Object // Atributos private int numeroFavorito, nacidoHace, dineroDisponible; // Mtodos public int getApuesta() { return numeroFavorito; } protected int getEdad() { return nacidoHace; } private int getSaldo() { return dineroDisponible; } } class Hija extends Padre { // Definicin } class Visita { // Definicin }

Polimorfismo

E t i m o l o g a

POLI

: muchas

MORFISMO : formas

Qu es?
Es la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en funcin de los parmetros utilizados durante su invocacin.

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

Clase Figura
Tringulo
(sobrecarga)

Crculo Ahora creamos un arreglo de clases figuras Dibujar()

Dibujar()

Esta caracterstica de que varios objetos de distintas clases puedan recibir el mismo mensaje y ser capaces de responderlo es conocido como Polimorfismo

POLIMORFISMO
el trmino Polimorfismo tambin es asociado con un concepto llamado Late-Binding (Ligamiento Tardo), por ejemplo:

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


Inicialmente se puede pensar que este cdigo generara 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.

CARACTERSTICAS

El polimorfismo es una habilidad de tener varias formas; por ejemplo, la clase Jefe tiene acceso a los mtodos de la clase Empleado. Un objeto tiene slo una forma. Una variable tiene muchas formas, puede apuntar a un objeto de diferentes maneras.

CARACTERSTICAS
En Java hay una clase que es la clase padre de todas las dems: java.lang.Object. Un mtodo 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.

CARACTERSTICAS
EMPLEADO E = new JEFE();
Slo se puede acceder a las partes del objeto que pertenecen a la clase Empleado; las partes especficas de la clase Jefe no se ven. Este efecto se consigue porque, para el compilador, e es slo una variable de tipo Empleado, no Jefe

e.departamento = "Finanzas"; //Incorrecto

Constructores (Reserva de memoria)

Constructores (Reserva de memoria)


Tanto Java como C++ soportan la nocin de constructor.

Que es un constructor ? El constructor es un tipo especfico de mtodo que siempre tiene el mismo nombre que la clase y se utiliza para construir objetos de esa clase.

Constructores (Reserva de memoria)


No tiene tipo de dato especfico de retorno, ni siquiera void. Esto se debe a que el tipo especfico 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

Constructores (Reserva de memoria)

Los constructores pueden sobrecargarse Cuando se declara una clase en Java, se pueden declarar uno o ms constructores.

Constructores (Reserva de memoria)

Cuando se crea una nueva instancia de MiClase, se crean (instancias) todos los mtodos y variables, y se llama al constructor de la clase: MiClase mc; mc = new MiClase ();

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 declaracin de tipo. Despus 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

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

Constructores (Reserva de memoria)

En ambos lenguajes, si se proporciona uno o ms constructores, el constructor de defecto no se proporciona automticamente y si fuese necesaria su utilizacin, tendra que proporcionarlo explcitamente el programa

Constructores (Reserva de memoria)


En Java, cuando un mtodo o una funcin comienza su ejecucin. En este caso, el objeto es instanciado Como son automticas, cuando el mtodo concluye su ejecucin, ser marcado para su destruccin.

Memoria en Java
Cuando se invoca el JVM para ejecutar una aplicacin, pedir al sistema operativo suficiente memoria para ejecutar la JVM propiamente dichas y algo de memoria libre para que la aplicacin 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 pequeo, la JVM pedir al sistema operativo ms memoria. Cuando un objeto no se utiliza ms, ser destruido. Su memoria ser liberada y devuelta al rea de memoria libre.

Como Funciona la Memoria en Java?


Bsicamente, 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.

Zona de datos
Donde se almacena el cdigo ejecutable (las clases, constantes, etc.). El tamao de esta zona es fijo, y nada de lo que est ac cambia durante la ejecucin del programa.

Stack
Se almacenan las variables locales, parmetros y mtodos de retorno de los mtodos, etc. El tamao de esta zona tambin es fijo y conocido en tiempo de compilacin

Heap
Esto es lo que se conoce como la memoria dinmica, el tamao de esta zona NO es conocido en tiempo de compilacin, ya que ac es donde se crean los objetos, y puede variar su tamao segn vayan crendose/eliminndose objetos.

Garbage Collector
Java podra ser el lenguaje ms utilizados que depende de la recoleccin 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.

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

Entorno de Desarrollo
NetBeans es un entorno de desarrollo visual de cdigo abierto que ocupa bastantes recursos a comparacin del kit JVK, hecho completamente con java; Mediante NetBeans es posible disear aplicaciones con solo arrastrar y soltar objetos sobre la interfaz de un formulario. Pero tambin existe un entorno de desarrollo que no es visual pero es tambin muy bueno, es el mas bsico que NetBeans lo proporciona Sun, que es el kit JVK, que con solo instalarlo podemos escribir las lneas de cdigo 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 documentacin. Integrador de c y c++ (JNI). Desensamblador.

EJEMPLO DE PROGRAMA EN JAVA


EJEMPLO DE PROGRAMA EN JAVA ESTE EJEMPLO CONVIERTE LA EDAD DE UNA PERSONA EN DAS 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("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); }

Conclusin
Mediante este trabajo de investigacin, el cual se bas en la realizacin de un informe y la preparacin de una disertacin, pudimos hallar y realizar numerables puntos de los cuales podemos destacar. Las formas bsicas de programacin en el lenguaje java Las herramientas de java. Las formas de aplicar ciertas funciones Aplicaciones en la programacin. Formas de aplicacin en java. Los entornos de programacin. Tambin logramos percatarnos de las diferencias existentes entre el lenguaje trabajado en la anterioridad como es C y este nuevo lenguaje Java. Logramos tambin realizar un programa en el lenguaje investigado, java, aplicando todo lo aprendido en la investigacin

Você também pode gostar