Entender la Programación orientada a objetos

1

Programación Orientada a Objetos con Java: Clases, Herencia e Interfases

2

Propiedades y Comportamientos de los Objetos en Programación

3

Clases y Abstracción en Programación Orientada a Objetos

4

Modularidad y Orientación a Objetos en Programación Java

Definir Clases y sus componentes

5

Creación de Clases y Objetos en Java: Sistema de Citas Médicas

6

Métodos Constructores en Java: Creación y Uso Efectivo

7

Métodos y Variables Estáticas en Java: Uso y Acceso

8

Definición y Uso de Variables y Métodos Estáticos en Java

9

Variables y Métodos Estáticos en Java: Uso y Beneficios

10

Sobrecarga de Métodos y Constructores en Java

11

Clase "Paciente" en Java: Atributos y Constructor

12

Encapsulamiento de Datos en Java: Modificadores de Acceso

13

Encapsulamiento y Validación de Datos en Programación Orientada a Objetos

14

Diferencias entre Variables y Objetos en Programación Java

15

Diferencias entre variables primitivas y objetos en la memoria

16

Clases Anidadas en Java: Internas y Estáticas

17

Clases Anidadas y Estáticas en Java: Uso y Ventajas

18

Uso de Enumeraciones en Java: Definición y Ejemplos Prácticos

Reutilizar Código

19

Reutilización de Código y Herencia en Programación Orientada a Objetos

20

Herencia y Abstracción de Clases en Java: Doctor y Paciente

21

Sobre escritura de métodos en Java: cómo redefinir comportamientos

22

Polimorfismo en Programación Orientada a Objetos: Método toString

23

Herencia e Interfaces en Programación Orientada a Objetos

24

Composición de Interfaces en Java: Implementación y Beneficios

25

Interfaces y Clases Principales de Colecciones en Java

Aplicar Abstracción

26

Polimorfismo y Clases Abstractas en Programación Orientada a Objetos

27

Clases Abstractas y Métodos Abstractos en Programación Orientada a Objetos

28

Clases Anónimas y su Uso en Programación Java

29

Diferencias entre las Interfaces y las Clases Abstractas

30

Abstracción y Herencia en Programación Orientada a Objetos

31

Herencia y Extensión de Interfaces en Java

Ensamblando Objetos el proyecto

32

Autenticación de Usuarios: Implementación con Listas en Java

33

Creación de Menú de Opciones para Doctores en Java

34

Modularidad y Manejo de Fechas en Arquitectura de Software

35

Gestión de Citas en Aplicaciones Java: Implementación y Validación

36

Colecciones de Datos: Uso de Mapas en Java para Gestión de Citas

37

Confirmación de Citas Médicas con Estructuras de Datos en Java

38

Programación Orientada a Objetos en Java: Proyecto de Citas Médicas

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Autenticación de Usuarios: Implementación con Listas en Java

32/38
Recursos

¿Cómo se integra la capa de modelo con la capa de interfaz?

Para avanzar en el desarrollo de una aplicación, es vital enlazar correctamente la capa de modelo con la capa de interfaz. Este proceso es crucial para permitir que los usuarios interactúen con el sistema de manera efectiva. Vamos a detallar cómo se realiza este procedimiento utilizando métodos estáticos y simulaciones de autenticación para distintas entidades de usuario, como doctores y pacientes.

¿De qué manera se autentican los usuarios?

La autenticación se realiza a través de correos electrónicos. En este simulacro inicial, nos centramos en dos tipos de usuarios: doctores y pacientes. Para gestionarlo, se creó un método estático privado que determinará el tipo de usuario basado en el parámetro insertado.

private static void AutenticacionSimulada(int tipoUsuario) {
    if (tipoUsuario == 1) {
        // Usuario es un Doctor
    } else if (tipoUsuario == 2) {
        // Usuario es un Paciente
    }
}

La autenticación varía en función del tipo de usuario, verificando los correos en listas predefinidas para doctores y pacientes.

¿Cómo se gestionan las listas de doctores y pacientes?

Para simular un sistema realista de autenticación y manejo de datos de usuarios, se crearon listas que almacenan los correos electrónicos de doctores y pacientes. Este esquema imita la recuperación de registros de una base de datos.

Ejemplo de lista de doctores:

List<Doctor> listaDoctores = new List<Doctor>();
listaDoctores.Add(new Doctor("Alejandro Martínez", "[email protected]"));

Ejemplo de lista de pacientes:

List<Paciente> listaPacientes = new List<Paciente>();
listaPacientes.Add(new Paciente("Ana", "[email protected]"));

Estas listas permiten verificar si el correo electrónico ingresado por el usuario está registrado, facilitando la autenticación.

¿Cuál es la lógica implementada para validar correos electrónicos?

El proceso de verificación recorre las listas de usuarios (doctores o pacientes) hasta encontrar una concordancia con el correo ingresado. Si se encuentra, se cambia el estado de una variable booleana indicadora para true.

bool emailCorrecto = false;
foreach (var doctor in listaDoctores) {
    if (doctor.Email == emailIngresado) {
        emailCorrecto = true;
        doctorLogueado = doctor;
        break;
    }
}

Esta verificación evita accesos no autorizados y asegura que solo los usuarios registrados puedan acceder a sus respectivos menús.

¿Cómo se maneja el menú y qué opciones se presentan?

Una vez autenticado el usuario, el menú se ajusta según el tipo de usuario. La funcionalidad del menú es esencial para guiar al usuario hacia las operaciones que puede realizar en el sistema. En el código proporcionado, se establece un menú inicial que pide al usuario que ingrese su correo electrónico para verificar su identidad y tipo.

while (!emailCorrecto) {
    Console.WriteLine("Por favor ingrese su correo electrónico:");
    emailIngresado = Console.ReadLine();
    // Lógica de verificación
}

¿Qué otras configuraciones y consideraciones se implementan?

Además de la autenticación, es importante mencionar la preparación del programa para ulteriores mejoras, como persistencia de datos y ampliación de funcionalidades. El uso de listas para manejar colecciones de objetos es altamente eficiente para pequeñas simulaciones, pero no es adecuado para sistemas más extensos donde se contempla el acceso regular a bases de datos.

Con esta estructura, se sienta la base para un sistema robusto y seguro que no solo autentica usuarios, sino que también prepara el camino para integrar futuras mejoras y funcionalidades adicionales.

Aportes 56

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para los compañeros que comienzan este módulo, recomiendo:
1.- Aventarse 3 cafés bieeen cargados.
2.-Tener la documentación de Java abierta en otra ventana.
3.- Pausar cada que haya dudas porque la profesora va muy rápido
4.- Paciencia, porque va a doler (poquito).

¿son ideas mias o vas super rapido haciendo el codigo?

Para los que sufrimos por que ella va muy rapido aqui les dejo algunos atajos de teclado rapidos(para windows, no se en mac como seran):

Ctr + D = Duplica toda la linea de codigo
Shift + Alt + flecha arriba o flecha abajo = Mueve la linea de codigo completo
Ctrl + E = te aparece una ventana de los archivos recientes y te ayuda a cambiar entre los archivos mas rapidamente que dando click en las pestañas superiores.

si presionan dos veces Shift les abre una ventana para buscar en todo el proyecto, la palabra de busqueda relacionará methodos clases y variables, cuando presionan ENTER los lleva directamente a donde su busqueda.

Creo que es buena practica empezar a no depender del mouse.

woooow me encanto esta clase, tenia de todo!..Arreglos, poliformismo, niveles de acceso de la información…Vi tantas cosas y ¡¡¡aprendí mucho!!! Excelente clase 😃

Excelente aunque me hubiese gustado diseñar alguna interfaz grafica, Pero ese sera mi nuevo reto implementar una interfaz a esta logica de negocio.

En vez de crear dos variables globales para el usuario logueado, yo hice solo una pero de tipo User:

public static User userLogged;

Me pareció una mala clase debido a que fue muy rápido a mi parecer.

Aparte de ir rápido, no estaría nada mal que se vaya a la par con el diagrama UML pues creo que todos nos guiamos de un diagrama para la construcción del código.

A pesar de que si es cierto que va rápido, me parece buena clase, ya que todo lo que plasmo en código ya lo hemos visto en el curso anterior y este curso, lo veo más como un reto para evaluar que tanto sabemos de lo que hemos visto.

Buena aplicación del método equals() 😄

Todos diciendo que la profe va rápido y yo viendo la clase en velocidad x2 😅

Muy buena clase.
Agrego por acá un try{}catch(){} para validar en caso de que el usuario digite campos nulos:

 try{
                String email = sc.nextLine();

                if(userType == 1){

                    for(Doctor d : doctors){
                        if(d.getEmail().equals(email)){
                            correctUser = true;
                            //Obtener el usuario logueado
                            doctorLogged =  d;

                            //showDoctorMenu
                        }
                    }
                }

                if(userType == 2){

                    for(Patient p : patients){
                        if(p.getEmail().equals(email)){
                            correctUser = true;
                            //Obtener el usuario logueado
                            patientLogged =  p;

                            //showPatientMenu
                        }
                    }
                }

            }catch (NullPointerException e){
               System.out.println("Please type a correct email format");
            }




Genial, me gusta cuando nos metemos de lleno al codigo jejeje.

Esta es un clase valiosa, la rapidez con la que programa te ayudar a evaluar tus conocimientos de java

Gente no se mareen tanto con esta y las demas clase q faltan desde aqui.

Ya q no se ve tema como tal sino ya la implementacion final de las clases para terminar el programa osea pura logica de programacion(como el usuario agenda citas y como el doctor agrega fechas disponibles) y conocimiento a fondo de los collections, q como se habran dado cuenta, no se vio mucho, de collections por lo tanto va a ser muy complejo entender lo q sigue.

Mi recomendacion seria investiguen harto de estructuras de datos y como se relacionan con los collections de Java(basicamente los collections es la implementacion de las estructuras de datos pero en Java) una vez q realmente hayan practicado y entendido las Estructuras de Datos, veran q no es tan complejo lo q sigue, como recomendacion antes de hacer toda la carrera de Java Backend en Platzi vean este curso de Harvard de fundamentos de Ciencias de la Computacion CS50x Harvard by the way esta en ingles pero tiene certificacion, espero les sirva

Algo que me di cuenta escribiendo el código de esta clase y me gusto mucho de java es lo fácil que el IDE te indica los errores, siento que el código en java es mucho más predecible que en JavaScript por el tipado, java me está gustando cada vez más.

ay ]Dios

😐

wou java cada vez se pone mas complejo y interesante, sin duda hay q practicar mucho aparte para dominarlo

Si a alguien mas le paso que no le permite acceder a doctor desde ui es por que no tienen importado el paquete correspondiente se hace de la siguiente manera
import model.Doctor;
import model.Patient;

Muy linda clase!!!

Leí muchos que comentaban que les parece una mala clase y que iba muy rápido, no concuerdo porque en realidad es una clase excelente y muy completa. Yo también quedé un poco perdido pero sólo es cuestión de repasar todos estos conocimientos y nos volveremos unos expertos. #NeverStopLearning ❤️

Excelente explicación, todo muy claro.

equals: metodo de la clase Object

Excelente explicación

Para poder entender muy bien si hay que trabajarlo arto, por el uso de todos esos metodos y hay temas que anteriormente se ven pero se dificulta recordarlos, toca recordar mucho
Interesante forma de ver como se hace una authenticación... se que existiran muchas formas de hacerlas, pero en particular me gusto esta que ataca desde el punto inicial... la lógica del negocio...

Interesante login. Saludos Anahí. 😄

Como va muy rápido les recomiendo colocar la velocidad del video en 0.85x

Lo único que no me gusto, es que todo el curso es el mismo ejemplo que va creciendo y creciendo; y honestamente te pierdes y te saturas de información.

Pos en mi opinion no va rapido pero solo que ella ya sabe lo que esta haciendo y nosotros aun lo estamos aprendiendo… Y si queremos aprenderlo bien es necesario repetir la clase cuantas veces sea necesario hasta aprenderlo. Me imagino que los que se quejaban hace 3 años ahora son todos unos profesionales y ahi vamos.

Deberia explicar detalladamente para que sirve lo que esta haciendo. Por ejemplo en el minuto 8:22 cuando empieza a codificar for (Doctor d: doctors), no entiendo para que sirve eso, deberia explicar la sintaxis de ese codigo

Derrame cerebral :v

Validación de código utilizando métodos abstractos.

Si agregamos la misma lógica que hicimos para Doctor y Patient pero ahora para Nurse serían tres if ¿Eso no pinta a código spaghetti? Pienso que esa lógica es mejor resolverla con un switch case, y para desarrolladores Java más avanzados, se puede resolver mejor con reflection.

Sería una mejor práctica implementar el userType como un enum.

Me encantó esta clase, queda mucho más claro cuando la teoría se lleva a la práctica. Creo que varios detalles que antes no había asimilado bien ahora los entendí

Validar el email o un dato dentro de un ciclo como ella lo hace, no me parece correcto, porque es un ciclo infinito si se quiere salir sin digitar el email.

Recomendacion, colocar el video a 0.85 para poder captar la clase. Por cierto muy buna la clase

👾 Los ArrayList nos permiten almacenar datos de forma dinámica, sin la necesidad de declarar su tamaño como en los Arrays.

Un resumen de todo lo que hemos visto hasta el momento.

Super!!

Estupenda clase, por medio de ella comprendemos las características básicas que debe tener una interfaz de inicio de sesión. Solo faltaría ver la prueba en consola para tener una mayor claridad respecto a la simulación.

Buena clase, hay que estudiarla un poco porque al ser una simulación la forma de comprobar el email del usuario es un poco anti intuitiva. Pero bueno, si fuese mas completa ya sería un tema mucho mas avanzado y complejo de entender.

super 😃 mejor practicando

Con el código quedó muy claro.

cuesta crear el código solo muchas veces, pero entender lo que hace la profesora sin necesidad de googlear a cada rato demuestra verdaderamente que se sabe del tema, genial

Es aqui donde me pregunto porque no vimos la POO con un form y una bd, al menos para ingresar estos datos y quizas ahorrarse todo este codigo, finalmente este capitulo me termino confundiendo.

Excelente clase!!

Excelente clase

super clarito

excelente clase

Una clase interesante

me falta mas para dominar el tema de los colecciones.

¡Que tal! Me gusto mucho esta clase, me falta profundizar en varios temas como las interfaces de colección de datos. Adjunto una manera diferente de recorrer los arreglos con FOR para los que les confunde un poco el Foreach, existe esta alternativa “Un clasico”

example.png