Programación Orientada A Objetos en Java
Programación Orientada A Objetos en Java
Objeto
La programacin orientada a objetos requiere inicialmente identificar y modelar cada uno
de los entes que hace parte del problema, facilita la comprensin del tema, por ejemplo si
necesitramos crear un programa para la nmina de una empresa que cuenta nicamente
con tres empleados cuya informacin se muestra en el siguiente grfico 1, Para un
programador es sencillo identificar los entes, en caso que se necesite incluir un nuevo
empleado, aparece otro objeto como las caracterices descriptivas de cedula, apellido,
nombre y dems a partir de esto podemos definir que un objeto es un concepto, abstraccin
con limites bien definidos y con significado dentro del problema1
Clases
1 Garca, L. (2010). Programacin orienta a objetos en Java (pp. 1-5).
Barranquilla, Colombia, Ediciones Uni Norte.
En su forma ms simple, una clase se define por la palabra reservada class seguida del
nombre de la clase. El nombre de la clase debe empezar por mayscula. Si el nombre es
compuesto, entonces cada palabra debe empezar por mayscula. Crculo, Rectngulo,
Triangulo y FiguraGeomtrica son nombres vlidos de clases. Por ejemplo, la clase Circulo
se define con tres atributos: el radio y las coordenadas x, y que definen la posicin del
centro del crculo.2
Ejemplo:
/* Esta clase define los atributos de un crculo */
public class Circulo {
int x;
int y;
int radio;
}
Una vez que se ha declarado una clase, se pueden crear objetos a partir de ella. A la
creacin de un objeto se le denomina instanciacin. Es por esto que se dice que un objeto es
una instancia de una clase y el trmino instancia y objeto se utilizan indistintamente. Para
crear objetos, basta con declarar una variable de alguno de los tipos de figuras geomtricas:
Circulo circulo1;
Circulo circulo2;
2 MARTNEZ LADRN DE GUEVARA, Fundamentos de programacin Java. Editorial EME.
ISBN 978-84-96285-26-32.
Definicin
true o false
Carcter Unicode de 16 bits
Entero en complemento a dos con signo de 8 bits
Entero en complemento a dos con signo de 16 bits
Entero en complemento a dos con signo de 32 bits
Entero en complemento a dos con signo de 64 bits
Real en punto flotante segn la norma IEEE 754 de 32 bits
Real en punto flotante segn la norma IEEE 754 de 64 bits
Tomado de Fernndez, O. (2005). Introduccin al lenguaje de programacin Java. (ed., Vol., pp. 12-13).
Dominio Publico .
Ejemplo:
public class Vehiculo {
String matricula;
String marca;
String modelo;
String color;
double tarifa;
boolean disponible;
}
En este ejemplo, los atributos matricula, marca, modelo y color son cadenas de caracteres,
tarifa es un nmero real y disponible es un valor lgico.6
Ejemplo 2:
5 Fernndez, O. (2005). Introduccin al lenguaje de programacin Java. (ed.,
Vol., pp. 12-13). Dominio Publico .
// Fecha.java
public class Fecha {
TIPO
NOMBRE
separa espacio en memoria a para un nuevo objeto, si no que se define una referencia que
apuntara a un espacio de memoria con la estructura definida en la clase.7
MTODOS Y CONSTRUCTORES
Adems de definir los atributos de un objeto, es necesario definir los mtodos que
determinan su comportamiento. Toda clase debe definir un mtodo especial denominado
constructor para instanciar los objetos de la clase. Este mtodo tiene el mismo nombre de la
clase. Por ejemplo, para la clase Vehiculo, el identificador del mtodo constructor es
Vehiculo. El mtodo constructor se ejecuta cada vez que se instancia un objeto de la clase.
Este mtodo se utiliza para inicializar los atributos del objeto que se instancia. Para
diferenciar entre los atributos del objeto y los identificadores de los parmetros del mtodo
constructor, se utiliza la palabra this. De esta forma, los parmetros del mtodo pueden
tener el mismo nombre que los atributos de la clase. Esto permite hacer una asignacin
como la que se muestra a continuacin, donde this.marca se refiere al atributo del objeto y
marca al parmetro del mtodo. this.marca = marca; 8
Ejemplo:
public class Vehiculo {
String matricula;
String marca;
String modelo;
String color;
7 Garca, L. (2010). Programacin orienta a objetos en Java (pp. 1-8).
Barranquilla, Colombia, Ediciones Uni Norte.
8 MARTNEZ LADRN DE GUEVARA, Jorge. Fundamentos de programacin Java.
Editorial EME. ISBN 978-84-96285-36-2.
double tarifa;
boolean disponible;
// el mtodo constructor de la clase Vehiculo
public Vehiculo(String matricula, String marca, String modelo, String color, double tarifa)
{
this,matricula = matricula;
this.marca = marca;
this.modelo = modelo;
this.color = color;
this.tarifa = tarifa;
this.disponible = false;
}
}
PROPIEDADES DE LA POO
Encapsulamiento.
Ejemplo:
10
public Vehiculo() {
patente = "No asignada";
velocidad = 0;
}
Podemos notar que es posible implementar un constructor que acepte distinta cantidad de
parmetros, y dependiendo de como instanciemos el objeto, los valores iniciales sern
distintos. Por ejemplo:
2
vehiculo.velocidad = 10;//Asignar velocidad
Pero supongamos que nosotros no queremos que se pueda acceder de esta manera (por
ejemplo, en el contexto que tengamos una clase Cliente, perteneciente a un banco, nosotros
no queremos que se pueda cambiar el valor del saldo del cliente desde afuera de la clase),
por lo tanto, tendramos que hacer una encapsulacin de nuestra variable (en este caso, la
variable velocidad), para esto, en la declaracin de nuestra variable, debemos anteponer
la palabra reservada private antes del tipo de nuestra variable, con esto, le estamos
diciendo que nuestra variable solo puede ser vista desde dentro de nuestra clase (es decir,
solo podremos acceder a ella desde las funciones internas de nuestra clase). Aqu un
ejemplo de como convertir nuestra varible velocidad en privada:
1
private int velocidad;
Ahora si intentamos acceder a nuestra variable velocidad, no podremos hacerlo. Nota: las
variables que no anteponen ninguna palabra antes del tipo, se asume que son publicas (que
es la manera en la que hemos usado hasta ahora).
Mtodos Set Y Get
En Java cada vez es ms habitual la prctica de ocultar las propiedades y trabajar
exclusivamente con los mtodos. La razn es que no es recomendable que las propiedades
sean visibles desde fuera de la clase, por ello se declaran con una visibilidad private (o
protected). Siendo as cmo pueden las otras clases modificar el valor de una propiedad?
Mediante mtodos que permitan la lectura y escritura de esas propiedades, son los mtodos
get (obtener) y set (ajustar). Los get sirven para leer el valor de un atributo, nunca llevan
parmetros y el nombre del mtodo es la palabra get seguida del nombre de la propiedad
(por ejemplo getEdad). Los set permiten variar el valor de una propiedad. Por lo que como
parmetro reciben el nuevo valor y son mtodos siempre de tipo void.11
Ejemplo:
public class Persona {
private String nombre;
private int edad;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre=nombre;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad=edad;
11 Programacin orientada a objetos - fundamentos de la programacin, Jorge
Snchez, 2010
}
}
Herencia
Es el proceso mediante el cual un objeto de una clase adquiere propiedades definidas en
otra clase que lo preceda en una jerarqua de clasificaciones. Permite la definicin de un
nuevo objeto a partir de otros, agregando las diferencias entre ellos (Programacin
Diferencial), evitando repeticin de cdigo y permitiendo la reusabilidad. Las clases
heredan los datos y mtodos de la superclase. Un mtodo heredado puede ser sustituido por
uno propio si ambos tienen el mismo nombre. La herencia puede ser simple (cada clase
tiene slo una superclase) o mltiple (cada clase puede tener asociada varias superclases).
La clase Docente y la clase Estudiante heredan las propiedades de la clase Persona
(superclase, herencia simple). La clase Preparador (subclase) hereda propiedades de la clase
Docente y de la clase Estudiante (herencia mltiple). 12
Codigo de Ejemplo Herencia en Java
Clase Padre Base Alumno
6
7 public String getClases() {
8 return clases;
9 }
10
11 public String getGrado() {
12 return grado;
13 }
14
15 public String getGrupo() {
16 return grupo;
17 }
18
19 public void setNombre(String nombre) {
20 this.nombre = nombre;
21 }
22
23 public void setClases(String clases) {
24 this.clases = clases;
25 }
26
27 public void setGrado(String grado) {
28 this.grado = grado;
29 }
30
31 public void setGrupo(String grupo) {
32 this.grupo = grupo;
33 }
34 private String nombre;
35 private String clases;
36 private String grado;
37 private String grupo;
38
39 protected void ir_a_clase(){
40
41 }
42
43 protected void estudiar(){
44
45 }
46 }
9
10 protected void matricularse(){
11
12 }
13 }
1
2 public class Main {
3 public static void main(String args[]){
4 Regular pepe = new Regular();
5 pepe.setNombre("Pepe");
6 pepe.setClases("Biologia,matematicas");
7 pepe.setGrado("2");
8 pepe.setGrupo("G");
9 pepe.ir_a_clase();
10
11 Intercambio luis = new Intercambio("Luis","Fisica,Ecologia","3","B");
12 luis.ir_a_clase();
13 luis.estudiar();
14 luis.matricularse();
15
Polimorfismo
POLI: Mltiple
MORFISMO: Formas
Es una propiedad del EOO que permite que un mtodo tenga mltiples implementaciones,
que se seleccionan en base al tipo objeto indicado al solicitar la ejecucin del mtodo. El
}
public void setNombre(String n){
this.nombre=n;
}
public int getColor(){
return this.color;
}
public void setColor(int c){
this.color=c;
}
public int getGrosorBorde(){
return this.grosorBorde;
}
public void setGrosorBorde(int g){
this.grosorBorde=g;
}
public abstract void dibujar();
}
Las siguientes clases en el nivel de la jerarqua podran quedar muy parecidas a stas:
public abstract class figura2D extends figura {
public abstract int calcularArea();
public abstract int calcularPerimetro();
}
public abstract class figura3D extends figura {
public abstract int calcularVolumen();
}
Se le pide que forme las clases de la parte inferior de la jerarqua y que representaran los
objetos a instanciarse.
Adems, debe de realizar una implementacin de esta librera, en donde el usuario pueda
crear nuevas figuras y que stas se almacenen en un arreglo de figuras.
Mtodo concreto:
RELACIN
CUESTIONARIO
1- Cul es la descripcin que crees que define mejor el concepto 'clase' en la programacin
orientada a objetos?
Es un concepto similar al de 'array'
Es un tipo particular de variable
Es un modelo o plantilla a partir de la cual creamos objetos
Es una categoria de datos ordenada secuencialmente
4. Qu es Eclipse?
Una libreria de Java
Una versin de Java especial para servidores
Un IDE para desarrollar aplicaciones
Ninguna de las anteriores
Fuente: http://www.digitallearning.es/tests/java-poo.html