Está en la página 1de 5

Paradigma

Un paradigma es una forma de afrontar la construccin de cdigo software

No hay paradigmas mejores ni peores

Todos tienen sus ventajas e inconvenientes

Hay distintos paradigmas:


Estructurado, POO, Funcional, Lgico, etc.

Si tomaramos como ejemplo un programa en el cual se simula como cae un pelota en programacion
estructurada y en poo los algoritmos serian los siguientes:
En programacin estructurada tradicional, un lenguaje de programacin funcionaria de la siguiente
manera:
1. Tomar pelota
2. Dejar caer pelota
3. La pelota cae al suelo
4. La pelota rebota
5. La pelota llega a un punto maximo de altura
6. vuelve a caer la pelota
7. La pelota permanece en el suelo
En cambio si usamos POO la forma de pensar del programa puede cambiar y ser de la siguiente
manera:
Existe un objeto llamado "pelota"
1. La pelota tiene como propiedad una altura de la cual puede caer
2. La pelota tiene una fuerza de rebote
3. La pelota es de color x
Tal cual como se muestra, en POO a un objeto (pelota o bola) se le pueden asignar valores para cada
propiedad que posee, tambin en caso de crear mas de un objeto del mismo tipo, estas propiedades
pueden ser del mismo tipo, pero con diferentes valores. Como ejemplo podramos tener incluso 2
pelotas pero cada una con diferente color y diferente tamao, fuerza de rebote, etc.
Pero entonces como seria la programacin. Para esto en POO existen las llamadas "clases" y
"metodos", una clase se podria definir como el "cuerpo" de un objeto, por ejemplo: podriamos crear
una clase llamada "pelota" y a la misma aadirle diferentes propiedades o bien "metodos".
Un metodo son basicamente instrucciones en codigo dentro de una clase, por ejemplo, si la clase
pelota tiene propiedades como el radio de la pelota, se puede crear un metodo para obtener ese
valor, o bin un metodo para cambiar ese valor. Estos conceptos pueden sonar un poco dificiles pero
a medida que practiques haciendo programas podras ir entendiendolo mas facilmente.

Propiedades de la POO
Las caracteristicas de la programacin orientada a objetos son las siguientes:
1. Herencia: Se refiere a que una clase(objeto) puede tener clases hijas, que son principalmente
clases derivadas, por ejemplo: Si se tiene la clase padre "Perro" sus clases hijas pueden ser
clases
que
se
refieran
a
razas
especificas
de
perros,
como
"Labrador,Salchicha,Poodle,Doberman", cada una de estas clases hijas tendra diferencias en
sus propiedades, pero todas comparten el hecho de que siguen siendo perros.
2. Polimorfismo: Se refiere a que se pueden utilizar variables u objetos con el mismo nombre,

POO Teoria.odt

1/5

sin embargo sus funciones cambian dependiendo del contexto en que fueron creados, el
polimorfismo suele ser complicado de entender, pero lo explicaremos mas a fondo en un
proximo articulo o video.
3. Encapcsulacin: Significa que se puede encapsular "codigo", por ejemplo, si se tiene un
objeto llamado perro, el perro puede tener un metodo para correr, por lo tanto si se desea
ejecutar la accin Perro.correr(); se puede hacer sin necesidad de conocer el codigo que esta
implicito dentro de la instruccin "correr", esto es muy util para reutilizacin de codigo, y para
hacer la programacin mas facil.
4. Abstraccin: Se relaciona con utilizar propiedades de objetos sin necesidad de crear un
objeto en si, esto quiere decir si existe el objeto "matematicas", no es necesario crear el
objeto, para utilizar sus metodos como pueden ser sumar, restar, o multiplicar.

Caractersticas de la POO

Facilidad de diseo y relacin con el mundo real (UML)

Reusabilidad y facilidad de mantenimiento

Sistemas ms complejos
Abstraccin
Trabajo en equipo

Del lenguaje mquina hacia el mundo real

Resuelve problemas complicados. No est pensado para tareas sencillas

Elementos de la POO
Los elementos principales son:

clases: Especificacin de un conjunto de elementos

objetos: Elemento autnomo y con una funcionalidad concreta. Instancias concretas de una
clase

Tambin se basa en otros conceptos: herencia, polimorfismo y encapsulamiento

Resumen de objetos y clases

Objetos
Elementos con comportamiento y estado. Mtodos y atributos concretos
Instancias de clase
Interactuan por medio de mensajes

Clases
Plantillas para definir elementos (objetos)
Pueden estar directamente relacionadas unas con otra

Ejemplo de plantilla
publicclassNombreClase{
/**
*Atributos:
*tiponombreAtributo1;
*tiponombreAtributo2;
*/
/**
POO Teoria.odt

2/5

*Metodos:
*salidanombreMetodo1(parametros){contenidodelmetodo};
*salidanombreMetodo2(parametros){contenidodelmetodo};
*/
}

Ejemplo de clase Perro


publicclassPerro{
Stringnombre;
Stringraza;
floataltura;
voidperro(){}
voidcomer(){}
voiddormir(){}
voidladrar(){}
}

Encapsulacin

Puede (y suele) haber distintos niveles de visibilidad:


public: se puede acceder desde cualquier lugar
private: slo se puede acceder desde la propia clase
protected: slo se puede acceder desde la propia clase o desde una clase que herede de
ella

De esta forma se controla qu cosas son modificables y cmo se pueden modificar. El estado
suele ser privado, y se suele modificar a travs del comportamiento

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

La imagen sencilla de una persona (hombre o mujer) 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
POO Teoria.odt

3/5

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).
En Java representamos la abstraccin mediante la palabra reservada abstract, as:
publicabstractclassPrincipal{
/**MtodoAbstractosinimplementacin*/
publicabstractvoidmetodoAbstracto();
}
classsubClaseextendsPrincipal{
@Override
publicvoidmetodoAbstracto(){
/**Implementacindefinidaporlaclaseconcreta*/
}
}

Interfaces
Las interfaces son el mecanismo que utiliza Java para simular la herencia mltiple, como
mencionamos en Java slo 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, ms 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
En java se representan con la palabra interface y se usan con la palabra implements as:
interfaceInterfacePrincipal{
publicvoidmetodoAbstracto();
publicStringotroMetodoAbstracto();
}
publicclassPrincipalimplementsInterfacePrincipal{
publicvoidmetodoAbstracto(){
/**Implementacindefinidaporlaclaseconcreta*/
}
publicStringotroMetodoAbstracto(){
/**Implementacindefinidaporlaclaseconcreta*/
return"retorno";
}
}

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
POO Teoria.odt

4/5

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
Veamos este proceso como se representa en Java.
classFiguraGeometrica{
}
classCuadradoextendsFiguraGeometrica{
}
classTrianguloextendsFiguraGeometrica{
}
classCirculoextendsFiguraGeometrica{
}
publicclassPrincipal{
publicvoidmetodo(){
/**Puedocrearobjetosconcretos*/
FiguraGeometricamiFiguraGeometrica=newFiguraGeometrica();
CuadradomiCuadro=newCuadrado();
/**Puedocrearobjetospolimorficos*/
miFiguraGeometrica=miCuadro;
/**ObjetoCuadradodetipoFiguraGeometrica*/
FiguraGeometricamiCuadrado=newCuadrado();
/**ObjetoCirculodetipoFiguraGeometrica*/
FiguraGeometricamiCirculo=newCirculo();
/**ObjetoTriangulodetipoFiguraGeometrica*/
FiguraGeometricamiTriangulo=newTriangulo();
}
}

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 slo se permite el polimorfismo de clases padre a clases hijo ms no al
contrario.

POO Teoria.odt

5/5

También podría gustarte