GAMBAS Y OOP:
2º EJEMPLO DE MANEJOS DE CLASES Y OBJETOS
Bueno, pues seguimos con los ejemplos de Gambas OOP.
Ahora la práctica 5b:
Desarrollar una clase llamada Asignatura que:
Tenga dos atributos private de tipo int (el identificador) y de tipo double (la
calificación).
Tenga un constructor con un parámetro de tipo int.
Tenga un getter para cada uno de los atributos.
Tenga un setter para la calificación.
Desarrollar una clase llamada Alumno que:
Tenga tres atributos private de tipo Asignatura.
Tenga un constructor con tres parámetros de tipo Asignatura que inicialice
los tres atributos.
Tenga un constructor con tres parámetros de tipo int que inicialice los tres
atributos.
Tenga un getter para cada uno de los atributos.
Desarrollar una clase llamada Profesor que:
Tenga un método ponerNotas que recibe un parámetro de tipo Alumno y
que no devuelve nada. Pondrá una calificación aleatoria a cada una de
las asignaturas del alumno.
Tenga un método calcularMedia que recibe un parámetro de tipo Alumno
y devuelve un double.
Desarrollar una clase llamada Practica5b que en su método main:
Cree e inicialice tres Asignaturas.
Cree un Alumno con las tres Asignaturas.
Cree un Profesor que le ponga calificaciones al Alumno y muestre por
pantalla la media del Alumno.
Expongo el código de la solución al problema:
La clase Asignatura:
' Gambas class file
'atributos
PRIVATE identificador AS Integer
PRIVATE calificacion AS Float
'constructor
PUBLIC SUB _new(param AS Integer)
identificador = param
END
'getter
PUBLIC FUNCTION getIdentificador() AS Integer
RETURN identificador
END
PUBLIC FUNCTION getCalificacion() AS Float
RETURN calificacion
END
'setters
PUBLIC SUB setCalificacion(param AS Float)
calificacion = param
END
La clase Alumno:
' Gambas class file
'atributos
PRIVATE asignatura1 AS Asignatura
PRIVATE asignatura2 AS Asignatura
PRIVATE asignatura3 AS Asignatura
'constructores
PUBLIC SUB AlumnoConstAsig(param1 AS Asignatura, param2 AS Asignatura, param3 AS Asignatura)
asignatura1 = param1
asignatura2 = param2
asignatura3 = param3
END
PUBLIC SUB AlumnoConstInd(param1 AS Integer, param2 AS Integer, param3 AS Integer)
asignatura1 = NEW Asignatura(param1)
asignatura2 = NEW Asignatura(param2)
asignatura3 = NEW Asignatura(param3)
END
'getters
PUBLIC FUNCTION getAsignatura1() AS Asignatura
RETURN asignatura1
END
PUBLIC FUNCTION getAsignatura2() AS Asignatura
RETURN asignatura2
END
PUBLIC FUNCTION getAsignatura3() AS Asignatura
RETURN asignatura3
END
La clase Profesor:
' Gambas class file
PUBLIC SUB ponerNotas(param AS Alumno)
'inicio la semilla del generador de numeros aleatorios
RANDOMIZE
param.getAsignatura1().setCalificacion(Rnd(0, 10))
param.getAsignatura2().setCalificacion(Rnd(0, 10))
param.getAsignatura3().setCalificacion(Rnd(0, 10))
END
PUBLIC SUB calcularMedia(param AS Alumno) AS Float
DIM nota1, nota2, nota3 AS Float
nota1 = param.getAsignatura1().getCalificacion()
nota2 = param.getAsignatura2().getCalificacion()
nota3 = param.getAsignatura3().getCalificacion()
RETURN (nota1 + nota2 + nota3) / 3
END
La clase Practica5b (creo un formulario Fmain, con un textbox para mostrar la solución)
' Gambas class file
PUBLIC SUB Form_Open()
DIM programacion AS NEW Asignatura(1)
DIM redes AS NEW Asignatura(2)
DIM estadistica AS NEW Asignatura(3)
DIM a AS NEW Alumno
DIM p AS NEW Profesor
a.AlumnoConstAsig(programacion, redes, estadistica)
p.ponerNotas(a)
TextArea1.text = " La media del alumno es:" & p.calcularMedia(a)
END
Ahora os muestro una captura de la pantalla:
Saludos