¡Recomienda este blog!

miércoles, 10 de marzo de 2010

Mi comienzo con JAVA.

Hace relativamente poco que me he adentrado de lleno en el mundo de la programación orientada a objetos y dando salida a mis inquietudes voy a realizar una especie de resumen para hacer incapié en apectos que son desconocidos en programación imperativa.

Cabe destacar la gran importancia del concepto de polimorfismo y herencia en lenguajes como Java. Por este hecho voy a centrar esta pequeña reflexión en estos aspectos.

Por supuesto se admiten todo tipo de críticas constructivas.

Cuando comienzas a estudiar un lenguaje orientado a objetos como en este caso lo es Java, desde mi punto de vista lo primero que hay que tener claro es que es una clase, objeto etc. A continuación vamos a realizar una definición informal para centrar un poco nuestro estudio. Y seguidamente daremos definiciones breves sobre conceptos de POO.

DEFINICIÓN DE CLASE

Descripción abstracta de un grupo de objetos (Instancia de la clase ), cada uno de los cuales se diferencia por un estado específico y porque es capaz de realizar una serie de operaciones,es decir, podemos denominar clase de una forma incorrecta pero que sirva de aclaración, como una estructura en C.

• Plantilla o patrón que describe una colección de objetos similares, siendo el objeto una instancia de la clase.
• Define un nuevo tipo de datos
• En general, consta de

< style="color: rgb(51, 51, 255);">( Y a veces de un Constructor,
que es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables explícitamente para su iniciación. )

Los datos definidos en una clase se llaman variables de instancia.
• En general, las variables de instancia son modificadas por los métodos definidos en su clase.
• Los datos de un objeto o instancia son propios y están separados de los datos de otro objeto.
• Sólo se especifica un método main en la clase que sea punto de partida del programa.
• Las applets ( Applet: Aplicacion java para entorno web) no utilizan método main.
• La declaración de la clase y la implementación de los métodos se almacenan en el mismo fichero.

HERENCIA.


La herencia permite establecer una relación jerárquica entre las clases (y por tanto entre los objetos) permitiendo la reutilización de las características (atributos y métodos) ya definidas para ciertas clases.

La herencia supone una clase base (superclase)y una jerarquía de clases que contiene las clases derivadas (subclases) que heredan el código y los datos de la superclase, añadiendo su propio código y datos e incluso cambiando los de la superclase (anulación).

CÓMO HEREDAR EN JAVA.

Se trata de jerarquizar las diversas clases que componen el sistema, de forma que las clases situadas en la parte inferior de la jerarquía hereden las características
(métodos y atributos) de las clases situadas en los niveles superiores de la jerarquía Consideremos un sistema de control de tráfico en el que se incluye un subsistema para modelar vehículos de cualquier tipo:

Ejemplo:
1. Identificar las clases relevantes del modelo.

2. Abstraer las características comunes a los distintos objetos agrupándolas dentro de una clase para reutilizarla por herencia en la construcción de nuevas clases.

• Creamos la superclase Vehículo que contiene las características comunes a todos los vehículos.
• Creamos las subclases Vehículo con motor que hereda la clase Vehículo y añadiendo características propias.

< style="font-weight: bold;">UPCASTING


• Consiste en asignarle a una variable referencia de una clase una referencia a un objeto perteneciente a una subclase de esta.
• La subclase puede ser inmediata o no.
• Cuando se realiza upcasting, sólo se puede tener acceso a aquellos miembros definidos en la superclase.

Se utiliza para invocar al constructor de la superclase o para hacer referencia a los miembros definidos en la superclase.

Automovil(int c, int nr, int p, int cil, int np) { super(c,nr,p,cil); numPuertas=np; }

Los atributos de la subclase y la superclase están en la misma dirección de memoria. Si el constructor de la superclase está sobrecargado, el tipo y número de argumentos pasados a super deciden cual es el constructor utilizado.

• Sólo se puede utilizar super en el constructor de la subclase.
• Debe ser la primera línea en el constructor de la subclase.
• Si no se utiliza super en el constructor de la subclase, se invoca al constructor por defecto (nombreDeSuperclase()) por lo que debe estar definido.
• super se puede utilizar para acceder a los atributos y métodos definidos en la superclase inmediata: super.miembro HERENCIA

MULTINIVEL

• Se pueden construir jerarquías de clases que pueden contener tantos niveles de herencia como se desee.
• En este caso cada subclase hereda todas las características encontradas en todos sus superclases.
• Cuando se construye un objeto de una subclase, Java inserta automáticamente una llamada al constructor de la superclase para asegurar una correcta inicialización del objeto de la subclase.

EL ESPECIFICADOR DE ACCESO protected

El especificador de acceso protected permite hacer visibles los miembros de una superclase a todas aquellas subclases definidas en un paquete distinto al de la superclase, quedando ocultos al resto de clases externas al paquete de la superclase, aunque visible a cualquier clase del paquete. Por tanto tienen acceso a un miembro protected:

< style="font-weight: bold;">SOBREESCRITURA DE MÉTODOS Y LIGADURA DINÁMICA


• En dos clases ligadas por una relación de herencia se puede sobrescribir los métodos.
• La implementación del método puede cambiar en función de la clase en la que aparezca definido.
• Este mecanismo permite llevar a la práctica el concepto de polimorfismo
• Enlazado: Proceso de conexión entre la llamada a un método y su implementación.

< style="font-weight: bold;">CLASES ABSTRACTAS

Las clases abstractas son clases que se pueden definir de manera incompleta, es decir podemos definir métodos (abstractos) postergando su implementación.
Declaración de una clase abstracta:

abstract class Nombre { // cuerpo de la clase }

Declaración de un método abstracto:

abstract tipo nombre (parámetros);

Propiedades:
• No se puede instanciar, aunque si se puede referenciar.
• Si una clase contiene al menos un método abstracto, debe ser declarada como abstracta.
• Puede tener constructores.
• Puede no contener métodos abstractos.
• No se pueden declarar métodos estáticos abstractos ni constructores abstractos.
• Las subclases, o son abstractas o implementan todos

LA CLASE Object .

• Es una clase especial definida por Java que es la superclase de todas las clases (tanto las definidas por el programador como las del propio lenguaje)
• Es una clase sin atributos que contiene un conjunto de métodos heredados por todas las clases.
• Cualquier variable referencia de tipo Object puede referenciar a un objeto de cualquier otra clase (incluyendo matrices, dado que son definidas como objetos).

PASO DE OBJETOS POR VALOR

• En Java cualquier parámetro se pasa por valor ( cosa que en C no ocurre ): tanto primitivas como variables referencia a objeto.
• Al pasar referencias a objetos, la modificación de estos en el método afecta también al objeto fuera del método. Dado que se pasamos una referencia a objeto, de hecho siempre los objetos se pasan por referencia.
• Para pasar tipos simples por referencia se utiliza un objeto asociado a las mismas.
• Para simular el paso de objetos por valor pasamos como parámetro una copia del objeto.
Utilizamos el método clone de la clase Object heredado por todas las clases.
• Para evitar que todos los objetos puedan ser clonados por defecto es declarado protected.

¿Que hacer para clonar?:

1. Sobreescribir el método clone haciéndolo público para ser accesible desde cualquier clase.
2. Implementar la interfaz vacía Cloneable que nos permitirá averiguar si un objeto puede ser
clonado: S Preguntando si una variable objeto es una instancia de Cloneable if (exc1
instanceof Cloneable) { ..... } S Mediante la excepción CloneNotSupportedException
3. Realizar un casting sobre el valor devuelto por clone.

JERARQUIZACIÓN POR AGREGACIÓN

• Consiste en encapsular un conjunto de objetos dentro de una clase, creando nuevas clases.
• Para clonar clases compuestas hay que clonar, en el método clone() del objeto compuesto, los objetos encapsulados utilizando a su vez el método clone() de cado uno de estos objetos.
• Es necesario asegurarse mantener las referencias a los objetos compuestos para poder a su vez
clonar estos objetos.

viernes, 5 de marzo de 2010

Práctica 1 --> Programación II.




martes, 2 de marzo de 2010

El terremoto de Chile redujo la duración del día y desplazó el eje de la Tierra

NOTICIA MUY INTERESANTE PUBLICADA EL DÍA 02/03/2010 EN "EL MUNDO"

El terremoto de 8,8 grados en la escala de Richter ocurrido el sábado en Chile, que ha dejado al menos 700 muertos, redujo muy levemente la duración del día y desplazó el eje de la Tierra en ocho centímetros, según los datos de la agencia espacial estadounidense (NASA).

En un artículo publicado en la revista 'Business Week', el geofísico de laboratorio de la NASA en Pasadena, California, Richard Gross, indicó que los terremotos pueden desplazar hasta cientos de kilómetros de rocas en espacios muy reducidos, lo cual modifica la distribución de la masa en el planeta y afecta a la rotación de la Tierra.

Este pequeño cambio queda englobado "en cambios más grandes debido a otras causas, como la masa atmosférica que se mueve sobre la Tierra", indicó el decano de Geofísica de la Universidad Nacional Central de Taiwan, Benjamin Fong Chao.

A partir de cálculos elaborados mediante métodos informatizados, la NASA ha constatado que, a causa del terremoto de Chile, el eje de la Tierra se ha movido ocho centímetros y que "la duración del día se debe haber acortado 1,26 microsegundos (millonésimas de segundo)".

No es la primera vez que se detectan cambios similares tras un terremoto. El día se redujo en 6,8 microsegundos a finales de 2004 a causa del seísmo de 9,1 grados registrado cerca de Sumatra, que provocó el mayor 'tsunami' de la historia.

El efecto del patinador sobre hielo

David Kerridge, al mando del equipo de Investigación Geológica de Reino Unido en Edimburgoe British Geological Survey in Edinburgh, lo explica así: "Cuando una patinador sube sus brazos cuando está dando vueltas consigue ir a más y más velocidad. Es la misma idea: la tierra está girando y si cambia la distribución de la masa, el tiempo de rotación cambia".

Según el profesor de la Universidad de Liverpool Andreas Rietbrock, que lleva tiempo estudiando la zona donde se produjo el terremoto de Chile, la Isla de Santa María, cerca de Concepción (la segunda ciudad más grande del país y una de las más dañadas por el seísmo) podría haberse elevado unos dos metros como consecuencia del temblor.

También podría ocurrir lo contrario. Según recoge la CNN, en base a estimaciones científicas, si la presa de Tres Gargantas de China se llenase, sumando 40 kilómetros cúbicos de agua, produciría, debido a su peso, un incremento en la duración del día de 0.06 microsegundos.

lunes, 1 de marzo de 2010

Ruta Cicloturista "Parajes de Villacañas" 28/03/10

Se celebrará el 28 de marzo y discurrirá por lugares como las lagunas Larga, Peña Hueca y Taray, la cañada Real Soriana o la senda Galiana. Por primera vez se organiza una marcha con carácter comarcal

El Ayuntamiento de Villacañas ha organizado una marcha cicloturista que discurrirá por alguno de los parajes más importantes de su término municipal y que se celebrará el domingo 28 de marzo. Para organizar esta ruta, denominada “Parajes de Villacañas”, se ha contado con la colaboración inestimable del Club Cicloturista de Pedales y Caminos, de la Asociación Alborada, y de aficionados a este deporte. El periodo de inscripción para la ruta ya está abierto. Todos aquellos aficionados al cicloturismo tanto de Villacañas como de otras localidades, ya que por primera vez se organiza con carácter comarcal, pueden informarse a través de la web municipal de una ruta que pasará por alguno de los parajes más emblemáticos del municipio. A lo largo de los 60 km. de recorrido, de los cuales 40 serán controlados y 20 libres, se circulará por humedales como las lagunas Larga, Taray y Peñahueca, la cañada Real Soriana, la senda Galiana o la sierra en la que se encuentra el parque eólico.


La organización recuerda que se trata de una ruta de dificultad media, en la cual es obligatorio el uso del casco. La inscripción previa es gratuita pero imprescindible para recibir los dos avituallamientos previstos durante la ruta, uno líquido y otro sólido, así como disfrutar del típico mojete villacañero (guiso a base de patatas y carne), que se preparará al finalizar la ruta en la explanada del Polideportivo Municipal. Los participantes que lo deseen podrán también utilizar las duchas del pabellón al finalizar la ruta.
Las inscripciones podrán realizarse hasta el jueves 25 de marzo, presencialmente en el Ayuntamiento o a través de la web del Ayuntamiento de Villacañas, enviando la hoja de inscripción debidamente cumplimentada a la siguiente dirección de correo electrónico: plandedrogas@aytovillacanas.com.
El concejal de Deportes, Fran Fernández, ha animado a todos los amantes de la bicicleta a participar en una ruta que discurrirá por hermosos parajes villacañeros y cuyo recorrido “ha sido propuesto por el Club Cicloturista de Pedales y Caminos de Villacañas, que al final son quienes mejor conocen los caminos y rutas de nuestro municipio”. Precisamente a ellos, así como a la Asociación de Prevención y Ayuda al Toxicómano, que también colabora en la organización de la ruta, ha querido Fernández agradecer su implicación en una actividad que, además, se enmarca dentro de las acciones en materia de prevención de las drogodependencias que se llevan a cabo a través del II Plan Municipal de Drogas, en ejecución desde noviembre de 2008.

Un Plan cuyas acciones se llevan a cabo a través de programas de prevención, atención y asistencia individualizada y reintegración social de los drogodependientes. Se trata además de un plan especialmente extensivo en cuanto a las sustancias ya que observa acciones para prevenir y reducir el consumo tanto de las llamadas “drogas legales” como de las “ilegales”.