Páginas

viernes, 1 de julio de 2011

Gambas2 y OOP Trabajando con clases (02) Practica 5b



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