Professional Documents
Culture Documents
1. Introducción
2. Abstracción
3. Uso
4. Ejemplo
5. Encapsulamiento
6. Formas de encapsular
7. Modularidad
8. Relación entre ellos
9. Jerarquía
10.Herencia
11.Ejemplo en java
12.Clase abstracta
13.Herencia y ocultación de información
14.Redefinición de métodos
15.Ventajas
16.Estereotipos de herencia
17.Polimorfismo
18.Clasificación
19.Ejemplos
20.Polimorfismo desde una interfaz
21.Diferencia entre polimorfismo y sobrecarga
INTRODUCCIÓN
La programación orientada a objetos mejor conocida como POO, que es un
modelo de programación como su nombre lo dice que toma como referencia
objetos, des esa forma crea una interacción para diseñar software
informático, mejor dicho todo tipo de aplicaciones o programas.
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).
Ejemplo
Formas de encapsular
1. Estándar (Predeterminado)
2. Abierto: Hace que el miembro de la clase pueda ser accedido desde el
exterior de la Clase y cualquier parte del programa.
3. Protegido: Solo es accesible desde la Clase y las clases que heredan
(a cualquier nivel).
4. Semi cerrado : Solo es accesible desde la clase heredada
5. Cerrado: Solo es accesible desde la Clase.
MODULARIDAD
Además de la abstracción y el encapsulamiento, uno de los principios
fundamentales del diseño orientado a objetos es la modularidad. Como un
motor de automóvil, por ejemplo, los programas modernos se forman por
componentes distintos que deben interactuar en forma correcta, para que
todo el sistema funcione bien. Casa componente debe funcionar
adecuadamente. En la POO, el concepto de modularidad, se refiere a una
organización en la que distintos componentes de un sistema de
programación se dividen en unidades funcionales separadas. Un ejemplo
más esclarecedor, se puede considerar que una casa o un departamento
consisten en varias unidades que interaccionan: las instalaciones eléctricas,
de calefacción y enfriamiento, el servicio sanitario y la estructura. Más que
considerar que esos sistemas son un enredo gigantesco de alambres,
ventilaciones, tubos y tableros, el arquitecto organizado que diseña una casa
o departamento los considera como módulos separados que interactúan en
formas bien definidas. Al hacer esa consideración se aplica la modularidad
para aclarar las ideas, en una forma natural de organizar las funciones en
unidades distintas y manejables. Otra forma que nuestro arquitecto
“organizado” puede usar para ordenar su rompecabezas es el de la
estructura jerárquica, donde cada enlace que va hacia arriba se puede leer
como "es un(a)", como en "una cabaña es una casa es una construcción" En
forma parecida, el uso de la modularidad en un sistema de programación
también puede proporcionar una poderosa estructura organizativa que aporte
claridad a una implementación.
Y volviendo a nuestro ejemplo del motor, podremos tener una clase base
Motor, de allí extendemos Motor
Eléctrico, Combustión Interna, etc.… Por otro laso, el motor de combustión
interna tiene módulos (O componentes, u objetos) tales como Carburador,
Bomba de Inyección, Radiador, etc, etc.… que no pertenecen a la estructura
jerárquica del motor. Casi seguramente pertenecen a otra. Decimos entonces
que la clase Motor necesariamente tiene objetos Carburador, Radiador… a
esta relación la podemos llamar “tiene un”: Un atributo del objeto tiene un
objeto de otra clase. Finalmente, distinguiremos un tercer caso, cuando una
clase necesita transitoriamente, por ejemplo dentro de alguno de sus
métodos, del comportamiento de objetos de otra clase. En este caso, el
objeto de nuestra clase no necesita del objeto de la otra al nivel de atributo, o
sea permanente. Lo necesita transitoriamente. A esta relación la podemos
llamar “usa un”.
JERARQUÍA
Un lenguaje de programación es una notación para especificar una
secuencia de operaciones a realizar sobre objetos datos. Estos se pueden
agrupar en una jerarquía de árbol, cuyas unidades son comunes y familiares
a la mayoría de los lenguajes.
En el tope de la jerarquía está el programa propiamente tal, que es la unidad
de ejecución básica. Luego viene una entidad que puede ser compilada, y
que se compone de sentencias y expresiones.
HERENCIA
Es la relación entre una clase general y otra clase más especifica. 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.
Clase Abstracta
Redefinición de métodos
Ventajas
Ayuda a los programadores ahorrar código y tiempo, ya que si tiene
una clase lista es solo de implementarla y listo todo el código de esta
se resume a solo un llamado.
Estereotipos de herencia
POLIMORFISMO
Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de
la superclase Animal. La clase Animal tiene el método abstracto mover que
se implementa de forma distinta en cada una de las subclases (peces y aves
se mueven de forma distinta).
Clasificación
Se puede clasificar el polimorfismo en dos grandes clases:
Otra clasificación agrupa los polimorfismo en dos tipos: Ad-Hoc que incluye
a su vez sobrecarga de operadores y coerción, Universal (inclusión o
controlado por la herencia, paramétrico o genericidad).
Ejemplo de polimorfismo
En este ejemplo haremos uso del lenguaje C++ para mostrar el polimorfismo.
También se hará uso de las funciones virtuales puras de este lenguaje,
aunque para que el polimorfismo funcione no es necesario que las funciones
sean virtuales puras, es decir, perfectamente el código de la clase "superior"
(en nuestro caso Empleado) podría tener código
#include<iostream>
using namespace std;
class figura {
public:
float base;
float altura;
public:
float captura();
virtual unsigned float perimetro()=0;
virtual unsigned float area()=0;
};
void figura::captura(){
cout<<"CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO
ISÓSCELES Y UN RECTANGULO:" <<endl;
cout<<"escribe la altura: ";
cin>>altura;
cout<<"escribe la base: ";
cin>>base;
cout<<"EL PERIMETRO ES:" << perimetro();
cout<<"EL AREA ES:" << area();
};