Autor Tema: Aprender a hacer diseños orientados a objetos: filosofía de la POO  (Leído 4149 veces)

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
    Cordial Saludo,

    No se si sea reglamentario, "aprovecho para preguntarlo", pero decidi hacer un ejercicio auto formulado para poner en practica lo aprendido y obtener sus como siempre valiosas apreciaciones,

    la verdad como dije anteriormete, el curso incrementa su complejidad y uno tiende a confundirse con todo esto de la POO,

    queria hacer un post super extenso formulando cada duda resultante del ejercicio, pero finalmente decidi "tambien por que se cerro la secion :)" hacer uno mas resumido, solo consistente en lo siguiente:
    • Deje todo comentado como muestra del proceso de desarrollo del ejercicio.
      "iniciaba de una forma luego la cambiaba por otra que creia mejor"
    • Deseo saber si estoy o no incurriendo en el modelo descrito en la siguiente imagen
      como dije tengo dudas mil, y el diagrama de clases muestra que la clase mainUniversidad "usa" a todas las demas clases.
    • desearia "ya que no puedo preguntar de forma hablada", que intuyera algunas de mis iniciales intenciones "Lo comentado" y me diera sus apreciaciones con miras de saber si estoy o no en lo correcto
    • ¿Donde se debe imprimir?, ¿En una clase cualquiera "Matricula en este caso" o el "main"?, "de igual manera imprimi en ambas clases"
    • si se imprime en el main, como debo imprimir la información del estudiante, que debo instanciar? la clase estudiante?"Estudiante.getNombre(),  o la clase matricula que contiene la clase estudiante  y curso instanciadas Matricula().getStudent().getNombre()? "¿Es esto ultimo correcto?.
    • El ejercicio trata de representar la matricula de un curso Universitario, trate de hacer lo mas claro posible, espero sea entendido

    • Clases implemetadas
  • Estudiante
  • Curso
  • Matricula
  • CapturaDatos
  • MainUniversidad
[/b]
[/list]
Codigo

Estudiante

Código: [Seleccionar]
package Universidad;

public class Estudiante{
    //Propiedades
    private String nombre;
    private int edad;
    private String direccion;
    private String telefono;
   
    //Constructor 1
    public Estudiante(){
        this("",0,"","");
       /* nombre = "";
        edad = 0;
        direccion = "";
        telefono = "";*/
    }
    //Constructor 2
    public Estudiante(String valorNombre, int valorEdad, String valorDireccion, String valorTelefono){
        nombre = valorNombre;
        edad = valorEdad;
        direccion = valorDireccion;
        telefono = valorTelefono;
    }
    //Setters
    public void setNombre(String valorNombre){
        nombre = valorNombre;
    }
    public void setEdad(int valorEdad){
        edad = valorEdad;
    }
    public void setDireccion(String valorDireccion){
        direccion = valorDireccion;
    }
    public void setTelefono(String valorTelefono){
        telefono = valorTelefono;
    }
    //Getters
    public String getNombre(){
        return nombre;
    }
    public int getEdad(){
        return edad;
    }
    public String getDireccion(){
        return direccion;
    }
    public String getTelefono(){
        return telefono;
    }
}   

Curso
Código: [Seleccionar]
package Universidad;

public class Curso{
    //varibles
    private String nombre;
    private String tematica;
    private String carrera;
   //Asignamos facultades segun numero (1):Ingenieria (2):Humanidades (3):Medicina (=!):No registrado o invalida
    private int facultad;
   
    //contructor1
    public Curso(){
        this("","","",0);
    }
    //constructor2
    public Curso(String valorNombre, String valorTematica, String valorCarrera, int valorFacultad){
        nombre = valorNombre;
        tematica = valorTematica;
        carrera = valorCarrera;
        facultad = valorFacultad;
    }
    //Setters
    public void setNombre(String valorNombre){
        nombre = valorNombre;
    }
    public void setTematica(String valorTematica){
        tematica = valorTematica;
    }
    public void setCarrera(String valorCarrera){
        carrera = valorCarrera;
    }
    public void setFacultad(int valorFacultad){
        facultad = valorFacultad;
    }
    //Setters
    public String getNombre(){
        return nombre;
    }
    public String getTematica(){
        return tematica;
    }
    public String getCarrera(){
        return carrera;
    }
    public int getFacultad(){
        return facultad;
    }
}

Matricula
Código: [Seleccionar]
package Universidad;


