Documente Academic
Documente Profesional
Documente Cultură
Java
En nuestro post de hoy vamos a tratar el tema la programación orientada a
objetos en Java, ¡no todo va a ser .NET!
Abstracción:
Abstracción en la POO se refiere a poder identificar el posible
comportamiento de un objeto para posteriormente convertirlo en sus métodos
y funciones dentro de una clase.
Encapsulamiento:
Consiste en reunir todos los elementos de un posible objeto el cual se
verán como atributos del mismo para luego realizar el tratado de sus datos
de mejor forma.
Modularidad:
Es la separación de un software por módulos, en si es una característica
muy importante de la POO. Esta es una forma de realizar software con
módulos independientes pero escalables y que se puedan extender y realizar
el mantenimiento previo de una forma muy sencilla.
Ocultación:
Esto consiste en separar el acceso directo a un objeto, entonces diríamos
que se puede acceder a tales objetos sólo mediante una capa especificada
por este mismo.
Polimorfismo:
Es la acción de poder usar un múltiples posibilidades en una misma
propiedad. También podríamos decir que a nivel de programación sería usar
un método, función, entre otros llamados de la misma forma pero con
diferentes propósitos.
Herencia:
En la POO las clases no se encuentran aisladas, si no que pueden
interactuar con otras clases así compartiendo sus atributos y métodos que
puedan existir entre estas. Un ejemplo sería una clase Persona la cual es
heredada a la clase PersonaNatural y PersonaJurídica. Persona tendría los
datos comunes entre ambos.
Ejemplo
package Encapsulamiento;
/**
*
* @author kaaf
*/
public abstract class TPersona {
protected String nombreCompleto;
protected int edad;
Este es nuestro encapsulado que se hereda a los otros dos. Como se puede
ver la clase conlleva un método “abstract” el cual hace que la clase sólo
pueda heredarse a otras clases mas no pueda invocarse (No se puede invocar
en clases que no lo heredan). También vemos atributos de tipo protected,
esto hace que dichas variables puedan ser accedidos solamente desde la
clase que lo hereda.
– Código de la clase de encapsulamiento TPersonaNatural.
package Encapsulamiento;
/**
*
* @author kaaf
*/
public class TPersonaNatural extends TPersona{
private String dNI;
public TPersonaNatural(){}
/**
*
* @author kaaf
*/
public class TPersonaJuridica extends TPersona {
private String rUC;
public TPersonaJuridica(){}
import Encapsulamiento.TPersonaJuridica;
import Encapsulamiento.TPersonaNatural;
/**
*
* @author kaaf
*/
public class NegocioPrincipal {
Como podemos ver tenemos dos métodos de tipo public lo que permite acceder
desde cualquier lado y static que libera memoria después de usar dicho
método.
En el primer método vemos el funcionamiento de uno de los constructores de
la clase y en el segundo se muestra el otro constructor de sólo
instanciación.
– Código del botón Registrar de TPersonaNatural
TPersonaNatural
tPersonaNatural=NegocioPrincipal.CargarEncapsuladoPN(txtNombreCompleto.get
Text(), Integer.parseInt(txtEdad.getText()), txtDNI.getText());
Object[] filaNueva=
{
tPersonaNatural.NombreCompleto(),
tPersonaNatural.Edad(),
tPersonaNatural.DNI()
};
DefaultTableModel
modeloTabla=(DefaultTableModel)TablaPersona.getModel();
modeloTabla.addRow(filaNueva);
TablaPersona.setModel(modeloTabla);
}
TPersonaJuridica
tPersonaJuridica=NegocioPrincipal.CargarEncapsuladoPJ(txtNombreCompleto.ge
tText(), Integer.parseInt(txtEdad.getText()), txtRUC.getText());
Object[] filaNueva=
{
tPersonaJuridica.NombreCompleto(),
tPersonaJuridica.Edad(),
tPersonaJuridica.RUC()
};
DefaultTableModel
modeloTabla=(DefaultTableModel)TablaPersona.getModel();
modeloTabla.addRow(filaNueva);
TablaPersona.setModel(modeloTabla);
}
www.asociacionaepi.es
(ECDSA) en
AndroidKeyStore
Aunque este tipo de cifrado ha sido criticado, se incluye en el almacén de contraseñas
de Android, dando soporte para claves de firma de Curva Elíptica. Es una alternativa
para los desarrolladores pero la sigue siendo la mejor opción para un almacenamiento
de datos a largo plazo la selección de cifrado simétrico.
www.asociacionaepi.es
Delegados en C#
Lo primero que te preguntas es que tipo de problema resuelven los delegados,
o sea… para que debería aprender a usar delegados? Para responderte esta
pregunta, lo mejor es ilustrarlo con un ejemplo:
//Constructor de la clase
public Date(int day, int month, int year)
{
this.day = day;
this.month = month;
this.year = year;
if (!IsValid) throw new ArgumentException("Fecha no válida");
}
//Metodo para comparar fecha, nota que esta clase tambien hereda
//de IComparable
public int CompareTo(object x)
{
Date d = x as Date;
if (d == null)
throw new ArgumentException();
// Uso operadores ternarios para comparar las fechas (asi me evito unos
cuantos if else)
return (d.Year > year || (d.Year == year && d.Month > month) || (d.Year ==
year && d.Month == month && d.Day > day)) ? -1 : (d.Year == year && d.Month
== month && d.Day == day) ? 0 : 1;
}
}
class Program
{
//En el metodo Main es donde usamos las clases y
//programamos algunos metodos que vayamos a utilizar
Como has visto hasta ahora, el método Sort se basa solo en el criterio
definido por el método CompareTo de la clase que implemente IComparable (en
este caso la clase Persona), pero que tal si quisiéramos tener diferentes
criterios de ordenación para un mismo objeto? En nuestro caso, que tal si
quisieramos ordenar un grupo de personas por orden alfabético? o por
estatura?
Una alternativa
Un delegado no es más que un tipo que recibe métodos con una signatura
específica, al principo va a resultar un poco chocante si nunca te has visto
en la necesidad de usarlo, porque no es muy común y muchos lenguajes no lo
soportan, y la verdad a mi me tomó un poco de tiempo asimilar esto, así que
si todavía no logras entender bien, te aconsejo que busques un poco más de
información en el MSDN.
que devuelve un entero y recibe dos objetos, esto quiere decir que este
delegado recibirá como argumento cualquier método que devuelva un int y
reciba dos parámetros de tipo object. A mi no me gusta mucho
utlizar object (ya que tenemos genericidad) pero es mejor en este caso para
ilustrar su utilidad.
Añadimos los métodos para comparar por nombre, por fecha de nacimiento y por
altura a la clase Persona:
Console.WriteLine();
Console.WriteLine("Ordenando las personas por fecha de nacimiento");
//Pasamos como parámetro al delegado el método CompareByBirthday
Sort(personas, Persona.CompareByBirthday);
foreach (Persona p in personas)
{
Console.WriteLine("Date: {0}, {1}, {2}",p.Birthday.Day, p.Birthday.Month,
p.Birthday.Year);
}
Console.WriteLine();
Console.WriteLine("Ordenando las personas por altura");
//Pasamos como parámetro al delegado el método CompareByHeight
Sort(personas, Persona.CompareByHeight);
foreach (Persona p in personas)
{
Console.WriteLine("Height: {0}",p.Height);
}
Console.ReadKey();
}
Que tal si ahora nos piden que ordenemos a las personas por orden alfabético
a partir de la segunda letra del nombre?
Solamente tendríamos que añadir el método:
y usarlo como:
Sort(personas, Persona.CompareFromSecondLetter);
Muchas gracias
www.asociacionaepi.es
Una vez que esté creada, hay que pinchar en ella y pinchar en “Información de
conexión”:
Copiamos la “Cadena de conexión”:
www.asociacionaepi.es
Abrimos NetBeans
Vamos al menú Tools, Plugins, esperamos a que la ventana se cargue y entramos
en la pestaña Settings
Presionamos el botón Add.
En la siguiente ventana, en el campo Name escribimos el valor “NBAndroid”
Marcamos la casilla Check for updates automatically.
La ventana debe quedar así.
Una vez hecho esto, ir a la pestaña Available Plugins, hay que localizar los
plugins Android y Android Test Runner for NetBeans 7.0+, marcarlos y
presionar el botón Install, presionamos Next, aceptamos los términos de la
licencia y finalmente apretamos el botón Install, esto descargará el plugin
en nuestro equipo, así que habrá que esperar a que termine la descarga.
Terminado este proceso, tendremos una advertencia mostrándonos que el plugin
no está oficialmente respaldado por Oracle, presionemos Continue. Después,
presionamos el botón Finish. Para activarlo, nos movemos a la
pestaña Installed, y podemos ver que efectivamente, ambos componentes están
instalados y activados. Regresando a NetBeans, presionemos F11 para compilar
el proyecto, luego F6 para probarlo. La primera vez, se nos solicitará que
seleccionemos el dispositivo a utilizar, deberíamos tener en ese lista el que
creamos con anterioridad bajo la sección Start AVD, seleccionemos nuestro
dispositivo y presionemos OK para ver nuestro proyecto (que no hace nada en
realidad) en el emulador seleccionado. Nos vemos en próximas entradas
Developers!.
www.asociacionaepi.es