Está en la página 1de 16

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

También podría gustarte