Sunteți pe pagina 1din 10

Conceptos Bsicos de Programacin Orientada a Objetos

En esta entrada veremos algunos conceptos de la programacin orientada


a Objetos (POO)...............................................
Muchas veces cuando empezamos a trabajar con lenguajes de
programacin nos dicen que son orientados a Objetos y nos dan la teora
del "porqu" pero puede que al trabajar con ellos en la practica no
sepamos interpretarlo desconociendo el "como", y entonces seguimos
desarrollando por simple inercia porque as fue que aprendimos pero tal
vez no de la forma mas ptima.

Vamos a ver algunos conceptos de POO de forma general, mas adelante


trabajaremos estos conceptos en casos prcticos para ver su
aplicacin......

Adicionalmente les comparto un video con un ejemplo basic sobre el


trabajo con objetos en java..... Empecemos!!!

Programacin OO.
La programacin orientada a Objetos bsicamente define una serie de
conceptos y tcnicas de programacin para representar acciones o cosas
de la vida real basada en objetos, a diferencia de otras formas de
programacin como por ejemplo la estructurada, con la POO trabajamos
de manera distinta vinculando diferentes conceptos tales como clases,
objetos, mtodos, propiedades, estados, herencia, encapsulacin entre
otros, generando cada vez interrelaciones en nuestro desarrollo en pro
del funcionamiento del sistema principal, definiendo el programa como un
conjunto de estos objetos relacionados entre si.

Veamos algunos de los conceptos principales.....

Clases.
Las clases son uno de los principales componentes de un lenguaje de
programacin, pues en ellas ocurren todos los procesos lgicos requeridos
para un sistema, en si podemos definirlas como estructuras que
representan objetos del mundo real, tomando como objetos a personas,
lugares o cosas, en general las clases poseen propiedades,
comportamientos y relaciones con otras clases del sistema. (Ver
Ejemplo...)

una clase se compone por tres partes fundamentales:


Nombre : Contiene el Nombre de la Clase.
Atributos : Representan las propiedades que
caracterizan la clase.
Mtodos : Representan el comportamiento u
operaciones, la forma como interacta la clase con su
entorno.

En java se representa as :

1
2 /**Principal define el nombre de la Clase*/
public class Principal {
3
4 public String atributo="Esto es un atributo";
5
6 /**Esto es un mtodo, donde se definen las operaciones*/
7 public void metodo(){
8 /**aqui van las sentencias que definen
9 } * el comportamiento del mtodo*/
10}
11

Objeto.
Los objetos representan una entidad concreta o abstracta del mundo real,
en programacin bsicamente se le conoce como la instancia de una clase
en si es lo que da el sentido a estas.

Al igual que las clases se componen de tres partes fundamentales:

Estado: Representa los atributos o caractersticas con valores concretos


del objeto. Comportamiento : Se define por los mtodos u operaciones
que se pueden realizar con el. Identidad : Es la propiedad nica que
representa al objeto y lo diferencia del resto.

en la imagen, los moldes representan las clases,


mientras que las galletas obtenidas de estos moldes representan los
objetos instancias de estas clases, por ejemplo atributos del objeto galleta
podra ser sabor, color, tamao etc......

En java se representa creando una instancia de la clase por medio de la


palabra new al hacer eso creamos el objeto de la clase y podemos hacer
uso de los mtodos o atributos de esta (dependiendo de la visibilidad de
los mismos ) por medio de un punto (.) as:

1/**Creamos el objeto como instancia de la clase Principal*/


Principal miObjeto= new Principal();
2 miObjeto.atributo="Este es el nuevo valor del atributo para el
3objeto";
4 miObjeto.metodo();

Herencia.
La herencia en java representa lo que conocemos de
herencia en el mundo real, bsicamente mediante esta
obtenemos las caractersticas o rasgos comunes de
nuestros padres o abuelos, en java es el mismo enfoque
permitiendo la creacin de nuevas clases basadas en
clases ya existentes, con las cuales podemos obtener las
caractersticas de las clases padres, heredando campos,
atributos, mtodos o funcionalidades.

En Java solo se puede heredar de una sola clase padre y se representa


mediante la palabra extends (Ver Ejemplo...)
1
2 public class Animal{
3 public String tamao;
4
5 public void comer(){
6 /**Comportamiento.....*/
7 }
}
8
9 class Perro extends Animal{
10
11 public int dientes;
12
13 public void correr(){
14 /**Comportamiento.....*/
15 }
}
16
17 class Paloma extends Animal{
18
19 public int plumas;
20
21 public void volar(){
22 /**Comportamiento.....*/
23 }
}
24
25
Encapsulamiento.
Este concepto es uno de los mas importantes en trminos de seguridad dentro
de nuestra aplicacin, la encapsulacin es la forma de proteger nuestros datos
dentro del sistema, estableciendo bsicamente los permisos o niveles de
visibilidad o acceso de nuestros datos

Se representa por 3 niveles :

Pblico: Se puede acceder a todos los atributos o mtodos de la


clase. Protegido: Se puede acceder a los atributos o mtodos
solo en la misma jerarqua de herencia. Privado: Solo se puede
acceder a los atributos o mtodos de la clase en la que se
encuentran.

con la Encapsulacin mantenemos nuestros datos seguros, ya que


podemos evitar que por ejemplo se hagan modificaciones al estado o
comportamiento de un objeto desde una clase externa, una buena
practica es trabajar con mtodos setter y getter que permiten
manipular nuestros datos de forma segura.

en Java lo representamos as:

1
2 public class Principal{
3
4 public String atributo1;
private String atributo2;
5 protected String atributo3;
6
7 /**Mtodos Set y Get para trabajar con las variables*/
8
9 public String getAtributo2() {
10 return atributo2;
11 }
12
public void setAtributo2(String atributo2) {
13 this.atributo2 = atributo2;
14 }
15
16}
17

Clases Abstractas.
La abstraccin permite resaltar la parte mas representativa de algo,
ignorando detalles para centrarse en lo principal.

La imagen es muy fcil de identificar, con base a ella


podemos crear una clase persona, o la
clase hombre, humano entre otras, pero obviamente vemos
que la imagen no tiene elementos como ojos, nariz, boca,
rostro en general, ni dedos, pies, manos o cuello....... pero
entonces porque decimos que es una
persona?.........Precisamente aqu estamos aplicando el concepto de
abstraccin, ya que nos fijamos en lo mas representativo de algo, en este
caso vemos que se tiene una cabeza, tronco, brazos y pies, con esto es
suficiente para saber que es una persona sin fijarnos en los detalles
mencionados anteriormente.
Las clases abstractas permiten crear mtodos generales con un
comportamiento comn para otras clases concretas sin importar sus
caractersticas ni el comportamiento que usen para dichos mtodos.
La Abstraccin en java solo tiene lgica mediante la
Herencia, ya que una clase abstracta posee al menos un mtodo
abstracto el cual no tiene implementacin, el comportamiento de estos
mtodos lo definen las clases concretas que lo hereden.
Podemos usarlos cuando existan varias clases con caractersticas o
acciones comunes pero con diferentes
comportamientos..............mediante el uso de la herencia y
componentes abstractos hacemos mas ptima y organizada nuestra
aplicacin. (hay que tener en cuenta que a diferencia de las clases
concretas, las clases abstractas no se pueden instanciar). (Ver
Ejemplo...)

En Java representamos la abstraccin mediante la palabra reservada


abstract, as:

1
2 public abstract class Principal{
3
/**Mtodo Abstracto sin implementacin*/
4 public abstract void metodoAbstracto();
5
6 }
7
8 class subClase extends Principal{
9
10 @Override
11 public void metodoAbstracto() {
/**Implementacin definida por la clase concreta*/
12 }
13
14}
15

Interfaces.

Las interfaces son el mecanismo que utiliza Java para simular


la herencia mltiple, como mencionamos en Java solo se
puede extender de una sola clase, mediante el uso de
interfaces esto se puede simular ya que el lenguaje permite
implementar el numero de interfaces que necesitemos,
bsicamente son clases completamente abstractas, es comn
relacionarlas con un contrato en el que se define que se debe hacer, as
cada clase concreta que implemente una interfaz esta obligada a
implementar todos los mtodos que la compongan.

las interfaces definen lo que la clase que la implemente deber hacer,


mas no la forma como lo har.

al decir que las interfaces son clases completamente abstractas significa


que todos sus mtodos lo son y por ende no poseen implementacin, no
requieren el uso de la palabra reservada abstract, ya que al ser
completamente abstracta todo dentro de ella lo es, al igual que las
clases abstractas la implementacin de los mtodos depende de las
clases concretas que las usen.

Se debe tener en cuenta que toda variable definida en una


interfaz automticamente se convierte en una constante, adems
tampoco se puede instanciar una interfaz..... (Ver Ejemplo...)

En java se representan con la palabra interface y se usan con la


palabra implements as:

1
2 interface InterfacePrincipal {
3
4 public void metodoAbstracto();
5
6 public String otroMetodoAbstracto();
7
}
8
9 public class Principal implements InterfacePrincipal{
10
11 public void metodoAbstracto() {
12 /**Implementacin definida por la clase concreta*/
13 }
14
15 public String otroMetodoAbstracto() {
/**Implementacin definida por la clase concreta*/
16 return "retorno";
17 }
18}
19
Polimorfismo.

Este tal vez sea uno de los conceptos de la programacin orientada a


objetos mas usados pero muchas veces sin saber que se aplica ya que el
concepto inicialmente puede ser un poco confuso, bsicamente mediante
el polimorfismo programamos de forma general en lugar de hacerlo de
forma especifica, se usa cuando se trabajen con la herencia y objetos de
caractersticas comunes los cuales comparten la misma superClase y rbol
jerrquico, al trabajar con este concepto optimizamos y simplificamos en
gran medida nuestro trabajo.

bsicamente podemos definirlo como la capacidad


que tienen los objetos de comportarse de mltiples
formas sin olvidar que para esto se requiere de la
herencia, en si consiste en hacer referencia a objetos
de una clase que puedan tomar comportamientos de
objetos descendientes de esta.

con el polimorfismo usamos la generalizacin olvidando los detalles


concretos de los objetos para centrarnos en un punto en comn
mediante una clase padre.

Tomando como ejemplo la imagen anterior, podemos decir que un


objeto de la clase FiguraGeometrica puede usarse para referirse a
cualquier objeto de cualquier subClase de
FiguraGeometrica.............. en otras palabras una figura geomtrica
puede ser un cuadro, un tringulo, un cuadrado o cualquier figura que
en trminos generales sea geomtrica...... (Ejemplo1) (Ejemplo2)
Veamos este proceso como se representa en Java.

1
2
3 class FiguraGeometrica{
4
5 }
6
class Cuadrado extends FiguraGeometrica {
7
8 }
9
10class Triangulo extends FiguraGeometrica {
11
12}
13
14class Circulo extends FiguraGeometrica{
15
16}
17
public class Principal{
18
19 public void metodo(){
20 /**Puedo crear objetos concretos*/
21 FiguraGeometrica miFiguraGeometrica = new FiguraGeometrica();
22 Cuadrado miCuadro=new Cuadrado();
23
24 /**Puedo crear objetos polimorficos*/
miFiguraGeometrica=miCuadro;
25
26 /**Objeto Cuadrado de tipo FiguraGeometrica*/
27 FiguraGeometrica miCuadrado= new Cuadrado();
28 /**Objeto Circulo de tipo FiguraGeometrica*/
29 FiguraGeometrica miCirculo=new Circulo();
30 /**Objeto Triangulo de tipo FiguraGeometrica*/
FiguraGeometrica miTriangulo=new Triangulo();
31 }
32}
33
34

Como vemos en el ejemplo la clase FiguraGeometrica puede convertirse


en cualquier figura que se encuentra en su jerarqua de Herencia
pudiendo utilizar las propiedades que compartan entre ellas, hay que
tener presente que solo se permite el polimorfismo de clases padre a
clases hija mas no al contrario, mas adelante explicaremos este
concepto en detalle...
Hasta aqu vimos algunos de los principales conceptos de la
programacin Orientada a Objetos, en futuras entradas trabajaremos
otros ejemplos y aplicaciones, ya que cada concepto posee sus
restricciones con respecto al proceso de desarrollo.

S-ar putea să vă placă și