22
1 I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

Introducción a Java 2

Embed Size (px)

DESCRIPTION

Breve introducción a Java 2 para principiantes.

Citation preview

Page 1: Introducción a Java 2

1I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

Page 2: Introducción a Java 2

2I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Tema 1: Introducción a la OOP y el lenguaje Java

1. Programación orientada a objetos2. El lenguaje Java3. Compilación, bytecode y JVMs4. Entornos de desarrollo Java5. Java vs otros lenguajes OO

Page 3: Introducción a Java 2

3I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Programación orientada a objetos

•Aparece a finales de los 60, pero es a principios de los 80 cuando con el lenguajeSmalltalk comienza un interés claro hacia este paradigma.

•La programación orientada a objetos es el paradigma de programación y análisis ydiseño de aplicaciones claramente dominante en la actualidad.

•Hoy prácticamente no se concibe un lenguaje de programación sin característicasde orientación a objetos: Eiffel, C++, Java, C#, etc.

Page 4: Introducción a Java 2

4I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Programación orientada a objetos

Las ventajas del paradigma OO son múltiples:

•Es intuitiva, describe un problema en términos similares a los que utiliza la mentehumana.•Permite construir soluciones más seguras y con un mantenimiento más sencillo.•Fomenta la reutilización y el trabajo en equipo. Escalabilidad de las aplicaciones.

Las características principales del paradigma OO:

•Incorpora los conceptos de abstracción, ocultación de información y encapsulaciónheredados de los tipos de datos abstractos.

•Incorpora mecanismos específicos y extremadamente poderosos como son la•herencia, el polimorfismo y la ligadura dinámica

•Admite de manera muy natural en algunos lenguajes el soporte de genericidad(patrones) y la definición de operadores. No soportados por Java.

Page 5: Introducción a Java 2

5I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Programación orientada a objetos

El desarrollo siguiendo el enfoque orientado a objetos es un proceso integral queincluye métodos específicos de análisis y diseño, notación gráfica (UML) y lenguajesde programación orientados a objetos.

Las soluciones obtenidas durante la fase de análisis y diseño no son específicaspara ningún lenguaje de programación orientado a objetos

Page 6: Introducción a Java 2

6I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

El Lenguaje Java

Desarrollado en los laboratorios de Sun, es uno de los lenguajes de programaciónorientado a objetos que mayor repercusión ha tenido en los últimos años.

•Basado en C++ pero simplificado, mucho más fácil de usar, de más alto nivel ymenos propenso a errores.•Amplísima biblioteca estándar de clases predefinidas.•Las aplicaciones Java pueden ser ejecutadas indistintamente en cualquierplataforma sin necesidad de recompilación.•Amplio espectro: programación tradicional, distribuida, GUI, Web, dispositivosmóviles, etc.•Gestión avanzada de memoria mediante el uso de un recolector de basura.•Gestión avanzada de errores, tanto en tiempo de compilación como de ejecución.•Soporte sencillo de múltiples hebras de ejecución.•Pueden integrarse módulos escritos en C/C++.•Lenguaje abierto. Kits de desarrollo y documentación gratuitos en la red

Page 7: Introducción a Java 2

7I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

El Lenguaje Java

Existen distintas “ediciones” de Java para el desarrollo de aplicaciones en distintosámbitos:

•Aplicaciones de propósito general (J2SE)•Aplicaciones de gestión en entornos empresariales (J2EE)•Aplicaciones para teléfonos móviles, PDAs y otros dispositivos electrónicos quepermitan aplicaciones empotradas (J2ME)

Page 8: Introducción a Java 2

8I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

El Lenguaje Java

Existen dos kits diferentes que pueden ser descargados de la página oficial de Sun:

•El Java Development Kit (JDK) permite desarrollar y ejecutar aplicaciones Java•El Java Runtime Environment (JRE) permite únicamente la ejecución

J2SE incluye bibliotecas muy extensas y completas, que permiten la implementaciónde casi cualquier tipo de aplicación:

•Seguridad•EEDDs•Componentes (JavaBeans)•Internacionalización•E/S•XML•Redes y acceso a Internet•Programación distribuida (RMI, CORBA)•Matemática de precisión arbitraria•Sonido

•Interfaz de usuario (AWT, SWING)•Gráficos 2D•Manipulación, carga y descarga deimágenes•Impresión•Acceso a bases de datos (JDBC)•Gestión de preferencias yconfiguraciones

Page 9: Introducción a Java 2

9I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Compilación, bytecode y JVMs

Java sigue un esquema no tradicional de compilación/ejecución:

•La compilación genera un ejecutable en bytecode o código intermedioindependiente.

•Para su ejecución se requiere un JRE específico de la plataforma. El JRE estáformado por una máquina virtual java (JVM) y las librerías de clases.

•La JVM interpreta el bytecode o realiza su compilación just-in-time para que su•ejecución sea más eficiente

Ventas.javaclass Ventas{

…}

class Usuario{…

}

Ventas.class

Usuario.class

Java(windows)

Java(linux)

Java(Sun OS)

Código Fuente

Compilación

Archivos de clases enBytecode o código

intermedio Ejecución Interpretada con MV especifica

Page 10: Introducción a Java 2

10I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Compilación, bytecode y JVMs

Ventajas de este sistema:

•Se compila la aplicación una única vez y los ejecutables en bytecode obtenidos sonválidos para cualquier plataforma. El código fuente queda a salvo.

•Es muy robusto. La máquina virtual Java es capaz de detectar y notificar grancantidad de errores durante la ejecución de la aplicación (como accesos a elementosfuera de un vector)

•El recolector de basura no ocupa espacio en el ejecutable, ya que viene integradoen la JVM

•Los ejecutables son pequeños porque las librerías de clases vienen proporcionadasjunto a la JVM en el JRE de la plataforma concreta

Page 11: Introducción a Java 2

11I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Compilación, bytecode y JVMs

Inconvenientes:

•Velocidad. Evidentemente la interpretación o incluso compilación just-in-time delbytecode produce aplicaciones más lentas que en el caso de la ejecución directa deun binario. El recolector de basura puede suponer una sobrecarga adicional alprocesador.

•La generalidad tiene como inconveniente que no se aprovecha totalmente lapotencia de la máquina y del sistema operativo. Por ejemplo, el aspecto de unaaplicación Java puede resultar simple y poco atractivo en comparación con lasaplicaciones nativas

Page 12: Introducción a Java 2

12I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Entornos de Desarrollo Java

•JDK. El kit de desarrollo básico proporcionado por Sun. Es lo mínimo que se necesitapara desarrollar. Útil si se necesita compilar aplicaciones Java de manera esporádicao en general para programadores con espíritu “espartano”. Puede bajarsegratuitamente para cualquier plataforma de java.sun.com

•NetBeans. El IDE Java más popular, realizado íntegramente en Java (y por tantomultiplataforma). Consume bastantes recursos. Tiene una arquitectura extensiblecon módulos específicos para desarrollo web, aplicaciones móviles, diseño UML, etc.Puede obtenerse gratuitamente de www.netbeans.org

•Eclipse. Junto a netBeans, el entorno de desarrollo Java gratuito más utilizado.También permite el desarrollo en C++ y otros lenguajes de programación. Puededescargarse en www.eclipse.org

•Borland JBuilder. Excelente entorno integrado de desarrollo Java de Borland.Existen versiones limitadas que pueden bajarse de www.borland.com

•Microsoft Visual J++. Uno de los más populares, aunque las aplicaciones obtenidaspueden presentar problemas de compatibilidad con el SDK oficial de Java.

Page 13: Introducción a Java 2

13I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

El primer programa Hola.java

Es de consenso que el entorno JDK no es el más adecuado para el desarrollo deaplicaciones Java, debido a funcionar única y exclusivamente mediante comandos deconsola, ya que hoy en día la programación se suele ayudar de entornos visuales, comoJBuilder, JCreator o muchos otros, que facilitan enormemente la tarea.

Sin embargo, puede ser un entorno bastante útil para aprender el lenguaje, ya queaunque los entornos visuales nos hagan mucho trabajo siempre es necesario ir alcódigo para modificarlo y obtener el comportamiento deseado, lo cual quiere decir quenecesitamos dominar el lenguaje y es más fácil llegar a este dominio escribiendocódigos completos en un entorno “hostil” que no nos ayuda, que simplementeremodelando códigos ya generados por entornos visuales.

Page 14: Introducción a Java 2

14I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

El primer programa Hola.java

/*** @fileName Hola.java* @author Oscar Roa*/class Hola{

public static void main(String args[]){System.out.println(“Hola Mundo desde Java!”);

}}

Para compilar el ejemplo:Javac. Es el comando compilador de Java. Su sintaxis es:

#javac Hola.java

La entrada de este comando ha de ser necesariamente un fichero que contengacódigo escrito en lenguaje Java y con extensión .java. El comando nos creará unfichero .class por cada clase que contenga el fichero Java. Los ficheros .classcontienen código bytecode, el código que es interpretado por la máquina virtual Java.

Page 15: Introducción a Java 2

15I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

El primer programa Hola.java

Para ejecutar el ejemplo:Java. Es el intérprete de Java. Permite ejecutar aplicaciones que previamente hayansido compiladas y transformadas en ficheros .class. Su sintaxis es:

#java Hola

No es necesario aquí suministrar la extensión del fichero, ya que siempre ha de serun fichero .class

Algunos Ejercicios de practica.

•Calcular la suma de 2 números.•Calcular el Área de un circulo.•Calcular la suma de n números.•Calcular la suma de n números impares.•Calcular el factorial de un numero dado.•Obtener el código Ascii.•Calcular la seria Fibonnaci.

Page 16: Introducción a Java 2

16I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Tema 2: Programación Orientada a Objetos en Java

1. Introducción2. Clases de objetos3. Protección de miembros4. Protección de clases5. Inicialización y finalización6. Creación de objetos7. Trabajando con objetos8. Relaciones entre objetos9. Clases anidadas e interiores10. Autoreferencias11. Aplicaciones orientadas a objetos12. Herencia13. Adición, redefinición y anulación14. Protección y herencia

15. Herencia múltiple16. Polimorfismo17. Ligadura dinámica18. Información de clases en tiempo de

ejecución19. Otros temas de interés en Java

Page 17: Introducción a Java 2

17I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Clases

Las clases de objetos representan conceptos o entidades significativos en unproblema determinado.

Una clase describe las características comunes de un conjunto de objetos,mediante dos elementos:

Atributos (o variables miembro, variables de clase). Describen el estadointerno de cada objeto

Operaciones (o métodos, funciones miembro). Describen lo que sepuede hacer con el objeto, los servicios que proporciona

Cuenta

número: Stringtitular: Stringsaldo: FloatinteresAnual: Float

ingreso(cantidad: Floatl)reintegro(cantidad: Floatl)ingresoInteresMes()

Atributos

Operaciones

Nombre de la Clase

Page 18: Introducción a Java 2

18I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Clases

●Durante la ejecución de la aplicación se producirá la instanciación de la clase, esdecir, la creación de los objetos que representan cada uno de los individuos con suscaracterísticas propias, es decir, valores específicos para sus atributos.

Cuenta

número: Stringtitular: Stringsaldo: FloatinteresAnual: Float

ingreso(cantidad: Floatl)reintegro(cantidad: Floatl)ingresoInteresMes()

número = “00982” titular = “Luis Cruz”Saldo = 2500.00 interesAnual = 0.23

número = “0282” titular = “Oscar”Saldo = 12500.00 interesAnual = 0.02

número = “00922” titular = “Maria ”Saldo = 1500.00 interesAnual = 1.23

a : Cuenta

b: Cuentac : Cuenta

Clase

Objetos

Page 19: Introducción a Java 2

19I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Clases

La implementación de esta clase en Java se realizaría en un fichero con nombreCuenta.java, y su contenido sería el siguiente:

class Cuenta {long numero;String titular;float saldo;float interesAnual;

void ingreso(float cantidad) { }void reintegro(float cantidad) { }void ingresoInteresMes() { }boolean enRojos() { }float leerSaldo() { }

}

Los atributos pueden ser de cualquiera de los tipos básicos de Java:boolean, char, byte, short, int, long, float y double, referencias a otros objetos oarrays de elementos de alguno de los tipos citados:

Page 20: Introducción a Java 2

20I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Clases

Al contrario que C++, Java realiza la definición e implementación de la clase en el mismo lugar, en un único fichero .java

class Cuenta {long numero;String titular;float saldo;float interesAnual;

void ingreso(float cantidad) {saldo += cantidad;

}void reintegro(float cantidad) {

saldo = cantidad;}void ingresoInteresMes() {

saldo += interesAnual * saldo / 1200;}boolean enRojos() { return saldo < 0; }float leerSaldo() { return saldo; }

}

Page 21: Introducción a Java 2

21I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Clases

El acceso a los atributos de la clase desde la implementación de las operaciones serealiza de forma directa.

Los atributos u operaciones estáticas (static) no son afectados por el proceso deinstanciación de objetos a partir de la clase.

De un atributo estático no se genera una copia por cada objeto que se crea. Existeuna única copia compartida y accesible desde todos los objetos de la clase.

Una operación estática únicamente puede acceder a miembros estáticos

Page 22: Introducción a Java 2

22I.S.C. Oscar Eduardo Roa Vela | Programación Básica con Java 2 Diciembre, 2010

INSTITUTO DE COMPUTACIÓN Y ELECTRÓNICA “DEHESA”PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA 2

Clases

El atributo nOp mantiene una cuenta global del número de operaciones realizadasen las cuentas del banco, para la realización de estadísticas.

La operación leerNOperaciones() permite leer este contador.La operación eurosAPesetas() es una operación auxiliar de la clase Cuenta para ser

usada cuando sea necesaria una conversión de moneda

class Cuenta {long numero;String titular;float saldo;float interesAnual;// Contador de operacionesstatic int nOp = 0;static int leerNOperaciones() { return nOp; }// Operación estática auxiliar de conversiónstatic long eurosAPesetas(float euros) { return euros * 166.386f; }void ingreso(float cantidad) { saldo += cantidad; ++nOp; }void reintegro(float cantidad) { saldo = cantidad; ++nOp; }

}