Saltar la navegación

4.2.- Inicialización de objetos.

Para crear o instanciar un objeto de un determinado tipo de objeto, debes hacer una llamada a su método constructor. Esto lo puedes realizar empleando la instrucción NEW seguido del nombre del tipo de objeto como una llamada a una función en la que se indican como parámetros los valores que se desean asignar a los atributos inicialmente. En una asignación también puedes optar por hacer eso mismo omitiendo la palabra NEW.

El orden de los parámetros debe coincidir con el orden en el que están declarados los atributos, así como los tipos de datos. El formato sería como el siguiente:

variable_objeto := NEW Nombre_Tipo_Objeto (valor_atributo1, valor_atributo2, ...);

Por ejemplo, en el caso del tipo de objeto Usuario:

u1 := NEW Usuario('luitom64', 'LUIS ', 'TOMAS BRUÑA', '24/10/07', 100);

En ese momento se inicializa el objeto. Hasta que no se inicializa el objeto llamando a su constructor, el objeto tiene el valor NULL.

Es habitual inicializar los objetos en su declaración.

u1 Usuario := NEW Usuario('luitom64', 'LUIS ', 'TOMAS BRUÑA', '24/10/07', 100);

La llamada al método constructor se puede realizar en cualquier lugar en el que se puede hacer una llamada a una función de la forma habitual. Por ejemplo, la llamada al método constructor puede ser utilizada como parte de una expresión.

Los valores de los parámetros que se pasan al constructor cuando se hace la llamada, son asignados a los atributos del objeto que está siendo creado. Si la llamada es al método constructor que incorpora Oracle por defecto, debes indicar un parámetro para cada atributo, en el mismo orden en que están declarados los atributos. Ten en cuenta que los atributos, en contra de lo que ocurre con variables y constantes, no pueden tener valores por defecto asignados en su declaración. Por tanto, los valores que se desee que tengan inicialmente los atributos de un objeto instanciado deben indicarse como parámetros en la llamada al método constructor.

Existe la posibilidad de utilizar los nombres de los parámetros formales en la llamada al método constructor, en lugar de utilizar el modelo posicional de los parámetros. De esta manera no es obligatorio respetar el orden en el que se encuentran los parámetros reales respecto a los parámetros formales, que como se ha comentado antes coincide con el orden de los atributos.

DECLARE
u1 Usuario;
BEGIN
u1 := NEW Usuario('user1', -10);
/* Se mostrará el crédito como cero, al intentar asignar un crédito negativo */
dbms_output.put_line(u1.credito);
END;
/

Conjunto de datos y órdenes insertados en una secuencia estructurada o específica que el procesador interpreta y ejecuta

Autoevaluación

Pregunta

¿Cuál de las siguientes inicializaciones de objetos es correcta para el tipo de objeto Factura, suponiendo que dispone de los atributos número (INTEGER), nombre (VARCHAR2) e importe (NUMBER)?

Respuestas

factura1 := NEW Factura(3, 'Juan Álvarez', 30.50);

factura1 = Factura(3, 'Juan Álvarez', 30.50);

factura1 := NEW Factura('Juan Álvarez', 3, 30.50);

factura1 := NEW (3, 'Juan Álvarez', 30.50);

Retroalimentación