Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Dos Clases Que Se Llaman Igual
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Dos Clases Que Se Llaman Igual 
 
Hola a todos.
Este tema va de aclarar el funcionamiento de gambas a la hora de extender una clase.
Si tomamos por ejemplo la clase nativa String
 captura_de_pantalla_2020_05_08_14_58_35
Vemos que existen una serie de métodos.
Luego si se desea crear una clase String extendida dentro de un proyecto gambas basta con colocar Inherits String al comienzo de la clase que tendrá los métodos "nuevos"
' gambas class file
'' This class extends the standard String class in gambas
Export
Create Static
Inherits String
'' This function counts how much times some string apear in other
Public Function Count(sWhere As String, sWhich As String) As Integer
  Dim i As Integer = 1
  Dim Cursor As Integer
  Dim Counter As Integer
  Repeat
    Cursor = InStr(sWhere, sWhich, i)
    If Cursor > 0 Then
      Inc Counter
      i = Cursor + String.Len(sWhich)
    Endif
  Until InStr(sWhere, sWhich, i) = 0 Or i > String.Len(sWhere)
  Return Counter
End
 

Hasta aquí todo fenómeno, pero....
Que es lo que sucede si activamos el componente gb.util.
 captura_de_pantalla_2020_05_08_14_58_12
Este componente tiene una clase llamada String pero en su interior no existe la palabra clave Inherits sin embargo extiende la clase original String de gb
¿Como lo hace?
Es mas ahora en el ejemplo anterior de extensión de clase aparecen los métodos extendidos por gb.util.
¿Como funciona esto?
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Dos Clases Que Se Llaman Igual 
 
Tincho:

Quizas mirando el codigo fuente de gambas, se puede ver como lo hace:

https://gitlab.com/tboege/gambas/-/tree/stable/comp/src/gb.util

https://gitlab.com/tboege/gambas/-/...rc/String.class
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Dos Clases Que Se Llaman Igual 
 
jsbsan escribió:  
Tincho:
Quizás mirando el código fuente de gambas, se puede ver como lo hace:
https://gitlab.com/tboege/gambas/-/tree/stable/comp/src/gb.util
https://gitlab.com/tboege/gambas/-/...rc/String.class

Gracias por el enlace Julio, pero es lo que hice exactamente, ver el código de gb.util el método String, y como en dicho código no existía la palabra clave Inherits surgió este hilo.
Además hay otro tema, si intento extender la clase String nativa con una clase en mi proyecto que herede esta. Mi clase no se puede llamar Strings, el ide me dice que tengo que poner otro nombre String2 por ejemplo.
Así que si ya existe la clase nativa Strings, como es que hace gb.util para heredarla y crear otra Strings?
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Dos Clases Que Se Llaman Igual 
 
Benoit utiliza el término "reimplementación", pero desconozco su mecánica. Puede que en el código fuente existan mecanismos para ocultar clases con el mismo nombre cuando se carga un componente que contiene esa clase reimplementada. Buena pregunta.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Dos Clases Que Se Llaman Igual 
 
jguardon escribió:  
Benoit utiliza el término "reimplementación", pero desconozco su mecánica. Puede que en el código fuente existan mecanismos para ocultar clases con el mismo nombre cuando se carga un componente que contiene esa clase reimplementada. Buena pregunta.
Saludos

Este tema surgió porque tengo intenciones de extender algunas clases, String es la primera, y me gustaría hacerlo de manera que luego estas ampliaciones pueden incorporarse a las nuevas versiones, si la "cúpula" de desarrollo de gambas lo adopta claro.
Voy a plantearlo en bugtracker a ver que me cuentan.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Da Igual El Puerto De Conexion A Mysql? CanihoJR Bases de Datos 2 Jueves, 18 Agosto 2011, 19:54 Ver último mensaje
jsbsan
No hay nuevos mensajes Consulta Mysql Donde Una Tabla Tiene Vario... aratar79 Bases de Datos 21 Domingo, 30 Septiembre 2012, 21:33 Ver último mensaje
aratar79
No hay nuevos mensajes Uso De Contenedores: Creando Un Formulario... jsbsan Aplicaciones/Fragmentos de Código 0 Martes, 12 Agosto 2014, 20:40 Ver último mensaje
jsbsan
No hay nuevos mensajes Cosas Que Se Llaman Igual Pero Que Son Dif... Shell General 4 Jueves, 10 May 2018, 14:09 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron