Los módulos u objetos son una colección de estructuras de datos que se les asocia las funciones y operadores que son capaces de manipular los datos contenidos en dichas estructuras. Las ventajas fundamentales del desarrollo de software mediante el uso de módulos son: facilita las pruebas y depuración del código de cada módulo por separado, y permite el uso de código previamente escrito mediante una interfaz bien definida.
MODULE modulo_punto TYPE punto !Definicion del tipo punto REAL :: x,y END TYPE INTERFACE OPERATOR(-) ! Interfaz del nuevo operador resta FUNCTION resta_puntos(p1,p2) TYPE(punto) :: resta_puntos, p1, p2 END FUNCTION END INTERFACE ... CONTAINS FUNCTION resta_puntos(p1,p2) ! Funcion que resta dos puntos TYPE(punto) : resta_puntos, p1, p2 resta_puntos%x = p1%x - p2%x ! x = x1 - x2 resta_puntos%y = p1%y - p2%y ! y = y1 - y2 END FUNCTION resta_puntos END MODULE modulo_punto
El módulo esta conformado por dos partes, la primera contiene las definiciones de tipos, las declaraciones de variables, las interfaces, las funciones generales y los datos globales. La segunda parte, que se encuentra luego del la palabra CONTAINS, tiene los procedimientos que solamente pueden ser utilizados atrevés de las interfaces dadas.
Los módulos pueden ser utilizados en un código fuente si se incluye la instrucción USE.
USE modulo_punto