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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 21
21  Seguridad Informática / Seguridad / ¿Me sale un mensaje extraño al intentar entrar a mi hotmail desde Chrome? en: 14 Septiembre 2014, 10:26 am
Tengo un problema, mayormente uso Google Chrome y ahora que intento entrar a la página de hotmail (www.hotmail.com) me aparece lo de la imagen siguiente:

A

¿A alguien más le pasa lo mismo?  :P
22  Programación / Programación C/C++ / Re: ¿Duda sobre la sobreescritura de una función miembro en una clase derivada? en: 21 Julio 2013, 19:19 pm
Muchas gracias amchacon, ya solucioné el problema, tal y como dijiste, tuve que declarar la función de la clase base como virtual para que luego de que lo sobrescriba en las clases derivadas e invoque a esa función usando un puntero de la clase base, se ejecute la función correspondiente a la clase derivada.  :)  :)
23  Programación / Programación C/C++ / Re: ¿Duda sobre la sobreescritura de una función miembro en una clase derivada? en: 21 Julio 2013, 19:18 pm
Muchas gracias amchacon, ya solucioné el problema, tal y como dijiste, tuve que declarar la función de la clase base como virtual para que luego de que lo sobrescriba en las clases bases e invoque a esa función usando un puntero de la clase base, se ejecute la función correspondiente a la clase derivada.  :)  :)
24  Programación / Programación C/C++ / ¿Duda sobre la sobreescritura de una función miembro en una clase derivada? en: 21 Julio 2013, 07:44 am
Hola a todos, necesito una pequeña ayuda, resulta que conozco un poco de Java así que me animé a aprender C++ y ahora estoy practicando lo que es la herencia y el polimorfismo. Estoy que me tranqueo en la parte de la sobreescritura de métodos.

Verán, primero definí una clase base llamada Persona con dos atributos: "nombre" y "edad", además con 5 métodos públicos: "setNombre", "setEdad", "getNombre", "getEdad" y "metodo".

Luego definí dos clases derivadas de la clase Persona. Las clases derivadas son Alumno y Docente. Ambas clases con sus propios métodos set y get para manipular sus propios atributos (datos miembro) . Luego, en las clases derivadas Alumno y Docente redefiní la función miembro llamada "metodo" que heredaron de la clase base Persona.

Al final, en el método main, creé los objetos correspondientes a cada clase y luego hice que un puntero p de tipo de la clase base Persona ( Persona *p ) apunte a cada objeto creado para llamar a la función miembro "metodo" . Pensé que en cada caso se ejecutaría la función miembro correcta correspondiente a cada objeto pero al ver los resultados en pantalla me doy con la sorpresa de que en todos los casos se ejecuta la función miembro correspondiente a la clase base Persona. Tal vez estoy cometiendo un error y no sé como solucionarlo, espero que alguien me pueda ayudar, muchas gracias  :)

