Módulo 6 - Programación Orientada A Objetos
Módulo 6 - Programación Orientada A Objetos
Módulo 6 - Programación Orientada A Objetos
Orientada a
Objetos
Módulo 6
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
CONTENIDO
Introducción al módulo 5 .......................................................................................... 1
Introducción a POO .................................................................................................. 1
Nociones básicas UML ................................................................................................................................ 3
Objetos......................................................................................................................................................... 9
Clases ......................................................................................................................................................... 14
Mensajes, método, variables e instancias ............................................................................................... 19
Constructores, Destructores y Garbage Collector ................................................................................... 23
Relación entre clases y objetos ................................................................................................................ 25
Abstracción ................................................................................................................................................ 28
Encapsulamiento ....................................................................................................................................... 31
Modularidad .............................................................................................................................................. 31
Herencia ..................................................................................................................................................... 33
Polimorfismo ............................................................................................................................................. 36
Tipificación, concurrencia y persistencia ................................................................................................. 38
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
POO
Introducción al módulo 5
¡Comencemos!
INTRODUCCIÓN A POO
“Un paradigma es todo aquel modelo, patrón o ejemplo que debe seguirse en
determinadas situaciones.”
1
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
imposible reconfigurar el sistema para incorporar nuevas funcionalidades complejas que
lo mantengan útil frente a las cambiantes demandas.
1. Es una forma más natural de modelar los problemas: La POO se asemeja a cómo
pensamos y conceptualizamos el mundo real. Permite representar objetos y sus
relaciones de una manera intuitiva.
2
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
4. Es más adecuado para la construcción de entornos GUI: La POO se integra de
manera natural con la creación de interfaces gráficas de usuario (GUI), lo que
facilita el desarrollo de aplicaciones con interfaces interactivas y visuales.
El UML, que significa "Unified Modeling Language" en inglés, se basa en la idea de que
una imagen vale más que mil palabras. Por lo tanto, nos permite crear y generar
diagramas con el propósito de establecer un lenguaje visual común en el complejo
mundo del análisis y desarrollo de software. Estos diagramas son comprensibles tanto
para los desarrolladores como para los usuarios y cualquier persona interesada en
comprender un sistema.
En resumen, el UML no constituye una metodología por sí mismo, sino más bien una
notación que se utiliza para desarrollar modelos. Es el estándar para visualizar,
especificar, construir y documentar los componentes de un sistema de software, lo que
lo convierte en una herramienta esencial en el proceso de desarrollo de software
orientado a objetos.
3
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
actores externos. Estos diagramas ayudan a comprender cómo los usuarios
interactúan con el sistema y qué funcionalidades están disponibles para ellos.
Diagrama de clases
2. Sección central: En esta parte se detallan los atributos de la clase, lo que permite
describir las características o propiedades que posee la clase.
4
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
3. Sección inferior: Aquí se presentan las operaciones de la clase, que
corresponden a los métodos que la clase puede realizar. Estas operaciones se
organizan en formato de lista, y cada una de ellas se describe en una línea
individual. Las operaciones proporcionan información sobre cómo la clase
interactúa con los datos y ejecuta funciones específicas.
Todas las clases pueden tener diferentes niveles de visibilidad, lo que significa que
pueden establecer distintos niveles de acceso. Los niveles de visibilidad más comunes
son los siguientes:
• Privados (-): Indican que solo los miembros dentro de la misma clase pueden
acceder a esos atributos o métodos.
• Protegidos (#): Significan que los miembros son accesibles dentro de la misma
clase y también por las subclases.
Además, algunas clases pueden ser abstractas, lo que implica que no se crearía una
instancia de ellas en nuestro sistema. El nombre de una clase abstracta puede
representarse en cursiva o entre dobles ángulos, como <<nombre>>.
1. Herencia: Este proceso implica que una subclase o clase derivada hereda la
funcionalidad de una superclase o clase base, también conocido como
5
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
"generalización". Se representa mediante una línea de conexión recta con una
punta de flecha cerrada que apunta hacia la superclase.
5. Multiplicidad: Permite definir las relaciones numéricas entre las clases. Por
ejemplo, se puede especificar cuántas instancias de una clase están relacionadas
con cuántas instancias de otra clase (por ejemplo, 0..1, n, 0.., 1.., m..n). Esto
ayuda a precisar cuántas instancias se esperan en una relación particular.
6
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Diagrama de objetos
El diagrama de objetos es una representación que muestra las relaciones entre objetos
mediante ejemplos del mundo real, lo que permite visualizar cómo se verá un sistema
en un momento específico. Este tipo de diagrama se centra en la instancia de clases y
objetos en un punto concreto de la ejecución del programa, mostrando cómo
interactúan y se comunican entre sí en ese momento particular. En resumen, el
diagrama de objetos proporciona una instantánea de la configuración y el estado de los
objetos en un sistema en un momento dado.
1. Objetos: Los objetos son instancias concretas de una clase. Por ejemplo, si
"Auto" es una clase, un "Peugeot 208 compacto" sería un objeto de esa clase.
2. Títulos de clase: Los títulos de clase representan los atributos específicos de una
clase particular. Estos títulos de clase pueden aparecer como elementos dentro
del objeto o incluso como propiedades del objeto en sí, como el color de un
automóvil.
4. Enlaces: Los enlaces son líneas que conectan dos figuras en un diagrama de
objetos, y se deben nombrar para indicar la interacción que ocurre entre los
objetos conectados.
Además, similar al diagrama de clases, se puede incluir una tercera sección donde se
describan los métodos u operaciones asociados a los objetos. Esta información completa
la representación de la configuración y el comportamiento de los objetos en un sistema
en un punto específico de su ejecución.
7
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Diagrama de secuencias
8
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
respuesta inmediata) y mensajes asíncronos (que no esperan una respuesta
inmediata).
Objetos
Hemos presentado el funcionamiento básico de UML, que nos será de gran utilidad para
representar de manera más efectiva algunos conceptos fundamentales de la
Programación Orientada a Objetos (POO). Antes de adentrarnos en una exploración
detallada de estos conceptos, es importante entender algunas de las características
clave de los Lenguajes Orientados a Objetos, tal como las describe Alan Kay en 1993.
Estas características son las siguientes:
3. Todo objeto es instancia de una clase: Cada objeto es una instancia de una clase
específica que define su estructura y comportamiento. Las clases sirven como
plantillas para la creación de objetos.
4. Todos los objetos de la misma clase pueden recibir los mismos mensajes: Los
objetos de la misma clase comparten un conjunto común de comportamientos y
pueden recibir los mismos mensajes para realizar acciones específicas. La clase
define tanto el comportamiento como la estructura interna de los objetos.
9
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
6. Un programa es un conjunto de objetos que se comunican mediante el paso de
mensajes: En un programa orientado a objetos, la comunicación entre objetos
se realiza a través del envío de mensajes. Los objetos interactúan enviando
mensajes para solicitar servicios o realizar acciones.
Objetos
En términos más simples, un objeto es una entidad que contiene tanto los datos que
describen su estado como las funciones o métodos que definen su comportamiento.
Estos objetos se utilizan para modelar y representar entidades del mundo real en el
contexto de la Programación Orientada a Objetos (POO), lo que facilita la creación de
sistemas de software más organizados y estructurados.
"Un objeto es una cosa o entidad, que tiene atributos (propiedades) y de formas de
operar sobre ellos que se conocen como métodos."
10
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
De manera más sencilla, un objeto se puede describir como algo que tiene
características y comportamiento. Los objetos pueden representar una amplia variedad
de cosas, como dispositivos, roles, organizaciones, eventos, ventanas de Windows,
iconos, y mucho más.
11
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
• Tienen un tiempo de vida: Los objetos existen durante un período de tiempo
determinado, y pueden ser creados y destruidos según sea necesario.
• Son instancias de una clase: Los objetos se crean a partir de clases, que son
plantillas que definen su estructura y comportamiento. Cada objeto es una
instancia de una clase específica.
12
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
dependiendo de los requisitos de la aplicación. Los objetos intermedios pueden
heredar características del objeto raíz y proporcionar características adicionales
que se heredan a sus objetos descendientes.
Los atributos son las características de un objeto que definen su estado o propiedades.
Estos atributos se pueden definir mediante tipos de datos o variables, los cuales se
dividen en dos categorías principales:
1. Tipos de Datos Primitivos (TDP): Estos tipos de datos se utilizan para representar
valores simples y básicos, como números enteros, caracteres, números reales
(punto flotante), valores booleanos (verdadero/falso), entre otros. Una variable
de tipo primitivo puede contener un solo valor de uno de estos tipos, por
ejemplo, una variable entera puede almacenar un valor numérico entero. Estos
tipos de datos primitivos son esenciales en la programación para manejar
información fundamental.
2. Tipos de Datos por Referencia: Estos tipos de datos indican que trabajaremos
con instancias de clases en lugar de tipos primitivos. En otras palabras, una
variable de tipo por referencia establece una conexión hacia un objeto de una
clase y, a través de esta conexión, podemos acceder a los métodos y atributos
del objeto. En lugar de almacenar un valor simple, estas variables almacenan una
referencia a un objeto en memoria. Esto permite modelar objetos más complejos
y representar estructuras de datos personalizadas.
En resumen, los atributos de un objeto se definen utilizando tipos de datos, que pueden
ser tipos de datos primitivos para valores simples o tipos de datos por referencia para
objetos más complejos. La elección del tipo de datos depende de la naturaleza de la
información que se desea representar en un objeto y de los requisitos del programa.
13
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Se seguirá la convención de utilizar siempre letras minúsculas para nombrar estos
atributos. Si se compone de más de una palabra, se empleará la notación CamelCase,
donde cada primera letra de cada palabra adicional será en mayúscula y sin espacios en
blanco, como por ejemplo "colorDelPelo".
Clases
Una clase es una representación generalizada y una plantilla que define un tipo
específico de objeto. Incluye las características o atributos comunes a todos los objetos
de esa clase y los comportamientos o métodos que todos los objetos de esa clase
pueden realizar. Las clases sirven como modelos abstractos que se utilizan para crear
14
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
objetos concretos. En esencia, una clase proporciona las especificaciones de cómo
deben ser los objetos que se crearán a partir de ella.
Por otro lado, un objeto es una instancia específica de una clase. Un objeto se crea a
partir de una clase y hereda todas las características y comportamientos definidos en
esa clase. Cada objeto es único en sí mismo, aunque comparta las mismas características
y métodos que otros objetos de la misma clase.
Ejemplo: Si tienes una clase llamada "Persona" que define las características y
comportamientos comunes a todas las personas, como nombre, edad y la capacidad de
hablar, puedes crear objetos específicos a partir de esta clase. Por ejemplo, puedes crear
un objeto llamado "Pedro" y otro llamado "María", ambos serían instancias de la clase
"Persona". Cada uno tendría su propia información única, pero compartiría las
características y acciones definidas en la clase "Persona".
15
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
¿Qué diferencia existe entre instancia y objeto?, veamos una comparativa en la
siguiente imagen:
Cuando se define una clase, se establece cómo serán los objetos creados a partir de esa
clase. Es como diseñar un molde o plantilla para objetos específicos. Puedes pensar en
ello como un molde para hacer helados: los objetos son los helados individuales y el
molde define sus características, como el color, el tamaño y el sabor, así como las
acciones que pueden realizar, como congelarse o derretirse.
16
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
• Se relacionan entre sí mediante jerarquías: Las clases pueden organizarse en
jerarquías donde una clase puede heredar características y comportamientos de
otra clase. Esto se conoce como herencia y permite la reutilización de código.
• Los nombres de las clases suelen estar en singular: Para seguir una convención
de nomenclatura común, los nombres de las clases suelen estar en singular para
representar un tipo de objeto.
Los modificadores de acceso en UML, que determinan quién puede acceder a los
atributos y métodos de una clase, se representan de la siguiente manera:
• "Público" se indica con el símbolo + y permite que los atributos y métodos sean
accesibles desde cualquier parte del programa, incluyendo otras clases.
17
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Relaciones entre clases
• Composición ("Es parte elemental de"): Similar a la agregación, pero con una
relación más fuerte. En este caso, un objeto no puede existir sin sus
componentes, y la vida de los componentes está vinculada a la del objeto
principal.
• Dependencia ("Usa un"): Indica que una clase utiliza otra clase en algún aspecto,
pero no implica una relación fuerte. Por ejemplo, una clase puede depender de
otra para realizar ciertas operaciones.
18
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
• Superclase: Puede definirse de manera simple como la clase padre de una clase
específica y puede tener cualquier cantidad de subclases que hereden sus
atributos y métodos.
• Subclase: Es la clase hija de una clase específica que hereda atributos y métodos
de su superclase.
Mensajes
19
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Métodos
Las instrucciones dentro de los cuerpos de los métodos se definen una sola vez y se
pueden reutilizar desde diferentes partes del programa. Además, están encapsuladas y
ocultas de otros métodos. La división de un programa en módulos mediante métodos
sigue la metodología "divide y vencerás", lo que facilita la administración del desarrollo
de programas al construirlos a partir de componentes más pequeños y simples.
Los métodos son unidades autónomas que interactúan con los mensajes y determinan
qué mensajes puede recibir un objeto. Pueden compararse con las funciones o
subrutinas en la programación procedural.
20
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Un método cuenta con las siguientes partes:
• Argumentos opcionales.
Variables
Las variables son espacios de memoria donde se almacenan datos, y cada una de ellas
tiene su propio nombre, tipo y valor. En la programación orientada a objetos, existen
varios tipos de variables que desempeñan funciones específicas:
• Variables de Clase: Estas variables son compartidas por todas las instancias de
una clase. Tienen el mismo valor para todas las instancias de la clase y se utilizan
para almacenar datos que deben ser compartidos entre todos los objetos de esa
clase.
21
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
• Variables Locales: Son variables que se declaran y utilizan dentro de los
métodos. Su alcance está limitado al método en el que se declaran y no pueden
ser accedidas desde fuera de ese método.
Instancia
Hasta este punto, hemos discutido cómo implementar clases y cómo expresar sus
atributos y métodos. Aunque todos los tipos de datos en la programación orientada a
objetos son clases, nos referiremos a las instancias de clases que excluyen los tipos de
datos básicos del lenguaje como "objetos". Es importante recordar que, en el caso de
los tipos de datos básicos, sus valores pueden asignarse directamente a variables y luego
modificarse mediante el operador de asignación.
¿Es posible aplicar la misma idea para manejar objetos? En la manipulación de objetos
o instancias de tipos de datos que no son básicos, también se utilizan variables, pero hay
una diferencia con respecto a los tipos básicos. Los objetos deben crearse
explícitamente, lo que implica reservar memoria para almacenar los valores de todos
sus campos, o al menos contener una referencia a otro objeto que haya sido creado
previamente.
22
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Declaración de variables de instancia
El estado de un objeto se define a través de sus variables, que son conocidas como
variables de instancia. Estas variables se declaran dentro del cuerpo de la clase a la que
pertenece el objeto. Un objeto se conoce como una instancia de una clase, y para
crearlo, se invoca a un conjunto de líneas de código llamadas constructor de la clase,
que generalmente tiene el mismo nombre que la clase. Una vez que un objeto ya no se
necesita, puede ser gestionado por el recolector de basura (garbage collector), que se
encarga de liberar la memoria ocupada por objetos no utilizados.
Constructores y Destructores
Los objetos utilizados en la programación tienen un ciclo de vida definido, similar a los
objetos físicos. Este ciclo comienza con la creación (instanciación) del objeto y finaliza
con su destrucción y limpieza, que es realizada por el Garbage Collector. El Garbage
Collector es un proceso que se encarga de liberar el espacio de memoria ocupado por
un objeto cuando ya no hay referencias a dicho objeto.
Por otro lado, la destrucción de un objeto también puede ser una operación automática,
y para este propósito, se utiliza otro método especial llamado destructor. El nombre del
destructor es el mismo que el de la clase, pero precedido por el carácter "~". Los
destructores no reciben parámetros y no tienen un tipo de retorno definido.
23
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Es posible crear instancias de la clase Persona incluso si no se ha definido explícitamente
un constructor. En este caso, se proporcionará automáticamente un constructor sin
parámetros y con un cuerpo vacío, que se conoce como constructor por defecto. Este
constructor por defecto se encarga de asignar valores por defecto a los campos de la
clase.
Cuando los parámetros del constructor tienen el mismo nombre que los campos de la
clase, se produce una ambigüedad en el ámbito de las variables dentro del cuerpo del
constructor. En este caso, se utiliza la notación "this" para hacer referencia explícita al
campo de la clase. Por ejemplo, si tenemos un campo "nombre" y un parámetro
"nombre" en el constructor, podemos usar "this.nombre" para referirnos al campo de
la clase y "nombre" para referirnos al parámetro del constructor.
Un objeto es una instancia de una clase y, por lo tanto, hereda los atributos y métodos
definidos en su clase correspondiente. Esto significa que los objetos pueden acceder y
utilizar los atributos (variables) y métodos (funciones y procedimientos) definidos en su
clase.
Puedes pensar en un objeto como una variable de tipo clase. Por ejemplo, si tienes una
clase llamada "Persona", un objeto llamado "Cesar" sería una instancia de la clase
"Persona". En este sentido, los objetos se componen de dos partes principales: atributos
o estados y métodos que definen su comportamiento basado en esos atributos. Los
atributos suelen ocultarse al exterior, mientras que algunos métodos pueden quedar
visibles para interactuar con el objeto (esto se llama encapsulamiento).
Desde una perspectiva algorítmica, las clases son descripciones estáticas o plantillas que
definen la estructura de los objetos. Las clases actúan como moldes de fábrica, a partir
de los cuales se crean instancias de objetos. Durante la ejecución de un programa, solo
existen objetos, no clases.
Sin embargo, los diseños de ingeniería (los dibujos) no se pueden conducir. Para
conducir un automóvil, primero se debe construir basándose en esos diseños. Un
automóvil real tendrá un pedal de acelerador funcional que puedes presionar para
aumentar la velocidad, pero el automóvil en sí no acelerará por sí mismo; el conductor
debe tomar el control.
• Los objetos son como los automóviles reales construidos a partir de esos diseños.
Pueden realizar tareas específicas y tienen atributos.
• Los métodos en una clase son como los mecanismos en un automóvil que
permiten realizar tareas específicas. Ocultan la complejidad interna y
proporcionan una interfaz para interactuar con el objeto.
• Para utilizar un objeto en un programa, primero debes crear una instancia (un
objeto) de la clase correspondiente, al igual que construir un automóvil a partir
de los diseños. Luego, puedes usar los métodos y atributos del objeto para
realizar acciones específicas.
26
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Además de las capacidades de un automóvil, como acelerar o frenar, los automóviles
tienen atributos, como su color, número de puertas, cantidad de gasolina en el tanque,
velocidad actual y la distancia total recorrida (odómetro). Estos atributos se definen en
el diseño del automóvil y están asociados al automóvil en todo momento. Cada
automóvil mantiene su propio conjunto de atributos, y, por ejemplo, cada conductor
sabe cuánta gasolina tiene en su propio tanque, pero no en el de otros automóviles.
27
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
De manera análoga, un objeto posee características que lo acompañan cuando se
emplea en un programa. Estas características se definen como parte de la estructura de
la clase a la que pertenece el objeto. Por ejemplo, en el caso de un objeto que representa
una cuenta bancaria, se puede identificar un atributo denominado "saldo" que
almacena la cantidad de dinero presente en esa cuenta específica. Cada objeto que
representa una cuenta bancaria conoce su propio saldo, pero no tiene acceso a los
saldos de otras cuentas bancarias en el sistema. Estos atributos se establecen a través
de las variables de instancia que se definen en la clase correspondiente.
Abstracción
1. Abstracción
2. Encapsulamiento
3. Modularidad
4. Herencia
1. Polimorfismo
2. Tipificación
3. Concurrencia
4. Persistencia
28
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Abstracción
29
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
1. Perspectiva funcional: Este nivel abarca desde el nivel más bajo de
programación, como el ensamblador, hasta niveles más altos que involucran
procedimientos y módulos para organizar y estructurar el código.
Las clases y objetos deberían estar al nivel de abstracción adecuado: ni demasiado alto
ni demasiado bajo
30
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Encapsulamiento
• Protegido (#): Atributos o métodos que son accesibles tanto para la propia clase
como para sus clases derivadas (subclases).
Modularidad
31
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
A continuación, podemos enumerar los principios clave de la modularidad:
3. Comprensión por partes del sistema: Trabajar con partes separadas del sistema
facilita la comprensión del código y del sistema en su conjunto. Además, esta
división en módulos facilita la tarea de realizar modificaciones y actualizaciones
en el software. En situaciones donde se requieren cambios, tener un sistema
32
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
modular puede evitar que los cambios tengan un impacto catastrófico en todo
el programa.
Herencia
Las clases están relacionadas entre sí, formando una jerarquía de clasificación, y la
herencia es el mecanismo que permite compartir automáticamente los métodos y datos
entre las clases y subclases de los objetos. Los objetos heredan las propiedades y el
comportamiento de todas las clases a las que pertenecen.
33
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
La herencia puede ser de dos tipos: herencia simple (una clase tiene una sola superclase,
y un objeto pertenece a una sola clase) y herencia múltiple (una clase tiene dos o más
superclases, y un objeto puede pertenecer a más de una clase).
34
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Entonces, la superclase directa es aquella de la cual la subclase hereda explícitamente.
Por otro lado, una superclase indirecta se refiere a cualquier clase que esté por encima
de la superclase directa en la jerarquía de clases y que establece las relaciones de
herencia entre las clases. En el contexto de la herencia simple, una clase se deriva
directamente de una superclase.
Cuando se busca reutilizar código, se crean nuevas clases utilizando las clases existentes
y la estructura jerárquica de clases mencionada anteriormente. Esto se logra
principalmente mediante dos métodos:
35
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Sin embargo, la clase hija tiene la flexibilidad de modificar o personalizar estos
atributos y métodos heredados según sus necesidades, utilizando modificadores
de acceso. Esto permite agregar o eliminar atributos y métodos de manera
individual para una clase específica sin afectar a la clase padre ni a otras clases
hijas.
Polimorfismo
Lo fundamental del polimorfismo es que el programa envía el mismo mensaje (es decir,
"mover") a cada objeto animal de manera genérica, pero cada objeto sabe cómo
modificar sus coordenadas x-y de manera apropiada para su tipo específico de
movimiento. Confiamos en que cada objeto sepa cómo "hacer lo correcto" en respuesta
a la llamada al mismo método. El mismo mensaje (en este caso, "mover") enviado a
diferentes objetos puede tener "muchas formas" de resultados, lo que justifica el uso
del término "polimorfismo".
36
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Mediante el polimorfismo, tenemos la capacidad de diseñar e implementar sistemas
que pueden extenderse de manera sencilla. La adición de nuevas clases se vuelve una
tarea fácil, ya que a menudo solo se requiere una mínima o ninguna modificación en las
partes generales de la aplicación, siempre y cuando estas nuevas clases formen parte de
la jerarquía de herencia que la aplicación maneja de forma genérica.
1. Polimorfismo por reemplazo: Se refiere a que dos o más clases diferentes tienen
métodos con el mismo nombre, pero cada una los implementa de manera
diferente.
37
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
Cuando hablamos de los tipos de polimorfismo, es importante tener en cuenta los
siguientes conceptos:
1. Los objetos tienen una forma específica asignada al ser construidos, pero pueden
ser referenciados de manera polimórfica. Esto significa que pueden referirse a
objetos de diferentes clases siempre que exista una relación de herencia entre
esas clases. El polimorfismo permite separar "qué" hace un objeto de "cómo" lo
hace, lo que permite distinguir entre tipos de objetos similares a través del
comportamiento de los métodos que heredan de la clase padre.
Tipificación
38
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
En términos simples, la tipificación implica asignar una clase a un objeto, de manera que
objetos de diferentes tipos no puedan intercambiarse libremente o solo puedan hacerlo
de manera restringida.
Concurrencia
Persistencia
La persistencia se refiere a la propiedad de un objeto que le permite existir más allá del
tiempo en que fue creado (es decir, su existencia trasciende el tiempo) y/o más allá del
espacio en el que fue originalmente ubicado (lo que significa que su posición varía con
respecto al espacio de direcciones en el que se originó).
Esta característica asegura que un objeto conserve su estado a lo largo del tiempo y el
espacio. En otras palabras, la persistencia implica la capacidad de mantener la
información de un objeto de manera permanente, almacenándola de manera que pueda
ser recuperada y utilizada nuevamente en el futuro.
40
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
1. Objetos Transitorios: Estos objetos tienen un tiempo de vida limitado que
depende del espacio del proceso que los creó. Una vez que el proceso se
completa o finaliza, estos objetos dejan de existir.
41
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB
FIN
Laura Villena
FUNDACIÓN SOCIEDADES DIGITALES
CURSO DESARROLLADOR WEB