Bibliotheka-1-1 RVS - Proyecto 2 Revistas PDF

Title Bibliotheka-1-1 RVS - Proyecto 2 Revistas
Course Programación Orientada A Objetos
Institution Instituto Politécnico Nacional
Pages 29
File Size 539.3 KB
File Type PDF
Total Downloads 36
Total Views 136

Summary

Proyecto 2 Revistas...


Description

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

IPN-ESIME-ICE Semestre2021-1Grupo 2CM3POOAlumn@36Tarea2 Proyecto Bibliotheka-1 Por: Reynel Iglesias Heberto

Bibliotheka-1 A. De la entrevista a los usuarios del programa. Proyectar un sistema de información computarizado (programa de cómputo), el cual se denominará Bibliotheka-1 y que tendrá como función permitir el almacenamiento (entrada por teclado) y la recuperación (salida por pantalla) de los datos de las colecciones de libros, revistas, CDs, alumnos y profesores de una biblioteca escolar. Los datos de cada libro, serán: a) identificador (LbrId), b) título (LbrTtl), c) tema (LbrTma), y c) precio (LbrPrc). Los datos de cada revista, serán: a) identificador (RvsId), b) título (RvsTtl), c) periodicidad (RvsPrd), y d) precio (RvsPrc). Los datos de cada CD, serán: a) identificador (CdId), b) título (CdTtl), c) contenido (CdCnt), y d) precio (CdPrc). Los datos de cada alumno, serán: a) identificador (AlmId), b) nombre (AlmNmb), c) carrera (AlmCrr), y d) beca (AlmBca). Los datos de cada profesor, serán: a) identificador (PfrId), b) nombre (PrfNmb), c) departamento (PfrDpt), y d) salario (PrfSlr). Las operaciones a realizar con los libros, serán: a) escribir libro (LbrEsc), b) leer libro (LbrLer), y c) buscar libro (LbrBsc). Las operaciones a realizar con las revistas, serán: a) escribir revista (RvsEsc), b) leer revista (RvsLer), y c) buscar revista (RvsBsc). Las operaciones a realizar con los CDs, serán: a) escribir CD (CdEsc), b) leer CD (CdLer), y c) buscar CD (CdBsc). Las operaciones a realizar con los alumnos, serán: a) escribir alumno (AlmEsc), b) leer alumno (AlmLer), y c) buscar alumno (AlmBsc). Las operaciones a realizar con los profesores, serán: a) escribir profesor (PrfEsc), b) leer profesor (PrfLer), y c) buscar profesor (PrfBsc). Se utilizará el método del Proyecto de Ingeniería (fase de anteproyecto), la Programación Orientada a Objetos (POO), el Lenguaje de Modelado Unificado (UML) y el lenguaje de programación C++. Los recursos a utilizar son los del Laboratorio de Computación y la fecha de entrega es el último día del mes en curso.

B. Método del Proyecto de Ingeniería (MPI) con POO Se muestra a continuación el desarrollo del proyecto denominado Bibliotheka-1, para lo cual se utiliza el Método del Proyecto de Ingeniería (MPI), particularmente la etapa de Anteproyecto (ver Figura A-1).

1

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Programación Orientada a Objetos (POO)

Requerimientos e Información (Análisis)

Opciones de Solució Evaluación y Selección (UML)

Implementación, Pruebas y Depuración (C++)

Informe Técnico y Manual de Usuario

Figura A-1. La Programación Orientada a Objetos en el Ciclo del Anteproyecto.

1. Requerimientos Los requerimientos se especifican como resultado de las entrevistas realizadas con los usuarios del sistema de información (programa).

1.1. Dominio de la Aplicación (Problema) Proyectar un sistema de información computarizado (programa de cómputo), el cual se denominará Bibliotheka-1 y que tendrá como función permitir el almacenamiento (entrada por teclado) y la recuperación (salida por pantalla) de los datos de las colecciones de libros, revistas, CDs, alumnos y profesores de una biblioteca escolar. Los datos de cada libro, serán: a) identificador (LbrId), b) título (LbrTtl), c) tema (LbrTma), y c) precio (LbrPrc). Los datos de cada revista, serán: a) identificador (RvsId), b) título (RvsTtl), c) periodicidad (RvsPrd), y d) precio (RvsPrc). Los datos de cada CD, serán: a) identificador (CdId), b) título (CdTtl), c) contenido (CdCnt), y d) precio (CdPrc). Los datos de cada alumno, serán: a) identificador (AlmId), b) nombre (AlmNmb), c) carrera (AlmCrr), y d) beca (AlmBca). Los datos de cada profesor, serán: a) identificador (PfrId), b) nombre (PrfNmb), c) departamento (PfrDpt), y d) salario (PrfSlr). Las operaciones a realizar con los libros, serán: a) escribir libro (LbrEsc), b) leer libro (LbrLer), y c) buscar libro (LbrBsc). Las operaciones a realizar con las revistas, serán: a) escribir revista (RvsEsc), b) leer revista (RvsLer), y c) buscar revista (RvsBsc). Las operaciones a realizar con los CDs, serán: a) escribir CD (CdEsc), b) leer CD (CdLer), y c) buscar CD (CdBsc). Las operaciones a realizar con los alumnos, serán: a) escribir alumno (AlmEsc), b) leer alumno (AlmLer), y c) buscar alumno (AlmBsc). Las operaciones a realizar con los profesores, serán: a) escribir profesor (PrfEsc), b) leer profesor (PrfLer), y c) buscar profesor (PrfBsc). Se utilizará el método del Proyecto de Ingeniería (fase de anteproyecto), la Programación Orientada a Objetos (POO), el Lenguaje de Modelado Unificado (UML) y el lenguaje de programación C++. Los recursos a utilizar son los del Laboratorio de Computación y la fecha de entrega es el último día del mes en curso.

2

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

1.2. Información (Análisis)

Figura 1. Colección de libros

1.2.1. Requerimientos Funcionales 1.2.1.1. Casos de Uso: Diagrama UML Los casos de uso especifican principalmente la funcionalidad o casos para los que se usará el sistema (programa) Bibliotheka-1. Los casos para los cuales se utilizará el sistema (programa) se muestran en el diagrama UML de Casos de Uso, Figura 2.

3

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Nombre del Sistema

Caso de Uso

Bibliotheka-1 Sistema

Escribir Libros

Actor

Operador

Leer

Revistas

Buscar

CDs

Principal

Alumnos

Menú Libros

Profesores Menú Principal

Figura 2. Diagrama UML de casos de uso.

1.2.1.2. Casos de Uso: Detalle. (Sólo se desarrollarán los Casos de Uso Principal y Libros, quedando los demás en construcción.) La descripción detallada de los casos de uso se realiza describiendo la interacción entre los actores y el sistema (programa); es decir, para cada caso de uso se describen las actividades que realizará el operador al interactuar con el sistema.

1.2.1.2.1. Caso de Uso Principal El caso de uso Principal describe la funcionalidad general del sistema, desde que se inicia la ejecución del programa y hasta que termina, describiendo en general la interacción del usuario (operador) con el sistema (programa), como se muestra en la Tabla 1.

4

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Tabla 1. Caso de Uso Principal Nombre: Principal ID: CU1 Actores: Operador Precondición: El Operador (O) ha iniciado una sesión de la Aplicación (A), desde el S.O. 1.2.1.2.2. Actividad: Caso de 1. La A. despliega (en pantalla): Uso Libros “Bienvenido a Bibliotheka-1” “Pulse una tecla para continuar.” Tabla 2. Caso de 2. El O. pulsa una tecla. Uso Libros 3. La A. despliega: Nombre: Libros “Menú Principal” ID: CU2 “1. Libros. Actores: Operador “2. Revistas. Precondición: El Operador (O) ha elegido la Opción 1 (Libros) del Menú Principal. “3. CDs.” Actividad: “4: Alumnos 1. La A. (en pantalla): “5.despliega Profesores “Menú Libros” “6. Salir.” “1. Escribir Libros. “Elija una opción del menú: “ “2.4.Leer Libros. El O. elije una opción tecleando 1, 2, 3, 4, 5 o 6. “3.4.1. Buscar Si el Libros” O. elije 1, la A. ejecuta el caso Libros, al final de lo cual retorna a 3. “4. Salir.” 4.2. Si el O. elije 2, la A ejecuta el caso Revistas, al final de lo cual retorna a 3. “Elija menú: “ 4.3.una Si elopción O. elijedel 3, la A. ejecuta el caso CDs, al final de lo cual retorna a 3. 2. El O. elije una opción tecleando 1, 2, 3 o 4. 4.4. Si el O. elije 4, la A. ejecuta el caso Alumnos, al final de lo cual retorna a 3. 2.1. 4.5. Si elSiO.elelije 1, la5,A.laejecuta el caso EscribirLibros, O. elije A. ejecuta el caso Profesores,alalfinal finalde delolocual cualretorna retornaaa1.3. 2.2. 4.6. Si elSiO.elelije 2, la A ejecuta el caso LeerLibros, al final de lo cual retorna 1. O. elije 6, la A. ejecuta el caso Salir, al final de lo cual retorna alaS.O. 2.3. Postcondición: Si el O. elije 3, la LaA. A.ejecuta retornaelalcaso S.O. BuscarLibros, al final de lo cual retorna a 1. 2.4. Si el O. elije 4, la A. ejecuta el caso SalirLibros, al final de lo cual retorna al Menú Principal. Postcondición: La A. retorna al Menú Principal.

1.2.1.2.3. Caso de Uso EscribirLibro Tabla 3. Caso de Uso Escribir Libro. Nombre: EscribirLibro ID: CU3 Actores: Operador Precondición: El Operador (O) ha seleccionado la Opción 1 (Escribir Libro) del Menú Libros. Actividad: 1. La A. despliega en pantalla: “Escribir libros” “Libro 1:” “Id: “ 5

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++ 2. El O. teclea el Id y pulsa Enter 3. La A. despliega “Título: “ 4. El O. teclea el título y pulsa Enter. 5. La A. despliega “Tema: “ 7. El O. teclea el tema y pulsa Enter 8. La A. despliega “Precio: “ 9. El O. teclea el precio y pulsa Enter 10. Mientras no-termina, regresa a 1. 11. La A. despliega: “Pulse una tecla para continuar” 12. La A. retorna al Menú Libros. Postcondición: La A. retorna al Menú Libros

1.2.1.2.4. Caso de Uso Leer Libro

Tabla 4. Caso de Uso Leer Libro Nombre: LeerLibro ID: CU4 Actores: Operador Precondición: El Operdor (O) ha seleccionado la opción 2 (Leer Libro) del Menú Libros Actividad: 1. La A. despliega en pantalla: “Lista de libros en la colección:” 2. La A. despliega en pantalla: “Id: “ [LbrId] “Título:” [LbrTtl] “Tema: “ [LbrTma] “Precio: “ [LbrPrc] 3. Mientras no-termina, regresa a 2. 4. La A. desliega en pantalla: “Pulse una tecla para terminar.” 5. El O. pulsa una tecla. 6. La A. retorna al Menú Libros Postcondición: La A. retorna al Menú Libros.

1.2.1.2.5. Caso de Uso Buscar Libro Tabla 5. Caso de Uso Buscar Libro Nombre: Buscar ID: CU5 6

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++ Actores: Operador Precondición: El Operdor (O) ha seleccionado la opción 3 (Buscar Libro) del Menú Libros Actividad: 1. La A. despliega en pantalla: “Buscar libros en la colección:” “En construcción.” “Pulse una tecla para continuar.” 2. El O. pulsa una tecla. 3. La A. retorna al Menú Libros. Postcondición: La A. retorna al Menú Libros.

1.2.1.2.6. Caso de Uso Salir de Libros Tabla 6. Caso de Uso Salir de Libros Nombre: SalirLibros ID: CU6 Actores: Operador Precondición: El Operador (O) ha seleccionado la opción 4 (Salir) del Menú Libros. Actividades: 1. La A, despliega: “Salir de Libros” “Pulse una tecla para continuar.” 2. La A. retorna al Menú Principal Postcondición: La A. retorna al Menú Principal.

1.2.1.2.7. Caso de Uso Salir de Principal Tabla 7. Caso de Uso Salir de Principal Nombre: SalirPrincipal ID: CU7 Actores: Operador Precondición: El Operador (O) ha seleccionado la opción 6 (Salir) del Menú Principal. Actividades: 1. La A, despliega: “Salir de Bibliotheka-1” “Pulse una tecla para continuar.” 2. La A. retorna al S.O. Postcondición: La A. retorna al S.O.

7

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

1.2.1.3. Datos de Entrada y Salida Por simplicidad, los datos serán solamente de 3 libros (posteriormente podría ampliarse a un número mayor): 1.2.1.3.1. Datos de Entrada de Libros: Identificador (LbrId), número natural Título (LbrTtl), cadena de caracteres Tema (LbrTma), cadena de caracteres Precio (LbrPrc), número real Formato: listado simple 1.2.1.3.2. Datos de Salida de Libros; Identificador (LbrId) Título (LbrTtl) Tema (LbrTma) Precio (LbrPrc) Formato: Listado simple

1.2.2. Requerimientos no-funcionales: - Se utilizará el método del Proyecto de Ingeniería - Se utilizará la Programación Orientada a Objetos (OOP) - Se utilizará el Lenguaje de Modelado Unificado (UML) - Se utilizará el lenguaje de programación C++ - Se utilizarán los recursos del Laboratorio de Computación - La fecha límite de entrega es el último día del mes en curso.

2. Opciones de Resolución del Problema En esta etapa del anteproyecto es en donde el ingeniero aplica su ingenio, su creatividad, pues es aquí donde imagina soluciones innovativas al problema a resolver. Se procede entonces a modelar groso modo el sistema (programa), mediante diagramas UML, considerando los requerimientos (Sección 1 anterior) tanto funcionales (dominio de la aplicación, casos de uso, datos de entrada y salida), como los no-funcionales. Conforme a la POO, para el modelado del sistema se procede como sigue: 1. Desarrollar el Diagrama de Clases 8

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++ 2. Desarrollar los métodos de todas las clases

3. Desarrollar el (método) Principal. A continuación, se aplicarán los tres pasos anteriores para desarrollar cada una de las opciones de solución al problema.

2.1. Opción 1 2.1.1. Modelado del sistema (programa) mediante diagramas UML 2.1.1.1 Diagrama de clases De acuerdo con la técnica de POO, lo primero que debe hacerse para modelar el sistema (programa) es identificar las clases y objetos (nombre, atributos y operaciones) que representarán (emularán) la realidad, lo cual se muestra en un diagrama de clases UML. En la redacción del problema a resolver (Sección 1 anterior), las clases se identifican por los sustantivos y los métodos por los verbos. Así, al leer el dominio de la aplicación (problema), inciso 1, identificamos a la colección de libros de la biblioteca como una clase (cLibro), de manera que a cada uno de los libros de la biblioteca los identificamos como objetos (oLibro1, oLibro2 y oLibro3). Adicionalmente, en esta opción elegimos una arquitectura (estructura) donde identificamos el Controlador (Principal), la Vista (clase cMenu) y el Modelo (clase cLibro). La clase Vista llamada cMenu contiene una operación llamada mMnuPrn() cuyo método mostrará el menú principal, y otra llamada mMnuLbr() la cual mostrará el menú libros. De ésta modo, sólo se invoca el método mMnuPrn() que devuelve el valor de OpciónPrincipal el cual se asigna a SelecciónPrincipal mediante la operación de asignación SelecciónPrincipal = cMenu.MnuPrn0(). Asimismo, la clase cLibro contiene los métodos cLibro(), mLbrEsc(), mLbrLer() y mLbrBsc(). De este modo, en la Figura 3 se muestra el diagrama de clases, utilizando los diagramas UML. Usaremos los símbolos de visibilidad de atributos y operaciones: - Privada (Private) + Pública (Public) # Protegido (Protected)

9

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Controlador Principal()

Modelo

Vista cMenu

cLibro

- OpcionPrincipal: Entero - OpcionLibros: Entero

- LbrId : Entero - LbrTtl: Cadena - LbrTma: Cadena - LbrPrc: Flotante

+ cMenu() + mMnuPrn(): Entero + mMnuLbr(): Entero

+ cLibro() + mLbrEsc(): Vacío + mLbrLer(): Vacío + mLbrBsc()

oLibro2

oLibro1

Nombre de la clase

Atributos de la clase

Método constructor Métodos de la clase

oLibro3

Figura 3. Diagrama UML de clases.

2.1.1.2. Métodos (Diagramas de Actividad) Una vez elaborado el diagrama de clases, se procede a elaborar el Diagrama de Actividad (programas) de todos los métodos, de todas las clases, en este caso las clases cMenu y cLibro, como se muestra en las Figuras 4, 5, 6, 7, 8 y 9 para los métodos mMnuPrn(), mMnuLbr(), cLibro(), mLbrEsc(), mLbrLer() y mLbrBsc(), respectivamente.

2.1.1.2.1. Método Menú Principal mMnuPrn().

10

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Sale “Menú Principal” “1. Libros” “2. Revistas” “3. CDs” “4. Alumnos” “5. Profesores” “6. Salir Principal” “Seleccione una opción: “ Entra OpcionPrincipal

Retorna OpcionPrincipal

Figura 4. Método mMnuPrn() de cMenu

2.1.1.2.2. Método Menú Libro mMnuLbr().

11

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Sale “Menú Libros” “1. Escribir Libro” “2. Leer Libro” “3. Buscar Libro” “4. Salir Libros” “Seleccione una opción: “ Entra OpcionLibros

Retorna OpcionLibros

Figura 5. Método mMnuLbr() de cMenu

2.1.1.2.3. Método constructor cLibro().

Entra LbrId = 0 LbrTtl = 0 LbrTma=0 LbrPrc = 0

Figura 6. Método constructor cLibro() de cLibro.

2.1.1.2.4. Método Escribir Libro mLbrEsc().

12

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Sale “Libro Id: “ Entra LbrId Sale “Libro Título: “ Entra LbrTtl Sale “Libro Tema” Entra LbrTma Sale “Libro Precio: “ Entra LbrPrc

Retorna

Figura 7. Método mLbrEsc() de cLibro

2.1.1.2.5. Método Leer Libro mLbrLer().

13

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Sale “Identificador: “ LbrId Sale “Título: “ LbrTtl Sale “Tema: “ LbrTma Sale “Precio: “ LbrPrc

Retorna

Figura 8. Método mLbrLer() de cLibro

2.1.1.2.6. Método Buscar Libro mLbrBsc().

Sale “En construcción.” Retorna

Figura 9. Método mLbrBsc() de cLibro.

2.1.1.3. Principal El método (programa) principal es el controlador del programa, como se muestra en la Figura 10. 14

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

Inicio Principal Declara i, SelecciónPrincipal : Entero oMenu : cMenu oLibro[MaxLbr] : cLibro

Sale: “Bienvenido a Bibliotheka-1” Pausa Inicio do-while

Calcula SeleccionPrincipal = oMenu.mMnuPrn() Inicio switch SeleccionPrincipal

Caso 1: Libros() Caso 2: Revistas() Caso 3: CDs()

Caso 4: Alumnos() Caso 5: Profesores() Caso 6: Salir Fin switch Selecc iónPri n !=6

Fin do-while

Fin Principal

Figura 10. Módulo Principal

El modelado del programa continúa especificando las funciones referidas en los casos del swich de la función principal, como se muestra en la Figuras 11, 12, 13, 14, 15 y 16. 15

Heberto Reynel Iglesias / Programación Orientada a Objetos con C++

2.1.1.4. Módulo Libros()

Inicio Principal Declara i, SelecciónLibros : Entero oLibro[MaxLbr] : cLibro. Inicio do-while

Entra SeleccionLibro = oMenu.mMnuLbr() Inicio switch SelecciónLibro

Caso 1: for(i=0; i...


Similar Free PDFs