public class Matricula{
    //propiedades
    private int semestre;
    private int año;
    private double nota;
    private Estudiante student;
    private Curso course;
   
    //constructor
   
    public Matricula(){
       // this(0,0,0.0,null,null);
       semestre=0;
       año=0;
       nota=0.0;
       student=null;
       course=null;
    }
    //constructor2
    public Matricula(int valSemestre, int valAño, double valNota, Estudiante objStudent, Curso objCourse){
        semestre = valSemestre;
        año = valAño;
        nota = valNota;
        student = new Estudiante(objStudent.getNombre(), objStudent.getEdad(), objStudent.getDireccion(), objStudent.getTelefono());
        course = new Curso(objCourse.getNombre(), objCourse.getTematica(), objCourse.getCarrera(), objCourse.getFacultad());
    }
    //Setters
    public void setSemestre(int valSemestre){
        semestre = valSemestre;
    }
    public void setAño(int valAño){
        año = valAño;
    }
    public void setNota(double valNota){
        nota = valNota;
    }
    public void setStudent(Estudiante valStudent){
        student = valStudent;
    }
    public void setCourse( Curso valCourse){
        course = valCourse;
    }
    //Getters
    public int getSemestre(){
        return semestre;
    }
    public int getAño(){
        return año;
    }
    public double getNota(){
        return nota;
    }
    public Estudiante getStudent(){
        return student;
    }
    public Curso getCourse(){
        return course;
    }
   
    public void getMatricula(){
        //declaramos variables locales
        String datosMatricula;
        int datoFacultad = course.getFacultad();
        String nomFacultad="";
        //Asignamos facultades segun numero (1):Ingenieria (2):Humanidades (3):Medicina (4):Arquitectura (5):Artes (=!):No registrado o invalida
        if (datoFacultad > 0){
          switch(datoFacultad){
            case 1: nomFacultad ="Ingenieria";
                    break;
            case 2: nomFacultad ="Humanidades";
                    break;
            case 3: nomFacultad ="Medicina";
                    break;
            case 4: nomFacultad ="Arquitectura";
                    break;
            case 5: nomFacultad = "Artes";
                    break;
            default : nomFacultad = "No registrada";
          }
        }else{
            System.out.println("Facultad invalida");
           
        }
        //traemos datos de Estudiante
       
        String nomStudent = student.getNombre();
        int edadStudent = student.getEdad();
        String dirStudent = student.getDireccion();
        String telStudent = student.getTelefono();
       
       
       
       
       
        //Traemos datos de Curso
        String nomCourse = course.getNombre();
        String temaCourse = course.getTematica();
        String carreraCourse = course.getCarrera();
        int facultadCourse = course.getFacultad();
       
        //Mostramos la info
         System.out.println("\n\n");
         System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
         System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
         System.out.println("DATOS DE MATRICULA DEL ESTUDIANTE "+"\"" + nomStudent.toUpperCase() + "\"" + " DE LA FACULTAD DE: "+"\"" + nomFacultad.toUpperCase() +"\"");
         System.out.println("\nNOMBRE: " + nomStudent);
         System.out.println("EDAD: " + edadStudent);
         System.out.println("DIRECCIÓN: " + dirStudent);
         System.out.println("TELEFONO: " + telStudent);
         System.out.println("\n" + "DATOS DE CURSO ");
         System.out.println("NOMBRE: " + nomCourse);
         System.out.println("TEMATICA: " + temaCourse);
         System.out.println("PLAN: " + carreraCourse);
         
         //Mostramos información final
         System.out.println("\n" + "DATOS DE FINAL DE CURSO ");
         System.out.println("AÑO: " + año);
         System.out.println("SEMESTRE: " + semestre);
         System.out.println("NOTA: " + nota);
     
    }
}

CapturaDatos

Código: [Seleccionar]
package Universidad;
import java.util.Scanner;
public class CapturaDatos{
    String datoStr;
    int datoInt;
    double datoDbl;
    Scanner datoIngresado =null;
   
    public String capturaStr(){
         datoIngresado=new Scanner(System.in);
         datoStr = datoIngresado.nextLine();
         return datoStr;
    }
    public int capturaInt(){
        datoIngresado= new Scanner(System.in);
        datoInt = datoIngresado.nextInt();
        return datoInt;
    }
    public double capturaDbl(){
        datoIngresado = new Scanner(System.in);
        datoDbl = datoIngresado.nextDouble();
        return datoDbl;
    } 
   
}

MainUniversidad
Código: [Seleccionar]
package Universidad;
import java.util.Scanner;


public class MainUniversidad{
   
    //METODO MAIN
    public static void main (String[]args){
       
         //DATOS  POR CONSOLA//
               
        //VARIABLES
       
        Estudiante estudiante;
        Curso curso;
        Matricula matricula;
        CapturaDatos capDato;
       
       
        //Llamado de clase para capturar Strings
       
        capDato = new CapturaDatos();
         //////////////////////////////////////////////////////////////
       
        //CAPTURAMOS DATOS DE ESTUDIANTE POR CONSOLA
       
        System.out.println("\nINGRESE DATOS DE ESTUDIANTE: ");
       
        System.out.println("NOMBRE: ");
        //Scanner nomIngresado = new Scanner(System.in);
        String nom = capDato.capturaStr();
        //String nom=nomIngresado.nextLine();
       
        System.out.println("EDAD: ");
        int edad = capDato.capturaInt();
        /*Scanner edadIngresado = new Scanner(System.in);
        int edad=edadIngresado.nextInt();*/
       
        System.out.println("DIRECCION: ");
        //Scanner dirIngresado = new Scanner(System.in);
        //String direccion=dirIngresado.nextLine();
        String direccion = capDato.capturaStr();
       
        System.out.println("TELEFONO: ");
        //Scanner telIngresado = new Scanner(System.in);
        //String telefono=telIngresado.nextLine();
        String telefono = capDato.capturaStr();
        //
       
        //CREAMOS OBJETO ESTUDIANTE
       
       
        /*===================
         * //Constructor Auxiliar
        estudiante = new Estudiante();
       
        //ESTABLECEMOS VALORES PARA VARIABLES DE ESTUDIANTE USANDO METODOS Setters
       
        estudiante.setNombre(nom);
        estudiante.setEdad(edad);
        estudiante.setDireccion(direccion);
        estudiante.setTelefono(telefono); ============*/
       
        //Constructor con parametros
        estudiante = new Estudiante(nom,edad,direccion,telefono);
       
        //OBTENEMOS Y MOSTRAMOS VALORES DE VARIABLES DE ESTUDIANTE USANDO METODOS Getters
        System.out.println("\n");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("LOS DATOS INGRESADOS SON: ");
        System.out.println("NOMBRE: " + estudiante.getNombre());
        System.out.println("EDAD: " + estudiante.getEdad());
        System.out.println("DIRECCION: " + estudiante.getDireccion());
        System.out.println("TELEFONO: " + estudiante.getTelefono()); 
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
       
         //////////////////////////////////////////////////////////////
             
        //CAPTURAMOS DATOS DE CURSO POR CONSOLA
       
           
        System.out.println("\nINGRESE DATOS DE CURSO: ");
         
        System.out.println("NOMBRE: ");
        //Scanner nom2Ingresado = new Scanner(System.in);
        // String nom2=nom2Ingresado.nextLine();
        String nom2 = capDato.capturaStr();
       
        System.out.println("TEMATICA: ");
        //Scanner temaIngresado = new Scanner(System.in);
        //String tema=temaIngresado.nextLine();
        String tema = capDato.capturaStr();
       
        System.out.println("CARRERA: ");
        //Scanner carreraIngresado = new Scanner(System.in);
        //String carrera=carreraIngresado.nextLine();
        String carrera = capDato.capturaStr();
        //Menu de selección para facultad     
        System.out.println("FACULTAD: ");
       
        System.out.println("+MENU:_(Ingrese un numero)+");
        System.out.println("+-------------------------+");
        System.out.println("| Ingenieria:_______ (1)  |");
        System.out.println("| Humanidades:_______(2)  |");
        System.out.println("| Medicina:__________(3)  |");
        System.out.println("| Arquitectura:______(4)  |");
        System.out.println("| Artes:_____________(5)  |");
        System.out.println("+-------------------------+");
        //Scanner facultadIngresado = new Scanner(System.in);
        //int facultad=facultadIngresado.nextInt();
        int facultad = capDato.capturaInt();
       
        //
         //CREAMOS OBJETO CURSO
       
         /*===========================
          *
          //Constructor Auxiliar
        curso = new Curso();
       
        //ESTABLECEMOS VALORES PARA VARIABLES DE CURSO USANDO METODOS Setters
       
        curso.setNombre(nom2);
        curso.setTematica(tema);
        curso.setCarrera(carrera);
        curso.setFacultad(facultad);
         ========================================== */
         
        //Constructor con parametros
       
        curso = new Curso(nom2,tema,carrera,facultad);
       
        //OBTENEMOS Y MOSTRAMOS VALORES DE VARIABLES DE CURSO USANDO METODOS Getters
        System.out.println("\n");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("LOS DATOS INGRESADOS SON: ");
        System.out.println("NOMBRE: " + curso.getNombre());
        System.out.println("TEMA: " + curso.getTematica());
        System.out.println("CARRERA: " + curso.getCarrera());
        System.out.println("FACULTAD: " + curso.getFacultad());
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
       
         //////////////////////////////////////////////////////////////         
         
         //CAPTURAMOS DATOS DE MATRICULA POR CONSOLA
         
        System.out.println("\nINGRESE DATOS DE MATRICULA: ");
         
        System.out.println("SEMESTRE: (1) o (2)");
        //Scanner semIngresado = new Scanner(System.in);
        //int semestre=semIngresado.nextInt();
        int semestre = capDato.capturaInt();
       
        System.out.println("AÑO: ");
        //Scanner añoIngresado = new Scanner(System.in);
        //int año=añoIngresado.nextInt();
        int año = capDato.capturaInt();
       
        System.out.println("NOTA: ");
        //Scanner notaIngresado = new Scanner(System.in);
        //double nota=notaIngresado.nextDouble();
        double nota = capDato.capturaDbl();       
        //CREAMOS OBJETO MATRICULA
        /*============================
        //Constructor Auxiliar
        matricula = new Matricula();
        //ESTABLECEMOS VALORES PARA VARIABLES DE MATRICULA USANDO METODOS SETTERS
        matricula.setSemestre(semestre);
        matricula.setAño(año);
        matricula.setNota(nota);
        matricula.setStudent(estudiante);
        matricula.setCourse(curso);
        ========================================*/
       
        //Constructor con parametros
       
        matricula = new Matricula(semestre,año,nota,estudiante,curso);
       
         //OBTENEMOS Y MOSTRAMOS VALORES DE VARIABLES DE MATRICULA USANDO METODOS Getters
        System.out.println("\n");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("LOS DATOS INGRESADOS SON: ");
        System.out.println("SEMESTRE: " + matricula.getSemestre());
        System.out.println("AÑO: " + matricula.getAño());
        System.out.println("NOTA: " + matricula.getNota());
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        //LLAMAMOS AL METODO getMatricula
       
        matricula.getMatricula();   
    }
   
}

