Skip to content

Programming exercises for the Higher Education Vocational Training (DAM) course. Covers fundamentals, arrays, collections, I/O operations, object-oriented programming, and practical projects. Built with Java 21 and Maven.

Notifications You must be signed in to change notification settings

roseprogramming/ejercicios-programacion-dam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Ejercicios de Programación DAM - Portfolio GitHub

📖 Bienvenida

Este es un repositorio completo de ejercicios de programación en Java diseñado como material educativo y portfolio para demostrar el progreso realizado en la asignatura de Programación durante el primer curso del FP Desarrollo de Aplicaciones Multiplataforma en ThePower. Reúne todos los ejercicios, proyectos y entregables del curso, estructurados y organizados bajo una arquitectura profesional que evidencia la progresión desde fundamentos hasta proyectos integrales avanzados.

🌟 Características Destacadas

Educativo: Aprendizaje estructurado y progresivo desde lo básico hasta POO avanzada
Profesional: Código limpio con JavaDoc completo en todas las clases
Práctico: Proyectos reales y completamente ejecutables
Moderno: Java 21 LTS con sintaxis actualizada (pattern matching, arrow functions)
Completo: 50+ clases, 200+ métodos, 4000+ líneas de código documentado

🚀 Inicio Rápido

1. Requisitos

  • Java 21 o superior
  • Un editor (VS Code, IntelliJ IDEA, etc.)

2. Compilar

cd src/main/java
javac com/dam/programacion/**/*.java

3. Ejecutar un ejemplo

java com.dam.programacion.fundamentos.operadores.Operadores

📚 Contenido Completo

1️⃣ Fundamentos (3 clases profesionales)

Conceptos básicos de programación Java:

  • Entrada/Salida: Scanner, System.out, manejo de excepciones
  • Estructuras de Control: if/else, switch, bucles (for, while, do-while, for-each)
  • Operadores: Aritméticos, lógicos, relacionales, bit a bit, ternario

📁 src/main/java/com/dam/programacion/fundamentos/ 📖 README.md

2️⃣ Arrays (7 ejemplos prácticos)

Manejo de estructuras de datos lineales:

  • Arrays unidimensionales (vectores)
  • Arrays bidimensionales (matrices)
  • Búsqueda, ordenamiento, iteración
  • Operaciones matriciales

📁 src/main/java/com/dam/programacion/arrays/ 📖 README.md

3️⃣ Collections (4 ejemplos prácticos)

Colecciones fundamentales del JCF:

  • Pilas con Deque
  • Colas FIFO con ArrayDeque
  • Listas dinámicas con ArrayList
  • Listas doblemente enlazadas con LinkedList

📁 src/main/java/com/dam/programacion/collections/ 📖 README.md

4️⃣ POO (8+ clases fundamentales)

Programación Orientada a Objetos completa:

  • Clases Básicas: Encapsulación, getters/setters, constructores
  • Herencia: Jerarquías de clases, método super(), polimorfismo
  • Abstracción: Clases abstractas, métodos abstractos
  • Interfaces: Contratos, segregación de interfaces

📁 src/main/java/com/dam/programacion/poo/ 📖 README.md

5️⃣ Proyectos Integrales (30+ clases avanzadas)

🦸 Superhéroes (Polimorfismo)

  • 8 clases + 3 interfaces
  • Sistema de gestión de superhéroes con poderes únicos
  • Superman (vuelo), Batman (artes marciales), Spiderman (telaraña), Hulk (rabia)
  • Demostración de polimorfismo avanzado y pattern matching
java com.dam.programacion.proyectos.superheroes.aplicacion.Main

🐾 Animales (Jerarquía Compleja)

  • 8 clases + 2 interfaces
  • Simulador de diferentes especies con comportamientos específicos
  • Gato (7 vidas), Perro (raza), Pajaro (volador), Mosquito (pequeño), Pez (acuático)
  • Interfases segregadas (Volador, Picotear)
java com.dam.programacion.proyectos.animales.Main

🏃 Carreras (Herencia Multinivel)

  • 7 clases + 2 interfaces
  • Sistema de gestión de corredores en categorías
  • Popular, Juvenil, Federado, Elite
  • Sistema de patrocinios y cálculo de cuotas
java com.dam.programacion.proyectos.carreras.aplicacion.Main

🏥 Urgencias (Lógica Compleja)

  • 2 clases principales con 1000+ líneas
  • Triage médico automatizado
  • Clasificación de urgencia (crítico, muy urgente, urgente, normal)
  • Evaluación inteligente de síntomas
java com.dam.programacion.proyectos.urgencias.EmergencyTriageExample

📁 src/main/java/com/dam/programacion/proyectos/ 📖 README.md

📊 Estadísticas del Proyecto

Métrica Valor
Líneas de Código 4000+
Clases 50+
Interfaces 8+
Métodos 200+
Documentación JavaDoc 100%
Ejemplos Ejecutables 20+
READMEs Detallados 6
Paquetes 15

🎓 Conceptos Aprendidos

Fundamentos

  • ✅ Variables y tipos de datos primitivos
  • ✅ Operadores (aritméticos, lógicos, relacionales, bit a bit)
  • ✅ Precedencia de operadores
  • ✅ Estructuras condicionales (if/else, switch)
  • ✅ Bucles (for, while, do-while, for-each)
  • ✅ Entrada/Salida con Scanner

Estructuras de Datos

  • ✅ Arrays unidimensionales (vectores)
  • ✅ Arrays bidimensionales (matrices)
  • ✅ Iteración eficiente
  • ✅ Búsqueda y ordenamiento
  • ✅ Operaciones matriciales

Programación Orientada a Objetos

  • ✅ Clases y objetos
  • ✅ Encapsulación (getters/setters)
  • ✅ Herencia simple y múltiple (interfaces)
  • ✅ Polimorfismo (sobrescritura y sobrecarga)
  • ✅ Clases abstractas
  • ✅ Interfaces
  • ✅ Pattern matching (Java 14+)
  • ✅ Modificadores de acceso (public, protected, private)

Patrones de Diseño

  • ✅ Strategy (mediante interfaces)
  • ✅ Template Method (clases base)
  • ✅ Adapter (implementación múltiple)
  • ✅ Factory (constructores)

💡 Proyectos Destacados

Superhéroes 🦸

Demuestra:

  • Herencia de clase abstracta
  • Múltiples interfaces en una clase
  • Polimorfismo en tiempo de ejecución
  • Pattern matching moderno
  • JavaDoc profesional

Ejemplo de Ejecución:

=== Superman ===
Identidad Secreta: Clark Kent
[Superman] Tengo todos los superpoderes!

Superman vuela a una altitud de 10000.0 metros a velocidad supersonica.
Superman levanta un objeto de 500.0 toneladas sin esfuerzo.

Animales 🐾

Demuestra:

  • Jerarquía clara de clases
  • Interfaces segregadas (responsabilidad única)
  • Encapsulación avanzada
  • Atributos especiales por tipo
  • Polimorfismo de interfaces

Ejemplo de Ejecución:

--- TODOS LOS ANIMALES SE PRESENTAN ---

Soy Garfield, tengo 3 años y soy un Gato naranja
¡Garfield dice: ¡MIAU MIAU!

Soy Rex, tengo 5 años y soy un Pastor Alemán
¡Rex hace: ¡GUAU GUAU!

📖 Documentación

Cada módulo contiene documentación completa:

Módulo README Contenido
Fundamentos Explicaciones, ejemplos, ejercicios
Arrays Conceptos, operaciones, errores comunes
POO 4 pilares, buenas prácticas, patrones
Proyectos Descripciones, arquitectura, progresión

Lecturas Recomendadas (en orden)

  1. Este README.md (visión general)
  2. src/main/java/com/dam/programacion/README.md
  3. src/main/java/com/dam/programacion/fundamentos/README.md
  4. src/main/java/com/dam/programacion/poo/README.md
  5. src/main/java/com/dam/programacion/proyectos/README.md

🎯 Ruta de Aprendizaje (9 Meses de Curso)

MES 1: Fundamentos (6 semanas)
├─ Entrada/Salida (Scanner, System.out)
├─ Operadores (aritméticos, lógicos, bit a bit)
└─ Estructuras de Control (if/switch/bucles)
   ↓
MES 2: Estructuras de Datos (4 semanas)
├─ Arrays 1D (vectores)
├─ Arrays 2D (matrices)
└─ Búsqueda y ordenamiento
   ↓
MESES 3-4: Programación Orientada a Objetos (9 semanas)
├─ Clases Básicas (encapsulación, getters/setters)
├─ Herencia (jerarquías de clases)
├─ Polimorfismo (interfaces, clases abstractas)
└─ Patrones de Diseño (Strategy, Template Method, Factory)
   ↓
MESES 5-6: Collections y APIs Avanzadas (9 semanas)
├─ Colecciones (List, Set, Map, Queue, Deque)
├─ Iteración y Streams API
├─ Excepciones y Manejo de Errores
└─ I/O y Operaciones de Archivo (NIO.2)
   ↓
MESES 7-9: Proyectos Integrales (13 semanas)
├─ Superhéroes (básico: polimorfismo simple)
├─ Animales (básico: jerarquía de clases)
├─ Carreras (intermedio: herencia multinivel)
└─ Urgencias (avanzado: lógica compleja)

🛠️ Tecnologías y Requisitos

  • Lenguaje: Java
  • Versión Java: 21 LTS
  • JDK: OpenJDK 21 o superior
  • Encoding: UTF-8 (soporte completo de acentos españoles)
  • Compilación: Manual (sin dependencias externas)

Verificar instalación de Java

java --version
javac --version

✅ Características para Reclutadores

Este repositorio demuestra:

  • Fundamentos Sólidos en Java
  • POO Completo: Herencia, polimorfismo, interfaces, encapsulación
  • Código Profesional: Documentado, limpio, mantenible
  • Capacidad Analítica: Resolución de problemas complejos
  • Buenas Prácticas: JavaDoc, nombres descriptivos, estructura clara
  • Progresión Lógica: De básico a avanzado, bien organizado
  • Ejemplos Ejecutables: Todo funciona sin errores
  • Portfolio en GitHub: Listo para demostrar habilidades

🔗 Enlaces Útiles

📝 Cómo Usar Este Repositorio

Para Aprender

  1. Lee el README correspondiente a tu nivel
  2. Examina el código fuente (bien comentado)
  3. Ejecuta los ejemplos
  4. Modifica y experimenta
  5. Realiza los ejercicios propuestos

Para Mostrar en Entrevistas

  1. Clona el repositorio
  2. Muestra la estructura organizada
  3. Ejecuta los ejemplos en vivo
  4. Explica los conceptos implementados
  5. Habla de lo que aprendiste

Para Contribuir

  1. Fork el repositorio
  2. Crea una rama con tus cambios
  3. Envía un pull request
  4. Comparte mejoras o nuevos ejemplos

🎁 Características Especiales

  • 🐍 Pattern Matching Moderno: Sintaxis Java 14+ con arrow functions
  • 📊 Diagramas UML: En comentarios de clases importantes
  • 🎨 Salida Formateada: Uso de box drawing para mejor visualización
  • 📚 Ejercicios Propuestos: En cada módulo, desde básico a avanzado
  • 🚀 Código Optimizado: Eficiente y fácil de mantener
  • 🧪 Manejo de Errores: Robusto con try-catch donde corresponde
  • 🌍 Unicode Completo: Soporte total para acentos españoles

📄 Estructura del Repositorio

ejercicios-programacion-dam/
├── README.md                                    # Este archivo
├── pom.xml                                      # Configuración Maven (opcional)
├── .gitignore                                   # Especificaciones Git
├── docs/
│   ├── apuntes/                                # Material de estudio
│   └── practicas/                              # Prácticas adicionales
└── src/
    ├── main/java/com/dam/programacion/
    │   ├── README.md                           # Guía principal
    │   ├── fundamentos/
    │   │   ├── README.md
    │   │   ├── entrada_salida/Main.java
    │   │   ├── estructuras_control/EstructurasControl.java
    │   │   └── operadores/Operadores.java
    │   ├── arrays/
    │   │   ├── README.md
   │   │   ├── one_dimensional/
   │   │   └── bidimensionales/
    │   ├── poo/
    │   │   ├── README.md
    │   │   ├── clases_basicas/
    │   │   ├── herencia/
   │   │   └── polymorphism/
    │   └── proyectos/
    │       ├── README.md
    │       ├── superheroes/
    │       ├── animales/
    │       ├── carreras/
    │       └── urgencias/
    └── test/java/com/dam/programacion/
        └── AppTest.java

🎓 Checklist de Aprendizaje

Después de completar todo, deberías poder:

  • Entender variables, tipos y operadores
  • Escribir condicionales y bucles
  • Crear y manipular arrays
  • Diseñar clases con encapsulación
  • Implementar herencia efectiva
  • Usar polimorfismo en código real
  • Crear interfaces segregadas
  • Documentar código con JavaDoc
  • Resolver problemas de diseño
  • Explicar conceptos a otros

📄 Licencia

MIT License - Libre para usar con propósitos educativos y profesionales

MIT License

Copyright (c) 2024 Estudiante de DAM

Permission is hereby granted, free of charge, to any person obtaining a copy...

👨‍💻 Autor

Andrea Gicela Bravo Landeta @roseprogramming en Github Estudiante de Desarrollo de Aplicaciones Multiplataforma en ThePower

Creado como:

  • 📚 Material educativo personal
  • 🏆 Portfolio GitHub profesional
  • 💼 Preparación para entrevistas técnicas
  • 🚀 Base para proyectos futuros

🌟 Agradecimientos

  • Oracle por la excelente documentación de Java
  • La comunidad Java por mejores prácticas
  • Instructores de DAM en ThePower por la guía educativa

📧 Contacto y Soporte

¿Preguntas o sugerencias?

  • Abre un issue en GitHub
  • Envía un pull request con mejoras
  • Comparte tu feedback

🎉 ¡Gracias por revisar este proyecto!

Si te resulta útil para aprender Java:

  • Dale una estrella en GitHub
  • 🔄 Comparte con otros estudiantes
  • 💬 Deja un comentario con tu feedback

Siguiente paso: Dirígete a src/main/java/com/dam/programacion/ para empezar 👉

¡Feliz aprendizaje! 🚀

About

Programming exercises for the Higher Education Vocational Training (DAM) course. Covers fundamentals, arrays, collections, I/O operations, object-oriented programming, and practical projects. Built with Java 21 and Maven.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages