Nada mejor que para el domingo, aprender mas sobre gambas.
Hoy vamos a aprender a darle uso a Class. Class nos muestra información sobre una clase.
La idea. Estudiando la herencia en Python, estuve haciendo un ejemplo de una Universidad.
En esta universidad ademas de otros "miembros" existían facultativos (maestros, docentes) y
estudiantes.
Así que tenemos dos clases:
- Facultativo
- Estudiante
Pero, bueno, bueno. Estas dos clase tienen cosas comunes. Y no debemos repetir código cuando estamos programando.
Entonces, ¿ qué hacemos para no repetir código ?. Necesitamos una tercera clase de la que vamos a heredar una
serie de propiedades "comunes" a la clase Facultativo y la clase Estudiante.
Esta nueva clase se llamara:
- Miembro ( Ya que ambos son miembros de una universidad)
Por ejemplo, ¿ qué pueden tener comunes ?.
Tanto facultativos como estudiantes, tienen: Un nombre, una dirección postal y una dirección electrónica.
Esas van a ser las propiedades de Miembro
Ahora bien. ¿ Qué tienen las otras dos clases que las haga diferentes una de las otras ?
La clase Facultativo tendrá las siguientes propiedades más:
- Clases que imparten o que enseñan (un array)
- Código de facultativo
La clase Estudiante tendrá las siguientes propiedades más:
- Clases que ha realizado (un array)
- Clases que esta recibiendo ahora ( otro array).
- Código de estudiante
Eso en cuanto a las propiedades de cada clase. Pero bien.
¿ Y si queremos mostrar cada una de esas propiedades ?
La clase miembro mostrara las propiedades de su clase en un método, pero no conoce las propiedades de la "subclase" Facultativo y la "subclase" Estudiante.
Bien. Hasta ahí fue lo primero que me encontré.
Entonces cree un método en la clase "Miembro" donde se devolvía los valores de las propiedades:
- Nombre
- Dirección Postal
- Dirección electrónica
De esta forma:
Entonces..¿ qué pasaría si quisiera mostrar los datos de un facultativo ?.
Añadimos el contenido que nos devuelve el método MostrarDatos de la clase "Miembro" en el método MostrarDatos de la clase "Facultativo".
Y haremos uso de "Super" que nos permite acceder a las propiedades y métodos de la clase "Padre" (Miembro).
Hasta ahí este es nuestro código.
Clase Miembro:
' gambas class file
Property nombre As String
Private hnombre As String
Property direccion As String
Private hdireccion As String
Property mail As String
Private hmail As String
Public Sub _new(snombre As String, sdireccion As String, smail As String)
hnombre = snombre
hdireccion = sdireccion
hmail = smail
End
Private Function nombre_Read() As String
Return hnombre
End
Private Sub nombre_Write(Value As String)
hnombre = Value
End
Private Function direccion_Read() As String
Return hdireccion
End
Private Sub direccion_Write(Value As String)
hdireccion = Value
End
Private Function mail_Read() As String
Return hmail
End
Private Sub mail_Write(Value As String)
hmail = Value
End
Public Function MostrarDatos() As String
Return (Subst$("Nombre: &1" & "\n" & "Dirección: &2 " & "\n" & "e-mail: &3", Me.nombre, Me.direccion, Me.mail))
End
Property nombre As String
Private hnombre As String
Property direccion As String
Private hdireccion As String
Property mail As String
Private hmail As String
Public Sub _new(snombre As String, sdireccion As String, smail As String)
hnombre = snombre
hdireccion = sdireccion
hmail = smail
End
Private Function nombre_Read() As String
Return hnombre
End
Private Sub nombre_Write(Value As String)
hnombre = Value
End
Private Function direccion_Read() As String
Return hdireccion
End
Private Sub direccion_Write(Value As String)
hdireccion = Value
End
Private Function mail_Read() As String
Return hmail
End
Private Sub mail_Write(Value As String)
hmail = Value
End
Public Function MostrarDatos() As String
Return (Subst$("Nombre: &1" & "\n" & "Dirección: &2 " & "\n" & "e-mail: &3", Me.nombre, Me.direccion, Me.mail))
End
Clase Facultativo:
Inherits Miembro
Property codigo_facultativo As String
Private hcodigo_facultativo As String
Property dando_cursos As String[]
Private hdando_cursos As New String[]
Public Sub _new(scodigo_facultativo As String)
hcodigo_facultativo = scodigo_facultativo
End
Private Function codigo_facultativo_Read() As String
Return hcodigo_facultativo
End
Private Sub codigo_facultativo_Write(Value As String)
hcodigo_facultativo = Value
End
Private Function dando_cursos_Read() As String[]
Return hdando_cursos
End
Private Sub dando_cursos_Write(Value As String[])
hdando_cursos = Value
End
Public Function MostrarDatos() As String
Dim datos_facultativo As String
datos_facultativo = Super.MostrarDatos() & "\n" & Subst("Código: &1 " & "\n" & "Asignaturas: &2", Me.codigo_facultativo, Me.dando_cursos.Join(" | "))
Return datos_facultativo
End
Property codigo_facultativo As String
Private hcodigo_facultativo As String
Property dando_cursos As String[]
Private hdando_cursos As New String[]
Public Sub _new(scodigo_facultativo As String)
hcodigo_facultativo = scodigo_facultativo
End
Private Function codigo_facultativo_Read() As String
Return hcodigo_facultativo
End
Private Sub codigo_facultativo_Write(Value As String)
hcodigo_facultativo = Value
End
Private Function dando_cursos_Read() As String[]
Return hdando_cursos
End
Private Sub dando_cursos_Write(Value As String[])
hdando_cursos = Value
End
Public Function MostrarDatos() As String
Dim datos_facultativo As String
datos_facultativo = Super.MostrarDatos() & "\n" & Subst("Código: &1 " & "\n" & "Asignaturas: &2", Me.codigo_facultativo, Me.dando_cursos.Join(" | "))
Return datos_facultativo
End
Clase Estudiante
' gambas class file
Inherits Miembro
Property codigo_estudiante As String
Private hcodigo_estudiante As String
Property cursos_realizados As String[]
Private hcursos_realizados As New String[]
Property cursos_tomando As String[]
Private hcursos_tomando As New String[]
Public Sub _new(scodigo_estudiante As String)
hcodigo_estudiante = scodigo_estudiante
End
Private Function codigo_estudiante_Read() As String
Return hcodigo_estudiante
End
Private Sub codigo_estudiante_Write(Value As String)
hcodigo_estudiante = Value
End
Private Function cursos_realizados_Read() As String[]
Return hcursos_realizados
End
Private Sub cursos_realizados_Write(Value As String[])
hcursos_realizados = Value
End
Private Function cursos_tomando_Read() As String[]
Return hcursos_tomando
End
Private Sub cursos_tomando_Write(Value As String[])
hcursos_tomando = Value
End
Inherits Miembro
Property codigo_estudiante As String
Private hcodigo_estudiante As String
Property cursos_realizados As String[]
Private hcursos_realizados As New String[]
Property cursos_tomando As String[]
Private hcursos_tomando As New String[]
Public Sub _new(scodigo_estudiante As String)
hcodigo_estudiante = scodigo_estudiante
End
Private Function codigo_estudiante_Read() As String
Return hcodigo_estudiante
End
Private Sub codigo_estudiante_Write(Value As String)
hcodigo_estudiante = Value
End
Private Function cursos_realizados_Read() As String[]
Return hcursos_realizados
End
Private Sub cursos_realizados_Write(Value As String[])
hcursos_realizados = Value
End
Private Function cursos_tomando_Read() As String[]
Return hcursos_tomando
End
Private Sub cursos_tomando_Write(Value As String[])
hcursos_tomando = Value
End
Y nuestro modulo principal, donde creo dos objetos. Paula y Jose
Public Sub Main()
Dim paula As Facultativo
Dim jose As Estudiante
paula = New Facultativo("Paula Flores", "Cádiz", "paulaf@uca.es", "F1234")
paula.dando_cursos = ["Matemáticas básicas", "Matemáticas avanzadas"]
Print paula.MostrarDatos()
jose = New Estudiante("Jose Alvarez", "Puerto de Santa María", "josea@uca.es", "E3521")
Print
Print jose.MostrarDatos()
End
Dim paula As Facultativo
Dim jose As Estudiante
paula = New Facultativo("Paula Flores", "Cádiz", "paulaf@uca.es", "F1234")
paula.dando_cursos = ["Matemáticas básicas", "Matemáticas avanzadas"]
Print paula.MostrarDatos()
jose = New Estudiante("Jose Alvarez", "Puerto de Santa María", "josea@uca.es", "E3521")
Print jose.MostrarDatos()
End
La salida es está:
Primero vemos los datos del facultativo y luego los del estudiante.
Citar:
Aquí tenéis el primer ejemplo:
Continuo luego en la otra parte del mensaje.
Saludos
HerenciaUniversidad_1.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | HerenciaUniversidad_1.tar.gz | |
Tamaño: | 14.07 KB | |
Descargado: | 54 veces |
HerenciaUniversidad_1.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | HerenciaUniversidad_1.tar.gz | |
Tamaño: | 14.07 KB | |
Descargado: | 54 veces |
HerenciaUniversidad_1.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | HerenciaUniversidad_1.tar.gz | |
Tamaño: | 14.07 KB | |
Descargado: | 54 veces |