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 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27
221  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Que lindo quedo el foro en: 24 Octubre 2013, 18:07 pm
Pues parece que ya se volvió al tema clásico (Al menos a mí me aparece el clásico).
222  Programación / Java / Re: duda basica seguramente en java en: 24 Octubre 2013, 03:27 am
Trata de comprender 2 cosas.

Crear un objeto es muy diferente a INSTANCIAR.

Cuando tu creas un objeto y no lo instancias, ese objeto tiene el valor Null, por que no apunta a nada.  Ese objeto tienes que instanciarlo para que pueda usar sus métodos. Un objeto no es más que una referencia de una clase en particular.

Así, si hacemos lo del ejemplo anterior:

Código
  1. Libreria[] libro = new Libreria[10];
  2.  

Estamos creando solamente diez referencias de la clase Librería. Si ahora tratáramos de hacer esto:

Código
  1. libro[0].registrarLibro("Lo que el viento se llevo");
  2.  

Te dará un hermoso NullPointerException. ¿Por qué? Sencillamente porque NO HEMOS INSTANCIADOS LAS REFERENCIAS U OBJETOS, como quieras llamarle. Todo objeto en Java necesita ser instanciado, de lo contrario, el objeto será prácticamente inexistente e inútil.


Saludos.
223  Programación / Java / Re: Como planificar una aplicacion web en Java EE en: 23 Octubre 2013, 21:37 pm
Frameworks:  Spring e Hibernate.
IDE              :  Netbeans.
Server         :  A tu gusto.
Database    :  Oracle, SQLServer.
224  Programación / .NET (C#, VB.NET, ASP) / [WPF][ESP] Manual - +350 pgs. en: 23 Octubre 2013, 03:22 am
Les dejo un manual en español de WPF. Dice básico pero lo veo bastante bueno.

Manual WPF
225  Programación / Programación General / Re: Merece la pena hacer una carrera de programacion? en: 23 Octubre 2013, 02:08 am
Todo vale la pena mientras exista una buena demanda para lo que estudias y/o haces. Este siglo podría decirse que es el del auge de la tecnología, y cualquier ámbito que tenga que ver con ello, es una buena idea.

Respecto a los cursos, estudia lo más que puedas; certifícate a más no poder que eso te ayudará en gran manera en tu vida laboral.


Un abrazo y suerte con tus proyectos.
226  Programación / Java / Re: duda basica seguramente en java en: 23 Octubre 2013, 01:51 am
Un array puedes declararlo de tipos de datos y de objetos. Por lo que cuando haces:

Código
  1. Libreria[] libro = new Libreria[10];
  2.  

Lo que estás haciendo es crear un array tipo Libreria con 10 objetos Libreria dentro.

Si bien esos elementos están creados, no están instanciados. Por lo que son de tipo Librería, tienen que instanciarse para poder usarse.

Código
  1. Libreria[0] = new Libreria(); // El primer objeto ya está instanciado. Los demás aun no.
  2.  

Ahora, como hemos instanciado el primer objeto del arreglo tipo Libreria, podemos acceder a sus metodos y variables (en caso tuviera).

Código
  1. libro[0].registrarLibro("Lo que el viento se llevo"); // llama a un metodo de la clase Librera llamado registraLibro.
  2.  

Si quieres llamar a un método ni bien instancias el objeto, puedes hacer lo siguiente:

Código
  1. libro[0] = new Libreria().registrarLibro("Lo que el viento se llevo");
  2.  



Saludos.
227  Programación / .NET (C#, VB.NET, ASP) / Re: [WPF][C#] Programar los eventos en una clase Controladora. en: 23 Octubre 2013, 01:26 am
Me autorespondo. En C# no existe el patrón MVC, se usa MVVM y DataBinding. C# me parece un lenguaje muy moderno y completo, voy a seguir estudándolo.


Saludos weys.
228  Programación / .NET (C#, VB.NET, ASP) / [WPF][C#] Programar los eventos en una clase Controladora. en: 22 Octubre 2013, 19:49 pm
Buen día.

Este es mi primer programita en C#, y la verdad no entiendo muchas cosas. Espero me puedan echar un cable  :xD Por cierto, uso Visual Studio Express 2013, que está muy bonita xD

El programita es sencillo, solo registrará los datos de un trabajador en una tabla. Tengo las siguientes clases:

  • Clase Trabajador (pojo). Este será el prototipo del trabajador, todos se crearán a partir de esta pojo.
  • Clase MainWindow (Formulario)
  • Clase Controller (Controlador del programa)
  • Clase RegistrarTrabajador (Modelo del programa)
  • Clase Conexion (Complemento del Modelo).

La idea es sencilla, estoy utilizando el patrón MVC, para conectar el Controlador con la vista y con el modelo. Ahora, el problema que tengo es el siguiente:

En Java, basta con pasarse la referencia  del Controlador, al componente que efectuará el evento. bastaría con hacer:

Código
  1. public void setControlador(Controller controlador)
  2. {
  3.    btnRegistrar.addActionListener(controlador);
  4.    btnNuevo.addActionListener(controlador);
  5.    btnSalir.addActionListener(controlador);
  6.  }
  7.  
Luego, en la clase Controller:

Código
  1.  
  2. public class Controller implements ActionListener {
  3.  
  4. private Formulario vista;
  5. private Modelo modelo;
  6.  
  7.  public Controller (Formulario vista, Modelo modelo)
  8.   {
  9.      this.vista = vista;
  10.      this.modelo = modelo;
  11.   }
  12.  
  13. @Override
  14.  actionPerformed(ActionEvent e)
  15.   {
  16.      // eventos
  17.   }
  18.  
  19. }
  20.  


¿Cómo puedo lograr lo mismo en C#?


Clases Trabajador (Pojo), Controller (Controlador), RegistrarTrabajador (Modelo), Formulario :

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace RegistroDeUsuarios.pojo
  8. {
  9.    public class Trabajador
  10.    {
  11.        private string primerNombre;
  12.        private string segundoNombre;
  13.        private string primerApellido;
  14.        private string segundoApellido;
  15.        private string rangoTrabajador;
  16.        private string fechaNacimiento;
  17.  
  18.        // setters
  19.  
  20.        public void setPrimerNombre(string primerNombre)
  21.        {
  22.            this.primerNombre = primerNombre;
  23.        }
  24.        public void setSegundoNombre(string segundoNombre)
  25.        {
  26.            this.segundoNombre = segundoNombre;
  27.        }
  28.        public void setPrimerApellido(string primerApellido)
  29.        {
  30.            this.primerApellido = primerApellido;
  31.        }
  32.        public void setSegundoApellido(string segundoApellido)
  33.        {
  34.            this.segundoApellido = segundoApellido;
  35.        }
  36.        public void setRangoTrabajador(string rangoTrabajador)
  37.        {
  38.            this.rangoTrabajador = rangoTrabajador;
  39.        }
  40.        public void setFechaNacimiento(string fechaNacimiento)
  41.        {
  42.            this.fechaNacimiento = fechaNacimiento;
  43.        }
  44.  
  45.        // getters
  46.  
  47.        public string getPrimerNombre()
  48.        {
  49.            return this.primerNombre;
  50.        }
  51.        public string getSegundoNombre()
  52.        {
  53.            return this.segundoNombre;
  54.        }
  55.        public string getPrimerApellido()
  56.        {
  57.            return this.primerApellido;
  58.        }
  59.        public string getSegundoApellido()
  60.        {
  61.            return this.segundoApellido;
  62.        }
  63.        public string getRangoTrabajador()
  64.        {
  65.            return this.rangoTrabajador;
  66.        }
  67.        public string getFechaNacimiento()
  68.        {
  69.            return this.fechaNacimiento;
  70.        }
  71.  
  72.    }
  73. }
  74.  

Clase Controller
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using RegistroDeUsuarios.pojo;
  8.  
  9.  
  10. namespace RegistroDeUsuarios
  11. {
  12.  
  13.   public class Controller
  14.    {
  15.        private MainWindow vista;
  16.        private RegistrarTrabajador modelo;
  17.  
  18.  
  19.       public Controller()
  20.        {
  21.  
  22.        }
  23.        public Controller(MainWindow vista, RegistrarTrabajador modelo)
  24.        {
  25.            this.vista = vista;
  26.            this.modelo = modelo;
  27.  
  28.        }
  29.  
  30.  
  31.       public void btnRegistrar_Click(Object sender, RoutedEventArgs e)
  32.       {
  33.           Trabajador trabajador = new Trabajador();
  34.           trabajador.setPrimerNombre(vista.txtPrimerNombre.Text);
  35.           trabajador.setSegundoNombre(vista.txtSegundoNombre.Text);
  36.           trabajador.setPrimerApellido(vista.txtPrimerApellido.Text);
  37.           trabajador.setSegundoApellido(vista.txtSegundoApellido.Text);
  38.           trabajador.setRangoTrabajador(vista.cboRangoTrabajador.SelectedItem.ToString());
  39.           trabajador.setFechaNacimiento(vista.txtFechaNacimiento.Text);
  40.           modelo.registrarTrabajador(trabajador);
  41.       }
  42.       public void btnNuevo_Click(Object sender, RoutedEventArgs e)
  43.       {
  44.           vista.clean();
  45.       }
  46.       public void btnSalir_Click(Object sender, RoutedEventArgs e)
  47.       {
  48.           //Application.Current.Shutdown();
  49.       }
  50.    }
  51. }
  52.  


Clase RegistrarTrabajador:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using MySql.Data.MySqlClient;
  7. using RegistroDeUsuarios.pojo;
  8.  
  9. namespace RegistroDeUsuarios
  10. {
  11.    public class RegistrarTrabajador
  12.    {
  13.        public static MySqlConnection conexion = new MySqlConnection();
  14.        public static MySqlCommand comando = new MySqlCommand();
  15.        public static string CadenaDeConexion;
  16.  
  17.        public void registrarTrabajador(Trabajador trabajador)
  18.        {
  19.            // Aquí se llevara a cabo la conexion
  20.            CadenaDeConexion = "Server=localhost;"
  21.                                + "Port=3307;"
  22.                                + "Database=mysql_ifxperu;"
  23.                                + "Uid=root;"
  24.                                + "Password=";
  25.  
  26.            try
  27.            {
  28.                conexion.ConnectionString = CadenaDeConexion;
  29.            }
  30.            catch (Exception ex)
  31.            {
  32.                Console.WriteLine(ex.Message);
  33.            }
  34.  
  35.            try
  36.            {
  37.                // Abrimos la conexión
  38.                conexion.Open();
  39.                // Definimos nuestro Query
  40.                string query = "insert into empleados VALUES('"+trabajador.getPrimerNombre()+"','"+trabajador.getSegundoNombre()+"','"+trabajador.getSegundoApellido()+"','"+
  41.                    trabajador.getSegundoApellido()+"','"+trabajador.getRangoTrabajador()+"','"+trabajador.getFechaNacimiento()+"')";
  42.                // Establecemos cuál será la conexión
  43.                comando.Connection = conexion;
  44.                // Determinamos el comando [ nuestro query]
  45.                comando.CommandText = query; //Se le asigna la consulta
  46.                // Asignamos al objeto MySqlReader la ejecución del comando
  47.                // En otras palabras, el resultado de la consulta [query]
  48.                // Se guardará en el MySqlReader
  49.                comando.ExecuteNonQuery();
  50.                MessageBox.Show("Alta del empleado satisfactoria.");
  51.            }
  52.            catch (Exception ex)
  53.            {
  54.                Console.WriteLine(ex.Message);
  55.            }
  56.            finally {
  57.                conexion.Close();
  58.            }
  59.        }
  60.    }
  61. }
  62.  


Clase Formulario
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Controls;
  8. using System.Windows.Data;
  9. using System.Windows.Documents;
  10. using System.Windows.Input;
  11. using System.Windows.Media;
  12. using System.Windows.Media.Imaging;
  13. using System.Windows.Navigation;
  14. using System.Windows.Shapes;
  15.  
  16. namespace RegistroDeUsuarios
  17. {
  18.  
  19.    public partial class MainWindow : Window
  20.    {
  21.        public MainWindow()
  22.        {
  23.            InitializeComponent();
  24.            cboRangoTrabajador.Items.Add("Administrador");
  25.            cboRangoTrabajador.Items.Add("Vendedor");
  26.            cboRangoTrabajador.Items.Add("Contador");
  27.            cboRangoTrabajador.Items.Add("Tecnico Mantenimiento");
  28.            cboRangoTrabajador.Items.Add("Programador");
  29.            cboRangoTrabajador.Items.Add("Analista");
  30.            cboRangoTrabajador.SelectedIndex = 0;
  31.        }
  32.  
  33.        public void setControlador(Controller controlador)
  34.        {
  35.            controlador.btnRegistrar_Click(controlador,new RoutedEventArgs());
  36.            controlador.btnNuevo_Click(controlador,new RoutedEventArgs());
  37.            controlador.btnSalir_Click(controlador,new RoutedEventArgs());
  38.        }
  39.  
  40.        public void clean()
  41.        {
  42.            txtPrimerNombre.Clear();
  43.            txtSegundoNombre.Clear();
  44.            txtPrimerApellido.Clear();
  45.            txtSegundoApellido.Clear();
  46.            txtFechaNacimiento.Clear();
  47.            cboRangoTrabajador.SelectedItem = "Administrador";
  48.            txtPrimerNombre.Focus();
  49.        }
  50.  
  51.  
  52.    }
  53. }
  54.  


*** UPDATE ***

He creado una clase principal, que sustituye al Main que genera WPF.

Código
  1. using System.Windows.Media.Imaging;
  2. using System.Windows.Media.Media3D;
  3. using System.Windows.Media.TextFormatting;
  4. using System.Windows.Navigation;
  5. using System.Windows.Shapes;
  6. using System.Windows.Shell;
  7.  
  8. namespace RegistroDeUsuarios
  9. {
  10.    class Principal
  11.    {
  12.        // <summary>
  13.        /// Application Entry Point.
  14.        /// </summary>
  15.        [System.STAThreadAttribute()]
  16.        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
  17.        public static void Main()
  18.        {
  19.  
  20.            MainWindow vista = new MainWindow();
  21.            RegistrarTrabajador modelo = new RegistrarTrabajador();
  22.            Controller control = new Controller(vista, modelo);
  23.            vista.setControlador(control);
  24.            MessageBox.Show("Hola");
  25.            RegistroDeUsuarios.App app = new RegistroDeUsuarios.App();
  26.            app.InitializeComponent();
  27.            app.Run();
  28.        }
  29.  
  30.    }
  31. }
  32.  


Otra duda, quiero colocar un método en el Formulario, para arrancar la aplicación a demanda. Esto porque en el Main crearé los objetos MainWindow y RegistrarTrabajador, para pasárselos al Controller, para que se asocie a las 2 clases, y el objeto Controller pasárselo por medio de setControlador(Controller controlador) al Formulario. ¿Cómo haría?



Muchas gracias!
229  Programación / Java / Re: Sobre patrón de diseño abstract en: 20 Octubre 2013, 16:08 pm
El mejor material está en Inglés, las documentaciones oficiales están en inglés, etc. Así que toca aprender inglés  ;)

Como te comentó Yoya, es muy importante que nuestras clases no dependan de ninguna otra, ya que en un proyecto mediano - grande, esto sería un dolor de cabeza si tenemos que hacer una modificación, tendríamos que hacerla en todas las clases que depende de ella.

Para esto apareció Spring, que es un contenedor en el cual se gestiona el ciclo de vida de los objetos, eliminando así cualquier tipo de dependencias entre objetos - clases.

Además ofrece otras funcionalidades innovadoras, como la programación orientada a aspectos, que la estoy estudiando ahora  :D
230  Programación / Java / Re: Suma de columnas de matriz mxn en: 19 Octubre 2013, 23:05 pm
No hay por qué confundirse.

Sea conjunto una matriz de 3 x 3:

Código
  1. Integer[][] conjunto = new Integer[3][3];
  2.  

Supongamos que queremos saber cuantas filas tiene dicha matriz:

Código
  1. int cantidad_filas = conjunto.length;
  2.  

Ahora, queremos saber cuántas columnas tiene la fila 2:

Código
  1. int cantidad_columnas = conjunto[1].length; // pongo 1 porque la primera fila es 0
  2.  


Generalmente arrays sean unidimensionales o bidimensionales, no se usan a la hora de desarrollar. Se usan Colecciones.

Dirán por qué, bueno, una de las grandes razones es que cuando usamos arreglos, debemos saber de antemano cuantos elementos tendrá dicho arreglo, pero supongamos que vamos a recuperar datos, pero no sabemos con exactitud cuántos valores va a devolver. Entonces, en estos casos se usa una colección.

Esta puede ser una Lista, un ArrayList, LinkedList, Map, HashMap, etc. Una colección no tiene un tamaño límite, está prácticamente limitado por la memoria del ordenador, lo cual es una ventaja. Además en una ArrayList - por ejemplo -, podemos guardar distintos tipos de datos, podemos guardar TODO. Si ven el método add de ArrayList, verán que recibe un Object, y como saben, todo en Java hereda de Object.

También podemos asegurarnos que una colección sea de un tipo especificado, utilizando Generics, pero ese es otro tema.
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines