1 Introducción a la Programación Orientada a Objetos ISC. Cesar Antonio Colocia Garcia ISC. Rafael Aburto Casillas ENERO 2007 Curso Taller
2 Introducción a la Programación Orientada a Objetos Contenido Introducción Metodología Orientada a Objetos Principios de la POO Tecnología Java Plataforma Java Tipos de programas en Java Creación, Compilación y Ejecución de Programas Entornos de programación Java vs Otros lenguajes Elementos del Lenguaje Uso y Definición de Clases Ambiente Gráfico en Java (AWT) Recursos y bibliografía
3 Introducción a la Programación Orientada a Objetos Introducción Modelo de programación utilizando objetos sin jerarquías. Extensión natural de la programación estructurada. Modularidad y reutilización del código. Entidades Objetos con propiedades y métodos
4 Introducción a la Programación Orientada a Objetos Principios de la POO Elementos Objeto Clase Atributos Métodos Características Abstracción Encapsulamiento Herencia Polimorfismo
5 Introducción a la Programación Orientada a Objetos Principios de la POO Objeto: conjunto complejo de datos y programas que posee estructura y forma parte de una clase superior. Un objeto es algo real o abstracto acerca del cual almacenamos datos y métodos que manipulan dichos datos (Martín/Odell) Encapsulado de datos, operaciones que tratan dichos datos, y que observa un estado interno, que posee identidad (se distingue por su existencia misma y no por sus atributos).
6 Introducción a la Programación Orientada a Objetos Principios de la POO Objetos TRANSPORTE Clase Superior
7 Introducción a la Programación Orientada a Objetos Características: Son cosas. Son simples o complejos. Son reales o imaginarios. Un objeto siempre pertenece a una clase Principios de la POO
8 Introducción a la Programación Orientada a Objetos Principios de la POO Clase Clase: grupo de objetos con propiedades (atributos) similares, comportamiento común (operaciones), relaciones comunes entre objetos, y semántica común (Rumbaugh). atributos comportamientos Color Dimensiones Numero_puertas Avanzar Encender Apagar
9 Introducción a la Programación Orientada a Objetos Principios de la POO Proceso de identificar y definir los atributos y operaciones comunes de una colección de objetos durante el desarrollo de un sistema. Aminora la redundancia en el desarrollo y por tanto el código a generar será mas reducido, ya que se promueve el rehúso del mismo. Generalización
10 Introducción a la Programación Orientada a Objetos Principios de la POO Atributos de la clase. Características que la distinguen. Métodos de la clase. El comportamiento de la clase queda definido por el conjunto de operaciones (métodos) que se pueden efectuar.
11 Introducción a la Programación Orientada a Objetos CuentaHabiente Atributos No_cuenta Nip Saldo Métodos CancelarC Depositar Apertura Principios de la POO Public Private Protected - # +
12 Introducción a la Programación Orientada a Objetos Principios de la POO Encapsulamiento... Interfaz pública Implementación Información interna
13 Introducción a la Programación Orientada a Objetos Principios de la POO Herencia Clases diferentes con una relación jerárquica compartan atributos y operacione s. Reutilización de código garantizada. Simple o Múltiple.
14 Introducción a la Programación Orientada a Objetos Principios de la POO Polimorfismo Una misma operación pueda comportarse de manera diferente en distintas clases.
15 Tecnología Java
16 Introducción a la Programación Orientada a Objetos Tecnología Java Orientado a objetos. Distribuido RMI (Remote Method Invocatio n) CORBA (Common Object Request Broker Arquitectur e) URL (Universal Resource Locato r). Multihilos. Seguro. Multiplataforma. “Write Once, Run Anywhere”.
17 Introducción a la Programación Orientada a Objetos Plataforma Java La Máquina Virtual de Java (JVM) La Interfaz de Programación de Aplicaciones de Java (API Java)
18 Introducción a la Programación Orientada a Objetos
19
20 Instalación y uso del JSDK bin : javac, java, jdb, javadoc, appletviewer, jar, javah, javap y extcheck jre : entorno de ejecución de Java utilizado por el SDK. Incluye JVM, biblioteca de clases. lib : biblioteca de clases adicionales y ficheros de soporte. demo :ejemplos include : archivos de cabecera. docs : Documentacion de todas las clases de Java 2.
21 Introducción a la Programación Orientada a Objetos Entornos de desarrollo BlueJ: es un entorno de desarrollo Java diseñado específicamente para la enseñanza a un nivel introductorio. Ha sido diseñado e implementado por el equipo BlueJ en la Deakin University, Melbourne, Australia, y la University of Kent, en Canterbury, UK. Eclipse:es un proyecto de IBM de desarrollo de software Open Source dedicado a obtener un producto de alta calidad para el desarrollo de herramientas integradas (IDE). Su instalación es muy sencilla, podemos descargárlo de www.eclipse.org en forma de archivo ZIP y solo tenemos que descomprimirlo en la carpeta donde queramos tenerlo instalado.www.eclipse.org
22 Introducción a la Programación Orientada a Objetos Entornos de desarrollo Borland JBuilder. Excelente entorno integrado de desarrollo Java de Borland. Al igual que Netbeans, también está realizado íntegramente en Java. Existen versiones limitadas que pueden bajarse de www.borland.com Microsoft Visual J++: Uno de los más populares, aunque las aplicaciones obtenidas pueden presentar problemas de compatibilidad con el SDK oficial de Java, por el uso de librerías especificas de Microsoft. Permite construir aplicaciones Java dentro de la plataforma.NET.
23 Introducción a la Programación Orientada a Objetos Tipos de programas en java Aplicaciones Applets Servlets
24 Introducción a la Programación Orientada a Objetos Ciclo de creación de programas en java Java sigue un esquema no tradicional de compilación / ejecución: class Producto { int id; string titulo; float precio; int cantidad;... } class Usuario{... } class VentaInternet {... } javac Producto.class Ventas.class Usuarios.class Java (windows) Java (Linux) Java (sun) Biblioteca De Clases Código Fuente Compilación Ficheros de clases en bytecode o código intermedio (no son binarios ejecutables directamente) Ejecución interpretada o compilada just-in- time con máquina virtual Java específica
25 Introducción a la Programación Orientada a Objetos Ciclo de creación de programas en java Generación el código fuente
26 Introducción a la Programación Orientada a Objetos Ciclo de creación de programas en java El Nombre del archivo debe ser igual al nombre de la clases en el código. MiClase.java public MiClase { ………………… …………………… }
27 Introducción a la Programación Orientada a Objetos Ciclo de creación de programas en java Compilación del código fuente: javac nombredearchivo.java. Resultado (bytecode) con extensión.class. MiCodigo.java javac MiCodigo.java MiCodigo.class
28 Introducción a la Programación Orientada a Objetos Ciclo de creación de programas en java Ejecución del bytecode: java nombredearchivoclase JVM MiCodigo.class java MiCodigo
29 Elementos de Java
30 Introducción a la Programación Orientada a Objetos Estructura de un programa Para usar objetos debemos: 1.Definir la clase objeto 2.Definir la clase principal 3.Declarar, instanciar e inicializar 4.Invocar sus métodos de las instancias creadas. Ejercicio 1y 2 Pagina 32
31 Introducción a la Programación Orientada a Objetos Estructura de un programa Clases archivos fuentes independientes Clase controladora, principal o de prueba Declaración de clase(obligatoria) Declaración e inicialización de atributos (opcional) Definición de métodos (opcional) Comentarios(opcional)
32 Introducción a la Programación Orientada a Objetos Estructura de un programa Declaración de una clase [modificadores] class identificador{ //declaración de atributos //declaración de métodos }
33 Introducción a la Programación Orientada a Objetos Estructura de un programa public class cCuenta { private int nCuenta; private float fSaldo; private String sFechaCreacion; public void MostrarDatos() { ……….. }
34 Introducción a la Programación Orientada a Objetos Estructura de un programa Declaración de atributos [modificadores] tipo identificador [=valor][,identicador2[=valor]...]; Ejemplo: public int iNumCuenta; private char cTipo, cStatus=‘A’;
35 Introducción a la Programación Orientada a Objetos Estructura de un programa Declaración de métodos [modificadores] tipoderetorno identificador([argumentos]) { bloque_de_instrucciones } Ejemplo: public int mSuma(int x, int y){ return x+y; }
36 Introducción a la Programación Orientada a Objetos Estructura de un programa Definición clase controladora, principal o de prueba. public class identificador { public static void main(String args[]){ bloque instrucciones; }
37 Introducción a la Programación Orientada a Objetos public class Cuenta { long numero; String titular; private float saldo; float interesAnual; public void ingreso (float cantidad) { saldo += cantidad; } public void reintegro (float cantidad) { saldo -= cantidad; } public void ingresoInteresMes () { saldo += interesAnual * saldo / 1200; } public boolean enRojos () { return saldo < 0; } public float leerSaldo () { return saldo; } } public class CuentaTest { public static void main (String arg[]) { float SALDO_INI; Cuenta banamex = new Cuenta(); banamex.ingreso(1550.50); SALDO_INI=banamex.leerSaldo(); } Clase Objeto Clase Principal
38 Introducción a la Programación Orientada a Objetos Estructura de un programa Atención: Java sólo permite una clase pública por fichero fuente, y el nombre de la clase y el fichero deben coincidir En nuestro ejemplo, si queremos que la clase Cuenta pueda ser utilizada desde el exterior del fichero Cuenta.java deberemos declararla como pública. Ejercicio 3 Pagina 32
39 Introducción a la Programación Orientada a Objetos Estructuras de control Selectivas if-else switch Repetitivas for while do-while
40 Introducción a la Programación Orientada a Objetos Estructuras de control if (expresión_booleana) { bloque; } else { bloque; } switch(variable){ case valor_1: bloque 1; break; case valor_2: bloque 2; break;..... case valor_n: bloque n; break; [default : bloquedefault;] }
41 Introducción a la Programación Orientada a Objetos Estructuras de control for(valor_inicial,condición,incremento) { bloque; } while(condición) do{ { bloque; bloque; } }while(condición);
42 Uso y Definición de Clases
43 Introducción a la Programación Orientada a Objetos Clases de uso común java lang io util applet net awt predeterminada Otro paquetes
44 Introducción a la Programación Orientada a Objetos Clases de uso común Utilizando su nombre completo out.println(valor); Importando la clase y referirse a ella..out.println(valor); java.lang.System. System.
45 Introducción a la Programación Orientada a Objetos Importar clases import escribirse antes de cualquier definición de clase. import java.lang.System; //importar clase system import java.lang.*; //importar las clases de lang public class cGrados { //... System.out.println(gradosCent+” °C”); //... }
46 Introducción a la Programación Orientada a Objetos Entrada y Salida java.io Object InputStream OutputStream BufferedReader Writer Reader InputStreamReader PrintWriter BufferedReader InputStreamReader FilterOutputStream PrintStream java.lang
47 Introducción a la Programación Orientada a Objetos Flujo deEntrada InputStream public int read() throw IOException public int read(byte[ ] b) throw IOExecption public int read(byte[ ] b,int off, int len) throw IOException
48 Introducción a la Programación Orientada a Objetos Flujo de Salida OutputStream public int write(int b) throw IOException public int write(byte[ ] b) throw IOExecption public int write(byte[ ] b,int off, int len) throw IOException
49 Introducción a la Programación Orientada a Objetos Flujo de Entrada/Salida Java.lang System.in int n; n=System.in.read(); System.out System.out.println(n); System.err
50 Introducción a la Programación Orientada a Objetos Implementacion de una clase Separar la implementación de cada clase en un fichero.class Definir métodos de acceso a los miembros de la clase.(métodos getter y setter). Al menos definir un método de cada clases como publico.
51 Introducción a la Programación Orientada a Objetos Implementacion de una clase Definir métodos que permitan iniciar un objeto. (constructor) Definir métodos que permitan destruir un objeto. (destructor)
52 Introducción a la Programación Orientada a Objetos Iniciación de un objeto ¿Cómo se construye un objeto de una clase cualquiera? cFecha fecha=new cFecha(); Clase baseObjeto instanciado Constructor público por omisión
53 Introducción a la Programación Orientada a Objetos Iniciación de un objeto Constructor. Método especial de una clase llamado automáticamente siempre que se crea (instancia)un objeto de la misma. Asigna memoria para el objeto por medio del operador new Inicia los atributos de ese objeto. No se hereda, no puede retornar valores y no puede ser declarado final, static o abstract. Deben ser publicos
54 Introducción a la Programación Orientada a Objetos Método que tiene el propósito especial de instanciar a un objeto de una manera definida. Generalmente son empleados para asignar valores de inicio a sus atributos y se invocan de manera automática; su sintaxis es similar a la de un método: [modificadores] Nombredelconstructor([argumentos]){ bloque; }
55 Introducción a la Programación Orientada a Objetos Constructores public class Cuenta { long numero; String titular; private float saldo; float interesAnual; public Cuenta (long n, String nombre){ numero=n; titular=nombre; saldo=0; interesAnual=14.5; } …………… public void ingresoInteresMes () { saldo += interesAnual * saldo / 1200; } public boolean enRojos () { return saldo < 0; } public float leerSaldo () { return saldo; } }
56 Introducción a la Programación Orientada a ObjetosArreglos Declaración: tipo [] identificador_arreglo; identificador_arreglo=new tipo[tamaño]; tipo[] identificador_arreglo = new tipo[tamño]; Ejemplo: int[] edad= new int[30]; String[] alumnos; alumnos=new String[20];
57 Introducción a la Programación Orientada a ObjetosArreglos Declaración e inicialización: tipo[] identificador_arreglo={valor1,...,valorn}; int[] edad={25,34,28,29,31,32,45};
58 Introducción a la Programación Orientada a Objetos Métodos Sobrecargados Un método se puede definir varias veces en una clase, diferenciandose una de otra cuando menos en un parámetro. Lo que importa son el número y el tipo de los parámetros.
59 Introducción a la Programación Orientada a Objetos Métodos Sobrecargados LanzarPelota( )
60 Introducción a la Programación Orientada a Objetos Métodos Sobrecargados Ejercicio: 1.Defina una clase Operaciones, que contenga el método suma sobrecargado. 2.Escriba una clase controladora OperacionesTest donde se instancie la clase Operaciones y se utilice el método suma en sus modalidades definidas.
61 Introducción a la Programación Orientada a Objetos Métodos Sobrecargados public class Operaciones{ public int suma(int num1, int num2){ return num1+num2; } public float suma(float num1, float num2){ return num1+num2; } public float suma(int num1, float num2){ return num1+num2; }
62 Introducción a la Programación Orientada a Objetos Métodos Sobrecargados public class OperacionesTest{ public static void main(String args[]) { Operaciones Oper= new Operaciones(); int Total1=Oper.suma(2,3); System.out.println(Total1); float Total2=Oper.suma(15.6F,12.98F); System.out.println(Total2); float Total3=Oper.suma(3,32.48F); System.out.println(Total3); }
63 Introducción a la Programación Orientada a ObjetosSubclases La herencia provee el mecanismo más simple para especificar una forma alternativa de acceso a una clase existente. O definir una nueva clase que añada nuevas características a una clase existente.
64 Introducción a la Programación Orientada a ObjetosSubclases Clase cCuenta Clase cCuentaCorrienteClase cCuentaAhorro Subclase ó clase extendida Superclase ó clase base
65 Introducción a la Programación Orientada a ObjetosSubclase public abstract class cCuenta { //cuerpo de la clase } public class cCuentaCorriente extends cCuenta { //cuerpo de la clase }
66 Introducción a la Programación Orientada a Objetos Clases y métodos abstractos Clase abstracta: Diseñada para ser genérica y no crear objetos a partir de ella, cuya razón de existencia es proporcionar los atributos y comportamientos que serán compartidos por todas sus subclases (herencia).
67 Introducción a la Programación Orientada a Objetos Clases y métodos abstractos Clase abstracta: public abstract class cCuenta { // Cuerpo de la clase }
68 Introducción a la Programación Orientada a Objetos Clases y métodos abstractos Métodos abstractos: Pertenecen a una determinada estructura de herencia pero requerirán de una implementación especifica para cada subclase.
69 Introducción a la Programación Orientada a Objetos Clases y métodos abstractos public abstrac class A { abstract void callme( ); public void callmeToo( ){ System.out.println(“Este es un metodo\ concreto”); } public class B extends A { void callme( ){ System.out.println(“Este es la\ implementación del método”); }
70 Introducción a la Programación Orientada a Objetos Ejercicio: 1. Diseñe y cree dos clases, una llamada alumno y otra llamada maestro (usted defina los atributos que hacen diferente a cada clase) que hereden de la clase Persona.java los atributos que tienen en común. 2. Escriba los constructores para cada clase, asi como los métodos necesarios para obtener los valores de los atributos. 3. Diseñe y cree la clases EscuelaTest.java donde se cree un arreglo de 5 objetos alumnos y 5 objetos maestros, verifique el funcionamiento de las clases ingresando los datos de los diferentes objetos instanciados.
71 Introducción a la Programación Orientada a ObjetosInterfaces Conjunto de declaraciones de métodos (sin implementación). Cuando una clase implementa una determinada interface, se compromete a dar una definición a todos los métodos de la interface. No estan sometidas a la más rigidas normas de las clases.
72 Introducción a la Programación Orientada a ObjetosInterfaces Definición de una interfaz [public] interface nombre_intrefaz extends superinterfaces { //cuerpo de la interfaz }
73 Introducción a la Programación Orientada a ObjetosInterfaces Utilizar una interfaz Añadir el nombre de la interfaz precedido por implements. La palabra clave implements sigue a la palabra clave extends, si existe. public class cCuentaAhorro extends cCuenta implements iFecha
74 Introducción a la Programación Orientada a Objetos Referencias – Internet - BlueJ www.lab.dit.upm.es/~fprg/entorno/mipc/blu ej/ www.bluej.org Java www.java.com/es/ DJ Java Decompiler http://members.fortunecity.com/neshkov/dj. html
75 Introducción a la Programación Orientada a Objetos Referencias – Bibliografica – Java 2 curso de programación Fco. Javier Ceballos Editorial Alfaomega 2a. Edición Core Java(TM)2 Vol-I –II Horstmann, Cornell Sun Microsystem press 7th Edition
76 Introducción a la Programación Orientada a Objetos Java Visual Manejo de Archivos Programación GUI’s en JAVA Gestores de Eventos Componentes AWT Componentes Swing Integración Archivos – GUI´s 30 hrs.
77 Introducción a la Programación Orientada a Objetos Introducción a la POO JavaScript para Diseño de páginas dinámicas Gestión de Proyectos con UML Creación de Proyectos de computación en Java Visual Tratamiento de Información mediante Base de datos Relacionales Ensamble y mantenimiento de Equipo de Computo CINF0376.01 CINF0669.01
78 Introducción a la Programación Orientada a Objetos [email protected] www.colosia.com.mx [email protected]