« Última modificación: 26 de Febrero 2015, 08:53 por Mario R. Rancel »
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:Aprender a hacer diseños orientados a objetos: filosofía de la POO
« Respuesta #1 en: 26 de Febrero 2015, 08:59 »
Hola MrClassic, he revisado tu ejercicio y en primer lugar felicitarte porque se ve un buen trabajo. Te voy a hacer distintas apreciaciones para tratar de animarte a mejorar:


[ Deje todo comentado como muestra del proceso de desarrollo del ejercicio. "iniciaba de una forma luego la cambiaba por otra que creia mejor" ]

Estos comentarios sobre cosas que pensaste pero luego cambiaste es preferible no presentarlos a la hora de entregar un ejercicio o ejemplo. Se entiende que siempre que se crea código hay un proceso de cambio y de mejora progresivo, y el trabajo se evalúa en base al código final, no en base a lo que se haya ido pensando a lo largo del proceso de creación del código.

Por ejemplo esto:

        this("",0,"","");
       /* nombre = "";
        edad = 0;
        direccion = "";
        telefono = "";*/

El this está muy bien usado. No hace falta ver el comentario, si usas el this de esa manera (y lo has creado tú mismo, sin copiarlo desde ningún sitio) ya estás demostrando un mejor nivel de programación.

[ Deseo saber si estoy o no incurriendo en el modelo descrito en la siguiente imagen como dije tengo dudas mil, y el diagrama de clases muestra que la clase mainUniversidad "usa" a todas las demas clases. ]

En general sí estás haciendo un buen uso del modelo de programación orientada a objetos

Pero la imagen que describe el modelo de la programación orientada a objetos es esta:


El método main no es el centro de atención, simplemente "pone en juego a los objetos"


Voy a hacer una revisión de clases una a una:

Clase Estudiante: todo bien

Clase Curso: todo bien

Clase Matricula: está muy bien planteada y de acuerdo con la filosofía de la orientación a objetos. Una matrícula es una relación de un estudiante con un curso y consta de algunos atributos propios, de un objeto estudiante y de un objeto curso. ¡Ahí estás haciendo un buen uso de los objetos!

Los métodos get de atributos objetos devuelven objetos -- > bien

Método getMatricula: este método podemos decir que no está bien planteado por varios motivos, pero son cuestiones que irás aprendiendo a medida que vayas avanzando en el estudio de Java. Te digo que no está bien planteada porque:

a) Un método get suele ser un método tipo función, por tanto que devuelve algo con return. Este método no devuelve nada.

b) Cada clase debe tener sus responsabilidades. La clase responsable de almacenar la facultad es la clase curso, por tanto debería ser esta clase quien dispusiera de un método que diga el nombre de la facultad. En el código que has planteado esta responsabilidad la tiene switch(datoFacultad){ dentro de getMatricula, y esto no es adecuado. Yendo más allá, posiblemente hubiera sido adecuado crear una clase Facultad, pero tanto si se crea como si no, no sería apropiado tener ese switch dentro de la clase Matricula.

c) Un método como el getMatricula debería llamarse mostrarDatosMatricula

d) Un método como getMatricula debería posiblemente ser un método sobreescrito toString(), pero para esto necesitas avanzar en la programación Java para comprender qué es, para qué sirve y cómo se utiliza el método toString()



Clase CapturaDatos: todo bien. Teniendo en cuenta que las clases son el molde para crear objetos, no es un nombre adecuado. Sería más adecuado CapturadorDeDatos. De esta forma podemos decir que "hemos creado un objeto capturador de datos" y no "un objeto captura datos"

Clase MainUniversidad: bien

Este fragmento:

Código: [Seleccionar]
        //OBTENEMOS Y MOSTRAMOS VALORES DE VARIABLES DE ESTUDIANTE USANDO METODOS Getters
        System.out.println("\n");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("LOS DATOS INGRESADOS SON: ");
        System.out.println("NOMBRE: " + estudiante.getNombre());
        System.out.println("EDAD: " + estudiante.getEdad());
        System.out.println("DIRECCION: " + estudiante.getDireccion());
        System.out.println("TELEFONO: " + estudiante.getTelefono()); 
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

Está mostrando los datos de un estudiante, pero esto no debe ser responsabilidad de la clase del main, deberías tener un método dentro de la clase estudiante para hacer esto, y en el main simplemente invocar este método.

Lo mismo cuando muestras los datos de los cursos y de las matrículas. Esto debería ser responsabilidad de cada clase, no del main.


[ desearia "ya que no puedo preguntar de forma hablada", que intuyera algunas de mis iniciales intenciones "Lo comentado" y me diera sus apreciaciones con miras de saber si estoy o no en lo correcto ]

Sí, todo lo que se ve comentado ha sido mejorado. Por ejemplo

Código: [Seleccionar]
          //Constructor Auxiliar
        curso = new Curso();
       
        //ESTABLECEMOS VALORES PARA VARIABLES DE CURSO USANDO METODOS Setters
       
        curso.setNombre(nom2);
        curso.setTematica(tema);
        curso.setCarrera(carrera);
        curso.setFacultad(facultad);
         ========================================== */
         
        //Constructor con parametros
       
        curso = new Curso(nom2,tema,carrera,facultad);

¡Muy bien! Estás haciendo en una línea lo que antes hacías en cinco


[ ¿Donde se debe imprimir?, ¿En una clase cualquiera "Matricula en este caso" o el "main"?, "de igual manera imprimi en ambas clases" ]

Creo que ya he comentado que cada clase debe ocuparse de sus cosas.



[ si se imprime en el main, como debo imprimir la información del estudiante, que debo instanciar? la clase estudiante?"Estudiante.getNombre(),  o la clase matricula que contiene la clase estudiante  y curso instanciadas Matricula().getStudent().getNombre()? "¿Es esto ultimo correcto?. ]

Sí, esto último es correcto. Normalmente dispondrás del objeto Matricula y a lo mejor no conoces o no tienes visibilidad el objeto estudiante, excepto si accedes a él a través de la matrícula.

Nota: largas cadenas de llamadas no se consideran adecuadas, por ejemplo pais.getRegion().getProvincia().getCiudad().getFacultad().getMatricula().getEstudiante indicaría que algo no se está haciendo bien.


[ El ejercicio trata de representar la matricula de un curso Universitario, trate de hacer lo mas claro posible, espero sea entendido ]


El ejercicio está bien planteado y el diseño es bueno, podrás mejorarlo si sigues estudiando y practicando, pero te felicito por el trabajo.

Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".