elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [65] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 ... 139
641  Seguridad Informática / Bugs y Exploits / Re: Mejor RAT para Android (pregunta) en: 4 Abril 2019, 22:31 pm
Alguien me recomendaría un rat para android que no sea con msfvenom o AhMyth?

JSocket
642  Programación / Java / Re: MVC Java con Base de Datos en: 4 Abril 2019, 19:02 pm
Estás obteniendo los Strings de los JTextFields y guardando cada uno en los índices del array de String datosTabla, para luego setearlos al DefaulTableModel de la JTable

El método getText() es de los JTextFields que son los inputs, componentes de javax.swing

Mírate aquí el método tabla()


https://foro.elhacker.net/java/evitar_duplicados_en_jtable-t493847.0.html
643  Programación / Java / Re: Duda sobre combinar métodos de una clase en otra en: 4 Abril 2019, 11:03 am
En el constructor de la clase Celular puedes añadir un parámetro tipo Calculadora, o un setter.

Vía herencia también. Cuando llegue a la casa te ayudo más estoy en la caverna del curro.




Bien aquí vamos, vamos a usar Herencia con la palabra reservada extends en la clase Celular

Otra vía es por medio de interfaces

    Investigar
    • herencia simple de clases
    • Uso de super
    • Modificador de acceso protected

    [/list]
    Código
    1. package foro;
    2. import java.lang.Math.*;
    3. import java.util.logging.Logger;
    4.  
    5. /**
    6.  * Clase Calculadora
    7.  */
    8. public class Calculadora {
    9.  
    10.    private String marca;
    11.    private String modelo;
    12.    private String sistemaOperativo;
    13.    private String versionSistemaOperativo;
    14.  
    15.    public static final Logger LOGGER = Logger.getLogger(ProyectoCelular.class.getSimpleName());
    16.  
    17.    public Calculadora() {
    18.        super();
    19.    }
    20.  
    21.    public Calculadora(String marca, String modelo, String sistemaOperativo, String versionSistemaOperativo) {
    22.        this.marca = marca;
    23.        this.modelo = modelo;
    24.        this.sistemaOperativo = sistemaOperativo;
    25.        this.versionSistemaOperativo = versionSistemaOperativo;
    26.    }
    27.  
    28.    /**
    29.      *
    30.      * @param a
    31.      * @param b
    32.      * @return La suma entre a y b
    33.      */
    34.    public float sumar(float a, float b) {
    35.        return a + b;
    36.    }
    37.  
    38.    /**
    39.      *
    40.      * @param a
    41.      * @param b
    42.      * @return La resta entre a y b
    43.      */
    44.    public float restar(float a, float b) {
    45.        return a - b;
    46.    }
    47.  
    48.    /**
    49.      *
    50.      * @param a
    51.      * @param b
    52.      * @return La multiplicación entre a y b
    53.      */
    54.    public double multiplicar(double a, double b) {
    55.        if (a == 0 || b == 0) {
    56.            return 0;
    57.        } else {
    58.            return a * b;
    59.        }
    60.    }
    61.  
    62.    /**
    63.      *
    64.      * @param a
    65.      * @param b
    66.      * @return La división entre a y b
    67.      */
    68.    public double dividir(float a, float b) {
    69.        return a / b;
    70.    }
    71.  
    72.    /**
    73.      *
    74.      * @param n
    75.      * @return El factorial de un numero
    76.      */
    77.    public int factorial(int n) {
    78.        if (n < 1) {
    79.            return 1;
    80.        } else {
    81.            return n * factorial(n - 1);
    82.        }
    83.    }
    84.  
    85.    /**
    86.      * @return the marca
    87.      */
    88.    public String getMarca() {
    89.        return marca;
    90.    }
    91.  
    92.    /**
    93.      * @param marca the marca to set
    94.      */
    95.    public void setMarca(String marca) {
    96.        this.marca = marca;
    97.    }
    98.  
    99.    /**
    100.      * @return the modelo
    101.      */
    102.    public String getModelo() {
    103.        return modelo;
    104.    }
    105.  
    106.    /**
    107.      * @param modelo the modelo to set
    108.      */
    109.    public void setModelo(String modelo) {
    110.        this.modelo = modelo;
    111.    }
    112.  
    113.    /**
    114.      * @return the sistemaOperativo
    115.      */
    116.    public String getSistemaOperativo() {
    117.        return sistemaOperativo;
    118.    }
    119.  
    120.    /**
    121.      * @param sistemaOperativo the sistemaOperativo to set
    122.      */
    123.    public void setSistemaOperativo(String sistemaOperativo) {
    124.        this.sistemaOperativo = sistemaOperativo;
    125.    }
    126.  
    127.    /**
    128.      * @return the versionSistemaOperativo
    129.      */
    130.    public String getVersionSistemaOperativo() {
    131.        return versionSistemaOperativo;
    132.    }
    133.  
    134.    /**
    135.      * @param versionSistemaOperativo the versionSistemaOperativo to set
    136.      */
    137.    public void setVersionSistemaOperativo(String versionSistemaOperativo) {
    138.        this.versionSistemaOperativo = versionSistemaOperativo;
    139.    }
    140.  
    141.    @Override
    142.    public String toString() {
    143.        final StringBuilder sb = new StringBuilder("\nCalculadora");
    144.        sb.append("\nmarca='").append(marca).append("\n");
    145.        sb.append(", modelo='").append(modelo).append("\n");
    146.        sb.append(", sistemaOperativo='").append(sistemaOperativo).append("\n");
    147.        sb.append(", versionSistemaOperativo='").append(versionSistemaOperativo).append("\n");
    148.        return sb.toString();
    149.    }
    150. }
    151.  

    Cuando establecemos herencia, de una clase con un constructor definido como el tuyo, debemos invocarlo con super() y si tiene parámetros setearselos
    en este caso la clase celular tiene 2 atributos propios de ella, el color y precio, entonces, bastaría con dejar los setters/getters de color y precio, ya que los otros se heredan

    La visibilidad de los atributos/variables de instancia, siendo protected tendrán visibilidad en el mismo paquete, para verlas desde otro paquete deben ser publicas, pero por convención en java, deberían ser en lo posible declaradas como private, accediendo a ellas via getters



    Código
    1. package foro;
    2.  
    3. /**
    4.  * Clase Celular
    5.  */
    6. public class Celular extends Calculadora { // extendemos a Calculadora
    7.  
    8.    //private String marca;
    9.    //private String modelo;  // estas dos variables no hacen falta, porque se heredan tambien
    10.    private String  color;
    11.    private double precio;
    12.  
    13.    /**
    14.      * Nuevo constructor vacio
    15.      */
    16.    public Celular() {
    17.        super(); // super invoca al constructor de la clase Calculadora
    18.    }
    19.  
    20.    public Celular(String marca, String modelo, String color, double precio, String sistemaOperativo, String versionSistemaOperativo) {
    21.        /**
    22.          * con este super invocamos al constructor de la clase Calculadora, seteandole los parametros
    23.          * correspondientes chavalina.
    24.          */
    25.        super(marca,modelo, sistemaOperativo,versionSistemaOperativo);
    26.        this.color = color;
    27.        this.precio = precio;
    28.    }
    29.  
    30.    /**
    31.      * @return the marca
    32.      */
    33.    public String getMarca() {
    34.        return marca;
    35.    }
    36.  
    37.    /**
    38.      * @param marca the marca to set
    39.      */
    40.    public void setMarca(String marca) {
    41.        this.marca = marca;
    42.    }
    43.  
    44.    /**
    45.      * @return the modelo
    46.      */
    47.    public String getModelo() {
    48.        return modelo;
    49.    }
    50.  
    51.    /**
    52.      * @param modelo the modelo to set
    53.      */
    54.    public void setModelo(String modelo) {
    55.        this.modelo = modelo;
    56.    }
    57.  
    58.    /**
    59.      * @return the color
    60.      */
    61.    public String getColor() {
    62.        return color;
    63.    }
    64.  
    65.    /**
    66.      * @param color the color to set
    67.      */
    68.    public void setColor(String color) {
    69.        this.color = color;
    70.    }
    71.  
    72.    /**
    73.      * @return the precio
    74.      */
    75.    public double getPrecio() {
    76.        return precio;
    77.    }
    78.  
    79.    /**
    80.      * @param precio the precio to set
    81.      */
    82.    public void setPrecio(double precio) {
    83.        this.precio = precio;
    84.    }
    85.  
    86.    @Override
    87.    public String toString() {
    88.        final StringBuilder sb = new StringBuilder();
    89.        sb.append(super.toString());
    90.        sb.append("\ncolor='").append(color).append("\n");
    91.        sb.append(", precio=").append(precio);
    92.        return sb.toString();
    93.    }
    94. }
    95.  

    Código
    1. package foro;
    2.  
    3.  
    4. public class ProyectoCelular {
    5.  
    6.    public static void main(String[] args) {
    7.        // Esto es el main todavia no lo terminé
    8.  
    9.        final Celular celular = new Celular();
    10.        /**
    11.          * Configurando por medio de setters NO-THREAD-SAFE
    12.          */
    13.        celular.setColor("Rojo");
    14.        celular.setMarca("Samsung");
    15.        celular.setModelo("I9300");
    16.        celular.setPrecio(200);
    17.        celular.setSistemaOperativo("Android KitKat");
    18.        celular.setVersionSistemaOperativo("4.4.4");
    19.  
    20.        /**
    21.          * Todos ellos retornan un valor
    22.          * que puedes mostrar con la consola o logger, logger es lo mas correcto
    23.          */
    24.        celular.factorial(2);
    25.        celular.dividir(2,3);
    26.        celular.sumar(2,3);
    27.        celular.restar(5,1);
    28.        celular.multiplicar(5,5);
    29.  
    30.        Calculadora.LOGGER.info(celular.toString());
    31.    }
    32.  
    33. }
    34.  


    Estamos en presencia de un constructor telescópico, muchos parámetros a veces difícil de usar, coste de mantenimiento, legibilidad etc, patrón Builder es la solución.

    A simple vista pensarías, bueno me creo otro constructor y le añado parámetros, pero vienes de nuevo y añades otro y así, nunca terminara, o este mismo contructor añadirle mas parámetros.

    O la típica vía de usar setters, NO-THREAD-SAFE, es decir no Inmutable(Como String, StringBuffer, la api LocalDate del paquete java.time), si usas ese bean en un Thread podrian pasar cosas raras y difíciles de resolver.  >:D tema que, podemos tratar luego.

     

    Código
    1. public Celular(String marca, String modelo, String color, double precio, String sistemaOperativo, String versionSistemaOperativo) {
    2.        /**
    3.          * con este super invocamos al constructor de la clase Calculadora, seteandole los parámetros
    4.          * correspondientes chavalina.
    5.          */
    6.        super(marca,modelo, sistemaOperativo,versionSistemaOperativo);
    7.        this.color = color;
    8.        this.precio = precio;
    9.    }

    Recuerda retomar este hilo y estudiarlo bien , donde tienes otro ejemplo de herencia https://foro.elhacker.net/java/metodo_mostrar_todos_los_atributos_de_un_objeto_por_pantallaresuelto-t494141.0.html


    En la clase Celular te puse unos bugs que debes de resolver, recuerda que hay métodos en la clase Celular que no te hacen falta, es decir, puedes quitarlos, debido a que los heredas
    644  Programación / Java / Re: pequeñas dudas de java en: 4 Abril 2019, 10:58 am
    Hola chicos, como puedo aprender mas rapido Java? que quiere decir cuando creo un metodo dentro de una clase principal como public static void me lo toma cuando lo llamo desde el main de esa clase pero cuando lo declaro como public void no me lo toma?


    Leete un buen libro como deitel, saber buscar en Google,aprende bien lo básico pero bien.

    Aquí coloque varios libros en Manuela de Java de Java

    Y con respecto a los métodos estaticos y de objetos pues, es que ambos funcionan distinto. en el main puedes invocar a métodos estaticos, y los metodos no estaticos por medio de una Objeto creado que pueda invocar a su método correspondiente.

    Y eso se da porque el metodo main es estatico en si.

    Cosa distinta en un contructor, que puedes invocar sin mucho problema, muchos frameworks no tienen como entrypoint a el metodo main, sino que usan otros, y tambien contructores  ;D
    645  Programación / Java / Re: Juego de la vida - Simulacion en Java en: 1 Abril 2019, 01:10 am
    Puedes hacerlo de modo procedimental o con clases, a tu gusto...

    Si lo haces con clases, por ejemplo crearía una clase 'tablero', en el constructor se recibe las filas y columnas (o cantidad) si ambos valores serán iguales.
    También un parámetro para indicar cuandos e considera el mundo muerto, es decir si hay 25x25 casillas (625 células, podría consdierarse muerto (por ejemplo), si quedna menos de 50), un valor de cero o menor, podría indicar que vive mientras queden células vivas...
    Acto seguido se crea un array bidimensional de  NxM casillas...
    Código:
    int Filas, Columnas, MundoMuere

    funcion New(int F, int C, int MM)
        filas = f
        columnas = C
        Si (MM < 0) luego MM=0)
        MundoMuere = MM

        dimensionar Mapa(filas, columnas)
    fin funcion
    ó:
    Código:
    funcion New(int Casillas)



    Una enumeración de 2-3 estados. Celula viva = '*' , célula muerta = ' ', celula 'enferma' = '-' (caso de que quisieras complicarlo y que una célula necesitara x estados (por ejemplo 1, y al siguiente muere) seguidos de transición por debajo del umbral de vida). es decir si no tiene los vecinos esperados y está viva, enferma, pero si está enferma muere.
    Código:
    enumeración EstadoCelula
       ESTADO_VIVA = 0
       ESTADO_ENFERMA = 1  ' de 1 a 8, podría alojar 8 transiciones antes de morir, o pasar directamente del 1 al 9, o del 0 al 9
       ESTADO_MUERTA = 9
    FIN ENUMERACION

    Un array con los valores a dibujar (char/string)
    Código:
    char  representa(0 a 9)
    // con estos valores
        representa(0) = "*"  // viva
        representa(1) = "-"  //enferma
        // representa(2) = "-"
        //...  si se prefieriese dibujar estados de enfermedad diferentes o todos con '1'
        representa(9) = " " //muerta
     // tambén se puede hacer otro array con colores, para dibujar de diferente color vivas de 'enfermas'.

    Otra enumeración de los valores de transicion:
    (Tu pon los valores que quieras, de hecho es bueno modificarlos, para ver como se comporta).
    Código:
    enumeracion Transicion
        TR_MUERE_INANICION = 1 // con 3 o menos células muere.
        // TR_VIVE = 2,3,4,5,6  / se entiende que viven con el rango dentro de ambos extremos.
        TR_MUERE_SOBREPOBLACION = 7
    fin enumeracion

    Una estructura retiene el estadO (de esos valores enumerados) y el recuento de vecinos.
    Código:
    Estructura DatosDeCelula
        EstadoCelula Estado
        Transicion NumVecinos
    fin estructura

    Array de DatosDeCelula Mapa()


    Una función se encarga de contar los vecinos, para cada célula:
    Código:
    Funcion ContarVecinos() 
        int i, j, k, n

        bucle para j desde 0  a filas-1
            bucle para k desde 0 a Columnas -1
                Mapa(j,k).Vecinos = ContarMisVecinos(j,k)
            siguiente
        siguiente
    fin funcion

    // contar los vecinos para esta célula...
    Transicion = funcion ContarMisVecinos(int fila, int Columna)  
        int x, y, w, h
        int j, k
        Transicion vecinos

        Si (fila <2)    // tiene 1 o 0 vecinos a la izquierda
             x = 0
             w = fila + 2
        Si (fila > filas-3)  // tiene 1 ó 0 vecinos a la derecha
             x= fila - 2
             w = filas -1
        sino
             x= fila - 2
             w = fila + 2
        fin si

        Si (columna <2)    // tiene 1 o 0 vecinos arriba
             y = 0
             h = columna + 2
        Si (columna > Columnas-3)  // tiene 1 ó 0 vecinos abajo
             y = columna - 2
             h = columnas -1
        sino
             y = columna - 2
             h = columna + 2
        fin si

        bucle para j desde y hasta h
            bucle para k desde x hasta w
                Si (mapa(j,k).estado = ESTADO_VIVA ) luego  vecinos +=1
            siguiente
        siguiente

        devolver vecinos
    fin funcion

    Luego otra función que actualice el estado en base a sus vecinos:
    Código:
    funcion UpdateMapa
        int j, k, vivas

        bucle para j desde 0 a filas -1
            bucle para k desde 0 hasta columnas -1
                si (Mapa(j,k).vecinos <= TR_MUERE_INANICION)
                o si (Mapa(j,k).vecinos <= TR_MUERE_SOBREPOBLACION)  // es una sola línea con la anterior, queda cortada en 2 por ser larga...
                    mapa(j,k).estado = ESTADO_MUERTA
                si no  // hay que señalarla viva, porque antes podría estar muerta
                    mapa(j,k).estado = ESTADO_VIVA
                    vivas +=1
                fin si

                // char que representa el estado, fila, columna, color
                Dibujar(representa(mapa(j,k).estado ) ,j, k , color)
            siguiente
        siguiente

        Si (vivas <= MundoMuere) luego
            finpartida // no quedan células suficientes...
        fin si
    fin funcion

    Y una función dibujar para dibujar cada casilla (si no es muy complejo lo que deba hacer, puede subsumirse en la función anterior... (en 'dibujar...').

    Básicamente eso es lo principal, generar las células al azar al comienzo de la partida, y algún otro detalle resulta ya nimio...

    p.d.: Se me olvidada... al contar los vecinos, debe descontarse 1, si la célula en cuestión esta 'viva' (ella no debe contarse como su vecina). Es más fácil el doble bucle sin considerarla y luego descontarla que filtrarlo en el propio bucle (pués sucede 1 de las hasta 9 veces por cada casilla).

    Interesante respuesta doc, vere si tengo un tiempo para mudarlo a Java  >:D
    646  Programación / Java / Re: Suma de dos matrices - Me devuelve "[[D@7d4991ad" en: 1 Abril 2019, 00:30 am
    Casi casi lo tiene dog  :xD, recorrer con doble ciclo for como haces con el método suma, porque debes recorrer cada indice, me da aburrimiento máximo llenarla, pero aleatoria nom y así ahorras tiempo en desarrollo, no apto para produccion  :xD

    Pero me imagino que entiendes no? ejemplo las coordenada [0,0] de la matris1 se sumara con la [0,0] de la matris 2 y asi

    Código
    1. public class Bidimensional {
    2.  
    3. private double[][] matriz;
    4. private int renglones;
    5. private int columnas;
    6. private static final SecureRandom SR = new SecureRandom();
    7. private static final DecimalFormat TWO_DIGITS = new DecimalFormat("#.##");
    8.  
    9. public Bidimensional(int renglones, int columnas) { // constructor y pido el ingreso de valores a matrices
    10. Scanner entrada = new Scanner(System.in);
    11. this.matriz = new double [renglones][columnas];
    12.  
    13. for(int i=0 ; i<renglones; i++)
    14. {
    15. for(int j=0; j<columnas; j++) {
    16. matriz[i][j]= Double.valueOf(TWO_DIGITS.format(1 + SR.nextDouble()));
    17. System.out.print("Ingresar el numero de matriz ["+i+":"+j+"]: ");
    18. System.out.println(matriz[i][j]);
    19.  
    20. }
    21. }
    22. }
    23.  
    24. public double[][] suma(Bidimensional m2) // operacion de suma
    25. {
    26. for(int i=0; i<2; i++) {
    27. for(int j=0; j<2; j++)
    28. {
    29. matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
    30. }
    31. }
    32.  
    33. return matriz;
    34. }
    35.  
    36.        public double format(final double num) {
    37.            return Double.valueOf(TWO_DIGITS.format(num).replace(",", "."));
    38.        }
    39.  
    40. public static void main(String ...blalba) {
    41.  
    42. final Bidimensional matris = new Bidimensional(2,2);
    43. final Bidimensional matris2 = new Bidimensional(2,2);
    44.  
    45. final double[][] resultado = matris.suma(matris2);
    46. //Recorrer el Array de doble dimension, con java 8, java 7 usa doble for
    47. Arrays.stream(resultado)
    48. .flatMapToDouble(Arrays::stream)
    49.                                .map(this::format)
    50. .forEach(System.out::println);
    51.  
    52. }
    53. }

    Código
    1. Ingresar el numero de matriz [0:0]: 1.32
    2. Ingresar el numero de matriz [0:1]: 1.8
    3. Ingresar el numero de matriz [1:0]: 1.62
    4. Ingresar el numero de matriz [1:1]: 1.71
    5. Ingresar el numero de matriz [0:0]: 1.53
    6. Ingresar el numero de matriz [0:1]: 1.6
    7. Ingresar el numero de matriz [1:0]: 1.6
    8. Ingresar el numero de matriz [1:1]: 1.57
    9. 2.85
    10. 3.4
    11. 3.22
    12. 3.28
    13.  
    14. Process finished with exit code 0

    Tambien te sirve asi, y cualquier otra manera que funcione XD

    Código
    1. public double[][] suma(Bidimensional m2) // operacion de suma
    2. {
    3. for(int i=0; i<matriz.length; i++) {
    4. for(int j=0; j<m2.matriz[i].length; j++)
    5. {
    6. matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
    7. }
    8. }
    9.    return matriz;
    10. }

    Y asi


    Código
    1. for(int i=0; i<matriz.length; i++) {
    2.  for(int j=0; j<matriz[i].length; j++) {
    3. matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
    4.  }
    5. }
    647  Programación / Java / Re: Metodo mostrar todos los atributos de un objeto por pantalla(RESUELTO) en: 30 Marzo 2019, 18:37 pm
    No deberias gastar tiempo en escribir los getters / setters o el metodo toString(). Los editores deberian hacerlo por ti. IntelliJ lo hace, al menos.

    Otra alternativa es ni siquiera escribir el codigo, sino anotar la clase y que magicamente esos metodos se escriban y existan aunque no los veas. AutoValue y Lombok son 2 exponentes de esto.

    Magicamente? o gracias a Reflection vía anotaciones? generando codigo en runtime, la chavala esta aprendiendo, por eso mi ejemplo.

    Aunque me falto decirle eso. yo genere getters/setters/toString() con intelliJIDea, eclipse también lo hace, netBeans me imagino que también debería.

    @CalgaryCorpus seria bueno que le pusieras un ejemplo de Project Lombok para que la ayudes.

    Y de paso ah dia de hoy grandes Frameworks webs de java, potentes, tienen su implementacion de toString() sin api de terceros como lombok entre otras, de paso que toString() sirve para no mostrar el codigo hash directamente a alguien que espie dichos objetos.
     


    @Beginner Web , creas las variables de instancia que quieras, luego, teclas Alt + insertar, debería aparecerte este cuadro de contexto con las opciones que se muestran, no aparece toString() porque ya lo use, versión de NetBeans que tengo

        * Product Version: NetBeans IDE 8.2 (Build 201610071157)



    648  Programación / Java / Re: Metodo mostrar todos los atributos de un objeto por pantalla(RESUELTO) en: 30 Marzo 2019, 14:50 pm
    //Este es una clase
    public class Persona{
    private String nombre;
    private int edad;

    Constructor va aquí
    Getters & Setters aquí
    }

    //Este es el main
    public class Personal{

    public static void main(){
    Persona objeto1=new Persona("Ana",14);

    //Esto es algo tedioso de hacer varios objetos de distintas clases
    //Podia crear un metodo en la clase Persona que muestre todo, pero quiero saber si hay otra técnica por defecto
    sout para mostrar el nombre de objeto1;
    sout para mostrar la edad de objeto1;

    }

    }


    Me parece que me conviene crear metodos en las clases para pedir los datos y otro para mostrarlos asi escribo menos en el main


    Que tal chavalina? Usa Geshi



    Si hay mejores maneras de hacerlo por ejemplo una, lo que necesitas es algo de herencia simple

    Código
    1. import java.util.logging.Logger;
    2.  
    3. /**
    4.  *
    5.  */
    6. @FunctionalInterface
    7. public interface IPersonal {
    8.  
    9.    Logger LOGGER =Logger.getLogger(IPersonal.class.getSimpleName());
    10.  
    11.    void introducirDatos();
    12.  
    13.    default <T> void mostrar(final T value) {
    14.        System.out.println(value);
    15.    }
    16.  
    17.    /**
    18.      * usar dentro de un metodo estatico
    19.      * @param value
    20.      * @param <T>
    21.      */
    22.    static <T> void mostrar2(final T value) {
    23.        System.out.println(value);
    24.    }
    25.  
    26.    default <T> void log(final T t) {
    27.        LOGGER.severe(t.toString());
    28.    }
    29.  
    30.    /**
    31.      * usar dentro de un metodo estatico
    32.      * @param t
    33.      * @param <T>
    34.      */
    35.    static <T> void log2(final T t) {
    36.        LOGGER.severe(t.toString());
    37.    }
    38. }
    39.  

    Código
    1. import java.util.Objects;
    2. import java.util.Scanner;
    3.  
    4. /**
    5.  *
    6.  */
    7. public abstract class AbstractBasePersona implements IPersonal {
    8.  
    9.    protected String nombre;
    10.    protected int edad;
    11.    protected static final Scanner LEER = new Scanner(System.in);
    12.  
    13.    public AbstractBasePersona() {
    14.        this.edad = 0;
    15.        this.nombre = "";
    16.    }
    17.  
    18.    public AbstractBasePersona(final String nombre, final int edad) {
    19.        this.nombre = Objects.requireNonNull(nombre,"Nombre no debe ser null");
    20.        this.edad = Objects.requireNonNull(edad,"Edad no debe ser null");
    21.    }
    22.  
    23.    public String getNombre() {
    24.        return nombre;
    25.    }
    26.  
    27.    public void setNombre(String nombre) {
    28.        this.nombre = nombre;
    29.    }
    30.  
    31.    public int getEdad() {
    32.        return edad;
    33.    }
    34.  
    35.    public void setEdad(int edad) {
    36.        this.edad = edad;
    37.    }
    38.  
    39.    @Override
    40.    public void introducirDatos() {
    41.        mostrar("Introduce nombre: ");
    42.        nombre = LEER.next();
    43.        //bug scanner
    44.        LEER.nextLine();
    45.        mostrar("Introduce edad");
    46.  
    47.        while(!LEER.hasNextInt()) {
    48.            LEER.next();
    49.            mostrar("Valor invalido!, solo numeros");
    50.        }
    51.        edad = LEER.nextInt();
    52.  
    53.    }
    54.  
    55.    @Override
    56.    public String toString() {
    57.        final StringBuilder sb = new StringBuilder("\nPersona");
    58.        sb.append("\nNombre: ").append(nombre).append("\n");
    59.        sb.append("Edad: ").append(edad);
    60.        return sb.toString();
    61.    }
    62.  
    63.  
    64. }
    65.  
    66.  

    Código
    1. public class PersonalDeInformatica extends AbstractBasePersona {
    2.  
    3.    private boolean esDeInformatica;
    4.  
    5.    public PersonalDeInformatica() {
    6.        super();
    7.    }
    8.  
    9.    public PersonalDeInformatica(final String nombre,final int edad, boolean esDeInformatica) {
    10.        super(nombre,edad);
    11.        this.esDeInformatica = esDeInformatica;
    12.    }
    13.  
    14.    @Override
    15.    public void introducirDatos() {
    16.        /**
    17.          * Introducir los datos basicos por defecto, Nombre y Edad
    18.          */
    19.        super.introducirDatos();
    20.  
    21.        // pedimo si es personal de informatica
    22.  
    23.        mostrar("Personal del Informtica ?");
    24.        esDeInformatica = LEER.nextBoolean();
    25.  
    26.        //setemos el tipo de persona
    27.        setEsDeInformatica(esDeInformatica);
    28.    }
    29.  
    30.    public boolean isEsDeInformatica() {
    31.        return esDeInformatica;
    32.    }
    33.  
    34.    public void setEsDeInformatica(boolean esDeInformatica) {
    35.        this.esDeInformatica = esDeInformatica;
    36.    }
    37.  
    38.    @Override
    39.    public String toString() {
    40.        final StringBuilder sb = new StringBuilder();
    41.        sb.append(super.toString());
    42.        sb.append("\nEs de informatica ? ").append(esDeInformatica);
    43.        return sb.toString();
    44.    }
    45. }
    46.  
    47.  

    Código
    1. /**
    2.  *
    3.  */
    4. public class PersonalDeLimpieza extends AbstractBasePersona {
    5.  
    6.    private boolean esDeLimpieza; //por defecto la variable de instancia boolean, es false
    7.  
    8.    public PersonalDeLimpieza() {
    9.        super();
    10.    }
    11.  
    12.    public PersonalDeLimpieza(final String nombre, final int edad, final boolean esDeLimpieza) {
    13.        super(nombre,edad);
    14.        this.esDeLimpieza = esDeLimpieza;
    15.    }
    16.  
    17.    public boolean isEsDeLimpieza() {
    18.        return esDeLimpieza;
    19.    }
    20.  
    21.    public void setEsDeLimpieza(boolean esDeLimpieza) {
    22.        this.esDeLimpieza = esDeLimpieza;
    23.    }
    24.  
    25.    @Override
    26.    public void introducirDatos() {
    27.        //invocamo al introducir datos de la superClaseAbstracta
    28.        super.introducirDatos();
    29.  
    30.        // pedimo si es personal de limpieza
    31.  
    32.        mostrar("Personal del limpieza ?");
    33.        esDeLimpieza = LEER.nextBoolean();
    34.  
    35.        //setemos el tipo de persona
    36.        setEsDeLimpieza(esDeLimpieza);
    37.  
    38.    }
    39.  
    40.    @Override
    41.    public String toString() {
    42.        final StringBuilder sb = new StringBuilder();
    43.        sb.append(super.toString());
    44.        sb.append("\nPersonal de Limpieza ? ").append(isEsDeLimpieza()).append("\n");
    45.        return sb.toString();
    46.    }
    47.  
    48. }
    49.  
    50.  


    Código
    1. import java.util.LinkedList;
    2.  
    3. /**
    4.  *
    5.  */
    6. public class Principal {
    7.  
    8.    private final LinkedList<IPersonal> iPersonalLinkedList = new LinkedList<>();
    9.  
    10.  
    11.    public Principal() {
    12.        init();
    13.    }
    14.  
    15.    private void init() {
    16.  
    17.        final PersonalDeLimpieza personalDeLimpieza = new PersonalDeLimpieza();
    18.        personalDeLimpieza.introducirDatos();
    19.  
    20.        final PersonalDeInformatica personalDeInformatica = new PersonalDeInformatica();
    21.        personalDeInformatica.introducirDatos();
    22.  
    23.        /**
    24.          * Anadimos a todos los objetos que extienden/implementan a IPersonal
    25.          * para procesarlos de manera polimorfica gracias, a que cada uno,
    26.          * sobreEscribe a toString().
    27.          */
    28.        iPersonalLinkedList.add(personalDeLimpieza);
    29.        iPersonalLinkedList.add(personalDeInformatica);
    30.  
    31.        /**
    32.          * Se invocara al metodo toString() de cada Objeto, implicitanmente
    33.          */
    34.        //java 8
    35.        iPersonalLinkedList.forEach(e -> e.mostrar(e));
    36.  
    37.        //java 7
    38.        /*for(IPersonal tmp : iPersonalLinkedList) {
    39.             tmp.mostrar(tmp.toString());
    40.         }*/
    41.  
    42.    }
    43.  
    44.    public static void main(String ...blabla) {
    45.        new Principal();
    46.    }
    47. }
    48.  

    Salida

    Código
    1. Introduce nombre:
    2. Ana
    3. Introduce edad
    4. 14
    5. Personal del limpieza ?
    6. false
    7. Introduce nombre:
    8. rubn
    9. Introduce edad
    10. 30
    11. Personal del Informtica ?
    12. true
    13.  
    14. Persona
    15. Nombre: Ana
    16. Edad: 14
    17. Personal de Limpieza ? false
    18.  
    19.  
    20. Persona
    21. Nombre: rubn
    22. Edad: 30
    23. Es de informatica ? true
    24.  
    25. Process finished with exit code 0
    26.  

    Un ejemplo sencillo, luego chekeate el patrón Builder  >:D , y Abstract Generic Builder , con interfaces también (te aseguro que te gustara, y trabajaras mejor con inmutabilidad)
    649  Seguridad Informática / Seguridad / Re: localizar celular por imei en: 30 Marzo 2019, 14:38 pm
    me robaron mi celular lo puedo encontrar mediante mi imei

    Anda donde tu operador, y reportalo como robado, pero quizás ese maleante o X, pueda reparar ese imei y pueda usarlo siendo mas fácil en Android, en IOs tendría que cambiar la nandFlash donde esta la configuración del imei, pero no lo creo de verdad.
    650  Programación / Java / Re: Metodo mostrar todos los atributos de un objeto por pantalla en: 30 Marzo 2019, 02:07 am
    Buenas mi duda era si habia alguna forma de mostrar todos los atributos de un objeto, porque la verdad me canse de escribir mucho sout y llamar a los metodos Getters, alguna técnica porfis   :-(

    Puedes sobreescribir el metodo toString() ,pero como tienes el código?
    Páginas: 1 ... 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [65] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 ... 139
    WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines