Sunteți pe pagina 1din 76

Programación Orientada a Objetos

1. El paradigma orientada a objetos

Objetivo: El alumno interpretará los conceptos de la programación


orientada a objetos para aplicarlo a eventos del mundo real.

1.1 Elementos básicos del paradigma orientado a objetos.

1.2 Propiedades básicas del paradigma orientado a objetos.

M.C. Alejandro V. Programación Orientada a Objetos 1
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

El concepto de paradigma procede del griego


παραδειγμα (paradeigma), que significa modelo o
ejemplo.

Un paradigma es un modelo o patrón sostenido en


una disciplina. Comprende un grupo de principios
fundamentales que producirán una realidad con un
propósito particular.

M.C. Alejandro V. Programación Orientada a Objetos 2
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

En la ciencia un paradigma es un conjunto de


realizaciones científicas universalmente reconocidas
que, durante cierto tiempo, proporcionan modelos
experimentales que dan solución a otros modelos.

M.C. Alejandro V. Programación Orientada a Objetos 3
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Por ejemplo, el paradigma de Ptolomeo implicaba


que la tierra era plana y que el Sol giraba alrededor
de la Tierra. Las observaciones de Copérnico
probaron lo contrario y generaron el paradigma de
que la Tierra es redonda y gira alrededor del Sol.

Por ejemplo, en 1905 Albert Einstein publicó su


teoría de la relatividad especial, su publicación
cambió el paradigma que había impuesto Isaac
Newton.
M.C. Alejandro V. Programación Orientada a Objetos 4
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Paradigma de programación

 Es la forma, visión o manera que determinan los


métodos y las herramientas que un programador
usara en la construcción de un software.

 Es una colección de modelos conceptuales que


modelan el proceso de diseño y determinan la
estructura de un programa.
M.C. Alejandro V. Programación Orientada a Objetos 5
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

 Se refiere a una filosofía (o forma) de atacar y analizar


problemas, así como diseñar e implementar una solución en
una computadora.

 Representa un enfoque particular o filosofía para la


construcción del software. No es mejor uno que otro sino que
cada uno tiene ventajas y desventajas. También hay
situaciones donde un paradigma resulta más apropiado que
otro.

Los lenguajes de programación están basados en uno o más


paradigmas de programación.

M.C. Alejandro V. Programación Orientada a Objetos 6
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Imperativo

Describe una programación como un flujo de


instrucciones o comandos que van formando la
estructura del software.

La máquina almacena una representación codificada


de un cálculo y ejecuta una secuencia de comandos
que modifican el contenido de ese almacenamiento.

M.C. Alejandro V. Programación Orientada a Objetos 7
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Este paradigma expresa como debe solucionarse un problema


especificando una secuencia de acciones a realizar a través de
uno o más procedimientos denominados subrutinas o
funciones.

El paradigma imperativo debe su nombre al papel dominante


que desempeñan las sentencias imperativas. Su esencia es el
cálculo iterativo, paso a paso, de valores de nivel inferior y su
asignación a posiciones de memoria.

Algunos lenguajes imperativos son Algol, C, COBOL,


FORTRAN, Pascal, Perl, PHP.
M.C. Alejandro V. Programación Orientada a Objetos 8
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Ejemplo en Pascal
{Programa que calcula el factorial de un número}
uses crt; {bibliotecas}
var numero,limite,contador:integer; {variables}
begin
ClrScr;
Write('Numero: ');
Readln(numero);
limite:=numero;
numero:=1;
for contador:=1 to limite do
begin
numero:=numero*contador;
end;
Write('Factorial: ',numero);
ReadKey;
end.

M.C. Alejandro V. Programación Orientada a Objetos 9
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Declarativo

Este paradigma está basado en el desarrollo de programas


especificando, describiendo o declarando un conjunto de
instrucciones (afirmaciones, condiciones, ecuaciones,
proposiciones, restricciones o transformaciones) que
describen el problema y detallan su solución.

M.C. Alejandro V. Programación Orientada a Objetos 10
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

En la programación declarativa se describe la lógica de


computación necesaria para resolver un problema sin describir
un flujo de control de ningún tipo, es decir, no es necesario
definir algoritmos puesto que se detalla la solución del
problema en lugar de como llegar a esa solución.

Es más complicado de implementar que el paradigma


imperativo, tiene desventajas en la eficiencia, pero ventajas en
la solución de determinados problemas.

M.C. Alejandro V. Programación Orientada a Objetos 11
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

No existen asignaciones destructivas y, por tanto, las


variables son utilizadas con transparencia referencial, es
decir, una expresión puede ser sustituida por el resultado de
ser evaluada en el programa sin alterarlo semánticamente.

Algunos lenguajes declarativos son Haskell, Maude, Prolog,


SQL.

M.C. Alejandro V. Programación Orientada a Objetos 12
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Ejemplo en SQL
SELECT
Customers.FirstName,
Customers.LastName,
SUM(Sales.SaleAmount) AS SalesPerCustomer
FROM
Customers JOIN Sales
ON
Customers.CustomerID = Sales.CustomerID
GROUP BY
Customers.FirstName, Customers.LastName

M.C. Alejandro V. Programación Orientada a Objetos 13
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Estructurado

Este paradigma divide el código en bloques, estructuras


que pueden o no comunicarse entre sí.

El teorema del programa estructurado, demostrado por


Böhm-Jacopini, dicta que todo programa puede
desarrollarse utilizando únicamente 3 instrucciones de
control: secuencia, selección e iteración.

M.C. Alejandro V. Programación Orientada a Objetos 14
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Secuencial: Una instrucción no se ejecuta hasta que


termina la anterior.

Selección: Permite que el programa se bifurque en una u


otra instrucción según se cumpla o no una condición
lógica.

Iteración: Bucles o ciclos de control que ejecutan una


secuencia de instrucciones mientras se cumple la condición
establecida.

M.C. Alejandro V. Programación Orientada a Objetos 15
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Ejemplo en C

#include <stdio.h>

int main()
{
printf("Hola mundo");
return 0;
}

M.C. Alejandro V. Programación Orientada a Objetos 16
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Orientado a objetos

Este paradigma de programación facilita la creación de


software de calidad debido a que potencializa el mantenimiento,
la extensión y la reutilización del software generado.

La programación orientada a objetos trata de amoldarse al


modo de pensar del ser humano y no al de la máquina. Esto es
posible gracias a la forma racional con la que se manejan las
abstracciones que representan las entidades del dominio del
problema y a propiedades como la jerarquía o el
encapsulamiento.

M.C. Alejandro V. Programación Orientada a Objetos 17
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

El elemento básico de este paradigma no es la función


(como en la programación estructurada), sino un ente
denominado objeto.

Un objeto es la representación de un concepto para un


programa, y contiene toda la información necesaria para
abstraer dicho concepto: los datos que describen su estado
así como las operaciones que pueden modificar dicho
estado y determinan las capacidades del objeto.

Algunos lenguajes que manejan este pardigma son Simula,


Smalltalk, C++, Java, Visual Basic .NET.
M.C. Alejandro V. Programación Orientada a Objetos 18
Programación Orientada a Objetos

1.1 Elementos básicos del paradigma orientado a


objetos.

Ejemplo en C#

using System;

namespace HelloNameSpace {
public class HelloWorld {
static void Main(string[] args) {
Console.WriteLine("Hola Mundo!");
}
}
}

M.C. Alejandro V. Programación Orientada a Objetos 19
Programación Orientada a Objetos

Problemas en la creación del software

¿Hay crisis del software?


• Gran complejidad
– Número de estados posibles es muy elevado
– Conexiones entre entidades
– Complejidad arbitraria que surge de instituciones humanas
• Sujeto a continuos cambios
• No tiene representación gráfica
• Especificación de requisitos
• Comunicación del equipo
M.C. Alejandro V. Programación Orientada a Objetos 20
Programación Orientada a Objetos

Calidad del Software

Factores Externos

