Beruflich Dokumente
Kultur Dokumente
En esta parte del bloque vas a conocer sus principales conceptos, conno son: la
abstraccin, el encapsulamiento, la herencia y el polimorfismo, y te presentaremos
algunos ejemplos que ayudarn a conocer su aplicacin. Adems, aprenders qu
es una clase y cmo crearla.
De manera general, esta meta nos servir para aprender a reutilizar el cdigo y
aminorar el tiempo en el uso de la sintaxis del cdigo en Java.
Qu es la programacin orientada a objetos?
La programacin orientada a objetos es tomar los objetos que hay en el mundo real
(tangibles e intangibles) y escribirlos en cdigo. Para hacer esto hay que realizar una
abstraccin de los objetos que existen en la vida real, esto es, identificar aqullos
que necesitars programar.
Se toman dos propiedades de estos objetos, datos y funcionalidades, los primeros
son las caractersticas que posee el objeto y que se codificarn; color, tamao,
nombre, peso, etc.; y las segundas, son todas aquellas actividades que el objeto
puede desempear.
En el siguiente documento te presentamos el ejemplo de un elevador de un hotel, y
tambin te mostraremos cmo pasar la informacin a cdigo.
Funciiiafidades
Peso m.ximo
Capacidad
mxima de
persona?
Ajrir puertas
Cerrar puertas
Las clases se pueden representar en forma de diagrama, mejor conocido como diagrama de
clases, en el cual se describen datos y funciones, como se muestra a continuacin:
<Nombre de la Ciase:;<Ddto de la Clast;>
<Dato de la Ciase>
<Funcin de ia Ciase>
<Funcin de la Ciase>
Para crear el diagrama de clases del elevador, se debe especificar el tipo de dato y
funcin, as como los argumentos que recibe, por lo que quedarla de la siguiente
forma;
Elevador
+ int pesoMaximo
+ int capacidadMaxPersoria
+ int subrPiso(int pIsoAnterior)
+ int bajarPisoint pisoAnterior)
+ void abrirPuertasO
+ void abrirCerrar'O
Ahora que ya sabes cmo crear clases, es necesario crear objetos, ya que estos
son la materia prima de este curso, y las clases te servirn para definir el tipo de
dato del objeto. Veamos esto con el siguiente ejemplo:
Clase: Elevador
f-1
I
Una instancia es crear un objeto de una clase, y para crear el objeto en Java se
utiliza el operador new, el cual es una palabra reservada que se encarga de solicitar
memoria a la computadora para que pueda almacenar los datos de los objetos.
Sintaxis para crear un objeto en Java:
3'
Ram
Pila
Cmulo
V
Ahora debemos revisar un concepto que en Java se conoce como paso
por
I ' iiIII
Ram
Crnuio
Pila
OtroElevador
pe5oMaxlmo=400kg
capacdadMaxPersona=5
elevaclorChico
3Mfe
1. Eticapsulamiento
El lenguaje J a v a se cre con la finalidad de ser un lenguaje seguro, una parte de esa
seguridad es la integridad de los datos, lo cual significa que no tienen libre acceso.
Lo anterior quiere decir que los datos estn encapsulados, pero... a qu no
referimos con esto? El encapsulamiento es limitar el acceso de lectura y escritura a
los datos de un objeto, permitiendo el acceso slo con funciones que nosotros
definamos.
Cuando encontramos un dato con el operador inicial + (public), indica que e s
pblico; por otra parte, cuando lo hallamos con el operador - (prvate), denotamos
que es privado, lo cual nos indica que el elemento deja de ser accesible para todo el
mundo y ahora nicamente lo es para utilizarse dentro de la misma case.
Ahora bien, como ya lo dijimos, las funciones son las que nos ayudan a tener acceso
a los datos de un objeto. Para obtener o editar los datos encapsulados, tenemos dos
funciones; getter y setter, que provienen del ingls, de los vocablos get, "obtener" y
set, "editar".
Para que lo anterior quede ms claro, usaremos el ejemplo del elevador visto
anteriormente, en l se ve el diagrama de clases con encapsulamiento;
Eievador
-intpesoMaximo
-int capacidacIMaximaPersona
+int .$ubirPiso(int pisoAnterior)
+in bajarPiso(int pisoAnterior)
+yoid abrirPuert3.s{)
void abrirCerrarO
int getPesoMaximoO;
H-int getCapacidadMaxPersonai;
4-void setPesoMaxirnoO;
+vid gelCapacidadfvlaxPersonaO;
Herencia
Otra de las caractersticas que hace fuerte a la POO es el poder realizar mduios
con el cdigo (bloques de cdigo), estos generan un archivo, el cual se vuelve
una clase, con lo que, si se necesita realizar un cambio en el programa, slo se
realiza sobre la clase que hay que cambiar y no sobre todo el programa. Esto hace
ms eficiente la parte de correccin de un software.
Adems, los bloques de cdigo nos brindan la oportunidad de reutilizar cdigo, con
lo que se tiene mucho ahorro de cdigo en el desarrollo de sistemas.
-int pesoMaximo
-int capaciciadMaximaPersona
-i-in subirPisoint pisoArvterior)
-i-int bajarPisoiint pisoAnterior)
tvoid abrirPuerlasO
void abrirCerrarO
i ni g et Pe soM a x i m o O;
-^int getCapacidadN'iaxPersona);
-fvoid setPesoMaximoO;
+-void getCapacidadiViaxPersonaO;
^ ^ ^ ^
ElevadOrAutomotriz
-int capacidaHAiitos;
void proporcionarGasolinaJ:
+ini: getObtenerCapacidadAistos);
+void setCapacidacAutoclunt capacidacINueva)
Ahora que la clase derivada hered los mtodos (funciones) de la clase base,
cmo los implemento si quiero usarlos de manera diferente? Para ello surge
un
concepto, sobreescritura de
mtodos,
donde
los
argumentos
el
Animal
- int peso
- int altura
- String nombre
+ void desplazarseO;
+ void comunicarse);
MamiferoTerrestre,
-int peso
- int altura
- String nombre
- int peso
- int altura
- String nombre
- int peso
- int altura
- String nombre
+ void desplazarseO;
+ void comunicarse);
+ void despidzarseO;
+ void comunicarseO;
t void desplazarse);
+ void comunicarseO;
immsssss
Ahora
codifiquemos
la s o b r e e s c r i t u r a d e
mtodos,
para
que
Ave,
Pez
codifiquemos
la s o b r e e s c r i t u r a de
mtodos,
para
que
Ave.
Pez
/**
* @param args the command Une
arguments
*/
publlc statlc vold main(String[] args) {
// TODO code application loglc here
// Elevador elevadorChico = new
Elevador(400, 5);
/* System.out.prlntln("ElevadorChlco
peso " + elevadorChico.pesoMaximo
+
"
capacidad
"
+
elevadorChico.capacldadMaxlmaPersona
}
publlc Int bajarPlso(lnt plsoActual) {
Int nuevoPlso = plsoActual - 1;
return nuevoPlso;
}
publlc void abrirPuertas(){
System.out.prlntln("Estoy abriendo
puertas");
);
Elevador elevadorGrande = new
Elevador(800, 10);
System.out.prlntln("ElevadorChico
peso " + elevadorGrande.pesoMaximo
+
"
capacidad
"
+
elevadorGrande.capacldadMaxlmaPerson
a);
}
publlc vold cerrarPuertasQI
System.out.prlntln("Estoy
puertas");
System.out.println("Soy el elevador
chico");
elevadorChico.abrirPuertasQ;
cerrando
}
int
piso
elevadorChico.bajarPlso(6);
System.out.println(plso);*/
/*
Elevador otroElevador =
elevadorChico;
//System.out.prlntln(elevadorChico);
//System.out.prlntln(otroElevador);
System.out.println("Peso:
"
+
elevadorChico.capacldadMaxlmaPersona)
}
publlc void setPesoMaximo(int pm){
pesoMaxlmo = pm;
}
publlc
void
setCapacidadMaxlmaPersona(int c){
capacldadMaxlmaPersona = c;
}
}
System.out.prlntln("Peso;
"
+
otroElevador.capacldadMaxlmaPersona);
elevadorChico.capacldadMaxlmaPersona
= 7;
10
System.out.println("Peso:
"
+
elevadorChico. capacidadMaximaPersona)
System.out.println("Estoy
proporcionando gasolina");
}
System.out.println("Peso:
"
+
otroElevador.capacidadMaximaPersona);
*/
/*3
Elevador elevadorChico = new
Elevador(400, 5);
}
public void setCapacidadAutos(int ca){
capacidadAutos = ca;
//System.out.println(elevadorChico.peso
Mximo);
System.out.println(elevadorChico.getPeso
MaximoQ);
System.out.println(elevadorChico.getCap
acidadMaximaPersonaQ);
elevadorChico.setPesoMaximo(700);
}
******
public class Animal {
prvate int peso;
prvate int altura;
prvate String nombre;
elevadorChico.setCapacidadMaximaPerso
na(7);
{
System.out.println(elevadorChico.getPeso
MaximoO);
System.out.println(elevadorChico.getCap
acidadMaximaPersonaO);
*/
ElevadorAutos
ea
=
new
ElevadorAutos( 100,5);
System.out.println("Soy un animal y
me desplazo");
}
}
********
public class A v e extends Animal {
@Override
public void desplazarseO
ea.proporcionarGasolinaQ;
System.out.println(ea.subirPiso(5));
System.out.println(ea.bajarPiso(5));
ea.abrirPuertasO;
System.out.println(ea.getPesoMaximo());
}
{
System.out.println("Soy un ave y me
desplazo volando");
}
}
public class Pez extends Animal {
public void desplazarseO
{
}
System.out.println("Soy un pez y me
**********************
public
class
ElevadorAutos
extends
Elevador {
prvate int capacidadAutos;
//constructor
public ElevadorAutos(int pm, int c ) {
super(pm,c);
}
public void proporcionarGasolina(){
desplazo nadando");
}
}
public class Mamfero Terrestre extends
Animal {
public void desplazarseO
\
System.out.println("Soy
un
mamfero y me desplazo caminando");
***************
MamiferoTerrestre
MamiferoTerrestreO;
new
DesplazarAnimal(animal);
Desplazar Animal(ave);
DesplazarAnimal(pez);
DesplazarAnimal(mt);
mt
}
mt
public
static
DesplazarAnimal(Animal a ) {
a.desplazarseO;
new
*/
}
12
void