Programación orientada a objetos

Cronograma de actividades

  • (10%) Taller #1 - Repaso [24 Julio]
  • (10%) Taller #2 [26 Agosto]
  • (10%) Taller #3 [11 de septiembre]
  • (15%) Taller #4 [23 Septiembre]
  • (10%) Taller #5 [9 Octubre]
  • (20%) Entrega #1 proyecto [23 Octubre]
  • (20%) Entrega #2 proyecto [06 Noviembre]
  • (5%) Asistencia Coding with Friends [Cualquier momento del semestre]

Taller 1

1. Realizar cinco programas y responda dos preguntas de teoría, se debe usar C# como lenguaje de Programación, click en el enlace para realizar la autoasignación de los enunciados
Ejercicios

✨Revisar la autoasignación en clase con el profesor, realizar preguntas, si hay algo que no se comprenda.

Taller 1

2. Peparar una actividad, de duración 3 min, donde por medio de interacción con el grupo, se practique el concepto de función, recuerde que es lo mismo que un módulo o un método. Se debe realizar el ejercicio durante la exposición la próxima clase.

Taller 1

3. Realizar los retos de manejo de terminal de la siguiente pagina:
Command Challenge 🖥️

4. Cree todos los archivos del taller usando los comandos aprendidos en el punto tres, cree un archivo que se llame readme.md desde la terminal, copie el historial de comandos al final del archivo y suba los archivos a un repositorio de github (Actividad se termina en clase).

Taller 1

5. Participa en la creación del programa exquisito, escribiendo líneas de código en el programa colaborativo. (Actividad en clase)

6. La clase de la entrega preparen una presentación de max 7 minutos, para exponer a sus compañeros, los resultados obtenidos, incluya conclusiones y bibliografía.

Criterios de evaluación

  • (10%) Asistencia a clase
  • (10%) Diapositivas y exposición en clase
  • (10%) Argumentación individual
  • (10%) Entrega en repositorio y manejo de terminal
  • (20%) Participación programa exquisito
  • (20%) Cinco ejercicios resueltos y funcionando
  • (20%) Ejercicio interactivo en clase

Referentes

Referentes

Taller 2

  1. Ejercicio en equipo, diferente al equipo del taller 1
  2. Diseñar un sistema de facturación para un restaurante, se debe crear el diseño de todas las clases usando StarUML.

Taller 2

  1. El sistema debe tener como mínimo:
    • Selección de mesa
    • Imprimir menú restaurante
    • Agregar productos mesa
    • Editar productos de la mesa
    • Editar menú restaurante
    • Imprimir cuenta mesa
    • Buscar productos por Id
    • Cargar/Guardar facturas, información productos...

Taller 2

  1. Implementar en C# el sistema de facturación, se debe crear un proyecto en Visual Studio, con el código inicial que tendrán las clases.
  2. El programa debe funcionar en consola

Taller 2

  1. Se debe hacer una presentación con diapositivas para la entrega
  2. Se debe usar repositorio, mínimo de un commit. Se presenta un repositorio por grupo.

Criterios de evaluación

  • (10%) Asistencia a clase
  • (10%) Diapositivas y exposición en clase
  • (10%) Argumentación individual
  • (10%) Creación del proyecto inicial
  • (20%) Uso repositorio
  • (20%) Diagrama de clases
  • (20%) El programa funciona

Taller 3

  1. Para esta parte del taller se debe cambiar de equipo.
  2. Continuar con la implementación del menú y las principales funcioalidades del proyecto.

Taller 3

  1. Escribir el código y probar su funcionamiento de las siguientes características:
    • Menú del programa
    • Imprimir menú restaurante
    • Agregar productos restaurante
    • Agregar/Editar productos de la mesa
    • Imprimir cuenta mesa
    • Buscar productos por Id

Taller 3

  1. Agregar a los nuevos compañeros de equipo al repositorio
  2. Dividir las tareas de programación por estudiantes
  3. Agregar los cambios por medio de commmits y push

Taller 3

  1. Personalizar la interfaz gráfica de texto usando ASCII art, menú del programa, menú del restaurante, impresión de la factura...
  2. Actualizar presentación de clase con los avances del proyecto

Taller 3

  1. Mínimo 10 commits por estudiante. Todos los integrantes deben participar subiendo cambios.
  2. Se debe actualizar el diagrama de clases con las nuevas clases y relaciones, según los conceptos vistos en el aula.

Taller 3 - referentes

Criterios de evaluación

  • (10%) Asistencia a clase
  • (10%) Diapositivas y exposición en clase
  • (10%) Argumentación individual
  • (10%) Uso repositorio
  • (20%) Diagrama de clases
  • (20%) Personalización de la interfaz
  • (20%) El programa esta completo y funciona

Taller 4

  1. Para esta parte del taller se debe cambiar de equipo, teniendo en cuenta la distribución compartida por el profesor en clase.
  2. Finalizar la entrega del proyecto.

Taller 4

  1. Escribir el código y probar su funcionamiento de las siguientes características:
    • Editar cuenta
    • Actualizar menu
    • Imprimir factura con impuestos y propina en formato tirilla
    • Gestionar el inventario de los productos, cuando se realiza una venta
    • Cargar/Guardar el inventario un archivo
    • Cargar/Guardar las facturas en un archivo

Taller 4

  1. Agregar a los nuevos compañeros de equipo al repositorio
  2. Dividir las tareas de programación por estudiantes
  3. Agregar los cambios por medio de commmits y push

Taller 4

  1. Configurar los archivos para guardar los datos en un formato separados por comas o CSV.
  2. Agregar estas opciones al menú del programa y ejecutar una carga y guardado de los datos al abrir o cerrar el programa.

Taller 4

  1. Mínimo 10 commits por estudiante. Todos los integrantes deben participar subiendo cambios.
  2. Se debe actualizar el diagrama de clases final, incluya los conceptos vistos hasta el momento, encapsulamiento, valores por defecto, constructores, alta cohesión...

Taller 4 - referentes

Criterios de evaluación

  • (10%) Asistencia a clase
  • (10%) Diapositivas y exposición en clase
  • (10%) Argumentación individual
  • (10%) Uso repositorio
  • (20%) Diagrama de clases completo
  • (20%) Trabajo en equipo nuevo grupo
  • (20%) El programa esta completo y funciona

Taller #5

Continuación con el proyecto de facturación, se debe cambiar nuevamente de equipo, según la distribución compartida por el profesor en clase.

Taller #5

Para esta nueva versión del programa, se tendrán en cuenta incluir o mejorar las siguientes funcionalidades:

  • Leer y guardar inventario actualizado
  • Mantener actualizado el inventario
  • Tener archivo de clientes
  • Generar Tirilla de factura por mesa

Taller #5

Hay algunas funcionalidades que ya se han implementado, pero se deben mejorar o completar, estas son:

  • Mejorar la UI ascii
  • Imprimir el estado actual de las mesas y el inventario
  • Actualizar el repositorio y personalizar el readme
  • Analítica básica del restaurante

Leer y guardar inventario

Esta funcionalidad debe cargar el inventario de productos directamente desde el archivo, si se edita el archivo el programa debe adaptarse a los cambios.

El programa debe mantener actualizado el inventarios según las operaciones del restaurante, es decir si se venden productos el inventario debe reflejar estos cambios.

La carga del inventario es automatica al iniciar el programa y para guardar se debe tener una opción en el menú.

Archivo de clientes

El archivo de clientes, no solo es un directorio de los clientes, sino donde se guardan las interacciones con el restaurante.

Se debe almacenar las facturas de cada cliente incluyendo fecha, así mismo como el estado de la factura. Algunos estados pueden ser: pagada, cuenta abierta, cuenta pendiente por pago...

Se debe leer el archivo de clientes de manera automática y validar si el cliente cumpleaños en el mes, para darle un descuento en la cuenta.

Generar tirilla

Esta opción debe imprimir todos los consumos realizados por una mesa, debe tener formato similarr a una tirilla de supermercado, donde se indique nombre del producto, cantidad, precio unitario y total.

La factura debe tener además, descuento de cumpleaños, impuestos y propina.

Se debe indicar el medio de pago, el valor pagado y la devuelta si es necesario.

Mejorar la UI - Ascii

Se deben agregar detalles a los diferentes menús de la consola para hacerla más atractiva y fácil de usar. Por tanto se debe agregar el titulo de cada operación, agregar bordes para enmarcar los menús, agregar colores, centrar el texto, etc.

Para imprimir la factura, también se debe darle un buen formato, agregar el logo del restaurante, el nombre, la dirección, el nit, el teléfono, etc. Y por supuesto, el detalle de la factura.

Impresión Estado

El programa debe contar con una opción que permita imprimir el estado actual del inventario, el pedido actual de una mesa y su respectiva cuenta.

Cuando se hace una venta o se actualiza el inventario o hay un cambio en el programa, se debe ver reflejado en la impresión del estado.

Actualizar el repositorio

Cada estudiante debe contar con participación en el repositorio, como minímo 20 commits.

Se debe actualiza el readme con la información del proyecto, como funciona, la ubicación de los archivos, participantes, referentes, entre otros.

Medios de pago

Completar el diagrama de clases, con las clases deribadas de medios de pago visto en el curso, completar los miembros datos y métodos, integrarlo con la lógica del negocio.

Analítica básica del restaurante

  • ¿Cuantas facturas estan pendientes por pagar?
  • ¿Cuáles son los clientes mejores compradores?
  • ¿Cuales son los clientes con más deudas?
  • ¿Cuáles son los productos que más se venden?
  • ¿Cuales son los productos que menos se venden?

Tenga en cuenta

  • El cliente tiene un limite de crédito de 1 millón
  • El cliente debe poder abonar o cancelar una cuenta
  • El descuento de cumpleaños se otorga solo una vez
  • Se debe poder imprimir las cuentas pendientes por pagar
  • Se debe emitir una alerta si el inventario es 0 o esta próximo a acabarse.

Criterios de evaluación

  • (20%) Asistencia a clase y cambio de equipo
  • (20%) Actualización diagrama de clases
  • (10%) Uso de repositorio
  • (10%) Analítica básica del restaurante
  • (10%) Funcionamiento del programa
  • (10%) Impresión del estado
  • (10%) Mejora de la interfaz ASCII
  • (10%) Generación de la tirilla

Entrega #1

Para el proyecto final, se realizará un juego de plataforma, usando el motor de videojuegos Unity, el cual se programa en C#, se trabajará según los grupos asignados por el profesor en clase.

El objetivo de este ejercicio es poner a prueba los conocimientos adquiridos en clase, sobretodo los últimos conceptos vistos.

Entrega #1

Para esta primera entrega se deben realizar los siguientes puntos:

  1. Un estudiante del equipo debe solicitar acceso al siguiente repositorio privado (enlace)
  2. Clonar el repositorio y crear un nuevo repositorio teniendo como punto de partida el repositorio asignado
  3. El repositorio debe ser privado
  4. Personalizar el archivo readme con la información del proyecto y de los participantes

Entrega #1

  1. Crear una presentación cuyo enlace sea publico y este presente en el archivo readme
  2. Proponer un diagrama de clase, teniendo en cuenta los conceptos que se incluiran en cada nivel del juego (Jugador, Enemigo, Vida,...
  3. Crear una historia para el juego de plataforma

Entrega #1

  1. Definir la misión del jugador en cada nivel
  2. Crear el logo del juego
  3. Crear un boceto del primer y segundo nivel
  4. Crear las escenas del juego en unity (home, instrucciones, creditos, nivel 1, nivel 2, gano, perdio)

Criterios de evaluación

  • (10%) Asistencia
  • (10%) Repositorio, readme y configuración
  • (20%) Diagrama de clase
  • (20%) Diseño de niveles
  • (20%) Configuración y navegación de escenas
  • (20%) Historia, logo y misión de cada nivel

Entrega 2 - Final

Completar el juego usando el motor Corgi, se debe realizar la implementación del juego con dos niveles. La construcción de cada nivel debe reflejar el diseño que se realizó en la entrega anterior, las demás ventanas deben estar personalizadas y funcionando correctamente.

Entrega 2 - Final

Teniendo en cuenta la explicación de la próxima clase y el material complementario compartido en el curso, agregar las siguientes funcionalidades:

  • Cada nivel debe tener por lo menos 6 enemigos
  • Plataformas móviles
  • Plataformas para empujar
  • Puerta para pasar al siguiente nivel
  • Monedas para que el personaje recolecte

Entrega 2 - Final

Cada ventana debe estar personalizada, con el logo, los fondos, los botones, las plataformas.

Entrega 2 - Final

Todas las ventanas deben navegar correctamente y cargar el contenido correspondiente, cuando termine el nivel 1, pasar al nivel 2, si pierde se debe mostrar la vetana de perder y si gana la ventana de ganar.

Entrega 2 - Final

Se debe actualizar el repositorio, cada estudiante debe participar, minimo de commits por estudiante 10.

Criterios de evaluación

  • (10%) Asistencia
  • (10%) Repositorio, readme y configuración
  • (20%) Diseño de niveles
  • (20%) Configuración y navegación de escenas
  • (20%) Personalización de las ventanas
  • (20%) Dispositivas y exposición