Código
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. // Clase PERSONA
  7. class Persona {
  8.  
  9. public:
  10.   // Constructor con argumentos por defecto
  11.   Persona(string nombre = "", const int edad = 0);
  12.  
  13.   // Métodos
  14.   void setNombre(string nombre);
  15.   void setEdad(const int edad);
  16.   string getNombre();
  17.   int getEdad();
  18.  
  19.   void metodo();;
  20.  
  21. private:
  22.   string nombre;
  23.   int edad;  
  24. };
  25.  
  26. Persona::Persona(string nombre, const int edad) : nombre(nombre), edad(edad < 0 ? 0 : edad) {
  27.   /*
  28.    this->setNombre(nombre);
  29.    this->setEdad(edad);
  30.    */
  31. }
  32.  
  33. void Persona::setNombre(string nombre) {
  34.   this->nombre = nombre;  
  35. }
  36.  
  37. void Persona::setEdad(const int edad) {
  38.   this->edad = (edad < 0) ? 0 : edad;  
  39. }
  40.  
  41. string Persona::getNombre() {
  42.   return this->nombre;  
  43. }
  44.  
  45. int Persona::getEdad() {
  46.   return this->edad;  
  47. }
  48.  
  49. void Persona::metodo() {
  50.   cout << "Metodo de la clase base Persona" << endl;
  51. }
  52.  
  53.  
  54. // CLASE ALUMNO
  55. class Alumno : public Persona {
  56.  
  57. public:
  58.   // Constructor con argumentos por defecto
  59.   Alumno(string nombre = "", int edad = 0, string codigo = "");
  60.  
  61.   void setCodigo(string codigo);
  62.   string getCodigo();
  63.  
  64.   void metodo();
  65.  
  66. private:
  67.   string codigo;
  68. };
  69.  
  70. Alumno::Alumno(string nombre, int edad, string codigo)
  71.   : Persona(nombre, edad), codigo(codigo) {
  72. }
  73.  
  74. void Alumno::setCodigo(string codigo) {
  75.   this->codigo = codigo;  
  76. }
  77.  
  78. string Alumno::getCodigo() {
  79.   return codigo;  
  80. }
  81.  
  82. void Alumno::metodo() {
  83.   cout << "Método redefinido de la clase derivada Alumno" << endl;  
  84. }
  85.  
  86. // CLASE DOCENTE
  87. class Docente : public Persona {
  88.  
  89. public:
  90.   // Constructor con tres argumentos por defecto
  91.   Docente(string nombre = "", int edad = 0, float salario = 0.0);
  92.  
  93.   void setSalario(float salario);
  94.   float getSalario();
  95.  
  96.   void metodo();
  97.  
  98. private:
  99.   float salario;
  100. };
  101.  
  102. Docente::Docente(string nombre, int edad, float salario)
  103.   : Persona(nombre, edad), salario(salario < 0.0 ? 0.0 : salario) {
  104. }
  105.  
  106. void Docente::setSalario(float salario) {
  107.   this->salario = (salario < 0.0) ? 0.0 : salario;  
  108. }
  109.  
  110. float Docente::getSalario() {
  111.   return salario;  
  112. }
  113.  
  114. void Docente::metodo() {
  115.   cout << "Método redefinido de la clase base Docente" << endl;  
  116. }
  117.  
  118. int main()
  119. {  
  120.   Persona *p;
  121.   cout << "PERSONAS:" << endl;
  122.   p = new Persona("Dennis Ritchie", 19);      
  123.   p->metodo();
  124.  
  125.   cout << "\nALUMNOS:" << endl;
  126.   p = new Alumno("Bjarne Stroustrup", 22, "20080541x");
  127.   p->metodo();
  128.  
  129.   p = new Alumno("Esther Noemí", 19, "21130515h");
  130.   p->metodo();
  131.  
  132.   cout << "\nDOCENTES:" << endl;
  133.   p = new Docente("Riquelmer Vazques", 58, 1500.0);
  134.   p->metodo();
  135.  
  136.   cin.get();
  137.   return 0;  
  138. }
  139.  
25  Programación / Programación General / ¿(Python) Es una mala práctica/costumbre llamar desde __init__ a otros métodos? en: 13 Mayo 2013, 03:44 am
Hola, espero que me puedan orientar, estos días estoy practicando el lenguaje de programación Python (recién lo estoy aprendiendo) , tengo algunos conocimientos de Java y estoy tratando de aplicar esos conocimientos hacia Python. Tengo la siguiente duda, quiero saber si es que en Python, desde el método __init__ de alguna clase, es posible realizar llamadas a otros métodos de la misma clase  :P .

En Java, por ejemplo al declarar una clase persona, en un principio yo accedía directamente a los atributos de la clase para inicializarlos desde dentro del constructor, de la siguiente manera:

Código:
public class Persona {
    private String nombre;
    private int edad;
    
    public Persona(String nombre, int edad) {        
        this.nombre = nombre;
        this.edad = edad        
    }
    
    public String getNombre() {
        return nombre;
    }
    
    public int getEdad() {
        return edad;
    }        
      
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    public void setEdad(int edad) {
        this.edad = edad;
    }
}

Pero luego, me acostumbré a llamar a los métodos set desde dentro del constructor (para que estos se encarguen de la inicialización) como muestro a continuación:

Código:
public class Persona {
    private String nombre;
    private int edad;
    
    public Persona(String nombre, int edad) {        
        setNombre(nombre);
        setEdad(edad);        
    }
    
    public String getNombre() {
        return nombre;
    }
    
    public int getEdad() {
        return edad;
    }        
      
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    
    public void setEdad(int edad) {
        this.edad = edad;
    }
}

Bueno, intenté hacer lo mismo en Python. En ese nuevo lenguaje me sale de la primera forma:

Código:
class Persona:
    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad

    def getNombre(self):
        return self.nombre

    def getEdad(self):
        return self.edad

    def setNombre(self, nombre):
        self.nombre = nombre

    def setEdad(self, edad):
        self.edad = edad

Y de la segunda forma lo hago así:

Código:
class Persona:
    def __init__(self, nombre, edad):
        self.setNombre(nombre)
        self.setEdad(edad)

    def getNombre(self):
        return self.nombre

    def getEdad(self):
        return self.edad

    def setNombre(self, nombre):
        self.nombre = nombre

    def setEdad(self, edad):
        self.edad = edad

Mi pregunta era si es que está bien eso que estoy haciendo, osea, llamar a los métodos set desde dentro del constructor de la clase (La segunda forma) . ¿Creen que sea una mala práctica?
26  Informática / Software / Re: Luego de cerrar mi máquina virtual mi computadora se vuelve recontra lenta. en: 26 Enero 2013, 03:28 am
Ahhhhhhh seguro es eso. Me olvidé decirlos que mi PC se vuelve lenta temporalmente, será por 15 minutos, pero luego vuelve a estar normal.  :-( Seguro era por eso, que tras bambalinas se estaba volcando la información de la RAM al Disco Duro.... Aunque mi PC se pone lenta incluso luego de haber cerrado el vmWare.
27  Informática / Software / Re: Luego de cerrar mi máquina virtual mi computadora se vuelve recontra lenta. en: 25 Enero 2013, 18:21 pm
Sí. La máquina virtual lo suspendo y luego lo cierro. Es que dejo cosas pendientes para revisarlas luego y no tener que estár abriendo todo otra vez :o .
28  Informática / Software / Luego de cerrar mi máquina virtual mi computadora se vuelve recontra lenta. en: 25 Enero 2013, 18:16 pm
Hola, tengo un problema y espero encontrar la solución, muchas gracias de antemano a los que me puedan ayudar. En mi computadora tengo el programa llamado vmWare, y siempre luego de usar alguna máquina virtual, cierro el programa y tengo problemas pues mi computadora se vuelve recontra lenta, y si escucho alguna música , esta demora en sonar, incluso cuando empieza a reproducirse lo hace entrecortándose. No sé cuál podría ser el problema porque mi computadora tiene recursos aceptables: Windows 7 Ultimate, 500 GB de disco, 8GB de Ram, 1GB de video DDR5, etc...  :(


También tengo este problema, la máquina virtual que tengo ocupa algo de 80 GB y se encuentra en la unidad D. Y cuando trato de desfragmentar dicha unidad, el desfragmentador (Auslogic) no lo puede hacer.
29  Informática / Software / ¿Qué programa usan las editoriales para editar libros con diseño profesional? en: 19 Diciembre 2012, 17:09 pm
Hola, siempre me he preguntado esto, no creo que las editoriales utilicen el Microsoft Word para poder editar sus libros ya que estos vienen con muchas cosas, ¿alguien sabe qué tipos de programas usan? También los periódicos que tipo de programas usan. ¿Se trata de un software procesador de texto parecido a Word o uno de diseño gráfico como Corel Draw? Muchas gracias.
30  Programación / Java / Re: ¿No se encuentra origen de datos? en: 11 Noviembre 2012, 08:08 am
Hola theluigy13etv,

Gracias por la ayuda, lo que me pasa es que instale el JDK de 32 bits y lo compile tambien intente instalar de nuevo el Netbeans en una maquina con 32 bits y lo compile pero nada no me funciona, me parece como que ya desde la maquina con 64 bits se desligo y no me encuentra la conexion, por favor si me pudieran ayudar, me urge hacer correr este programa.

Adjunto el mensaje de error que me envia desde el cmd:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Administrador.AdministratorComponents.buscarFANombres(AdministratorComponents.java:245)
        at Cargador.Cargador.cargarCombo(Cargador.java:104)
        at Interfaz.JFPrincipal.<init>(JFPrincipal.java:49)
        at UI.UICommunicacion.Ingresar(UICommunicacion.java:78)
        at Interfaz.Acceso.txtPassKeyPressed(Acceso.java:168)
        at Interfaz.Acceso.access$200(Acceso.java:19)
        at Interfaz.Acceso$3.keyPressed(Acceso.java:117)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$200(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

Hola. Te voy a detallar los pasos que yo seguí en mi PC. Te aclaro que yo tengo el SO Windows 7 Ultimate de 64 bits, y el NetBeans de 64 bits, además del JDK de 64 bits. Y con la base de Datos con la que necesitaba conectarme era con Access.


Primero te creas el DSN del sistema con el Administrador de Orígenes de Datos de 32 bits, (el que se encuentra en c:\windows\syswow64\odbcad32.exe).

Luego, instalé un JKD de 32 bits. Como te dije líneas arriba, yo ya tengo instalado un JDK de 64 bits, el JDK de 32 bits de instala en otra carpeta. De esta manera vas a tener 2 JDKs distintos. (Si quieres le instalas más, la versión que necesites).

Luego me fui a la barra menús de NetBeans. En el menú Tools (Herramientas), eliges el item Java Platforms . Te abre una ventana llamada "Java Platform Manager".  Estando allí verás en el lado izquierda una lista de JDKs que tienes para poder utilizar en NetBeans. En mi caso aparecía solo un JDK de la siguiente manera:
JDK 1.7 (Default)

Este correspondía a mi JDK de 64 bits. Pero no aparecía el JDK de 32 bits que instalamos al último, por eso necesitaba agregarlo al NetBeans, para eso hice clic al botón Add Platform.

Me salía otra ventana llamada "Add Java Platform". En esa ventana tenía que buscar el JDK de 32 que había instalado último. Para eso la ruta en la que normalmente se instala el JDK de 32 bits (en un SO de 64 bits como el mío es) : c:/Archivos de Programa(x86)/Java/

Allí aparece una carpeta llamada jdk 1.6.0_06. En tu caso te aparecerá la versión correspondiente de tu JDK, lo importante es que sea el de 32 bits. Seleccionas la carpeta y haces clic en el botón Next. Luego clic en el botón Finish
Ahora en la lista de JDKs te aparecerán dos, el que tenías al inicio, y el que agregaste último (32 bits).

Ahora, para que mi programa se pueda conectarse con una base de Datos Access cuyo controlador ODBC es de 32 bits, hice lo siguiente:

Haces click derecho en el ícono de tu proyecto. Del menú contextual eliges la opción Properties.
Te va a salir una ventana, en la parte izquierda hay una lista de opciones, eliges la opción Libraries. Entonces tienes un combo box al lado derecho (con una etiqueta que dice Java Platform). En ese combo box van a estar varios JDKs (En mi caso dos JDKs, el de 64 bits que ya tenía al principio, y el de 32 bits que acabo de agregar ahora último). Pero el JDK que está seleccionado por defecto es el de 64 bits, por eso elegimos el otro JDK (el de 32 bits). Puede ser que inmediatamente salga una ventana con título "Change Java Platform" y dentro un mensaje que empieza con un texto como "Incompatible Source Level Value 1.7". Simplemente le das clic al botón Change platform y luego Ok.

Una vez echo esto, trata de volver a ejecutar tu aplicación y me cuentas cómo te fue.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines