
Bienvenido/a al curso de Java SE.
En esta clase descargarás e instalarás JRE y JDK en tu sistema para comenzar con el proceso de desarrollo.
Teniendo ya JRE y JDK en tu sistema, es hora de instalar Apache NetBeans como entorno de desarrollo.
Con todas las herramientas instaladas y listas para comenzar es momento de escribir el primer programa y verificar que todo funciona como es debido.
Lenguajes compilados, interpretados y semi-interpretados. Entendamos qué significa cada cosa y en cuál de estas categorías está Java.
Verás en detalle cómo crear un programa que muestre información al usuario, compilarlo y ejecutarlo desde consola, tanto el archivo compilado .class como el archivo empaquetado .jar.
En esta clase aprenderás a diferenciar las instrucciones print y println así como a ejecutar correctamente tus programas por consola.
Haremos un pequeño programa que leerá desde la entrada estándar el nombre del usuario para mostrarlo luego. Con este simple ejercicio conocerás la clase Scanner y su método nextLine.
En esta clase leeremos de forma básica números enteros desde la entrada estándar, lo cual nos llevará a prestar atención a ciertas cosas importantes.
Siguiendo con la lectura de enteros aprovecharemos dicha herramienta para calcular área y perímetro de un rectángulo, así como también el área de un triángulo. Prestaremos atención especial al comportamiento de la división en Java, ya que varía en función del tipo de los operandos.
Como en todo lenguaje, las constantes son una parte importante de la programación. En esta clase verás cómo declararlas en Java y utilizarlas luego.
Es importante conocer en detalle la diferencia entre una división real y una entera, así como la diferencia entre división (cociente) y módulo (resto). En esta clase entraremos en ese detalle así como en la lectura de números en una sola línea de entrada.
Java provee una sintaxis que permite declarar variables sin declarar explícitamente su tipo, sino que este se infiere automáticamente a través de asignación de un valor.
Conocer los caracteres de escape es algo básico pero no menos importante.
He aquí la tabla de tipos primitivos de este lenguaje.
Conoce aquí cómo funciona IF y cómo se realiza un diagrama de flujo básico.
En esta clase veremos un ejemplo de programa utilizando IF siguiendo un diagrama de flujo previamente diseñado.
En vez de concatenar IF, a veces es mejor estructurar todo en una sentencia SWITCH.
Conocer el uso de AND, OR y XOR, tanto en sus formas por circuito corto como por circuito largo, es algo crucial para todo/a programador/a.
Aunque es sumamente básico, no está de más echar un vistazo a los operadores comparativos de Java y su sintaxis.
Describimos brevemente la sintaxis de operador ternario en Java.
Conocerás el uso de FOR en Java y algunas variantes del mismo.
Trabajaremos en un pequeño juego donde el usuario ha de adivinar un número en 10 intentos.
Primer proyecto obligatorio del curso. Quizá bastante simple, pero no por eso menos importante.
Verás cómo utilizar WHILE en Java para iterar indefinidamente.
Veremos aquí la contraparte de WHILE: el querido DO-WHILE.
En este caso veremos cómo hacer que el programa Adivinador sea quién adivina un número que nosotros como usuarios hayamos imaginado.
Veremos aquí cómo se declaran, recorren y comparan arreglos en Java.
En esta clase veremos para qué sirve el parámetro args que se recibe en el procedimiento main, así como también conoceremos la sintaxis para utilizar el FOR-EACH y recorrer arreglos de forma más eficiente.
En esta clase haremos la búsqueda más básica en un arreglo y además trabajaremos en un pequeño diagrama de flujo.
En esta clase le prestaremos un poco de atención al tipo char así como a los arreglos de este tipo primitivo de datos. Trabajaremos con la clase Character y con la operación toCharArray de la clase String.
Veremos el ejemplo práctico de creación de un arreglo numérico con valores al azar sin que se repita ninguno.
Vamos a ver cómo utilizar los índices de la tabla ASCII para obtener letras aleatorias.
Aprenderás cómo utilizar arreglos de dos dimensiones (tablas, matrices o grillas) en Java, y en consecuencia podrás manejar luego cualquier cantidad de dimensiones que desees, ya que es extremadamente simple.
Proponemos aquí el segundo proyecto del curso, el cual supondrá un enorme salto en dificultad en comparación con el Adivinador propuesto anteriormente.
Tercer proyecto obligatorio, esta vez haremos el juego de lógica MasterMind con una versión simplificada del mismo pero, no por eso, sencilla de realizar.
Extendiendo el proyecto anterior subiremos un poco la dificultad del MasterMind.
En esta clase veremos el concepto de procedimiento en Java, así como el de método.
En esta clase veremos el uso y funcionamiento de funciones en Java.
Veamos qué pasa con las variables y parámetros locales frente a los componentes globales cuando los identificadores coinciden.
El tipo boolean, al poder ser usado como parte de una condición, resulta importante y particular en su tratamiento.
En Java, como en la mayoría de lenguajes, se admite la sobrecarga de identificadores. Veamos cómo funciona.
Veremos en detalle el pasaje de parámetros.
A partir de ahora será importante prestar atención a la documentación profesional del código, más aún al tener disponible la herramienta JavaDoc de Java.
Veremos en detalle como lograr el pasaje por referencia al utilizar arreglos y variables String.
Reimplementarás el proyecto anterior pero ahora utilizando subprogramas.
Conoceremos el uso básico de la clase enum.
Conocerás los Java records, utilizándolos de una manera bastante atípica pero muy provechosa para el aprendizaje.
Veremos un ejemplo práctico rediseñando el programa del Adivinador, pero esta vez utilizando una estructura más parecida a la orientación a objetos, utilizando solo enumerados y registros en vez de clases. También veremos un ejemplo de uso de la variante de switch llamada rule-switch.
Veremos cómo utilizar registros para crear un tipo de datos conocido como arreglo con tope.
Esta es una propuesta opcional que tiene como objetivo que practiques lo visto hasta ahora antes de enfrentar el siguiente proyecto obligatorio.
En esta oportunidad el programa MasterMind cambiará de rol y hará las veces de adivinador. Sin duda un reto extremadamente retador.
Veremos cómo se crea una clase en Java, objetos a partir de ella utilizando un constructor, y además contrastaremos dicho modelo con el mismo ejemplo en lenguaje Pascal, ya que utiliza un modelo que funciona como en C y C++.
Entender el encapsulamiento para determinar cuándo conviene tener componentes de una clase públicos o privados es crucial.
Entender el uso de la referencia this es un asunto crucial y clave. Reimplementaremos el programa del Adivinador cambiando el uso de registros por clases y objetos.
Entenderemos aquí como funcionan los objetos en Java, las clases y el significado de static.
Aplicando lo visto en la clase anterior, entenderemos de forma práctica el uso de static, conoceremos la constante null y veremos cómo Java destruye objetos.
Comencemos a ver el concepto de TAD, que no es algo específico de Java, sino más bien es una "forma" de pensar o hacer las cosas.
Veremos el arreglo con tope como un TAD creando específicamente un arreglo de objetos Persona.
Verás cómo usar un argumento variable y cómo hacer simples pruebas de las operaciones programadas para el TAD TopArray.
Presentamos El juego de la vida como caso de estudio. En la siguiente clase lo llevaremos a cabo.
Siguiendo la clase anterior, en esta oportunidad veremos cómo implementar la lógica del Juego de la Vida.
Te presentamos en esta clase el séptimo proyecto del curso, en el cual recibirás la interfaz gráfica ya preparada, encargándote de realizar el motor lógico del juego Buscaminas.
Finalizando con la "franquicia" MasterMind, en esta oportunidad haremos un programa que unirá las versiones anteriores en una sola, permitiendo al usuario elegir si quiere jugar en modo PENSADOR o en modo ADIVINADOR.
Veremos cómo crear un flujo de entrada y leer un archivo de texto.
Veremos el funcionamiento interno de un procesador de textos básico.
Verás cómo guardar objetos directamente en archivos.
Ahora que sabes guardar objetos también necesitas poder recuperarlos.
Veremos el proyecto que implementaremos en las siguientes clases para hacer uso de todo lo aprendido con archivos agregando ciertas cuestiones de gran importancia.
En esta clase programaremos la API de comandos del sistema.
Veremos el paquete con los componentes básicos de la lógica del sistema.
En esta clase veremos el controlador del sistema, quién gestionará todo el contenido.
Veremos aquí la estructura final del proyecto enlazando todo a la clase principal e iniciando la ejecución en main, así como las pautas para continuar y finalizar el programa como proyecto de entrega obligatoria.
Si bien no tienen que ver con TADs específicamente, las expresiones regulares son una herramienta fundamental para todo/a progamador/a.
Veremos cómo aplicar en Java el concepto de LinkedList usando clases internas.
Además de la lista simple encadenada hay otras variaciones que pueden resultar muy útiles para ciertos problemas y, por ende, es importante que las conozcas y puedas manipular.
Las pilas y colas son una "forma" de listas encadenadas aunque se suelen separar de dicho TAD porque su funcionamiento y aplicación son muy diferentes.
Saliéndonos de las estructuras lineales es momento de conocer una estructura arborescente: el ABB o BST (en inglés). El árbol binario de búsqueda es extremadamente importante y ampliamente utilizado en casi cualquier sistema de software, desde juegos a sistemas de gestión de BIG DATA.
Este es un curso de lenguaje de programación Java, el cual inicia desde cero en lo relativo a dicha tecnología, pero no es un curso de programación básica. Para llevarlo adelante ya debes tener conocimientos básicos de programación en cualquier otro lenguaje ya que aquí nos centraremos en que aprendas Java. Si no tienes ni idea de programación y quieres empezar desde la nada te recomendamos el curso "Programación profesional desde CERO", el cual está pensado y diseñado para que justamente entres en este mundo del desarrollo de software sin tener ni la más mínima idea previa de nada.
La tecnología Java posee muchísimas ramas, siendo dos de las más conocidas Java SE (Standar Edition) y Java EE (Enterprise Edition). Java SE te permite aprender todo lo relativo a dicho lenguaje y crear aplicaciones de escritorio e inclusive para Android (salvando ciertas particularidades propias del desarrollo para SmarthPhones) siendo el punto de partida para toda persona que se aventura a conocer este lenguaje. Java EE extiende por mucho a Java SE permitiéndote crear aplicaciones Web completas con lenguaje Java, es decir, se orienta al desarrollo Web por completo. En este curso conocerás a fondo Java SE, que es lo que necesitas dominar a fondo para luego adentrarte en cualquier otra característica de este lenguaje. Por ejemplo, no puedes aprender Java EE si no sabes Java SE, así de simple.
Pasarás de forma progresiva por los distintos paradigmas de programación, aprendiendo:
Programación estructurada
Programación modular
Memoria dinámica
Programación Orientada a Objetos
Programación de Interfaces Gráficas de Usuario
Bases de Datos SQL
Diseño y modelado de software
A través de este curso desarrollarás varios proyectos, diseñarás tus propios programas, resolverás problemas complejos con pocas herramientas, aprenderás a pensar y a dividir grandes retos en pequeñas partes. Aprenderás también la teoría profunda que todo/a programador/a necesita hoy día y la pondrás en práctica inmediatamente a través de los ejercicios y proyectos planteados, todo pensado para que aprendas Java al máximo nivel.
El curso se divide en 15 secciones (temas) progresivas a fin de que la curva de aprendizaje sea lo más asequible posible. En concreto, verás lo siguiente:
=== Tema 1: Entrada y salida estándar ===
Verás las bases mínimas del lenguaje Java para comenzar a comprender sus mecanismos de funcionamiento, trabajando con aplicaciones de consola de forma tal que puedas crear programas que interactúen con el usuario y realicen cálculos básicos con la información que éste ingresa:
Salida estándar de datos
Entrada estándar de datos
Variables en Java
Tipos primitivos de Java
Constantes en Java
Tipos de comentarios y documentación de código
Cálculos matemáticos básicos
=== Tema 2: Selección===
Aprenderás cómo funcionan en Java las sentencias de selección IF y SWITCH, así como empezarás a trabajar a fondo con el uso de operadores condicionales, tablas de verdad y el tipo primitivo boolean.
Sentencia IF
Concatenación de IF
Anidación IF
Uso de SWITCH
Operadores lógicos
Diagramas de flujo
Uso del depurador
=== Tema 3: Repetición iterativa===
La última estructura esencial para todo lenguaje de programación. Trabajarás en la creación de bucles y la gestión del flujo del código fuente. A partir de aquí inician los proyectos obligatorios.
Sentencia FOR
Anidación FOR
Generación de números aleatorios
Importación de clases
Repetición condicional WHILE
Repetición condicional DO..WHILE
Proyectos obligatorios
=== Tema 4: Arreglos ===
A partir de este punto comenzarás a trabajar con estructuras lineales de datos, en concreto, los arreglos y, en consecuencia, iniciarás con un diseño de clases básico para comenzar a estructurar tus programas.
Declaración de arreglos en Java
Algoritmos de búsqueda
Algoritmos de ordenación
Arreglos bidimensionales
Uso de FOR..EACH
Proyectos obligatorios
=== Tema 5: Procedimientos y funciones ===
El uso de procedimientos y funciones (métodos) en Java tiene sus particularidades, y en esta sección las descubrirás a fondo.
Procedimientos
Pasaje de parámetros por copia
Pasaje de parámetros por referencia
Funciones
Alcance de identificadores
Sobrecarga
Proyectos obligatorios
=== Tema 6: Tipos Abstractos de Datos y la Orientación básica a Objetos en Java===
En Java todo son clases y objetos, por lo que se hace difícil avanzar en el curso si entrar de lleno en dichos tópicos. Comprenderemos a fondo que es un Tipo Abstracto de Datos (TAD) y cómo Java modela esta teoría con sus objetos.
Modularización en Java
TADs y Clases
Caso de estudio completo
El Juego de la Vida
Diseño de TADs
Buscaminas
Liberación de memoria en Java
Clases internas
Listas encadenadas
TADs Pila y Cola
TAD Árbol Binario de Búsqueda
Proyectos
=== Tema 7: Archivos ===
Guardar la información es extremadamente importante, y como todo lenguaje que se respete, Java posee mecanismos para crear archivos, guardar información en el disco duro, recuperarla y modificarla como se desee.
Archivos de texto
Archivos de tipos personalizados
Serialización
Creando un procesador de textos básico
Creando una base de datos simple
Proyectos
=== Tema 8: Recursión computacional ===
Es posible repetir código sin hacerlo de forma iterativa con FOR; WHILE o DO..WIHLE, lo cual se logra con recursividad (métodos que se invocan a sí mismos). Además, esto permite solucionar problemas complejos que de forma iterativa serían sumamente complicados de solucionar.
Recursión directa
Recursión indirecta
Uso de la pila (stack) de llamadas a métodos
=== Tema 9: Programación Orientada a Objetos Avanzada ===
Extenderemos el concepto de orientación a objetos ahora tocando un sinfín de detalles complejos.
Clases y paquetes
Modificadores de acceso
Alias
Contenedor de desplazamiento y uso de interfaces predefinidas
Miembros estáticos
Patrón de diseño SINGLETON
Expresiones regulares
Proyectos
=== Tema 10: Herencia y Polimorfismo ===
La orientación a objetos no sería de mucha ayuda si no pudiera implementar justamente la Herencia y el Polimorfismo como parte de su abanico de herramientas. En esta sección conocerás cómo utilizarlos a fondo.
Encapsulamiento y herencia
Casteo y conversión de tipos
Interfaces
Genéricos
Polimorfismo
Clases abstractas
Introducción a UML
Captura de excepciones con TRY..CATCH
Lanzamiento de excepciones
=== Tema 11: Interfaces gráficas de usuario con Swing ===
A lo largo del curso harás muchos proyectos con una GUI ya programada por el equipo docente para hacer tu experiencia más interesante, pero en este punto aprenderás a hacerlo por ti mismo/a.
Componentes básicos
Paneles
Gestores de contenido
Eventos
Menús
Multithreading básico
Imágenes
Tablas y componentes avanzados
Patrón Observer
=== Tema 12: Interfaces gráficas de usuario con JavaFX ===
JavaFX es una tecnología que ha tomado mayor relevancia en los últimos años, tanto que muchos auguran que sustituirá a Swing como herramienta para crear GUIs. De este modo, es super importante que también domines esta herramienta al máximo.
Creación de componentes
Ventanas y cuadros
Modelo de eventos
JavaScript básico
=== Tema 13: Bases de datos SQL ===
Conectar una aplicación a una base de datos es super importante y casi obligatorio en el mundo de hoy. En esta sección aprenderás a conectar tus aplicaciones a MySQL y SQLite para manipular la información de forma robusta.
Creación y diseño de bases de datos
Sentencias INSERT
Sentencias SELECT
Actualización y borrado de registros
Modificación de tablas y estructuras
Claves foráneas
Proyectos SQL
Conexión de SQL a Java
Creación de aplicaciones con gestión SQL
=== Tema 14: Caso de estudio complejo ===
En este apartado veremos paso a paso la creación de un software complejo.
=== Tema 15: Tesis final ===