Introducción
En este
artículo se mencionaran algunos de los aspectos más fundamentales de la
programación moderna/Declarativa, tales como clases, objetos, herencia entre
otros que se definirán y explicaran en el artículo, para continuar se definirá
lo que se llama Paradigma en su origen significaba un ejemplo ilustrativo, en
particular enunciado modelo que mostraba todas las inflexiones de una palabra.
En el libro The Structure of Scientific Revolutions, el historiador Thomas Kuhn
describía un paradigma como un conjunto de teorías, estándares y métodos que
juntos representan un medio de organización del conocimiento: es decir, un
medio de visualizar el mundo.
Se
mencionó anteriormente la palabra declarativa haciendo referencia a al
paradigma Declarativo ya que es este de donde se obtiene los diferentes
elementos que contendrá este artículo. El declarativo es un tipo de
programación en el cual es programador escribe el algoritmo que resuelve un
problema determinado, asease le digo que hacer y cómo hacerlo, de aquí nace el paradigma
Orientado a objetos la orientación a objetos puede describirse como el conjunto
de disciplinas (ingeniería) que desarrollan y modelizan software que facilitan
la construcción de sistemas complejos a partir de componentes.
Palabras
clave: Orientada
a objetos, clases, herencia, interfaces
Clases
Una clase,
es simplemente una abstracción que hacemos de nuestra experiencia sensible. El
ser humano tiende a agrupar seres o cosas
-objetos-con características similares en grupos -clases-. Así, aun cuando existen por ejemplo
multitud de vasos diferentes, podemos reconocer un vaso en cuanto lo
Vemos, incluso aun cuando ese modelo concreto de
vaso no lo hayamos visto nunca.
(Introducción
a la OOP. Versión 1.0. Autor: Francisco Morero)
Una
clase contiene toda la información que
se necesita para crear y dar forma a los objetos ya que estos se verán afectados
en su comportamiento gracias a las cualidades que su clase contenga, la clase
permite encapsular bajo un mismo nombre los métodos y propiedades que serán manipulados
en el objeto
A
partir del concepto de clase podemos decir que un objeto es una instancia de
una clase, para que se entienda de una mejor manera el concepto,
visualice a la clase como un molde, y al objeto como el resultado de este
molde, cada característica que el modelo posea afectara todo objeto que se cree de esa clase.
Al momento
de hablar de comportamiento de un objeto vemos que este concepto está dado por
la clase, ya que el hecho que los objetos pertenezcan a una clase , se hace con
el objetivo de que tenga un comportamiento similar para el uso de su información.
Objeto
Un objeto
es una agrupación de código, compuesta de propiedades y métodos, que pueden ser
manipulados como una entidad independiente. Las propiedades definen los datos o
información del objeto, permitiendo consultar o modificar su estado; mientras
que los métodos son las rutinas que definen su comportamiento
(Duarte H. Material para la clase
Programación Orientada a Objetos.)
Como se mencionó
anteriormente, una clase es era una agrupación de código, es normal que el
objeto sea un medio para manejar la información agrupada y esto se logra
mediante las propiedades y métodos que su clase le ha impregnado, las propiedades
contendrán la información y los métodos el
comportamiento o la forma de hacer ciertas manipulaciones sobre la información.
A pesar
que cada objeto es generado de una misma clase base, cada objeto será único, ya
que contendrá información distinta a otro objeto, aunque sean de la misma clase,
piense en una imagen hecha con cerámica, aunque todas son cerámicas cada una
contiene elementos diferentes que hacen una sola imagen al estar juntas.
Herencia
La
herencia es una de las características más importantes de la programación
actual y del paradigma POO ya que esta cualidad nos permite la reutilización
de código, nos ahorra no solo tiempo sino la depuración de errores, es
gracia a este criterio que muchos lo ponen como una característica
indispensable en un lenguaje que se haga llamar orientado a objetos, este caso
solo mencionare la herencia simple.
(Autor: Francisco Morero)
Este tipo
de herencia simple es en la que solo se hereda de una superclase, al heredar,
la clase toma directamente el comportamiento de su superclase pero claro esta
pude ser derivada de otra y de otra clase, se heredan todas aquellas
propiedades y métodos que se permitan, esto se logra gracias a un cierto tipo
de palabras reservadas, Private esta palabra
india que no se heredará , ya que se
puede hacer que solo se hereden ciertas características.
Lo más
común al heredar es que se agreguen características nuevas a la clase que está
heredando porque si no es así sería mejor solo implementar la superclase,
al heredar se hace lo que se conoce como una sobre escritura de métodos, es muy
poco probable que lo que se modifique sean datos.
Métodos
Los métodos
describen el comportamiento asociado
a un objeto, representan las acciones que pueden
realizarse por un objeto o sobre un
objeto, la ejecución
de un método
puede conducir a
cambiar el estado del objeto o
dato local del objeto. en la POO el cuerpo de un método consta de un bloque de
código procedimental que ejecuta la acción
requerida, todos los
métodos que alteran
o acceden a los datos
de un objeto se define dentro del objeto, Un método dentro de un objeto se
activa por un mensaje que se envía por
otro objeto al objeto que contiene el método
(Duarte H. Material para la clase
Programación Orientada a Objetos.)
Se puede
entender un método como una sentencia de código que tiene o tendrá un efecto
sobre el objeto que se relacione con dicho método, este método tendrá efectos
sobre la información que el objeto contenga o sobre el objeto en general
Por lo
general estos métodos se necesitan de un parámetro para ejecutarce, cabe mencionar
que están los métodos tipo VOID cuya activación no requiere mensaje o parámetro.
Existen
diferentes tipos de métodos:
1. Inicializadores
2. Getters
3. Setters
4. Constructores
5. Destructores
Cabe resaltar
que el constructor es el más importante de estos métodos, ya que este es el
encargado de la inicialización del objeto en cuanto es creado, de ahí el nombre
de constructor, él toma cada propiedad del objeto y le da una instancia ,
también el constructor lleva el mismo nombre de la clase en la que reside.
Los
métodos get y set son utilizados para obtener información de una
variable, esto ayuda a ser más natural al momento de programar y le método set
es el que modifica el valor de una variable.
Propiedades
Todo
objeto puede tener cierto número de propiedades, cada una de las cuales tendrá,
a su vez, uno o varios valores. Las propiedades corresponden a las clásicas
"variables" de la programación estructurada ya que esta se utiliza en
información ya clasificada. Son, por lo tanto, datos encapsulados dentro del
objeto, junto con los métodos y las relaciones. Las propiedades de un objeto
pueden tener un valor único o pueden contener un conjunto de valores más o
menos estructurados (matrices, vectores, listas, etc.).
( Scott M (2006). Programming
Languages Pragmatics)
Además,
los valores pueden ser de cualquier tipo (numérico, alfabético, u otro variable
primitiva.) si el sistema de programación lo permite. Los atributos están
asociados a clases y objetos, y describen la clase o el objeto de alguna
manera. Las entidades de la vida real están a menudo descritas con palabras que
indican características estables. La mayoría de los objetos físicos tienen
características tales como forma, peso, color y tipo de material. Las personas
tienen características como fecha de nacimiento, padres, nombre y color de los
ojos.
Una
característica puede verse como una relación binaria entre una clase y cierto
dominio. Los atributos describen el estado del objeto. Un atributo consta de
dos partes: un nombre de atributo y un valor de atributo. En la mayoría
de los casos, un dominio el posible conjunto de valores que una variable puede
llegar a tener.
Las
propiedades pueden ser heredadas o propias
Miembros
estáticos
Metodos:
Una
clase estática es básicamente igual que una clase no estática, pero
existe una diferencia: no se pueden crear instancias de una clase
estática. En otras palabras, no puede utilizar la palabra
clave new para crear una variable del tipo clase.
(https://msdn.microsoft.com/es-es/library/79b3xss3.aspx)
Dado que
no hay ninguna variable de instancia, el acceso a los miembros de una clase
estática se realiza mediante el propio nombre de clase. Por ejemplo,
si cuenta con una clase estática que se denomina MATH dentro del cual esta una
función llamada sqrt().
Las
clases estáticas son de tipo sellado y, por consiguiente, no pueden
heredarse. No pueden heredar de cualquier clase, excepto Object
ya que de esta clase heredan todas las demás clases que creemos por forma automática. Las
clases estáticas no pueden contener un constructor de instancia, recordando que
al declarar un método o una propiedad estática esta lo que hace es reservar de
forma permanente un espacio en memoria, para poder así almacenar su valor fijo.
Propiedades:
Las variables
estáticas en php es una variable con un dato inicial ya establecido, en php no
se puede acceder a este tipo de variables con el operando (->). y
su valor es estático (es decir, no puede variar ni ser modificado).
Ésta, se define anteponiendo la palabra clave static al
nombre de la variable.
Clases
Abstractas
Una clase abstracta es aquella que construimos para derivar de ella
otras clases, pero de la que no se puede
instanciar. Por ejemplo: la clase mamífero,
no existe como tal en la naturaleza, no existe ningún ser que sea tan solo mamífero (no hay ninguna instanciación
directa de esa clase), existen humanos, gatos, conejos, etc.
Todos ellos son mamíferos, pero no existe un animal que sea solo
mamífero.
(Introducción a la OOP. Versión
1.0.0 – Autor: Francisco Morero)
Las clases abstractas nos permiten jerarquizar de una mejor manera, ya
que esta clase nos permite generar métodos generales, para darle forma a
proyectos que son modulares y grandes, ya que propagan un comportamiento en común,
solo diciendo el nombre y no como hacerlo, por esto es que las clases que lo
heredan, están en la obligación de sobrescribir dicho método, ya que el que es
de la clase abstracta no tiene “cuerpo” declarado .Si una clases contiene uno o más
métodos abstractos está clase debe ser abstracta.
Del mismo
modo la clase que se halla al inicio de la jerarquía de clases, normalmente es
creada para que contenga aquellos datos y métodos comunes a todas las clases
que se le derivan, estas son clases abstractas.
Como
podemos apreciar en esta imagen , la clase caballo sería una clase abstracta,
ya que son las demás clases de caballos la que la implementan, usando esto como
un formato a seguir , cabe mencionar que las clases que heredan de una clase
abstracta están obligados a sobrescribir los métodos que se requieren.
Excepciones
Es un
evento que ocurre durante la ejecución de un programa y que interrumpe el flujo
normal de operación, es decir en el momento en el que ocurre algo que esta
fuera de las manos del programador , como por ejemplo un error al
conectarse a la red y que no haya servicio de internet o algo por el estilo, entre
las que más me han dado problema es la NullPointerException!
.
Existen muchos tipos de excepciones, casi una por cada tipo de error, por lo que si tenemos error de entrada/salida de datos, el programa debería de lanzar una excepción de tipo IOException esta se usa de ejemplo ya que es de las más comunes.
Tipos de
excepciones:
Implícitas.
- Definidas por el lenguaje
Explícitas.
- Definidas por el programador
Como manejarlas
· Debe ser simple de usar y de
entender
· Debe separar el código del
tratamiento de excepciones del código normal
· Implementar un tratamiento
uniforme de las excepciones
· Permitir que las acciones de
recuperación sean programadas
Si se
desea que la aplicación siga ejecutándose después del error, entonces se usa:
Try: para poner en alerta al
programa sobre el código que puede lanzar una excepción.
Catch:
para capturar y manejar cada excepción que se lance.
Finally:
código que se ejecutará haya o no excepciones.
Conclusiones:
- Hay muchas características
que hacen de la programación orientad a objetos una de las más fuertes en
el día de hoy, sin embargo seguirá evolucionando según pase el tiempo y
adaptándose a los cambios y necesidades que vayan surgiendo en el camino.
- La programación orientada a
objetos permite la optimización del código generado gracias a que mediante
técnicas de herencia, atributos estáticos entre otros permiten, que el
código sea genérico de manera que sea reutilizable, ahorrando el
tiempo y errores en el tiempo de compilación.
- Resolver un problema bajo el
paradigma de la programación orientada a objetos implica determinar una jerarquía y caracterizar los diferentes objetos que
intervienen en el problema, para poder relacionarlos de la forma correcta.
Referencias
Lista de Referencias
[1] Scott M (2006).
Programming Languages Pragmatics
[2] https://msdn.microsoft.com/es-es/library/79b3xss3.aspx
[3] Aguilar L. J (1996). Conceptos
fundamentales de programación orientada a objetos. En J. Domínguez (Ed.) Programación
Orientada a Objetos (pp 66 – 111). España: McGraw-Hill.
[4] Schuerer K. , Maufrais
C, Letondal C, Deveaud E, & Petit M (2008). Introduction to
Programming using Python Programming Course for Biologists at the Pasteur Institute .Extraído el 15 de Septiembre de 2010 desde http://www.pasteur.fr/formation/infobio/python/support.pdf
Programming using Python Programming Course for Biologists at the Pasteur Institute .Extraído el 15 de Septiembre de 2010 desde http://www.pasteur.fr/formation/infobio/python/support.pdf
[5] Eiffel
(programming language). (2010, 25 de agosto). In Wikipedia, The
Free Encyclopedia. Recuperado
06:31, agosto 31, 2010 de http://en.wikipedia.org/w/index.php?
title=Eiffel_(programming_language)&oldid=380870822
title=Eiffel_(programming_language)&oldid=380870822
[6] Duarte H. Material para la
clase Programación Orientada a Objetos.




