| 25 | Los objetos de MMS están diseñados para su utilización por parte de los usuarios como si de un nuevo conjunto de objetos TOL se tratase. |
| 26 | De modo que una gran parte de sus métodos están diseñados para interaccionar con ellos, tanto para obtener información como para modificarlos. |
| 27 | |
| 28 | Desde el punto de vista del desarrollador de MMS, una clase está compuesta por: |
| 29 | * Atributos: objetos TOL de sólo lectura que contienen la información elemental de cada objeto o instancia de la clase. |
| 30 | * Métodos: funciones TOL que permiten acceder o modificar la información de estos atributos, así como lanzar algunos mecanismos o procesos. |
| 31 | * Métodos de clase: métodos declarados como {{{Static}}} que están a disposición desde la clase (sin necesidad de instancia alguna) como puede ser los constructores de objetos. |
| 32 | |
| 33 | Desde el punto de vista del usuario de MMS, los objetos pueden verse como entidades capaces de gestionar la información correspondiente al concepto de la modelación al que representan. |
| 34 | |
| 35 | Los atributos de los objetos no están diseñados para su edición directa, de modo que para ello se facilitan métodos tanto de lectura como de escritura. |
| 36 | Por ejemplo, para un atributo {{{_.name}}} dispondríamos de dos métodos {{{GetName(?)}}} y {{{SetName(newName)}}} para leerlo o modificarlo respectivamente. |
| 37 | |
| 38 | === Atributos de usuario === |
| 39 | |
| 40 | A menudo hay atributos que no deben ser modificados, digamos que son de "sólo lectura" y no disponen de métodos de escritura o edición. |
| 41 | Aún más en ocasiones hay "atributos" que no tienen su par entre los atributos de la clase, pero que pueden leerse o incluso modificarse mediante los métodos del objeto. De este modo, definimos como '''atributos de usuario''' a aquellos atributos (con su par en la clase o no) que se ponen a disposición del usuario a través de métodos de lectura y escritura. |
| 42 | |
| 43 | En general hablaremos de atributos pudiéndonos referirnos tanto a unos como a otros, de modo que es importante que seamos conscientes de esta doble naturaleza de los atributos en MMS. Salvo que se indique explícitamente, una pista que puede ayudarnos a entender de cual de ellos se trata es el nombre con el que nos estemos refiriendo a él: (i) si estamos usando su nombre "sólo lectura" (comenzado en minúscula y precedido por {{{_.}}}) o (ii) si por el contrario usamos su nombre de usuario (comenzado en mayúscula). Por ejemplo: {{{_.name}}} sería el atributo de la clase y {{{Name}}} sería el atributo de usuario. |
| 44 | |
| 45 | Podemos distinguir dos tipos de atributos en los objetos de MMS. |
| 46 | |
| 47 | |
| 48 | |
| 49 | Las clases de MMS disponen de: |
| 50 | * |
| 51 | |