FUNDAMENTOS DE PROGRAMACIÓN
COMPUTACIONAL
INTRODUCCIÓN A LENGUAJE ORIENTADO A
OBJETO
FUNDAMENTOS DE PROGRAMACIÓN
COMPUTACIONAL
INTRODUCCIÓN A LENGUAJE ORIENTADO A OBJETO
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 2
ESCUELA DE CONSTRUCCIÓN E INGENIERÍA
Director de Escuela / Marcelo Lucero
ELABORACIÓN
Experto disciplinar / Denisse Arce
Diseñador instruccional / Camila Velásquez
VALIDACIÓN
Experto disciplinar / Marcelo Trigo
Jefa de diseño instruccional y multimedia / Alejandra San Juan Reyes
DISEÑO DOCUMENTO
Equipo de Diseño Instruccional AIEP
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 3
Contenido
APRENDIZAJE ESPERADO DE LA SEMANA: ........................................................................... 5
1. LENGUAJE UML: ......................................................................................................... 5
1.1. UML:......................................................................................................................................... 5
1.2. Diagrama de Clases: ................................................................................................................. 5
1.3. Componentes de un Diagrama de Clases: ............................................................................... 5
1.3.1. Clases: .............................................................................................................................. 5
1.3.2. Relaciones: ....................................................................................................................... 6
Asociación:....................................................................................................................................... 6
Generalización / Especialización: ................................................................................................... 7
Agregación: ...................................................................................................................................... 8
1.4. PyReverse:.............................................................................................................................. 10
¿Cómo se instalan los paquetes?: ................................................................................................ 11
Video: ................................................................................................................................................. 12
Profundización bibliográfica: ............................................................................................................. 12
IDEAS CLAVE: ...................................................................................................................13
LINKS/MATERIAL MULTIMEDIA ...........................................................................................14
CONCLUSIONES ..............................................................................................................15
BIBLIOGRAFÍA...................................................................................................................16
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 4
APRENDIZAJE ESPERADO DE LA SEMANA:
Resuelven problemas de diagrama de clase y elementos básicos, considerando paradigma
orientado a objetos y Python.:
2.13.-Caracteriza un Diagrama de Clases y la simbología normalizada en el Lenguaje de
Modelamiento Unificado (UML), considerando relación de herencia, de agregación, de
asociación, e instalación
2.14.-Resuelve problemas a través de un Diagrama de Clases, considerando herramienta
pyReverse y requerimientos de usuarios.
2.15.- Demuestra autonomía en actividades y funciones especializadas en diversos contextos. (A)
1. LENGUAJE UML:
1.1. UML:
El lenguaje de modelado unificado UML es un lenguaje utilizado para representar procesos o
esquemas de software, en palabras sencillas así como los arquitectos elaboran sus planos, en el
desarrollo de software también se elaboran “planos” pero en esta área se llaman diagramas, y lo
que buscan es representar los procesos que se llevarán a cabo en el software.
Uno de los principales diagramas que se elaboran utilizando el lenguaje UML es el diagrama de
clases.
1.2. Diagrama de Clases:
Los diagramas de clases son un tipo de diagrama de estructura que describe lo que debe estar
presente en el sistema qué se está modelando. Es uno de los diagramas más utilizados, ya que
trazan claramente la estructura de un sistema concreto al modelar sus clases, atributos,
operaciones y relaciones entre objetos.
1.3. Componentes de un Diagrama de Clases:
1.3.1. Clases:
El elemento principal de un diagrama de clases son las clases y se utilizan para
representar entidades del negocio, una clase está compuesta por un grupo de objetos
que comparten características.
Figura 1: Ejemplo de clase.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 5
Ejemplo:
Si se necesitará representar la clase “Película” quedaría de esta forma:
Figura 2: Ejemplo de clase.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Los atributos de una clase son las características que tiene esa clase, las operaciones son como
su nombre lo indica lo que se puede hacer con esa clase.
1.3.2. Relaciones:
Una relación identifica una dependencia. Esta dependencia puede ser entre dos o más
clases (más común) o una clase hacía sí misma (menos común, pero existen), este
último tipo de dependencia se denomina dependencia reflexiva.
Las relaciones se representan con una línea que une las clases, esta línea variará
dependiendo del tipo de relación.
Tipos de Relaciones:
Asociación (conexión entre clases)
Dependencia (relación de uso)
Generalización/especialización (relaciones de herencia)
Asociación:
La asociación representa una conexión entre dos clases y se representa mediante una
línea.
Ejemplo:
Figura 3: Ejemplo relación de clase por asociación.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Explicación:
La clase película está conectada a la clase guion mediante una relación de asociación,
se lee “Una película tiene un guion.”
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 6
Generalización / Especialización:
La generalización es una relación de tipo herencia que relaciona las clases padres e
hijas, las clases hijas hereda todos los atributos y operaciones de su clase padre.
Este tipo de relación se representa mediante una flecha unidireccional de cabeza
triangular.
Ejemplo:
Figura 4: Ejemplo relación de clase por generalización/especialización.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Explicación:
Las clases Cinta y Filme heredan las características de la clase Película, pero pueden
definir otras características o atributos específicos para cada una.
Otro Ejemplo:
Figura 5: Ejemplo relación de clase por generalización/especialización.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Explicación:
Las clases Perro y Gato heredan características de la clase Animal, como son respirar,
pero además cada clase tiene definido sus propias características, como son Ladrar y
Maullar.
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 7
Agregación:
La agregación es un tipo de relación dinámica, donde el tiempo de vida del objeto
incluido es independiente del que lo incluye.
Ejemplo
Figura 6: Ejemplo relación de clase por agregación.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Explicación:
La clase Software es el todo y la clase Base de Datos es parte de ese todo, es decir,
forma parte de la clase Software, si se elimina la clase Software, la información de la
clase Base de Datos no se altera, porque tienen vida independiente.
Ejercicio Basado en Caso
Elabore el diagrama de clases asociado al siguiente caso de estudio:
El dueño de un hotel te pide a desarrollar un programa para consultar sobre las habitaciones
disponibles y reservar habitaciones de su hotel. El hotel posee tres tipos de habitaciones: simple,
doble y matrimonial, y dos tipos de clientes: habituales y esporádicos. Una reserva almacena
datos del cliente, de la habitación reservada, la fecha de comienzo y el número de días que será
ocupada la habitación
El recepcionista del hotel debe poder hacer las siguientes operaciones:
Obtener un listado de las habitaciones disponible de acuerdo a su tipo
Preguntar por el precio de una habitación de acuerdo a su tipo
Preguntar por el descuento ofrecido a los clientes habituales
Preguntar por el precio total para un cliente dado, especificando su RUT, tipo de
habitación y número de noches.
Reservar una habitación especificando el número de la habitación, RUT y nombre del
cliente.
Eliminar una reserva especificando el número de la habitación
El administrador puede usar el programa para:
Cambiar el precio de una habitación de acuerdo a su tipo
Cambiar el valor del descuento ofrecido a los clientes habituales
Calcular las ganancias que tendrán en un mes especificado (considere que todos los
meses tienen treinta días).
Desarrollo:
Primero identificaremos las clases, recordar que una clase tiene atributos o características y
operaciones. De acuerdo a esa definición, es posible reconocer las siguientes.
Hotel
Cliente
Reserva
Habitación
La clase Cliente tendrá 2 subclases ya que en el caso explican que puede ser Habitual o
Esporádico.
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 8
La clase Habitación tendrá 3 subclases Simple, Doble y Matrimonial ya que se indica que son los
tipos de habitación que existen en el hotel
Diseñamos las clases
Figura 7: Diseño de clases para el caso.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Al establecer las relaciones:
Figura 8: Relación de las clases para el caso.
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 9
Finalmente al incorporar los atributos y operaciones:
Figura 9: Atributos y operaciones del caso
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Una buena práctica es primero realizar el diagrama de clases y luego elaborar el
código, basado en el diagrama diseñado. Se disminuyen las posibilidades de
cometer errores.
A continuación se muestra la forma inversa, pasar desde código al diagrama de clases, cuando
se tiene conocimientos sólidos en programación esta forma de elaborar los diagramas de clases
es muy útil.
1.4. PyReverse:
Pyreverse es una utilidad que analiza el código fuente Python y extrae diagramas de clases y
dependencias con paquetes. Se utiliza cuando se quiere pasar del código al diagrama de clases, lo
inverso a como se hace comúnmente.
En los diagramas generados se muestran:
Atributos de clases y si es posible su tipo
Métodos de clases
Enlaces de herencia entre clases
Enlaces de asociación entre clases
Para utilizar PyReverse debe instalar los siguientes paquetes:
Pylint
Graphviz
Pyreverse
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 10
¿Cómo se instalan los paquetes?:
1.- Debe abrir una ventana de símbolo de sistema
2.- Acceder hasta la carpeta donde tiene instalado Python
3.- Instalar los paquetes
Pip install pylint
Pip install Graphviz
Pip install pyreverse
Una vez que se instalaron los paquetes se debe generar el archivo de clases, el archivo resultante
puede ser un .dot, .vcg o un .png
La línea de código para generar el archivo es:
Pyreverse - propiedades nombre _archivo.py -propiedades - nombre_archivo resultante
Algunas de las propiedades que podemos otorgar al crear el archivo son: que se incorporen solo
las clases sin atributos (–k), o todas las relaciones (-A).
Para profundizar acerca de todas las propiedades puede revisar el siguiente link:
HTTPS :// WWW. LOGILAB . ORG/6883
Si utilizamos el programa Python que calculaba el promedio, la nota más alta, y la nota más baja
al abrir el archivo .png (resultante luego de utilizar Pyreverse) el diagrama de clases debería
mostrar la siguiente imagen:
Figura 10: Atributos y operaciones del caso
Fuente: Denise Arce, 2020, elaborado para el módulo Fundamentos de programación moderna, AIEP
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 11
Video:
En los siguientes videos se puede profundizar sobre los temas expuestos
UML:
https://www.youtube.com/watch?v=7WRYH2ei5Rw
Diagramas de Clases
https://www.youtube.com/watch?v=Z0yLerU0g-Q
Profundización bibliográfica:
Se sugiere, antes de continuar, consultar el siguiente manual:
“El lenguaje unificado manual de referencia”:
https://ingenieriasoftware2011.files.wordpress.com/2011/07/el-lenguaje-
unificado-de-modelado-manual-de-referencia.pdf
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 12
IDEAS CLAVE:
El siguiente resumen podremos recordar ideas importantes de los diagramas de clases:
UML
Lenguaje de modelado unificado utilizado para plasmar los procesos que se llevaran a cabo
en el software, uno de los diagramas más importantes en este lenguaje es el diagrama de
clases, el cual sirve para diseñar las clases y las relaciones que existirán entre ellas.
Elementos de un diagrama de clase
Clases (Nombre, Atributos y operaciones)
Relaciones
Palabras reservadas (keywords):
Las palabras reservadas de UML son las siguientes:
Abstraction (abstracción)
Agregación (aggregation)
Asociación (association)
Clase (clase)
Diagrama de clases (class diagram).
UML (UML)
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 13
LINKS/MATERIAL MULTIMEDIA
MÓDULO: “Fundamentos de Programación Computacional” Unidad: 2
Recurso Descripción
En este video encuentras contenido relevante acerca del lenguaje UML:
Lenguaje UML
https://www.youtube.com/watch?v=1I979cB4QWQ
Video
Para seguir leyendo sobre UML:
El tutorial de UML:
https://ingenieriasoftware2011.files.wordpress.com/2011/07/el-
Lecturas lenguaje-unificado-de-modelado-manual-de-referencia.pdf
complementarias
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 14
CONCLUSIONES
Como se revisó en esta entrega, UML es un lenguaje muy utilizado en el proceso del desarrollo de
software, permite trazar los procesos que se implementarán, es transversal al lenguaje de
programación que se utilice, con UML realizamos el diseño y con Python la codificación. Como
se mencionó anteriormente hemos entregado las herramientas ahora es tu turno de colocar en
práctica lo aprendido. Mucho ánimo, programar es cada vez más interesante.
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 15
BIBLIOGRAFÍA
1. Introducción a la programación con Python
Esta página forma parte del curso Introducción a la programación con Python por
Bartolomé Sintes Marco
https://www.mclibre.org/consultar/python/lecciones/python-entrada-teclado.html
2. Curso de Red Titulados de AIEP
"Introducción a la programación con Python"
http://titulados.aiep.cl/
Fundamentos de Programación Computacional / Introducción a lenguaje orientado a objeto 16