Está en la página 1de 20

TALLER DE ANÁLISIS DE SISTEMAS

UML para el Análisis de Sistemas


DIRECTOR DE ESCUELA
Director de Escuela / Marcelo Lucero

ELABORACIÓN
Experto disciplinar / Priscilla Alvares
Diseñador instruccional / Felipe Molina
Jefe de Diseño Instruccional / Alejandra San Juan

VALIDACIÓN
Aida Villamar
DISEÑO DOCUMENTO
Boris del Campo

Instituto Profesional AIEP / Educación Online 2


Contenido
Criterios de Evaluación: .....................................................................................................4
1. TEMA 1: Diagramas de clases ....................................................................................4
1.1. Desarrollo ..........................................................................................................4
1.2. Como se representa una clase ...........................................................................4
1.3. Como se representa un Objeto ..........................................................................5
1.4. Ejemplos/Casos de éxito ....................................................................................5
2. TEMA 2: Relaciones entre entidades .........................................................................6
2.1. Desarrollo ..........................................................................................................6
2.2. Ejemplos/Casos .................................................................................................8
3. TEMA 3: Generalización y especialización de clases .................................................10
3.1. Desarrollo ........................................................................................................10
4. TEMA 4: Polimorfismo .............................................................................................12
4.1. Desarrollo ........................................................................................................12
4.2. Ejemplos/Casos ...............................................................................................12
5. TEMA 5: Clases abstractas .......................................................................................13
5.1. Desarrollo ........................................................................................................13
5.2. Ejemplos/Casos ...............................................................................................14
5.3. Links de interés/material complementario ......................................................15
6. TEMA 6: Técnicas de mejoramiento en diagramas de clases ....................................15
6.1. Desarrollo ........................................................................................................15
7. TEMA 7: Atributos y métodos de clases ...................................................................17
7.1. Desarrollo “Atributos de la Clase” ....................................................................17
7.2. Operaciones de la Clase ...................................................................................17
IDEAS CLAVE ....................................................................................................................18
Referencias Bibliográficas ...................................................................................................20

Instituto Profesional AIEP / Educación Online 3


Criterios de Evaluación:

• Descompone diagramas de clases, considerando relaciones entre entidades.


• Organiza clases, según su generalidad, especialización y polimorfismo.
• Organiza clases de tipo abstractas, considerando técnicas de mejoramiento en
diagramas de clases.
• Determina atributos y métodos de clases, considerando técnicas de mejoramiento en
diagramas de clases

1. TEMA 1: Diagramas de clases

1.1. Desarrollo

El diagrama de clases es parte de los diagramas de UML 2.5 el cual está clasificado dentro
de los diagramas de estructura y, como tal, se utiliza para representar los elementos que
componen un sistema de información desde un punto de vista estático.
Es por esta misma razón que no incluye la forma en la que se comportan los distintos
elementos a lo largo de la ejecución, esa función puede ser representada a través de un
diagrama de casos de uso o de secuencia, los cuales están clasificados dentro de los
diagramas de comportamiento.
El diagrama de clases1 está orientado a la programación orientado a objetos, ya que
define las clases y las relaciones entre ellas mismas, que se utilizarán en la fase de
construcción. Una sola clase puede mostrarse en más de un diagrama de clase y no es
necesario mostrar todas las clases en un solo diagrama monolítico de clase.
1.2. Como se representa una clase

Se hace a través de un clasificador que es una figura rectangular (Figura N° 1), en la parte
superior del clasificador debemos colocar el nombre de la clase en negrita (Nombre), luego
en la sección intermedia la lista de atributos y en la parte inferior va la lista de las operaciones
que tiene a esa clase (Figura N° 3). Igualmente, si necesitamos representar un diagrama un
tanto complejo, podemos simplificar la forma como estamos representando la clase sin
necesidad de mostrar los atributos y operaciones lo hacemos como se muestra en la Figura N°
2.
Nombre de la Nombre de la
Nombre de la
Clase Clase
Clase
Atributos -atributos

Operaciones +Operaciones ()

FIGURA N° 1: CLASIFICADOR DE FIGURA N° 3: CLASE CON ATRIBUTOS Y FIGURA N° 2: CLASE


CLASE
OPERACIONES SIMPLIFICADA
(Elaboración Propia, P.R.A.E.,
2021)

1
Manual de UML, Paul Kimmel, Capítulo 1: “Una imagen vale más que mil líneas de código”, Diagramas de Clases.

Instituto Profesional AIEP / Educación Online 4


1.3. Como se representa un Objeto

Es posible describir un objeto, aunque no es frecuente, para esto también se utiliza el


clasificador, y se puede representar de tres formas, la primera es colocando el nombre de la
Instancias (nombre del objeto) dos puntos y el nombre de la clase a la que pertenece (

Figura N° 4 ) y va subrayado.

Instancia: clase

FIGURA N° 4: CLASE CON INSTANCIA


(Elaboración Propia, P.R.A.E., 2021)

1.4. Ejemplos/Casos de éxito

Un ejemplo puede ser la clase “Aviones” que tiene atributos como el “modelo de avión”,
“la cantidad de motores”, “la velocidad de crucero” y “la capacidad de carga útil”. Entre las
acciones de las cosas de esta clase se encuentran: “acelerar”, “elevarse”, “girar”,
“descender”, “desacelerar”.2
Se puede representar una clase Abstracta divididos en 3 áreas: la superior contiene el
nombre de la clase, la central contiene los atributos y la inferior las acciones

Aviones
+Modelo de avión: string
+ Cantidad de Motores: Int
# Velocidad de Crucero: Booleano
- Carga Útil: string

+ Acelerar (): int


+ Elevarse (): boolean
+ Girar ():
+ Descender ():
+ Desacelerar ():

FIGURA N° 4B: CLASE CON ATRIBUTOS


(Elaboración Propia, P.R.A.E., 2021)

2
Diagrama de Clases https://www.teatroabadia.com/es/uploads/documentos/iagramas_del_uml.pdf

Instituto Profesional AIEP / Educación Online 5


2. TEMA 2: Relaciones entre entidades

2.1. Desarrollo

Las relaciones también son conocidas como asociaciones, y estas sirven para representar
la conexión entre clases, para UML una asociación describe un conjunto de vínculos entre las
instancias de una clase.
Estas relaciones pueden ser binarias es decir que pueden conectar dos clases, o también
pueden ser n-arias que conectan a n clases, aunque esta última no se ocupa mucho, las
relaciones binarias son las mas comunes en el diagrama de clases.

FIGURA N° 5: RELACIÓN BINARIA DE CLASES


(Elaboración Propia, 2021)

2.1.1. Asociación

La asociación es una relación estructural entre las clases, que significa esto, un objeto de
una clase se puede conectar con los objetos de las otras clases es decir colaboran entre sí.
La manera de representar estas asociaciones es mediante una línea que conecta
ambas clases o como una flecha abierta, en general estas conexiones son bidireccionales,
cada asociación tiene dos roles que marca la dirección de la asociación, ya sea entre A y B
marcando el primer rol y el otro de B a A, a cada rol se le puede asociar una etiqueta con su
nombre. También se puede agregar un símbolo < > para indicar la dirección de lectura de la
asociación, otro dato que podemos agregar la multiplicidad que tienen ambos sentidos y esta
puede ser: 1, 0…1, 0…N(*), 1…N, M…N, M. ver imagen

FIGURA N° 6: ASOCIACIÓN DE C LASES


(Elaboración Propia, 2021)

Instituto Profesional AIEP / Educación Online 6


Esta representación se interpreta de la siguiente manera: en un sentido que un
trabajador trabaja para una o más (1…N), y en el otro sentido que una empresa contrata a
cero o N personas, en la imagen se representa con un asterisco, este se puede representar
(*) (0…N)3.

FIGURA N° 7: TIPOS DE CARDINALIDAD


(Berzal)

2.1.2. Agregación

La agregación en el lenguaje UML se utiliza para representar una relación entre una
clase y sus elementos agregados, es decir que los agregados no afectan en el funcionamiento
directo de la clase que los contiene, se grafican con un diamante vacío al extremo de la
asociación que representa el todo. En otras palabras, La agregación es la relación parte-de,
que presenta a una entidad como un agregado de partes (en orientación a objeto, un objeto
como agregado de otros objetos).4

3
de esas clases entre sí:, L. R. E. E. las D. C. N. I. C. se C. L. O. (n.d.). Relaciones entre clases: Relaciones entre clases:
Diagramas de clases UML Diagramas de clases UML. Ugr.Es. Retrieved March 25, 2021, from
http://elvex.ugr.es/decsai/java/pdf/3c-relaciones.pdf

4
Cevallos, K. (2015, July 2). UML: Relaciones entre clases. Wordpress.Com.
https://ingsotfwarekarlacevallos.wordpress.com/2015/07/02/uml-relaciones-entre-clases/Agregación

Instituto Profesional AIEP / Educación Online 7


FIGURA N° 8: E JEMPLO DE AGREGACIÓN
(Cevallos, s.f.)

2.1.3. Composición

La relación de Composición que se utiliza en UML es para representar una clase que
esta compuesta por otras clases son necesarias para su funcionamiento. Es decir que la clase
necesita obligadamente a las otras clases para poder funcionar. Esta representación se hace
colocando un diamante negro o relleno en el extremo de la asociación de la clase que la
necesita. En otras palabras, la composición implica que los componentes de un objeto sólo
pueden pertenecer a un solo objeto agregado, de forma que cuando el objeto agregado es
destruido todas sus partes son destruidas también.5

FIGURA N° 9: E JEMPLO DE COMPOSICIÓN


(Cevallos, s.f.)
2.2. Ejemplos/Casos

Ejemplo de asociación:
Para representar un hecho muy cotidiano como el hecho de que una persona puede ser
o no dueña de perros y gatos los cuales son considerados mascotas. Este ejemplo se puede

5
Cevallos, K. (2015, July 2). UML: Relaciones entre clases. Wordpress.Com.
https://ingsotfwarekarlacevallos.wordpress.com/2015/07/02/uml-relaciones-entre-clases/Composición

Instituto Profesional AIEP / Educación Online 8


graficar a través de un diagrama de clases, donde podemos identificar las siguientes clases:
Persona, Gato y Perro. En la imagen se aprecia una asociación n-aria con su correspondiente
cardinalidad (multiplicidad).

FIGURA 9B. DIAGRAMA DE CLASES .


(E LABORACIÓN P ROPIA , 2021)

Este diagrama de clase se puede interpretar de la siguiente manera: una persona es


dueño de cero o varios gato y es dueño de cero o varios perro; un gato es propiedad de una
y solo una persona, y lo mismo para el perro es propiedad de una y solo una persona.

Ejemplo de Agregación:
Por ejemplo, para representar un computador de escritorio, al que se le pueden agregar
elementos adicionales como un micrófono, cámara web y una impresora; sin embargo, la
ausencia de estos elementos no implica en el funcionamiento básico de dicho computador,
por otro lado, la clase agregada (hija) puede sobrevivir sin ser agrega a la clase Computador
(Padre).

FIGURA N° 10: R ELACIÓN DE AGREGACIÓN


(Elaboración Propia, 2021)

Instituto Profesional AIEP / Educación Online 9


Ejemplo de Composición:
En el ejemplo anterior, mencionamos que a la clase Computador De escritorio “Desktop”
le podemos agregar las clases micrófono, impresora, etc. y no entorpeceríamos su
funcionamiento a esto le llamamos agregación; en cambio si a la misma clase Computador le
quitáramos una clase llamada Pantalla y otra Clase llamada Procesador y Disco Duro. Esta
clase no podría funcionar, ya que su funcionamiento depende de estas otras clases y a esto
se le llama composición. Veamos el ejemplo graficado.

FIGURA N° 11: R ELACIÓN DE COMPOSICIÓN


(Elaboración Propia, 2021)

3. TEMA 3: Generalización y especialización de clases

3.1. Desarrollo

La generalización en los diagramas de clases hace referencia a la relación de clasificación


entre un elemento general y otros más específicos, la generalización también es conocida
comúnmente como Herencia, este concepto también se hace presente en los diagramas de
casos de uso y modelos de paquetes de datos.
La generalización funciona entre la clase general llamada super clase y la clase especifica
llamada subclase donde esta ultima hereda todo de la superclase incluyendo atributos,
métodos y asociaciones incluso si los atributos y métodos son públicos o privados también
serán heredados, solo estos últimos no serán accesibles dentro de la subclase.
La representación de una generalización o herencia se hace con un triángulo en la asociación
apuntando a la superclase.

Instituto Profesional AIEP / Educación Online 10


FIGURA N° 12: E JEMPLO DE HERENCIA
(Diagramas UML, 2018)

3.1.1. Herencia Múltiple

La herencia múltiple es cuando una subclase extiende o hereda de dos o mas clases, es decir
obtiene métodos y atributos de otras clases superclases. Este tipo de herencia no se puede
aplicar en lenguaje Java, pero en Python se puede utilizar.

FIGURA N° 13: E JEMPLO DE HERENCIA MÚLTIPLE


(Cevallos, s.f.)

Instituto Profesional AIEP / Educación Online 11


4. TEMA 4: Polimorfismo

4.1. Desarrollo

El polimorfismo significa que una clase (generalmente abstracta) representa un conjunto


formado por objetos diferentes, ya que éstos son instancias de subclases diferentes. Cuando
se llama a un método del mismo nombre, esta diferencia se traduce en comportamientos
distintos (excepto en los casos en los que el método es común y las subclases lo han heredado
de la superclase).

Son comportamientos diferentes, asociados a objetos distintos, pueden compartir el


mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente
al objeto que se esté usando.

Ambas clases deben sobre escribir el método getArea() puesto que se calculan de
diferentes maneras en cada caso.

FIGURA N° 14: E JEMPLO DE POLIMORFISMO


(Programacion O.O, s.f.)

4.2. Ejemplos/Casos

Ejemplo

Tomemos la jerarquía de clases ilustrada en la figura . El método acariciar tiene un comportamiento


diferente según si el caballo es una instancia de CaballoSalvaje o de CaballoDomesticado. En el primer

Instituto Profesional AIEP / Educación Online 12


caso, el comportamiento será un rechazo (que se traducirá en un encabritamiento) mientras que, en
el segundo, el comportamiento será una aceptación.

Si consideramos la clase Caballo en su totalidad, tenemos un conjunto de caballos que reaccionan de


distinta manera al activarse el método acariciar.

FIGURA N° 15: R EPRESENTACIÓN DE POLIMORFISMO


(Editions ENI, s.f.)

5. TEMA 5: Clases abstractas


5.1. Desarrollo
Una clase es abstracta cuando no puede ser instanciada, es decir que declara la existencia
de métodos, pero no la implementación de dichos métodos, la abstracción se utiliza cuando
se desea englobar objetos de distintos tipos en clases que únicamente sirven para definir
subclases. Una clase abstracta no tiene atributos, solo tiene métodos dentro de ella. La
abstracción en UML se representa colocando el nombre de la clase en cursiva.

Instituto Profesional AIEP / Educación Online 13


FIGURA N° 16: C LASES ABSTRACTAS
(Aldeas, Michael Gonzalez y Mario, 2015)

5.2. Ejemplos/Casos

Por ejemplo, en la siguiente representación observamos que la clase empleado es una


clase abstracta porque no tiene sentido calcular su salario, pero si el salario de los empleados
por hora, asalariado o autónomo. Puede decirse que una clase abstracta esta basa en
interfaces puesto que esta solo contiene operaciones generales de otras clases otro motivo
por el cual no puede ser instanciada.6

FIGURA N° 17: E JEMPLO DE ABSTRACCIÓN


(Analisis y Diseño de Sistemas, s.f.)

6
https://virtual.itca.edu.sv/Mediadores/ads/213_tipos_de_relaciones.html

Instituto Profesional AIEP / Educación Online 14


5.3. Links de interés/material complementario

6. TEMA 6: Técnicas de mejoramiento en diagramas de clases

6.1. Desarrollo

Encapsulación7
La encapsulación consiste en ocultar los atributos y métodos del objeto a otros
objetos. En efecto, algunos atributos y métodos tienen como único objetivo tratamientos
internos del objeto y no deben estar expuestos a los objetos exteriores. Una vez
encapsulados, pasan a denominarse atributos y métodos privados del objeto.

La encapsulación es una abstracción, ya que se simplifica la representación del objeto


con relación a los objetos externos. Esta representación simplificada está formada por
atributos y métodos públicos del objeto.

La definición de encapsulación se realiza en el ámbito de la clase. Los objetos externos a


un objeto son, por tanto, las instancias de las demás clases.

FIGURA N° 18: E JEMPLO DE ENCAPSULACIÓN


(Editions ENI, s.f.)

7
Encapsulación. (n.d.). Ediciones-Eni.Com. Retrieved March 26, 2021, from https://www.ediciones-
eni.com/open/mediabook.aspx?idR=8fbbc43b9178348846f43400c0898b93

Instituto Profesional AIEP / Educación Online 15


Clases abstractas y concretas8

Si examinamos la jerarquía presentada en la figura 3.4 vemos que en ella existen dos
tipos de clases:
• Las clases que poseen instancias, es decir, las clases Caballo y Perro, llamadas clases
concretas.

• Las clases que no poseen directamente instancias, como la clase Animal. En efecto, si
bien en el mundo real existen caballos, perros, etc., el concepto de animal
propiamente dicho continuá siendo abstracto. No basta para definir completamente
un animal. La clase Animal se llama clase abstracta.

La finalidad de las clases abstractas es poseer subclases concretas y sirven para factorizar
atributos y métodos comunes a las subclases.

FIGURA N° 19: C LASES ABSTRACTAS Y C ONCRETAS


(Editions ENI, s.f.)

8
Clases abstractas y concretas. (n.d.). Ediciones-Eni.Com. Retrieved March 26, 2021, from
https://www.ediciones-eni.com/open/mediabook.aspx?idR=851279e9db8cf25a9ec4076bb1189fa3

Instituto Profesional AIEP / Educación Online 16


7. TEMA 7: Atributos y métodos de clases

7.1. Desarrollo “Atributos de la Clase”

Los atributos son características, propiedades o datos que guarda la clases para su
funcionamiento, pueden ser de tres tipos, los que definen el grado de comunicación y
visibilidad en el entorno, estos pueden ser público, privado o protegido y se representan uno
por línea, utilizando el siguiente formato: visibilidad nombre_atributo: tipo= valor-inicial
{propiedades} , aunque esta es la forma oficial de escribirlas, es común hacerlo de manera
simplificada colocando el nombre y el tipo o solamente el nombre.
La Visibilidad expresa si el atributo es visible para el resto de los objetos del diagrama,
pudiéndose dar los siguientes casos:
§ + públic: Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accesible
desde todos lados.
§ - private: Indica que el atributo sólo será accesible desde dentro de la Clase (sólo sus métodos lo pueden
accesar).
§ # protected: Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado
por métodos de la clase además de las subclases que se deriven.9

Nombre de la Nombre de la Nombre de la


Clase Clase Clase
+atributo: Tipo -atributo: Tipo #atributo: Tipo

FIGURA N° 22: C LASE CON ATRIBUTO FIGURA N° 21:C LASE CON ATRIBUTO FIGURA N° 20: C LASE CON ATRIBUTO PROTEGIDO
PUBLICO PRIVADO (Elaboración Propia, P.R.A.E., 2021)
(Elaboración Propia, P.R.A.E., 2021) (Elaboración Propia, P.R.A.E., 2021)
7.2. Operaciones de la Clase

Las operaciones o Métodos describen el comportamiento de los objetos de una clase. Son
la forma en como la clase interactúa con su entorno, su formato de expresión es el siguiente:
Visibilidad nombre (lista de parámetros): tipo de retorno, Donde la visibilidad al igual que
en los atributos puede tener las siguientes características:
§ + públic: indica que el método será visible tanto dentro como fuera de la Clase, es decir, es accesible
desde todos lados.
§ - private: Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de la clase
lo pueden accesar)

9
Diagrama de Clase, Atributos y métodos. https://www.ecured.cu/Diagrama_de_Clase#Diagrama_de_Clases

Instituto Profesional AIEP / Educación Online 17


§ # protected: Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado
por métodos de la clase además de métodos de las subclases que se deriven.10

Si una operación no tiene asignada ninguna visibilidad, quiere decir que la visibilidad
no esta definida (no hay visibilidad por defecto

Nombre de la Clase
Nombre de la Clase Nombre de la Clase

#atributo: Tipo
+atributo: Tipo -atributo: Tipo

# Operación (): tipo


+ Operación ():tipo - Operación (): tipo

FIGURA N° 23: C LASE OPERACIÓN PUBLICA FIGURA N° 24:: CLASE OPERACIÓN P RIVADA FIGURA N° 25: C LASE OPERACIÓN PROTEGIDA
(Elaboración Propia, P.R.A.E., 2021) (Elaboración Propia, P.R.A.E., 2021) (Elaboración Propia, P.R.A.E., 2021)

IDEAS CLAVE

El diagrama de clases que hemos conocido en este documento es considerado un diagrama


de tipo estructural del Lenguaje UML (Lenguaje Unificado de Modelado). Este lenguaje de
modelado es de tipo visual según el estándar ISO, para representar los sistemas orientados a
objetos, y los procesos de negocios.

El Diagrama de clases es el modelo que nos permite entender de mejor manera la


programación orientada a objetos, ya que este diagrama nos permite dar forma a los objetos
que conformaran nuestro futuro sistema. A través de la construcción y documentación de
estos elementos, podemos visualizar de manera estática las relaciones que existen ente ellos.
Entonces a modo de resumen una clase se representa con un rectángulo que posee tres
divisiones, primera división se anota el nombre de la clase, si esta es abstracta, se escribe en
letra cursiva o se puede utilizar un estereotipo como < > arriba del nombre de la clase. En la
segunda parte van los atributos o variables; las variables de clase van subrayados. En el último
sector se escriben las operaciones o métodos, es decir, los mensajes u acciones que pueden
realizar. Lo importante es documentar los mensajes más relevantes y no todos los mensajes
de un solo objeto.

En la siguiente imagen podemos ver un diagrama de clases en su máxima expresión de un


sistema de gestión de préstamos y reservas de libros y revistas de una biblioteca.

10
Diagrama de Clase, Atributos y métodos. https://www.ecured.cu/Diagrama_de_Clase#Diagrama_de_Clases

Instituto Profesional AIEP / Educación Online 18


FIGURA N° 26: DIAGRAMA DE CLASES SISTEMA DE GESTIÓN DE BIBLIOTECA
(Cillero, s.f.)

Instituto Profesional AIEP / Educación Online 19


Referencias Bibliográficas
Manual de UML, Paul Kimmel, Capítulo 1: “Una imagen vale más que mil líneas de código”,
Diagramas de Clases.

«Diagrama de clases». Diagramasuml.com. N.p., 21 ago. 2018. Web. 31 mar. 2021.


Recuperado de: https://diagramasuml.com/diagrama-de-clases/

de esas clases entre sí:, Las Relaciones Existentes Entre las Distintas Clases Nos Indican
Cómo se Comunican Los Objetos. «Relaciones entre clases:Relaciones entre clases:
Diagramas de clases UMLDiagramas de clases UML». Ugr.es. N.p., s. f. Web. 31 mar. 2021.
Recuperado de: http://elvex.ugr.es/decsai/java/pdf/3c-relaciones.pdf

Cevallos, Karla. «UML: Relaciones entre clases». Wordpress.com. N.p., 2 jul. 2015. Web. 31
mar. 2021. Recuperado de:
https://ingsotfwarekarlacevallos.wordpress.com/2015/07/02/uml-relaciones-entre-clases/

«Diagrama de Clase». Ecured.cu. N.p., s. f. Web. 31 mar. 2021. Recuperado de:


https://www.ecured.cu/Diagrama_de_Clase#Diagrama_de_Clases

«Polimorfismo». Ediciones-eni.com. N.p., s. f. Web. 31 mar. 2021. Recuperado de:


https://www.ediciones-
eni.com/open/mediabook.aspx?idR=71fee384bc83826a4494aed0a7206cdc

«Paradigma de la programación orientada a objetos». Github.io. N.p., s. f. Web. 31 mar.


2021. Recuperado de: https://ferestrepoca.github.io/paradigmas-de-
programacion/poo/poo_teoria/concepts.html

«Clases abstractas y concretas». Ediciones-eni.com. N.p., s. f. Web. 31 mar. 2021.


Recuperado de: https://www.ediciones-
eni.com/open/mediabook.aspx?idR=851279e9db8cf25a9ec4076bb1189fa3

«Encapsulación». Ediciones-eni.com. N.p., s. f. Web. 31 mar. 2021. Recuperado de:


https://www.ediciones-
eni.com/open/mediabook.aspx?idR=8fbbc43b9178348846f43400c0898b93

Instituto Profesional AIEP / Educación Online 20

También podría gustarte