AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / POO (Programación Orientada a Objetos)
  • Presentación
  • Sintaxis del constructor de la clase
  • Nota sobre los constructores
  • Sintaxis de los constructores para las clases base y los miembros
  • Notas
  • Sintaxis del método Destructor
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Cuando se crea una clase en el editor de código, los métodos Constructor y Destructor son creados automáticamente por Default.
  • El método Constructorsi lo define el desarrollador, se llama automáticamente al instanciar un objeto. Se utiliza para realizar los pasos de inicialización para el objeto o relacionados con el objeto (asignación de barras, comprobaciones, etc.).
  • TEl método de destrucción, si está definido por el desarrollador, es llamado automáticamente cuando se borra el objeto (salida del Procedure en el que se instanció el objeto). Se puede utilizar para liberar recursos, por ejemplo....
Los métodos Constructor y Destructor no pueden contener las siguientes funciones: Event, Timer, Multitask, DnDEvent, DDEEvent, CallDLL32, etc.
Observaciones:
  • Los métodos del Constructor pueden ser públicos, protegidos o privados.
  • Usted tiene la capacidad de crear algunos constructores de sintaxis múltiple. Para obtener más información, consulte Prototipo overload.
Sintaxis del constructor de la clase
Declaración del constructor
PROCEDURE [<Access>] Constructor([<Parameters>])
Detalles de la sintaxis
<Acceso>: Opcional
3 niveles de acceso disponibles:
  • PÚBLICO (por Default): El constructor es accesible fuera de la clase.
  • PROTECTED: El constructor es accesible en la clase y en las clases derivadas.
  • PRIVATE: El constructor es accesible sólo en la clase.
Para obtener más información, consulte Notas sobre los Constructores.
Observación: Para modificar el alcance del Constructor, tiene la posibilidad de usar el menú contextual en el método en el explorador del proyecto.
Parámetros> <Parámetros
Parámetros opcionales del constructor. Si se especifican estos parámetros, deben pasarse durante el declaración de objetos o durante el la instanciación dinámica.
Declaración del objeto: el constructor es llamado automáticamente
<ObjectName> is [object] <Class Name> ([<Parameters>])
Detalles de la sintaxis
Nombre del Objeto> <Nombre del Objeto
Nombre que identifica la instancia de la clase.
<Nombre de la clase>
Nombre que identifica a la clase, definido al crear la clase en el editor de código.
<Parámetros>
Parámetros opcionales del constructor.
Instanciación dinámica: el constructor es llamado automáticamente
<ObjectName> is dynamic [object] <ClassName>
<ObjectName> = new <ClassName> ([<Parameters>])
Detalles de la sintaxis
Nombre del Objeto> <Nombre del Objeto
Nombre que identifica la instancia de la clase.
<Nombre de la clase>
Nombre que identifica a la clase, definido al crear la clase en el editor de código.
<Parámetros>
Parámetros opcionales del constructor.
Nota sobre los constructores
Alcance y acceso de los Constructores
El Constructor de una clase puede ser público, protegido o privado.
Herencia:
  • Una clase con Constructor público puede ser heredada.
  • Una clase con Constructor protegido puede ser heredada.
  • Una clase con Constructor privado puede ser heredada.
Accesibilidad de Constructores privados o protegidos:
  • Un objeto de la clase no se puede instanciar en un código de proyecto.
  • Una array cuyos elementos son instancias de la clase no puede ser declarada en un código de proyecto.
  • Un miembro del tipo de la clase en un Variable compuesto, una estructura u otra clase no puede ser declarado en un código de clase o en un código de proyecto.
Nota importante: Independientemente del alcance del Constructor, los objetos dinámicos siempre se pueden declarar en un código de proyecto.. Si no se puede realizar la instanciación (la asignación) de los objetos, la declaración de objetos dinámicos siempre es posible.. Por lo tanto, los siguientes códigos son siempre válidos:
// In these two case, the instantiation is not performed during the declaration.
Object1 is dynamic Class1
Object2 is Class1 <-...
Para instanciar objetos en el código de proyectotiene la capacidad de utilizar un método global de la clase.
Ejemplo con un constructor privado:
// Global method of ClassWithPrivateConstructor
GLOBAL Procédure GlobalMethodAllocation(...)

o is ClassWithPrivateConstructor
RESULT o
// *****************************************

// Retrieve an object of the class from a project code:

// Solution 1:
o2 is dynamic ClassWithPrivateConstructor
o2 = ClassWithPrivateConstructor.GlobalMethodAllocation(...)

// Solution 2:
o3 is ClassWithPrivateConstructor <- CClassWithPrivateConstructor.GlobalMethodAllocation(...)
Atención: El operador de asignación (=) se comporta de forma diferente con los objetos dinámicos y con los objetos no dinámicos.. El uso de los objetos o2 y o3 en las asignaciones desencadenará un comportamiento diferente:
// Declaration of a new dynamic object.
o4 is dynamic ClassWithPrivateConstructor

// o2 is a reference to o4
o2 = o4

// The members of o4 are copied into o3
o3 = o4

Sintaxis de los constructores para las clases base y los miembros
Ejecutar el constructor de una clase base o miembro
Si una clase base o un miembro del tipo de clase tiene un constructor, se llama automáticamente a este constructor sin parámetro. Debes hacerlo:
  • asignar valores de Default a los parámetros del constructor (o a los parámetros de la clase o miembro base)
  • llamar explícitamente al constructor pasando los parámetros.
Llamando al método constructor para construir una clase
Constructor <ClassName>(<Parameters>)
Detalles de la sintaxis
<ClassName>
Nombre que identifica a la clase.
<Parámetros>
Parámetros del constructor.
Llamar al constructor para que construya un miembro
Constructor <Member name> (<Parameters>)
Detalles de la sintaxis
<Nombre del miembro>
Nombre que identifica al miembro de la clase.
<Parámetros>
Parámetros del constructor.
Ejemplo
Los constructores explícitos de la clase base o miembro deben ser llamados en la primera declaración del constructor de la clase derivada.
//----Declare the BaseClass1 class
BaseClass1 is Class
BaseClass1Member is int
END
//---- Constructor of BaseClass1
PROCÉDURE Constructor(Param1)
Info("Constructor of BaseClass1 => " + Param1)
//----Declare the BaseClass2 class
BaseClass2 is Class
BaseClass2Member is int
END
//---- Constructor of BaseClass2
PROCÉDURE Constructor(Param1)
Info("Constructor of BaseClass2 => " + Param1)
//---- Declaration of DerivedClass
DerivedClass is Class
// Inheritance of BaseClass1 whose
// Constructor expects a parameter
inherits from ClassBase1
// BaseClass2 member whose
// Constructor expects a parameter
DerivedClassMember is BaseClass2
END
//----Constructor of DerivedClass
PROCÉDURE Constructor()
// Explicit call to Constructor
Constructor BaseClass1(10)
Constructor DerivedClassMember(20)
Notas
Default Valor de los miembros
Cada miembro de una clase es set a cero si ningún constructor es associated con la clase.
Sintaxis del método Destructor
Declaración del método
PROCEDURE Destructor <ClassName>()
Detalles de la sintaxis
<ClassName>
Nombre que identifica la clase. El destructor no acepta ningún parámetro.
Android Caso especial en Java/Android
El concepto de destructor no existe en Java/Android. Por lo tanto, el código encontrado en el destructor de una clase nunca se ejecutará.
Un objeto es liberado por el recolector de basura cuando ya no está referenciado en la aplicación.. No hay forma de prever el momento en que esta operación ocurra..
Para forzar la liberación de un objeto, tienes la posibilidad de asignarlo a NULL o utilizar la sentencia Libre.
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local