You are on page 1of 31

Programaci´n Orientada a Objetos con Java o

Programaci´n Orientada a Objetos con Java o
Rodrigo L´pez o
Instituto Tecnol´gico de Morelia o

14 de octubre de 2011

Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o

14 de octubre de 2011

1 / 31

Programaci´n Orientada a Objetos con Java o Contenido

Contenido
Software requerido Operaciones aritm´ticas, l´gicas. e o Estructura general de un programa Tipos de datos fundamentales Palabras reservadas Las 3 estructuras b´sicas de control a El objeto en Java Los paquetes en Java Herencia, polimorfismo, y sobrecarga de funciones en Java

1 2 3 4 5 6 7 8 9

Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o

14 de octubre de 2011

2 / 31

Programaci´n Orientada a Objetos con Java o Software requerido

Software requerido

Compilador de Java (JDK:Java Development Kit) http://www.oracle.com/technetwork/java/javase/downloads/in Editor o entorno de desarrollo
NotePad++ http://notepad-plus-plus.org/ NetBeans http://netbeans.org/

Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o

14 de octubre de 2011

3 / 31

o 9 OR L´gico: ||. e o o 1 Asociativo: (). o Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 4 / 31 . l´gicos y de asignaci´n.(Ejemplo: ++a. --.Programaci´n Orientada a Objetos con Java o Operaciones aritm´ticas y l´gicas e o Operaciones aritm´ticas. aritm´ticos.-. 6 Igualdad: ==. 4 Suma: +. !=. A continuaci´n se muestra la precedencia de o los operadores asociativos. ≤. o 8 AND L´gico: &&.a++). 5 Relacional: ≥. 2 Preincremento-postincremento: ++. -. 3 Tipo: +. <. l´gicas y de asignaci´n e o o Las operaciones aritm´ticas se resuelven en Java respetando la precedencia de los e operadores y de izquierda a derecha. >. 7 Selecci´n: ?: (Ejemplo:4<a?1:0).

Programaci´n Orientada a Objetos con Java o Estructura general de un programa Estructura general de un programa Al conjunto de operaciones que se realiza sobre cierta informaci´n se le llama o tratamiento de informaci´n. El tratamiento de la informaci´n se lleva a cabo o o mediante un programa que contiene la siguiente estructura: Estructura general de un programa 1 Entrada Recogida de datos Almacenamiento de datos Depuraci´n de datos o 2 Proceso Aritm´tico e L´gico o 3 Salida Recogida y distribuci´n de datos o Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 5 / 31 .

Programaci´n Orientada a Objetos con Java o Tipos de datos primitivos Tipos de datos primitivos Los tipos de datos primitivos son tipos de datos de los cuales un lenguaje parte para crear estructuras de datos compuestos. Tipo boolean char byte short int long float double Tamanio (Bits) 16 8 16 32 64 32 64 Descripci´n o true o false Caracteres ISO unicode Entero de 8 bits Entero de 16 bits Entero Entero Punto flotante IEEE 754 Punto flotante de Doble precici´n IEEE 754 o Cuadro: Tipos de datos primitivos Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 6 / 31 .

Programaci´n Orientada a Objetos con Java o Las tres estructuras b´sicas de control en Java a Las tres estructuas b´sicas de control en Java a Debido al teorema del programa estructurado. Java solo contiene esas tres estructuras de control: 1 Selecci´n simple if o if(<P>){ /*Bloque de instrucciones*/ } 2 Bifurcaci´n if..else. ?: o if(<P>){ /*Bloque de instrucciones*/ }else{ /*Bloque de instrucciones*/ } Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 7 / 31 ..

Java solo contiene esas tres estructuras de control: 1 Repetici´n while o while(<P>){ /*Bloque de instrucciones*/ } Cuando el bloque de instrucciones solo contiene una sola instrucci´n es posible o omitir las llaves. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 8 / 31 .Programaci´n Orientada a Objetos con Java o Las tres estructuras b´sicas de control en Java a Las tres estructuras b´sicas de control en Java a Debido al teorema del programa estructurado.

Programaci´n Orientada a Objetos con Java o Palabras reservadas Palabras reservadas 48 palabras est´n definidas en el lenguaje Java. Estas palabras reservadas. clases o m´todos. a combinadas con la sintaxis de los operadores y separadores. e abstract super native float class try short double break synchronized package goto continue volatile int extends case throw protected implements do strictfp long finally char transient return instanceof boolean switch new for const void static else byte this private if default while interface final catch throws public import Cuadro: Palabras reservadas de Java Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 9 / 31 . forman la definici´n o del lenguaje Java y no se pueden utilizar como nombres de variables.

out. //esta es la primera linea que se ejecuta System. El archivo de texto en el cu´l a esta contenida la clase principal debe llamarse igual que la clase principal. el acceso a las variabes primitivas pueden ser private. Ejemplo: Esta clase debe estar guardada en Bienvenido.java /*En esta parte se importan paquetes de clases*/ public class Bienvenido /*Aqui se declaran variables y su acceso.print( "Bienvenido a " ). protected.println( "la programacion en Java!" ).out.Programaci´n Orientada a Objetos con Java o El objeto en Java El objeto en Java En Java hasta el programa mas simple es un objeto. // fin del metodo main // fin de la clase Bienvenido Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 10 / 31 . public*/ // el metodo main empieza la ejecucion de la aplicacion de Java public static void main( String args[] ) System.

Los miembros de u los objetos tienen modificadores de acceso que restringen la visibilidad a m´todos e variables. La misma clase x x x x Otra clase de un mismo paquete x x x Subclase de otro paquete Otra clase de otro paquete private default protected public x x x Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 11 / 31 .Programaci´n Orientada a Objetos con Java o El objeto en Java Organizaci´n de clases y modificadores de acceso o Un conjunto de clases pueden estar contenidas en alg´n archivo . pero por u cada archivo fuente .java solo debe de existir una clase p´blica.java.

public Phi(){ phi=0. } } Phi() es un m´todo especial e llamado constructor que inicializa el valor de las variables que se llama igual que la clase.java o Se crea una clase publica Phi. La funci´n del constructor es o inicializar los atributos de la clase. no devuelve alg´n valor y debe ser u p´blico para que pueda ser u ejecutado de manera impl´ ıcita al instanciar un objeto de la clase. public class Phi { private double phi. debe ser contenida en un archivo .java private restringe la visibilidad a double phi a su propia clase.Programaci´n Orientada a Objetos con Java o El objeto en Java Analizando la construcci´n del archivo Phi. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 12 / 31 .

El } } resultado lo guarda en la variable privada phi. public Phi(){ inicializar(). El m´todo double e } calcularPhi(int public double calcularPhi(int iteraciones){ iteraciones).java o El m´todo inicializar() es e p´blico. de la constante phi por return phi.Programaci´n Orientada a Objetos con Java o El objeto en Java Analizando la construcci´n del archivo Phi. } public void inicializar(){ phi=0. while(i++<iteraciones) implementaci´n del calculo o phi = 1+1/phi. medio de iteraciones. public class Phi { private double phi. que solo puede ser accedida desde la misma clase. tiene la int i=0. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 13 / 31 . no regresa dato u alguno e inicializa la variable phi.

inicializar(). por el tipo y el n´mero de u while(i++<iteraciones) phi = 1+1/phi.java o public class Phi { private double phi. public Phi(){ Ahora el constructor Phi(). par´metros que reciben. constructor con public } Phi(int n). a return phi.Programaci´n Orientada a Objetos con Java o El objeto en Java Analizando la construcci´n del archivo Phi. Ahora se muestra un } ejemplo de sobrecarga del public void inicializar(){ phi=0. public Phi(int n){ calcularPhi(n). hace uso de la funci´n o } inicializar(). } } Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 14 / 31 . los dos public double calcularPhi(int iteraciones){ constructores se diferencian int i=0.

text. import javax. int n. cadenaIteracion=JOptionPane. JOptionPane.calcularPhi(n)).DecimalFormat. n=Integer. } } Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 15 / 31 .Programaci´n Orientada a Objetos con Java o El objeto en Java Implementaci´n de la clase p´blica Phi en una clase principal Main o u import java.swing. " El numero phi con " + n + " iteraciones es:" + ObjetoPhi. String cadenaIteracion.parseInt(cadenaIteracion). public class Main { public static void main(String args[]) { Phi ObjetoPhi = new Phi().showInputDialog(" Introduce el numero de iteraciones").showMessageDialog(null.JOptionPane.

es para que cada objeto tenga referencia a sus propios miembros.JOptionPane. This puede ser implementado de manera expl´ ıcita e impl´ ıcita. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 16 / 31 .swing.showMessageDialog Para referenciar a los miembros del dentro del mismo objeto se hace mediante this. es posible invocar showMessageDialog sin necesidad de import si el programa indica completamente el nombre de cada clase como por ejemplo: javax.Programaci´n Orientada a Objetos con Java o El objeto en Java Cuando una clase se encuentra dentro del mismo paquete no se requiere la declaracion import.

Programaci´n Orientada a Objetos con Java o El objeto en Java Para obtener o asignar alg´n valor de un campo privado se definen m´todos u e obtener / asignar. o (Compuestos por otros objetos) . ni tampoo puede hacer e referencia a variables no statics. Los miembros de la clase est´ticos son visibles por la clase. Composici´n: Son los objetos que tienen instancias de otros objetos. y existen en forma independiente de lainstanciacion del objeto Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 17 / 31 . Nota: un m´tod static no tiene referencia this. Miembros de la clase static: son miembros que son visibles solo para esa clase. (O por el a conjunto de objetos instanciados de una misma clase).

Programaci´n Orientada a Objetos con Java o El objeto en Java Definici´n de valores constantes en Java o Las constantes se definen como: private final int INCREMENTO =5. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 18 / 31 . Este tipo de ‘variables‘ no pueden ser modificadas una vez que ya est´n a inicializadas.

Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 19 / 31 . Su constructor que recibe un par´metro para inicializar la a variable miembro x. } public void establecerLongitud(int x){ this.x=x. public Longitud(int componenteX){ x=componenteX.Programaci´n Orientada a Objetos con Java o Herencia Herencia en Java Ejemplo minimalista de herencia. } public String toString(){ return "La longitud es:" + obtenerX(). } } Se define la Superclase Longitud que tiene como variable miembro privado un entero x. this es utilizado para hacer referencia a un miembro de la misma clase. public class Longitud{ private int x. Se definen 3 m´todos publicos e para acceder a la variable x de la clase. } public int obtenerLongitud(){ return x.

} } ´ Se define la Subclase Area que extiende de Longitud. ´ Area hereda de los atriubutos que no son private de la clase Longitud Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 20 / 31 . } public void establecerAltura(int altura){ this.altura=altura. ´ La sublcase Area. } public double obtenerArea(){ return obtenerBase()*obtenerAltura(). public Area(int base.toString()+ ". int altura){ super(base). Altura = " + obtenerAltura().Programaci´n Orientada a Objetos con Java o Herencia Herencia de dos niveles public class Area extends Longitud{ private int altura. contiene un miembro variable entero altura. } public double obtenerAltura(){ return altura. con extends. establecerAltura(altura). } public String toString(){ return "Base = " + super.

} } Se define la Subclase Volumen que extiende de ´ Area.obtenerArea()* obtenerProfundidad().y). } public double obtenerVolumen(){ return super. int z){ super(x. } public String toString(){ return super. Profundidad = " + obtenerProfundidad() + " Volumen = " + obtenerVolumen(). } public void establecerProfundidad(int z){ profundidad=z<0?0:z. establecerProfundidad(z).Programaci´n Orientada a Objetos con Java o Herencia class Volumen extends Area{ private int profundidad. } public double obtenerProfundidad(){ return profundidad. int y. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 21 / 31 .toString()+ ". public Volumen(int x. La sublcase Volumen hereda funcionalidad de dos niveles hacia arriba.

Programaci´n Orientada a Objetos con Java o Polimorfismo Polimorfismo Es una capacidad de un lenguaje de programaci´n que permite programar de o manera general. ıa Funciona con referencias a la superclase. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 22 / 31 . Nos permite procesar objetos de la misma jerarqu´ con facilidad.

Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 23 / 31 .

Contiene m´todos abstractos que las ıa e subclases deben sobreescribir. Las clases abstractas est´n incompletas y se completan definiendo la a implementaci´n en las subclases.Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Clases y m´todos abstractos e Clase abstracta: Clases de las cuales no se pretenden instanciar objetos. Una clase es abstracta cuando al menos exista un m´todo como abstract. e Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 24 / 31 . Ayudan a definir la estructura abstracta el programa. o Una clase abstracta declara los atributos y comportamientos comunes de las diversas clases en una jerarqu´ de claes.

} public abstract String obtenerNombre().Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Ejemplo de una clase abstracta public abstract class Figura extends Object{ public double obtenerArea(){ return 0. { Se define una clase abstracta Figura extendida de Object Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 25 / 31 .0.

Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Ejemplo de una clase abstracta public abstract class Figura extends Object{ public double obtenerArea(){ return 0. } La declaraci´n e o implementaci´n del m´todo o e obtenerArea. devuelve 0.0 por defecto.0. } public abstract String obtenerNombre(). obtenerNombre() es un m´todo abstracto e sobrescrito por las subclases Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 26 / 31 .

x=x. La clase Recta extiende de } la clase abstracta Figura.Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Recta: clase derivada de Figura public class Recta extends Figura{ private int x. m´todos e return "La longitud es:" + sobre escritos. } } Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 27 / 31 . obtenerLongitud(). } public String toString(){ obtenerNombre(). public void establecerLongitud(int x){ this. toString() es una funci´n o } public int obtenerLongitud(){ que se puede llamar de return x. manera impl´ ıcita. } public String obtenerNombre(){ return " Recta". public Recta(){ } public Recta(int componenteX){ x=componenteX.

toString()+ ".} public String obtenerNombre(){ return " Cuadrilatero". e Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 28 / 31 . obtenerNombre() es un m´todo sobrescrito. } } La clase Cuadrilatero extiende de la clase Recta. } public void establecerAltura(int a){ altura=a. int y){ super(x). } public double obtenerAltura(){ return altura. public Cuadrilatero(int x. Altura = " + obtenerAltura(). establecerAltura(y).Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Recta: clase derivada de Figura public class Cuadrilatero extends Recta{ private int altura. } public double obtenerArea(){ return obtenerLongitud()*obtenerAltura(). } public String toString(){ return "Longitud = " + super.

obtenerNombre() + ":" + "\nArea :" + arregloDeFiguras[i]. i<arregloDeFiguras. for(int i =0 .println(arregloDeFiguras[i].length .out. Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 29 / 31 .obtenerArea() ).println(cuadrilatero. public class Main{ public static void main(String args[]){ Recta recta = new Recta(100). arregloDeFiguras[0] = recta. System. import javax. } } } Se instancian los objetos recta y cuadrilatero. arregloDeFiguras[1] = cuadrilatero.swing. Cuadrilatero cuadrilatero = new Cuadrilatero(3.out.obtenerNombre()+" : " + cuadrilatero). System.JOptionPane.DecimalFormat. Se crea un arreglo de 2 objetos derivados de la clase abstracta Figura.Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Prueba de la jerarqu´ de clases Figura → Recta → ıa Cuadrilatero import java.println(recta. Figura arregloDeFiguras[] = new Figura[2].2). i++){ System. recta y cuadrilatero.obtenerNombre()+" : " + recta).out.text.

Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo Interfaces Una interfaz se utiliza en vez de una clase abstracta cuando no existe alguna implementaci´n predeterminada que heredar. o Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 30 / 31 .

Programaci´n Orientada a Objetos con Java o Polimorfismo Ejemplos de polimorfismo M´todos y clases final e Asi como las variables pueden declararse como final para indicar que no pueden modificarse una vez declaradas. la subclase se compromete a definir la implementaci´n de las definiciones establecidas de la interface. Todos los m´todos static no pueden e sobreescribirse. tambi´n se puede hacer con los m´todos y las e e clases. Al implementar una interfaz en una clase. Un m´todo que se declara como final de una superclase no puede ser e sobreescrita en alguna subclase. o ıa Rodrigo L´pez (Instituto Tecnol´gico de Morelia) o o Programaci´n Orientada a Objetos con Java o 14 de octubre de 2011 31 / 31 . Si no se o implementa alguna definici´n entonces se generar´ un error de compilador.