Abstracción
Es un término del mundo real que
podemos aplicar tal cual lo entendemos en el mundo de la Programación Orientada
a Objetos. Algo abstracto es algo que está en el universo de las ideas, los
pensamientos, pero que no se puede concretar en algo material, que se pueda
tocar.
Pues
bien, una clase abstracta es aquella sobre la que no podemos crear especímenes
concretos, en la jerga de POO es aquella sobre la que no podemos instanciar
objetos. Ahora bien, ¿cuál es el motivo de la existencia de clases abstractas?
o dicho de otra manera, ¿por qué voy a necesitar alguna vez declarar una clase
como abstracta?, ¿en qué casos debemos aplicarlas? Esto es todo lo que
pretendemos explicar en este artículo.
Cohesión
En
informática, la cohesión hace referencia a la forma en que agrupamos unidades de software (módulos,
subrutinas...) en una unidad mayor. Por ejemplo: la forma en que se
agrupan funciones en una biblioteca de funciones o la forma en que se agrupan
métodos en una clase, etc.
El consenso general para una buena programación o un buen diseño es que la cohesión debe ser alta. Es decir, mientras más cohesionados estén los elementos agrupados, mejor. El acoplamiento, junto con la modularidad, lacohesión y otros factores, permiten mejorar la programación y el diseño de sistemas informáticos y aplicaciones, y son cruciales en el incremento de la reutilización de los códigos.
El consenso general para una buena programación o un buen diseño es que la cohesión debe ser alta. Es decir, mientras más cohesionados estén los elementos agrupados, mejor. El acoplamiento, junto con la modularidad, lacohesión y otros factores, permiten mejorar la programación y el diseño de sistemas informáticos y aplicaciones, y son cruciales en el incremento de la reutilización de los códigos.
Herencia
Es una
propiedad que permite que los objetos sean creados a partir de otros ya
existentes, obteniendo características (métodos y atributos) similares a los ya
existentes. Es la relación entre una clase general y otra clase más específica.
Es un mecanismo que nos permite crear clases derivadas a partir de clase base,
Nos permite compartir automáticamente métodos y datos entre clases subclases y
objetos. Por ejemplo: Si declaramos una clase párrafo derivada de una clase
texto todos los métodos y variables asociadas con la clase texto son
automáticamente heredados por la subclase párrafo.
Polimorfismo
En programación orientada a
objetos se denomina polimorfismo a la capacidad que tienen los objetos de una
clase de responder al mismo mensaje o evento en función de los parámetros
utilizados durante su invocación. Un objeto polimórfico es una entidad que
puede contener valores de diferentes tipos durante la ejecución del programa.
En
algunos lenguajes, el término polimorfismo es también conocido como ‘Sobrecarga
de parámetros’ ya que las características de los objetos permiten aceptar
distintos parámetros para un mismo método (diferentes implementaciones)
generalmente con comportamientos distintos e independientes para cada una de
ellas.
Acoplamiento
Es el grado en que una clase conoce a
otras clases. Si el conocimiento de la clase A acerca de la clase B, es porque
la clase B lo ha puesto de manifiesto a través de interfaces, en este caso decimos
que la clase A y la Clase B tienen unbajo acoplamiento, lo que nos
indica que es bueno para nuestro desarrollo. En cambio si la clase A se basa en
partes de la clase B, es decir se conocen pero no a través de una interfaz
decimos que tiene un alto acoplamiento, ya que un cambio en una implica
directamente un cambio en la otra.
Encapsulamiento
Hay muchos datos que no tiene por qué
conocerlo aquel que esté usando la clase Persona; ya que son inherentes al
objeto y solo controlan su funcionamiento interno; por ejemplo, cuando alguien
te ve puede saber inmediatamente si eres hombre o mujer (propiedad) o puede
hablarte y obtener una respuesta procesada (método); también puede conocer el
color de tu cabello y ojos. En cambio, jamás sabrá que cantidad de energía
exacta tienes o cuantas neuronas te quedan, ni siquiera preguntándote ya que
ninguna de tus propiedades externas visibles o funciones de comunicación al
público te permiten saber esos datos.
Esto
es la encapsulación u ocultación; hacer las variables que son innecesarias para
el tratamiento del objeto pero necesarias para su funcionamiento privadas, así
como las funciones que no necesitan interacción del usuario o que solo pueden
ser llamadas por otras funciones dentro del objeto (Como por ejemplo, palpitar)
La encapsulación es muy conveniente y
nos permite (Si programamos bien) colocar en funcionamiento nuestro objeto en
cualquier tipo de sistema, de una manera modular y escalable (algunas de las
reglas de la ingeniería del software).
Fuentes:
https://damian02.wordpress.com
http://www.alegsa.com.ar/Dic/cohesion.php#sthash.OsLyPiwv.dpuf
No hay comentarios:
Publicar un comentario