PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA

Post on 09-Jan-2016

50 views 4 download

description

PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA. Dr. René Arnulfo García Hernández renearnulfo@hotmail.com. Contenido. [Ejemplos de applets ] Elementos privados, públicos y protegidos Constructores Destructores Try catch Herencia [Arreglos, Matrices y Cadenas]. Ejemplo de applets. - PowerPoint PPT Presentation

Transcript of PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA

PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA

Dr. René Arnulfo García Hernándezrenearnulfo@hotmail.com

Contenido

• [Ejemplos de applets]• Elementos privados, públicos y protegidos • Constructores• Destructores• Try catch• Herencia• [Arreglos, Matrices y Cadenas]

Ejemplo de applets

• Graficas y simulación– http://jmol.sourceforge.net/

• Expresiones regulares– http://myregexp.com/

• Botones y paneles– http://www.chuidiang.com/java/codigo_descarga

ble/appletpaneles.php

Elementos privados, públicos y protegidos

private, protected, package y public. El acceso por defecto es package.• public: puede ser usada por cualquier clase.• protected: puede ser usada por:

funciones miembros de la clase, funciones miembros de las subclases.funciones miembros de las clases del propio paquete.

• package: puede ser utilizada por todas las clases del paquete.

• private: sólo puede ser usado por las funciones miembros de la clase.

Elementos privados, públicos y protegidos

• Cuando no se especifican permisos de acceso (public, private o protected) se supone la opción por defecto, que es package.

• Si no se ha definido ningún paquete, se utiliza el package por defecto que es el directorio donde están definidas las clases.

• Es preciso especificar la visibilidad de cada miembro ya sea atributo o método de forma independiente.

Elementos privados, públicos y protegidos

Visibilidad

Acceso desde:

Propia clase subclases paquete Todas las clases

private X No No No

protected X según X No

public X X X X

por defecto X No X No

Visibilidad

Constructores - Ejemplopublic class TPunto {Private: int x; //Declaracion de una variable x int y; //Declarqcion de una variable yPublic: void Inicializar (int xcor,int ycor) { x=xcor; y=ycor; }//Fin Inicilizar

void TrasladarX(int xcor) { x=xcor; }//FinTrasLadarX

void Imprimir(){ System.out.println("Las coordenadas son: ("+x+","+y+")"); }//Fin Imprimir

}

public class Main {

/** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here System.out.println("Hola Mundo");

TPunto p1=new TPunto(); TPunto p2=new TPunto(); p1.x=89; p1.y=-59; //¿Sería correcto? p1.Inicializar(3, 2); p1.Imprimir(); p1.TrasladarX(10); p1.Imprimir();

p2.Inicializar(15, 6); p2.Imprimir();

}}

Métodos Constructores

Es un tipo especial de método utilizado cuando se crean objetos o instancias de una clase.

Caracteríticas:

• Su nombre coincide con el de la clase.

• No tiene valor de retorno (ni void)

• Una clase puede tener varios constructores (ejemplo típico de sobrecarga de funciones), pero la lista de parámetros tiene que variar.

• Los constructores deben diferir en tipo y/o cantidad de parámetro.

Constructores - características

• Si la clase tiene un constructor, todos los objetos de la clase deben ser inicializados invocándolo.

• Si el constructor tiene parámetros al invocarlo hay que suministrarlos.

• De no definirse un constructor para la clase, el compilador genera un constructor por defecto.

• El constructor por defecto, no tiene parámetros e inicializa cada atributo con el valor nulo por defecto.

• Si un constructor no tiene parámetros se considera el constructor por defecto.

Constructores - Ejemplopublic class TPunto {

int x; //Declaracion de una variable x int y; //Declarqcion de una variable y

void Inicializar (int xcor,int ycor) { x=xcor; y=ycor; }//Fin Inicilizar

void TrasladarX(int xcor) { x=xcor; }//FinTrasLadarX

void Imprimir(){ System.out.println("Las coordenadas son: ("+x+","+y+")"); }//Fin Imprimir

}

public class Main {

/** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here System.out.println("Hola Mundo");

TPunto p1=new TPunto(); TPunto p2=new TPunto(); p1.Imprimir(); // ¿Qúe va a imprimir? p1.Inicializar(3, 2); p1.Imprimir(); p1.TrasladarX(10); p1.Imprimir();

p2.Inicializar(15, 6); p2.Imprimir();

}}

Constructores - Ejemplopublic class TPunto {

int x; //Declaracion de una variable x int y; //Declarqcion de una variable y

TPunto ( void ) { // constructor sin paso de parámetros x=0; y=0; } TPunto (int xcor,int ycor) { // constructor con paso de parámetros x=xcor; y=ycor; } void Inicializar (int xcor,int ycor) { x=xcor; y=ycor; }//Fin Inicilizar void TrasladarX(int xcor) { x=xcor; }//FinTrasLadarX void Imprimir(){ System.out.println("Las coordenadas son: ("+x+","+y+")"); }//Fin Imprimir

}

public class Main {

/** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here System.out.println("Hola Mundo");

TPunto p1=new TPunto(); TPunto p2=new TPunto(2,7); p1.Imprimir(); // ¿Qúe va a imprimir? p1.Inicializar(3, 2); p1.Imprimir(); p1.TrasladarX(10); p1.Imprimir(); p2.Imprimir(); p2.Inicializar(15, 6); p2.Imprimir();

}}

Destructores

• Un destructor es un método que se invoca automáticamente cuando el objeto se destruye. Java no posee destructores, porque tiene recolección de basuras. – C++ posee destructores

Try-catch-finally

• Se utilizan para probar un conjunto de sentencias susceptibles a errores, en caso de ocurrir se ejecutan las sentencias de catch y luego las sentencias de finally

Ejemplo de try-catch-finallyfloat x;try { x=23/0;}catch ( exception e) { system.out.println( “ ERROR: valor indefinido”);} finally;

Arreglos

• Un arreglo es una cadena de datos u objetos del mismo tipo

• Una matriz es un arreglo de arreglos. Un arreglo de 3 dimensiones es un arreglo de arreglos que contiene arreglos

• En java se declara como• tipo_dato []…[] nombre_de_la_variable

Representación de un arreglo

• int x=0;• int x[4];• int x[4]={4,56,3,23};• int x[4][3];

• int x[4][3][2];

0

0 0 0 0

4 56 3 23

0

HerenciaJava permite el empleo de la herencia , característica muy potente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar. En java, como ya vimos la herencia se especifica agregando la cláusula extends después del nombre de la clase. En la cláusula extends indicaremos el nombre de la clase base de la cuál queremos heredar. Al heredar de una clase base, heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.

Ejemplo de herencia

public class TTaxista extends TPersona { private int nLicencia;

public void setNLicencia (int num)

{ nLicencia = num; } public int getLicencia() { return nLicencia; }

}

Construyamos la clase TTaxista.java con el siguiente código:

public class TPersona { private String Nombre; private String CURP;

TPersona (String Name, String RN) { Nombre = Name; CURP = RNP; } }

Herencia

TPuntoX,Y,

TPunto()Iniciar()Imprimir()Trasladar()

TObjeto

TSegmentoTPunto Inicio,TPunto Final,

TSegmento()Iniciar()Imprimir()Trasladar()Pendiente()

TPolígono

TPolígono()Trasladar()Perímetro()Area()Rotar()

Un polígono es una figura geométrica formada por segmentos consecutivos no alineados, llamados lados.

Herencia

TPuntoX,Y,TPunto()Iniciar()Imprimir()Trasladar()

TObjeto

TSegmentoTPunto Inicio,TPunto Final,TSegmento()Iniciar()Imprimir()Trasladar()Pendiente()

TElipseTPunto VérticesTPolígono()Trasladar()Perímetro()Area()Rotar()

TCuadrilateroTPunto Inicio,TPunto Final,TSegmento()Iniciar()Imprimir()Trasladar()Pendiente()

TPolígonoTPunto VérticesTPolígono()Trasladar()Perímetro()Area()Rotar()

TTrianguloTPunto VérticesTPolígono()Trasladar()Perímetro()Area()Rotar()

Aplicaciones

Variables Miembros

Funciones miembros

FloristaNombreSalarioEdadVender floresEnviar flores a otra ciudad

Ejemplos:

Variables Miembros

Funciones miembros

BombilloConsumoEnceder ApagarAumentar BrilloDisminuir brillo

Notación UML para representar una clase