In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Clases de Harbour

Lenguaje de progamación XBase en español
Responder
jvtecheto
Mensajes: 127
Registrado: Jue Dic 19, 2013 1:18 pm

Clases de Harbour

Mensaje por jvtecheto »

Una curiosidad:

Las clases de Harbour porque al referirse a ellas se añaden los paréntesis.

Ejemplo creamos :

CREATE CLASS foo
VAR name INIT 'FOO'
ENDCLASS

y para referirnos a ella hariamos
foo():new()

otra cosa, todas las clases de Harbour son estáticas o sea se pueden utilizar sin instanciarlas.
no como en otros lenguajes en los que hay clases instanciables y otras estáticas o de clase(que no permiten su instanciación), ejemplo c#

que por ejemplo hay clases que hay que instanciar.

Form2 Ventana2 = new Form2();

o otras como Math , que accedes directamente. Math.SQrt(90); // Son Estaticas no instanciables.

siento estar un poco liado.

Saludos.

Jose Vte.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Clases de Harbour

Mensaje por jfgimenez »

José Vicente,

en Harbour no existen las clases NO instanciables. Todas se pueden instanciar. Es más, la forma de instanciarlas es usando tan sólo la "función de clase". Así, para instanciar la clase foo, sólo hay que poner:

Código: Seleccionar todo

oFoo := Foo()
Fíjate que no he puesto :New() ni nada por el estilo. Con sólo ejecutar la función de clase se instancia un objeto de esa clase. La llamada a :New() sirve para inicializar el objeto. Podíamos haber usado :Create(), :Init(), :Initialize(), o cualquier otra cosa, pero en Xailer decidimos que iba a ser :New(), y que ese método además iba a recibir parámetros de inicialización, que casi siempre es oParent. En cualquier caso, esto es una regla de Xailer, no de Harbour estrictamente, aunque otras librerías de Harbour también usan :New() con los mismos o con otros parámetros.

Por otro lado, también tenemos algunas clases que las crea el propio Xailer, y por lo tanto no hay que instanciarlas: Application, Screen, Printer y AppData
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
jvtecheto
Mensajes: 127
Registrado: Jue Dic 19, 2013 1:18 pm

Re: Clases de Harbour

Mensaje por jvtecheto »

Muchisimas gracias Jose.

Cada dia se mas sobre Harbour. :D

Saludos.

Jose Vte.
Responder