domingo, 16 de octubre de 2011

EQUIPO 6.    SOBRECARGA DE MÉTODOS.

En programación orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo de los parámetros usados. A esto se llama también sobrecarga de funciones.
Ejemplo:
Calificacion (int a, int b, int c)
Calificacion (float d, float f, float g)
//--------------------------------------------
//a,b,c (son valores enteros entre 0 y 255)
//d,f,g (son valores flotantes entre 0.0 y 1.0)

En este ejemplo cuando hacemos un  llamado a este método (en este caso seria un constructor), el compilador hace referencia al tipo de parámetros. La sobrecarga seria redefinir cualquiera de estos métodos utilizando los mismos parámetros pero para un proceso distinto.

El mismo método dentro de una clase permite hacer cosas distintas en función de los parámetros. Java no permite al programador implementar sus propios operadores sobrecargados, pero sí utilizar los predefinidos como el +, C++, por el contrario si permite hacerlo.
 EQUIPO 5.  MÉTODOS: DECLARACIÓN, MENSAJES, PASO DE  PARÁMETROS, RETORNO DE VALORES.

Los métodos son subrutinas que definen la interfaz de una clase, sus capacidades y comportamiento. Un método ha de tener por nombre cualquier identificador legal distinto de los ya utilizados por los nombres de la clase en que está definido. Los métodos se declaran al mismo nivel que las variables de instancia dentro de una definición de clase.

En la declaración de los métodos se define el tipo de valor que devuelven y a una lista formal de parámetros de entrada, de sintaxis tipo identificador separadas por comas. La forma general de una declaración de método es:

tipo_devuelto nombre_de_método( lista-formal-de-parámetros ) {

   cuerpo_del_método;
 }


Por ejemplo el siguiente método devuelve la suma de dos enteros:

int metodoSuma( int paramX, int paramY ) {


  return ( paramX + paramY );


}

En el caso de que no se desee devolver ningún valor se deberá indicar como tipo la palabra reservada void. Así mismo, si no se desean parámetros, la declaración del método debería incluir un par de paréntesis vacíos (sin void):

void metodoVacio( ) { };

Los métodos son llamados indicando una instancia individual de la clase, que tendrá su propio conjunto único de variables de instancia, por lo que los métodos se pueden referir directamente a ellas.

El método inicia() para establecer valores a las dos variables de instancia sería el siguiente:

void inicia( int paramX, int paramY ) {

 x = paramX;

  y = paramY;

 }

MENSAJES Y MÉTODOS

 El modelado de objetos no sólo tiene en consideración los objetos de un sistema, sino también sus interrelaciones.
 Los objetos interactúan enviándose mensajes unos a otros. Tras la recepción de un mensaje el objeto actuará. La acción puede ser el envío de otros mensajes, el cambio de su estado, o la ejecución de cualquier otra tarea que se requiera que haga el objeto. Un método se implementa en una clase, y determina cómo tiene que actuar el objeto cuando recibe un mensaje.

Cuando un objeto A necesita que el objeto B ejecute alguno de sus métodos, el objeto A le manda un mensaje al objeto B.



 Al recibir el mensaje del objeto A, el objeto B ejecutará el método adecuado para el mensaje recibido.

PARÁMETROS.

Los métodos son un bloque de código que contiene una serie de instrucciones. En java, cada instrucción se ejecuta en el contexto de un método.

Los métodos se declaran en una clase o estructura especificando el nivel de acceso, el valor devuelto, el nombre del método y los parámetros de método. Los parámetros de método se incluyen entre paréntesis y separados por comas. Los paréntesis vacíos indican que el método no requiere ningún parámetro. Esta clase contiene tres métodos:

Public class Motorcycle
{
    public void StartEngine()
    public void AddGas(int gallons)
    public int Drive(int miles, int speed) { return 0; }
}
Llamar a un método en un objeto es similar a tener acceso a un campo. Después del nombre de objeto, agregue un punto, el nombre del método y paréntesis. Los argumentos se enumeran entre paréntesis y separados por comas. Por tanto, se puede llamar a los métodos de la clase Motorcycle del modo siguiente:

Motorcycle moto = new Motorcycle();

moto.StartEngine();
moto.AddGas(15);
moto.Drive(5, 20);
Los parámetros que un método recibe también se proporcionan entre paréntesis, pero se debe especificar el tipo y nombre de cada parámetro. El nombre no tiene por qué ser igual que el argumento. Por ejemplo:

public static void PassesInteger()
{
    int fortyFour = 44;
    TakesInteger(fortyFour);
}
static void TakesInteger(int i)
{
    i = 33;
}
Aquí un método denominado PassesInteger pasa un argumento a un método denominado TakesInteger. En PassesInteger el argumento se denomina fortyFour, pero en TakeInteger es un parámetro denominado i. Este parámetro sólo existe dentro del método TakesInteger. Otras variables también pueden denominarse i y pueden ser de cualquier tipo, siempre y cuando no sean parámetros o variables declaradas en ese método.

RETORNO DE VALORES.

Los métodos pueden devolver un valor al llamador. Si el tipo de valor de retorno (el que aparece antes del nombre de método) no es void, el método puede devolver el valor mediante la palabra clave return. Una instrucción con la palabra clave return, seguida de un valor que coincida con el tipo de valor devuelto, devolverá ese valor al llamador del método.

La palabra clave return también detiene la ejecución del método. Si el tipo de valor devuelto es void, una instrucción return sin ningún valor sigue siendo útil para detener la ejecución del método. Sin la palabra clave return, el método detendrá la ejecución cuando llegue al fin del bloque de código. Es necesario que los métodos con un tipo de valor devuelto no nulo utilicen la palabra clave return para devolver un valor. Por ejemplo, estos dos métodos utilizan la palabra clave return para devolver enteros:
Public class SimpleMath
{
    public int AddTwoNumbers(int number1, int number2)
    {
        return number1 + number2;
    }
     public int SquareANumber(int number)
    {
        return number * number;
 }
}
Para emplear un valor devuelto por un método, el método de llamada puede utilizar la propia llamada del método en cualquier parte donde un valor del mismo tipo sea suficiente.

EQUIPO 4.  INSTANCIACIÓN DE UNA CLASE.

Los tipos simples de Java describían el tamaño y los valores de las variables. Cada vez que se crea una clase se añade otro tipo de dato que se puede utilizar igual que uno de los tipos simples. Por ello al declarar una nueva variable, se puede utilizar un nombre de clase como tipo. A estas variables se las conoce como referencias a objeto.

Todas las referencias a objeto son compatibles también con las instancias de subclases de su tipo. Del mismo modo que es correcto asignar un byte a una variable declarada como int, se puede declarar que una variable es del tipo MiClase y guardar una referencia a una instancia de este tipo de clase:

MiPunto p;

Esta es una declaración de una variable p que es una referencia a un objeto de la clase MiPunto, de momento con un valor por defecto de null. La referencia null es una referencia a un objeto de la clase Object, y se podrá convertir a una referencia a cualquier otro objeto porque todos los objetos son hijos de la clase Object.

CONSTRUCTORES

Las clases pueden implementar un método especial llamado constructor. Un constructor 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.

El constructor tiene exactamente el mismo nombre de la clase que lo implementa; no puede haber ningún otro método que comparta su nombre con el de su clase. Una vez definido, se llamará automáticamente al constructor al crear un objeto de esa clase (al utilizar el operador new).

Por ejemplo:
MiPunto( ) {

 inicia( -1, -1 );
}


Este constructor denominado constructor por defecto, por no tener parámetros, establece el valor -1 a las variables de instancia “X” y “Y” de los objetos que construya.
Este otro constructor recibe dos parámetros:

MiPunto( int paraX, int paraY ) {

  inicia( paramX, paramY );
}

EL OPERADOR NEW

El operador new crea una instancia de una clase (objetos) y devuelve una referencia a ese objeto. Por ejemplo:

MiPunto p2 = new MiPunto(2,3);

Este es un ejemplo de la creación de una instancia de MiPunto, que es controlador por la referencia a objeto p2.

Hay una distinción crítica entre la forma de manipular los tipos simples y las clases en Java: Las referencias a objetos realmente no contienen a los objetos a los que referencian. De esta forma se pueden crear múltiples referencias al mismo objeto.


LA REFERENCIA THIS

Java incluye un valor de referencia especial llamado this, que se utiliza dentro de cualquier método para referirse al objeto actual. El valor this se refiere al objeto sobre el que ha sido llamado el método actual. Se puede utilizar this siempre que se requiera una referencia a un objeto del tipo de una clase actual. Si hay dos objetos que utilicen el mismo código, seleccionados a través de otras instancias, cada uno tiene su propio valor único de this.

LA DESTRUCCIÓN DEL OBJETO


Cuando un objeto no va a ser utilizado, el espacio de memoria de dinámica que utiliza ha de ser liberado, así como los recursos que poseía, permitiendo al programa disponer de todos los recursos posibles. A esta acción se la da el nombre de destrucción del objeto.

En Java la destrucción se puede realizar de forma automática o de forma personalizada, en función de las características del objeto.

La destrucción por defecto: Recogida de basura

El intérprete de Java posee un sistema de recogida de basura, que por lo general permite que no nos preocupemos de liberar la memoria asignada explícitamente.
El recolector de basura será el encargado de liberar una zona de memoria dinámica que había sido reservada mediante el operador new, cuando el objeto ya no va a ser utilizado más durante el programa (por ejemplo, sale del ámbito de utilización, o no es referenciado nuevamente).

 La destrucción personalizada: finalize

A veces una clase mantiene un recurso que no es de Java como un descriptor de archivo o un tipo de letra del sistema de ventanas. En este caso sería acertado el utilizar la finalización explícita, para asegurar que dicho recurso se libera. Esto se hace mediante la destrucción personalizada, un sistema similar a los destructores de C++.

Para especificar una destrucción personalizada se añade un método a la clase con el nombre finalize:

class ClaseFinalizada{
ClaseFinalizada() { // Constructor
    // Reserva del recurso no Java o recurso compartido
  }
  protected void finalize() {

    // Liberación del recurso no Java o recurso compartido
  }
}

 El intérprete de Java llama al método finalize(), si existe cuando vaya a reclamar el espacio de ese objeto, mediante la recogida de basura.
EQUIPO 3.  DECLARACIÓN DE CLASE: ATRIBUTOS, MÉTODOS, ENCAPSULA MIENTO.


DECLARACIÓN DE UNA CLASE

En la declaración de una clase, se especifica el identificativo de la clase, y una serie de características propias de los Lenguajes Orientados a Objetos, que puede tener una clase. La sintaxis general de la declaración de una clase es la siguiente:


ATRIBUTOS

Un atributo es una característica de un objeto a la cual se le puede asignar un valor (nombre, color, tamaño, edad, sueldo, etc.). Los atributos son datos específicos de una clase. En la definición de clase se indica cuáles son los atributos y conque nombre se va a designar a cada uno de ellos. En el caso de una clase su carácter público es necesario para poder crear objetos de esa clase en otros puntos del programa (new).

Los atributos se pueden declarar con dos clases de tipos: un tipo simple Java (ya descritos), o el nombre de una clase (será una referencia a objeto). Cuando se realiza una instancia de una clase (creación de un objeto) se reservará en la memoria un espacio para un conjunto de datos como el que definen los atributos de una clase. A este conjunto de variables se le denomina variables de instancia.

MÉTODOS

En la programación orientada a objetos, un método es una función asociada exclusivamente a una clase (llamados métodos de clase o métodos estáticos) o a un objeto (llamados métodos de instancia). Análogamente a los procedimientos en los lenguajes imperativos, un método consiste generalmente de una serie de sentencias para llevar a cabo una acción, un juego de parámetros de entrada que regularán dicha acción y o, posiblemente, un valor de salida (o valor de retorno) de algún tipo.

Algunos lenguajes de programación asumen que un método debe de mantener el invariante del objeto al que está asociado asumiendo también que éste es válido cuando el método es invocado. En lenguajes compilados dinámicamente, los métodos pueden ser objetos de primera clase, y en este caso se puede compilar un método sin asociarse a ninguna clase en particular, y luego asociar el vínculo o contrato entre el objeto y el método en tiempo de ejecución. 

ENCAPSULAMIENTO



Significa reunir o empaquetar  a todos los variables que pueden considerarse pertenecientes a un objeto. La encapsulación se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dándole al programador acceso sólo a lo que necesita. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos.






EQUIPO2. LENGUAJE DE MODELADO UNIFICADO: DIAGRAMA DE CLASES.

Lenguaje Unificado de Modelado (LUM o UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; está respaldado por el OMG (Object Management Group). Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema.

UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio, funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables.
El lenguaje de modelado es la notación (principalmente gráfica) que usan los métodos para expresar un diseño. El proceso indica los pasos que se deben seguir para llegar a un diseño.

MODELAMIENTO DE CLASES

Un diagrama de clases sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenimiento.

Un diagrama de clases está compuesto por los siguientes elementos:
·         Clase: atributos, métodos y visibilidad.
·         Relaciones: Herencia, Composición, Agregación, Asociación y Uso.

Elementos
  • ·         Clase


  • ·         Es la unidad básica que encapsula toda la información de un Objeto (un objeto es una instancia de una clase). A través de ella podemos modelar el entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.).


  • ·         En UML, una clase es representada por un rectángulo que posee tres divisiones:

En donde:
  • ·         Superior: Contiene el nombre de la Clase
  • ·         Intermedio: Contiene los atributos (o variables de instancia) que caracterizan a la Clase (pueden ser private, protected o public).
  •    Inferior: Contiene los métodos u operaciones, los cuales son la forma como interactúa el objeto con su entorno (dependiendo de la visibilidad: private, protected o public.

miércoles, 31 de agosto de 2011

EQUIPO 1.  ELEMENTOS DEL MODELO OBJETO


La Programación  Orientada a Objetos es el método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representa un ejemplar de una clase y cuyas clases son miembros de una jerarquía de clases unidas mediante relaciones de herencia. Estás tareas se realizan mediante la modelización del mundo real, el soporte fundamental es el modelo objeto. 

Los elementos más importantes de este modelo son:

  • ·         Abstracción
  • ·         Encapsulamiento
  • ·         Modularidad
  • ·         Herencia
  • ·         Polimorfismo


ABSTRACCIÓN

La abstracción consiste en aislar, filtrar o extraer  un elemento de su contexto o del resto de los elementos que lo acompañan obteniendo sus características más importantes. Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de lenguajes pueden implementar los modelos abstractos.

ENCAPSULAMIENTO

Significa reunir o empaquetar  a todos los variables que pueden considerarse pertenecientes a un objeto. La encapsulación se encarga de mantener ocultos los procesos internos que necesita para hacer lo que sea que haga, dándole al programador acceso sólo a lo que necesita. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos.

 MODULARIDAD

Consiste en dividir un programa en clases o subprogramas con el fin de hacerlo mas legible. Al dividir un problema en partes nos facilita la resolución de dicho problema.

HERENCIA

La herencia es un proceso por medio del cual un objeto puede adquirir las propiedades de otro. Esto es importante porque permite dar soporte al concepto de clasificación. La herencia (a la que habitualmente se denomina subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene los atributos y métodos de la clase primaria. La principal ventaja de la herencia es la capacidad para definir atributos y métodos nuevos para la subclase, que luego se aplican a los atributos y métodos heredados.

POLIMORFISMO

Los lenguajes de POO soportan el polimorfismo, lo cual quiere decir esencialmente, que un mismo nombre puede ser utilizado para varios propósitos levemente distintos, pero relacionados entre sí. El polimorfismo permite que se use un nombre para especificar una clase general de acción. Dependiendo del tipo de dato con el cual se esté tratando, se implementará una acción específica. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.