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
  • Herencia de clase
  • Sintaxis detallada
  • Sintaxis conservada para compatibilidad con versiones anteriores
  • Redefinición de métodos
  • Ejemplo
  • Ejemplo
  • Sintaxis utilizada para llamar a un método de clase base
  • Sintaxis 1
  • Sintaxis 2
  • Sintaxis 3
  • Observación
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
La organización jerárquica en clase y subclase ha permitido crear la noción de herencia.
En otras palabras, un objeto de la subclase A (clase derivada) que tiene las mismas características que la clase B (clase ancestral), así como sus propias características, hereda de todas las características de la clase B sin tener que duplicar los programas en el objeto de la subclase A.. El número de líneas de código se reduce.
La herencia es el mecanismo por el cual la clase actualmente descrita utiliza los métodos y los miembros definidos en las clases existentes.
  • La clase existente se llama Clase de antepasados o Clase base.
  • La nueva clase se llama Clase derivada. La clase derivada incluye la clase de los ancestros y añade nuevos métodos, nuevos miembros y nuevas propiedades.
El propósito de la herencia es recuperar, para una clase, los métodos desarrollados para otra clase, añadiendo las características específicas de la nueva clase.
Los objetos encontrados en una clase derivada pueden acceder a todos los métodos, todos los miembros y todas las propiedades de las clases de ancestros; es como si los métodos, los miembros y las propiedades de las clases de ancestros fueran parte de la clase derivada.
Características de la herencia:
  • Una herencia puede ser múltiple. En este caso, la clase derivada puede derivar de varias clases de ancestros.
  • Una herencia puede ser privada o pública (por Default).
    Si la herencia es pública, tiene la posibilidad de acceder a los métodos, las propiedades y los miembros heredados de fuera de la clase..
    Si la herencia es privada, sólo los métodos de la clase derivada pueden acceder a los métodos, propiedades y miembros heredados.
  • Como en todos los idiomas, el polimorfismo opera sólo con los objetos dinámicos.
Sintaxis

Herencia de clase

<NameDerivedClass> is class
[PRIVATE, PROTECTED, PUBLIC]
Inherits from <NameAncestorClass>
<Name Member Derived Class> is <Member Type>
...
END

Sintaxis detallada

<NameDerivedClass>
Nombre que identifica la clase derivada que se declara actualmente.

PRIVATE, PROTECTED, PUBLIC
Palabra clave opcional. Indica si la herencia es privada o no. Si no se especifica esta palabra clave, la herencia es pública.

<NombreClaseAncestor>
Nombre de la clase de antepasados.

<Nombre del Miembro Derivado Clase>
Nombre del miembro de la clase derivada. Este miembro sólo se puede utilizar en un objeto de la clase derivada.

<Tipo del miembro>
Tipo de miembro, elegido entre los tipos disponibles.
FileName is Class
Name is string
Extension is string
Directory is string
END

FileInformation is Class
inherits from FileName
FileSize is int
FileDate is string
FileTime is string
END

Sintaxis conservada para compatibilidad con versiones anteriores

<NameDerivedClass> is class
[PRIVATE, PROTECTED, PUBLIC]
An object <NameAncestorClass>
<Name Member Derived Class> is <Member Type>
...
END
Redefinición de métodos
En una clase derivada, un método de la clase base puede redefinirse creando en la clase derivada un método con el mismo nombre que el de la clase base.
La redefinición de métodos se utiliza para modificar el comportamiento del método definido en la clase base; la clase derivada puede eventualmente redefinir el método de acuerdo con sus requisitos.
El método redefinido es un método virtual de Default.
Observación: WLanguage soporta la sobrecarga de un método (usando dos métodos con el mismo nombre en la misma clase).. Para obtener más información, consulte Prototipo overload/overload.
Observación: los Objeto se utiliza una palabra clave para acceder al objeto actual dentro de un método

Ejemplo

El FileInfo que hereda de la clase Nombre de archivo clase. Estas dos clases tienen un método llamado Display. El método Display de la clase FileInfo utiliza el método Display de la clase FileName.
Clase FileNameFileInfo class
Declaración de la claseDeclaración de la clase
FileName is Class
Name is string
Extension is string
Directory is string
END
FileInformation is Class
inherits from FileName
FileSize is int
FileDate is string  
FileTime is string  
END
Método de visualizaciónMétodo de visualización
PROCÉDURE Display()
Trace(:Name)
Trace(:Extension)
Trace(:Directory)
PROCÉDURE DISPLAY()
Ancestor:Display()
Trace(:FileSize)
Trace(:FileDate)
Trace(:FileTime)

Ejemplo

El polimorfismo opera sólo con los objetos dinámicos.
En este ejemplo, se crea una clase de animal virtual. Dos clases (conejo y gato) heredan de esta clase. Queremos crear una lista de diferentes objetos (conejos y gatos).
Animal is Class
END

Cat is Class
inherits from Animal
END
Rabbit is Class
inherits from Animal
END

ListA is array of 16 dynamic animals
ListA[1] = new cat
ListA[1] = new rabbit
Sintaxis utilizada para llamar a un método de clase base

Sintaxis 1

Ancestor:<Method Name>()
Detalles de la sintaxis
Antepasado
palabra clave utilizada para indicar que el método a utilizar es el método de la clase de ancestros inmediatamente anterior (puede utilizarse para una sola herencia). Para llamar a un método de una clase base independientemente de su nivel en el orden de herencia, se debe usar la sintaxis #2..

Nombre del método> <Método
Nombre del método a utilizar en la clase de los antepasados.

Sintaxis 2

<Base Class>:<Method Name>()
Detalles de la sintaxis
Clase de base> <Clase de base
Nombre de la clase de ancestros donde se definió el método a utilizar.

Nombre del método> <Método
Nombre del método a utilizar en la clase de los antepasados.

Sintaxis 3

:<Base Class>:<Method Name>()
Detalles de la sintaxis
Clase de base> <Clase de base
Nombre de la clase de ancestros donde se definió el método a utilizar.

Nombre del método> <Método
Nombre del método a utilizar en la clase de los antepasados.

Observación

Para los constructores y destructores, se recomienda utilizar sintaxis específicas (véase Sintaxis de los constructores para las clases base y los miembros).
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