• Robustez
• Eficiencia
• Extensibilidad
• Portabilidad
• Reutilización
• Facilidad de uso
• Compatibilidad
• Funcionalidad

Factores Internos

• Modularidad
• Legibilidad
M.C. Alejandro V. Programación Orientada a Objetos 21
Programación Orientada a Objetos

En los Sistemas Software interesa ...

Acoplamiento mínimo: Modulo A Modulo B

• Numero de conexiones sea mínimo


• Flujo de información sea mínimo
Modulo C
• Comunicaciones explícitas

Cohesión interna: Modulo A Modulo B

• Cohesión de datos
• Cohesión funcional Modulo C

M.C. Alejandro V. Programación Orientada a Objetos 22
Programación Orientada a Objetos

Reutilización del software

• ¿Por qué el software no es como el hardware?


• ¿Por qué cada nuevo proyecto software arranca de
la nada?

Librerías de software
Software-IC
M.C. Alejandro V. Programación Orientada a Objetos 23
Programación Orientada a Objetos

Repetición en el desarrollo del software

• ¿Cuántas veces en los últimos 6 meses has escrito código


para buscar un elemento en una colección?

• Naturaleza repetitiva de la programación (ordenar, buscar,


recorrer, ...)

• ¿Por qué no es frecuente?


– Dificultades técnicas y no técnicas

M.C. Alejandro V. Programación Orientada a Objetos 24
Programación Orientada a Objetos

Dificultades técnicas

• Diseñar código reutilizable es difícil.


• Hacemos las mismas cosas pero no de la misma forma.
• Difícil captura de las similitudes.
• Permitir adaptación.

M.C. Alejandro V. Programación Orientada a Objetos 25
Programación Orientada a Objetos

ESTRUCTURAS MODULARES TRADICIONALES

• Rutinas
• Paquetes o Módulos

¿Por qué no son suficientes?

Posibles soluciones para darles flexibilidad:


• Sobrecarga
• Generalidad

¿cubre los requisitos de módulos reutilizables?


M.C. Alejandro V. Programación Orientada a Objetos 26
Programación Orientada a Objetos

RUTINAS

• Unidad de software que puede llamar a otras unidades para


ejecutar un cierto algoritmo.

• Enfoque de reutilización: librerías de rutinas

• Adecuadas en áreas donde pueden ser identificado un conjunto


de problemas individuales con las siguientes limitaciones:
1. Admiten especificación simple: pequeño conjunto de
parámetros.
2. No estén implicadas estructuras de datos complejas.
3. Problemas claramente diferenciados.

M.C. Alejandro V. Programación Orientada a Objetos 27
Programación Orientada a Objetos

LIMITACIONES DE LAS RUTINAS

• Soluciones para: "Búsqueda en una colección secuencial”:


1) Una rutina:
• "CASE" enorme.
• Muchos argumentos.
2) Conjunto de rutinas:
• Rutinas muy similares ( factorizar comportamiento)
• Cliente debe buscar en un laberinto de rutinas.

Conclusión: Un módulo reutilizable debe estar abierto a la adaptación y, la


única forma de adaptación de una rutina es pasarle diferentes
argumentos.
Las rutinas no son suficientemente flexibles
M.C. Alejandro V. Programación Orientada a Objetos 28
Programación Orientada a Objetos

PAQUETES/MÓDULOS
• Son unidades de descomposición de software que:
– Cumplen el principio de Unidad Lingüística Modular
– Contienen variables y rutinas relacionadas = características del
paquete
– Admiten la Ocultación de la Información (módulos abstractos)
– Permite la implementación de tipos definidos por el programador
• Los módulos sólo resuelven ”rutinas relacionadas”
– facilita depuración y cambio al proveedor
– es más fácil para los clientes encontrar y usar los servicios de los
módulos

M.C. Alejandro V. Programación Orientada a Objetos 29
Programación Orientada a Objetos

Ventajas de la Descomposición Funcional

• Técnica simple, fácil de aplicar


• Útil para pequeños programas y describir algoritmos.
• Buena para documentar diseños.
• Facilita desarrollo sistemático de sistemas
• Adecuada para dominar la complejidad

M.C. Alejandro V. Programación Orientada a Objetos 30
Programación Orientada a Objetos

Inconvenientes de la Descomposición Funcional

• Función principal: “Cima del sistema”


– El “programa principal” es una propiedad volátil
– Sistemas reales no tienen “cima”
– Mejor la visión de un “conjunto de servicios”
• No favorece la reutilización
– Se desarrollan elementos software para satisfacer
necesidades específicas de otro elemento del nivel superior.
– “Cultura del proyecto actual”
M.C. Alejandro V. Programación Orientada a Objetos 31
Programación Orientada a Objetos

Inconvenientes de la Descomposición Funcional

• Las estructuras de datos son descuidadas


– Funciones y datos deben jugar un papel complementario
• Cuando un sistema evoluciona los datos son más estables
que los procesos.

M.C. Alejandro V. Programación Orientada a Objetos 32
Programación Orientada a Objetos

EMPEZANDO CON UNA PREGUNTA QUE, NO PARECE TENER NADA QUE


VER CON LA PROGRAMACIÓN:

¿Cómo compañías como Compaq, Dell, Gateway y el resto de grandes


fabricantes de computadoras personales consiguieron algo tan
grande en tan corto tiempo?

Es decir

¿Cómo fueron capaces de fabricar tantos modelos en tan poco tiempo


y de responder tan rápidamente a los cambios que se producían?

M.C. Alejandro V. Programación Orientada a Objetos 33
Programación Orientada a Objetos

RESPUESTA

• Estas compañías subcontrataron una gran parte del trabajo.


• Lo que lo los fabricantes de PC’s estaban comprando esa
“funcionalidades pre-empaquetadas”. Por ejemplo una fuente
de alimentación

M.C. Alejandro V. Programación Orientada a Objetos 34
Programación Orientada a Objetos

PROGRAMACIÓN POO

• Su programa está compuesto por objetos, que tienen


ciertas propiedades y pueden llevar a cabo ciertas
operaciones.
• La construcción, o la compra, de un determinado objeto
podría depender de su presupuesto o de su tiempo.
• En Java los programadores no se deben preocupar de
cómo esté implementado un objeto siempre y cuando
haga lo que quieren que haga.

M.C. Alejandro V. Programación Orientada a Objetos 35
Programación Orientada a Objetos

PROGRAMACIÓN POO

Niklaus Wirth diseñador del lenguaje Pascal, llamó a su famoso libro


de programación

Algoritmos + Estructuras de datos = Programas

Primero se decide cómo manipular los datos, y después se elige la


estructura que se impondrá a los mismos para que su manipulación
sea lo mas fácil posible. La POO invierte el orden y pone los datos en
primer lugar, para después determinar los algoritmos que operarán con
dichos datos.
M.C. Alejandro V. Programación Orientada a Objetos 36
Programación Orientada a Objetos

Desarrollo software OO
1. Encontrar tipos de objetos relevantes
2. Encontrar operaciones para tipos de objetos
3. Describir tipos de objetos
4. Encontrar relaciones entre objetos
5. Usar tipos de objetos para estructurar
software
M.C. Alejandro V. Programación Orientada a Objetos 37
Programación Orientada a Objetos

CONCEPTOS CLAVE POO


• Clase y Objeto
• Clase: Atributos y Métodos
• Creación de clases: constructor e instancia
• Invocación de métodos
• Encapsulación (Ocultación de información)
• Relaciones entre clases (herencia)
• Polimorfismo

M.C. Alejandro V. Programación Orientada a Objetos 38
Programación Orientada a Objetos

1.2 Propiedades básicas del paradigma orientado a 
objetos

La programación orientada a objetos (POO) es un


modelo o paradigma de programación que utiliza
objetos, que se comunican a través de mensajes,
para resolver algún problema específico.

La idea general de este tipo de programación es


abordar el problema como se haría en el mundo real,
es decir, cada objeto tiene una tarea determinada y
los otros objetos pueden utilizarlas.
M.C. Alejandro V. Programación Orientada a Objetos 39
Programación Orientada a Objetos

Objetos

Un objeto, también conocido como instancia,


es el ente básico en la programación orientada a
objetos, es decir, un programa orientado a
objetos se compone, exclusivamente, de
objetos.

Un objeto posee ciertas carácterísticas


(propiedades) y es capaz de llevar a cabo ciertas
operaciones o funcionalidades (métodos).

M.C. Alejandro V. Programación Orientada a Objetos 40
Programación Orientada a Objetos

Un objeto es la representación en un programa de un concepto


(calculadora, cuenta bancaria, farmacéutica, etc.) y contienen toda
la información necesaria para abstraer ese concepto: datos que
describen sus atributos así como las operaciones que pueden
realizarse sobre estos atributos.

M.C. Alejandro V. Programación Orientada a Objetos 41
Programación Orientada a Objetos

Un objeto consta de:

 Tiempo de vida: La duración de un objeto en un programa


siempre está limitada en el tiempo. La mayoría de los
objetos sólo existen durante una parte de la ejecución del
programa. Los objetos son creados mediante un
mecanismo denominado instanciación, y cuando dejan de
existir se dice que son destruidos.

 Estado: Todo objeto posee un estado, definido por sus


atributos. Con él se definen las propiedades del objeto, y el
estado en que se encuentra en un momento determinado
de su existencia.

M.C. Alejandro V. Programación Orientada a Objetos 42
Programación Orientada a Objetos

 Comportamiento: Todo objeto presenta una funcionalidad,


definida por sus métodos, para que el resto de objetos
que componen los programas puedan interactuar con él.

Es posible que un objeto desee exponer alguna de sus


variables miembro o proteger otras de sus propios métodos
o funciones. En la programación orientada a objetos existen
diferentes niveles de protección de las variables y de las
funciones miembro para casos como éste. Los niveles de
protección determinan qué objetos y clases pueden acceder
a qué variables o a qué métodos.

M.C. Alejandro V. Programación Orientada a Objetos 43
Programación Orientada a Objetos

De cualquier forma, el hecho de encapsular las


variables y las funciones miembro relacionadas
proporciona dos importantes beneficios a los
programadores de aplicaciones:

1) Capacidad de crear módulos: El código fuente


de un objeto puede escribirse y mantenerse
independiente del código fuente del resto de los
objetos. De esta forma, un objeto puede pasarse
fácilmente de una parte a otra del programa.

M.C. Alejandro V. Programación Orientada a Objetos 44
Programación Orientada a Objetos

2) Protección de información: Un objeto tiene una


interfaz pública perfectamente definida que otros
objetos podrán usar para comunicarse con él.

De esta manera, los objetos pueden mantener


información privada y pueden cambiar el modo de
operar de sus funciones miembros sin que esto
afecte a otros objetos que usen estas funciones
miembro.

M.C. Alejandro V. Programación Orientada a Objetos 45
Programación Orientada a Objetos

Por ejemplo, una calculadora posee ciertos atributos


(nombre, marca, modelo, teclas, etc.), así como algunas
funcionalidades (sumar, restar, multiplicar, derivar, graficar,
etc.).

Sumar Nombr
Restar e
Multiplicar Marca
Derivar Modelo
Graficar

M.C. Alejandro V. Programación Orientada a Objetos 46
Programación Orientada a Objetos

Mensajes

En general, un objeto aparece como un


componente más de un programa o aplicación que
contiene otros objetos.

Los objetos de un programa interactúan y se


comunican entre ellos por medio de mensajes. Por
ejemplo, cuando un objeto A quiere que otro objeto
B ejecute una de sus funciones miembro (métodos
de B), el objeto A manda un mensaje al objeto B.
M.C. Alejandro V. Programación Orientada a Objetos 47
Programación Orientada a Objetos

Un mensaje consta de tres partes: Objeto


destinatario, método a ejecutar y parámetros.

Los mensajes representan todas las posibles


interacciones que pueden realizarse entre objetos.

Los objetos no necesitan formar parte del mismo


proceso, ni siquiera estar en el mismo equipo, para
poder interactuar (enviarse mensajes) entre ellos.
M.C. Alejandro V. Programación Orientada a Objetos 48
Programación Orientada a Objetos

Clase

Normalmente, en el mundo real existen varios objetos de


un mismo tipo, por ejemplo una cámara fotográfica. En la
programación orientada a objetos se dice que los objetos
del mismo tipo pertenecen a la misma clase.

Las clases son abstracciones que representan a un


conjunto de objetos con un comportamiento e interfaz
común, es decir, una clase es una plantilla que define las
variables y los métodos que son comunes para todos los
objetos de un cierto tipo.

M.C. Alejandro V. Programación Orientada a Objetos 49
Programación Orientada a Objetos

Clases

Las clases presentan el estado de los objetos a los que


representan mediante variables denominadas atributos.
Cuando se instancia un objeto el compilador crea en la
memoria dinámica un espacio para tantas variables como
atributos tenga la clase a la que pertenece el objeto.

Los métodos son las funciones mediante las cuales las


clases representan el comportamiento de los objetos. En
dichos métodos se modifican los valores de los atributos
del objeto y representan las capacidades del objeto.

M.C. Alejandro V. Programación Orientada a Objetos 50
Programación Orientada a Objetos

Calculadora

nombre: String
marca : String
modelo : String

float sumar(float)
float restar(float)
float multiplicar(float)
fx derivar(fx) otraCalculadora
miCalcu void graficar(fx)
Voyage
Voyage
Ti‐89
TI
Titanium 200
200
S
Sumar Sumar
Restar Restar
Multiplicar Multiplicar
Derivar Derivar
Graficar Graficar
M.C. Alejandro V. Programación Orientada a Objetos 51
Programación Orientada a Objetos

Métodos

Conjunto de instrucciones a las que se les asocia un nombre


de modo que si se desea ejecutarlas, sólo basta con
referenciarlas a través de dicho nombre en vez de tener que
escribirlas cada vez que se desean ejecutar esas
instrucciones.

Estas porciones de código pueden estar asociadas con


una clase (métodos de clase o métodos estáticos) o con
un objeto (métodos de instancia).

M.C. Alejandro V. Programación Orientada a Objetos 52
Programación Orientada a Objetos

Un método consta de una serie de sentencias para llevar a


cabo una acción, un número de parámetros de entrada que
regularán dicha acción y, posiblemente, un valor de salida
(o valor de retorno) de algún tipo.

El propósito de los métodos es el de proveer un mecanismo


para acceder (leer o modificar) los datos privados que se
encuentran almacenados en un objeto o clase.

M.C. Alejandro V. Programación Orientada a Objetos 53
Programación Orientada a Objetos

Objeto A
derivar(2x2 – 3)
integrar(fx)
graficar(fx)
oA(tipo)

derivar(fx)

Resultado = 4x
Objeto B

M.C. Alejandro V. Programación Orientada a Objetos 54
Programación Orientada a Objetos

Herencia

Una de las características básicas de la


programación orientada a objetos es la herencia.

La herencia permite definir nuevas clases


partiendo de otras ya existentes. Las clases que
heredan de otras, obtienen automáticamente
todo su comportamiento y, además, son capaces
de introducir características propias.

M.C. Alejandro V. Programación Orientada a Objetos 55
Programación Orientada a Objetos

Entonces, es posible definir clases a partir de


otras clases ya construidas. Estas nuevas clases
son llamadas subclases o clases derivadas y la
clase de la que se derivan se llama clase base o
superclase.
Calculadora

Calculadora Calculadora Calculadora


básica científica graficadora
M.C. Alejandro V. Programación Orientada a Objetos 56
Programación Orientada a Objetos

Cada subclase hereda los estados (variables) y los


métodos de la superclase de la cual deriva.

De igual manera, las subclases pueden declarar sus


propias variables e implementar sus propios métodos.

Las clases derivadas también pueden sobreescribir los


métodos heredados para implementar métodos más
especializados con el mismo nombre.

M.C. Alejandro V. Programación Orientada a Objetos 57
Programación Orientada a Objetos

La programación orientada a objetos permite n niveles


de herencia, por lo que el árbol de herencias o jerarquía de
clases puede ser tan extenso como se necesite. Los
métodos y las variables miembro se heredan en forma
descendente a través de todos los niveles de la jerarquía.

Por lo anterior, la clase ubicada más abajo de la jerarquía


presenta un comportamiento más especializado.

M.C. Alejandro V. Programación Orientada a Objetos 58
Programación Orientada a Objetos

La herencia permite abordar la resolución de un


problema de forma organizada, debido a que permite
definir una relación jerárquica entre los diferentes
conceptos que se estén manejando.

Por lo tanto, se puede afirmar que las clases derivadas o


subclases proporcionan comportamientos especializados
a partir de elementos comunes que hereda de la clase
base.

Mediante la herencia, los programadores pueden reutilizar


código de una clase base tantas veces como sea
necesario.
M.C. Alejandro V. Programación Orientada a Objetos 59
Programación Orientada a Objetos

También, los programadores pueden implementar las


superclases abstractas. Este tipo de clases definen e
implementan, parcialmente, comportamientos genéricos, sin
embargo, la implementación total se lleva a cabo en las clases
derivadas.

Las clases abstractas sirven como modelo base para la


creación de clases derivadas.

Existe dos tipos de abstracciones: las clases abstractas y las


interfaces.

M.C. Alejandro V. Programación Orientada a Objetos 60
Programación Orientada a Objetos

Una clase abstracta es una clase que no se puede


instanciar, se utiliza, únicamente, para definir
subclases. Se utilizan cuando se desea definir una
abstracción que englobe objetos de distintos tipos.
Hace uso de polimorfismo.

FiguraGeometrica
x
y
area ()

Cuadrado Círculo

lado radio

area () area ()

M.C. Alejandro V. Programación Orientada a Objetos 61
Programación Orientada a Objetos

Una interfaz es una clase completamente


abstracta, es decir, una clase sin implementación,
estas clases no se heredan, se implementan. Al igual
que la clase abstracta, se utilizan para definir las
clases que los implementan

FiguraGeometrica

area ()

Cuadrado Círculo

lado radio

area () area ()

M.C. Alejandro V. Programación Orientada a Objetos 62
Programación Orientada a Objetos

Encapsulamiento

Cuando un objeto ejecuta una acción, éste puede hacer


uso de uno o más métodos y una o más variables del
propio objeto. Sin embargo, lo que importa es el resultado
de ejecutar esa acción, no la manera en la que se
implementan estos métodos o variables.

La propiedad de ejecutar una acción sin mostrar los


mecanismos internos que tiene la clase para obtener su
resultado se denomina encapsulamiento.

M.C. Alejandro V. Programación Orientada a Objetos 63
Programación Orientada a Objetos

El encapsulamiento se encarga de mantener ocultos los


procesos internos de una acción dándole al usuario acceso a
la funcionalidad, no al desarrollo.

La encapsulación permite controlar internamente los


errores que pueda generar el usuario, debido a que se
controlan los errores internamente.

Por otro lado, al estar oculto el código, se pueden realizar


cambios y/o mejoras, siendo éstos transparentes para el
usuario.

M.C. Alejandro V. Programación Orientada a Objetos 64
Programación Orientada a Objetos

Para encapsular, ya sean variables o métodos,


la programación orientada a objetos maneja
distintos niveles de seguridad.

 Privado: variables o métodos visibles solo para


la misma clase.
 Protegidos: variables o métodos visibles para
esas clases y para sus clases derivadas.
 Públicos: variables o métodos visibles para
todos los objetos de la aplicación.

M.C. Alejandro V. Programación Orientada a Objetos 65
Programación Orientada a Objetos

Polimorfismo

Se refiere a la posibilidad de acceder a un rango de


funciones distintas a través de la misma interfaz. Es
decir, un mismo identificador puede tener distintas
formas (un comportamiento distinto) según el
contexto en el que se halle.

El polimorfismo se relaciona con los métodos y se


establece mediante tres conceptos: sobrecarga,
sobre-escritura y enlace dinámico.

M.C. Alejandro V. Programación Orientada a Objetos 66
Programación Orientada a Objetos

Sobrecarga

Este término hace referencia a un mismo


identificador en diversos contextos y con distintos
significados, es decir, métodos (funciones) con un
mismo nombre pero con funcionalidades distintas.

Un método consta de una serie de sentencias para llevar a cabo una


acción, un número de parámetros de entrada que regularán dicha acción
y, posiblemente, un valor de salida (o valor de retorno) de algún tipo.

La sobrecarga permite crear varios métodos con el


mismo nombre y con funcionalidades distintas, es
decir, diferentes acciones a realizar, diferentes tipos y
número de parámetros.
M.C. Alejandro V. Programación Orientada a Objetos 67
Programación Orientada a Objetos

La sobrecarga permite definir operadores cuyos


comportamientos varían de acuerdo a los
parámetros que recibe.

Por tanto, se pueden diferenciar varios métodos


sobrecargados a través de sus parámetros (ya
sea por la cantidad, por el orden, por el tipo, etc.).

M.C. Alejandro V. Programación Orientada a Objetos 68
Programación Orientada a Objetos

Por ejemplo: Los datos necesarios para


realizar un depósito bancario varían según el
tipo de deposito a realizar:

depositar(cantidad, cuenta)
depositar(cuenta, cuenta)
depositar(cuenta, cuentaExterna)

La cantidad puede estar en pesos, en


dólares, en euros, en libras esterlinas, etc., o
puede ser un cheque.

Las cuentas pueden ser del mismo banco o


de diferentes bancos.
M.C. Alejandro V. Programación Orientada a Objetos 69
Programación Orientada a Objetos

cuentaBancaria

nombre: String
numero: String
fecha: String

depositar(cantidad, cuenta)
depositar(cuenta, cuenta)
depositar(cuenta, cuentaExterna)

M.C. Alejandro V. Programación Orientada a Objetos 70
Programación Orientada a Objetos

Sobre-escritura

La sobre-escritura está directamente relacionada


con la herencia y se refiere al hecho de redefinir los
métodos de la clase base en las subclases.

M.C. Alejandro V. Programación Orientada a Objetos 71
Programación Orientada a Objetos

Calculadora
nombre: String
marca: String
modelo: String
float sumar(float)
float restar(float)
float multiplicar(float)
fx derivar(fx)
void graficar(fx)

CalculadoraGraficadora

grados: boolean

void graficar(fx) {
Se redefine el método
en la subclase
}

M.C. Alejandro V. Programación Orientada a Objetos 72
Programación Orientada a Objetos

Enlace dinámico

El enlace dinámico se presenta cuando existe


herencia y sobre-escritura y se refiere al hecho de
invocar métodos, obviando el tipo de objeto que
invoca el método hasta el momento de ejecutarlo.
Esto permite definir elementos de un tipo base e
instanciarlos como un tipo heredado.

M.C. Alejandro V. Programación Orientada a Objetos 73
Programación Orientada a Objetos

SerVivo

nombre: String

void respirar()

Planta Animal

tipo: String
tipo: String
clasificacion: String

void respirar() void respirar()

M.C. Alejandro V. Programación Orientada a Objetos 74
Programación Orientada a Objetos

El enlace dinámico permite realizar un método


para invocar el método respirar de cada objeto con
base en el tipo de objeto creado.

Se crean los objetos de un tipo específico

rosa: Planta
pantera: Animal
respirar (rosa);
respirar (pantera);

Se puede crear un solo método para diversos valores de entrada.

void respirar(SerVivo sV){


sv.respirar ();
}

M.C. Alejandro V. Programación Orientada a Objetos 75
“Por mi raza hablará el espíritu”

S-ar putea să vă placă și