Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cap3 Principios Poo
Cap3 Principios Poo
ENCAPSULAMIENTO
Hay muchos datos que no tiene porque conocerlo aquel que este 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 energia exacta tienes o
cuantas neuronas te quedan, ni siquiera preguntandote ya que ninguna de tus
propiedades externas visibles o funciones de comunicación al publico 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, asi 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)
Formas de encapsular
• Abierto: hace que el miembro de la clase pueda ser accedido desde el exterior de
la Clase cualquier parte del programa.
• Protegido: solo es accesible desde la Clase y las clases que heredan (a cualquier
nivel).
• Cerrado: Solo es accesible desde la Clases.
HERENCIA
Supongamos que tenemos una clase "Persona" con los métodos y propiedades básicas de
una objeto persona como podrian ser "caminar" o "hablar", podríamos tener otras clases
como "Guillermo" o "Elder" que comparten todas las características de una "Persona" pero
que añaden características propias. Por lo que "Guillermo" y "Elder" pueden realizar las
mismas funciones que puede realizar una "Persona" y además cada una puede realizar las
suyas propias, por ejemplo, "Guillermo" sabe nadar pero "Elder" no, y "Elder" sabe bailar
reggeton pero "Guillermo" no.
En términos de programación estaríamos diciendo que "Guillermo" y "Elder" son dos clases
especializadas que heredan o extienden de la superclase "Persona".
Una herencia por especialización es la que se realiza cuando necesitamos crear una clase
nueva que disponga de las mismas características que otra pero que le añada
funcionalidades. Por ejemplo si tenemos una clase que genera un botón simple, y
necesitamos crear un botón que sea igual que el anterior pero que además añada un
efecto al ser clicado.
La herencia por generalización es la que realizamos cuando tenemos muchas clases que
comparten unas mismas funcionalidades y por homogeneizar las partes comunes se
decide crear una clase que implemente toda esa parte común y se dejan solo las partes
especificas en cada clase. Por ejemplo si tenemos clases para dibujar formas geométricas
todas ellas disponen de las mismas propiedades (un color de fondo, color de linea, etc.),
todas estas características pueden estar en una clase general de la que hereden todas las
clases concretas, evitando tener que escribir todo ese código común en todas ellas.
Una consideración a tener en cuenta de la herencia es que una clase no hereda las
propiedades o métodos privados, con lo que no tendrán acceso a ellas. Si necesitamos
heredar propiedades o métodos que no queremos que sean accesibles desde fuera de las
clases las definiremos como protected.
ABSTRACCIÓN
Los lenguajes de programación son las herramientas mediante las cuales los diseñadores
de lenguajes pueden implementar los modelos abstractos. La abstracción ofrecida por los
lenguajes de programación se puede dividir en dos categorías: abstracción de datos
(pertenecientes a los datos) y abstracción de control (perteneciente a las estructuras de
control).
Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas
que resolvían una y otra vez los mismos problemas. Para conseguir que sus esfuerzos
pudiesen ser utilizados por otras personas se creó la POO que consiste en una serie de
normas para garantizar la interoperabilidad entre usuarios de manera que el código se
pueda reutilizar.
Ejemplo
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Una
analogía sería modelizar un coche en un esquema de POO. Diríamos que el coche es el
elemento principal que tiene una serie de características, como podrían ser el color, el
modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden
ser ponerse en marcha, parar o aparcar. En un esquema POO el coche sería el objeto, las
propiedades serían las características como el color o el modelo y los métodos serían las
funcionalidades asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema POO una
fracción, es decir, esa estructura matemática que tiene un numerador y un denominador
que divide al numerador, por ejemplo 3/2. La fracción será el objeto y tendrá dos
propiedades, el numerador y el denominador. Luego podría tener varios métodos como
simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc.