5,810
edits
| Line 221: | Line 221: | ||
== Nasal para novatos OOP == | == Nasal para novatos OOP == | ||
In OOP, internal state is managed by wrapping everything in a class using accessor functions for modifying and getting internal values. So internal state would in turn only be modified by an abstract interface: class "methods", instead of directly accessing class-internal fields. | In OOP, internal state is managed by wrapping everything in a class using accessor functions for modifying and getting internal values. So internal state would in turn only be modified by an abstract interface: class "methods", instead of directly accessing class-internal fields. | ||
| Line 228: | Line 227: | ||
Programación orientada a objetos OOP tiene que ver con la creación de "cosas" (por ejemplo una nube), con "acciones" (transformar, dibujar, actualizar) o "mensajes". Donde una clase (o hash en nasal) es la "plantilla" para una "cosa" que contiene una serie de ámbitos miembros. Por tanto la clase describe "la plantilla" o propiedades de los objetos que se pueden crear. Para utilizar una clase de realidad, tiene que ser "instanciada", lo que significa crear un objeto con una determinada "clase de plantilla" (o incluso varias clases diferentes). | Programación orientada a objetos OOP tiene que ver con la creación de "cosas" (por ejemplo una nube), con "acciones" (transformar, dibujar, actualizar) o "mensajes". Donde una clase (o hash en nasal) es la "plantilla" para una "cosa" que contiene una serie de ámbitos miembros. Por tanto la clase describe "la plantilla" o propiedades de los objetos que se pueden crear. Para utilizar una clase de realidad, tiene que ser "instanciada", lo que significa crear un objeto con una determinada "clase de plantilla" (o incluso varias clases diferentes). | ||
Estos campos pueden ser | Estos campos miembros pueden ser variables (por ejemplo, lat, lon, alt) o funciones (setAlt, setPos). Y la instancia actual(nube[n] en el árbol de propiedad) de una cosa se denomina un "objeto". Funciones que trabajan con un estado específico de instancia se denominan "métodos", estos pueden referirse a instanciar un estado especifico concreto mediante una "autorreferencia" (me) en Nasal, que asegura que el acceso a un campo o método es utilizar la instancia correcta de datos específicos. | ||
En programación orientada a objetos, el estado interno es dirigido por envolver todo en una clase con funciones de acceso para modificar y obtener los valores internos. Así que el estado interno, a su vez sólo puede ser | En programación orientada a objetos, el estado interno es dirigido por envolver todo en una clase con funciones de acceso para modificar y obtener los valores internos. Así que el estado interno, a su vez sólo puede ser modificado por una interfaz abstracta: la clase "métodos", en lugar de acceder directamente a campos de clase interna. | ||
Esto proporciona una forma de administrar el acceso a una variable miembro (campo), como una interfaz abstracta también es útil para mantener la lógica privada, y la interna. Por ejemplo, el nombre de una variable "altitud" puede ser fácilmente modificado internamente a "altitude_ft", sin tener que cambiar el nombre de todos los usuarios de la clase - simplemente porque todos los otros códigos se refieren a los métodos de acceso al campo. | |||
For example, instead of doing something like cloud.lat=10.22; cloud.lon=43.22; you would have a method accepting lat/lon variables: cloud.setPos(lat, lon); | For example, instead of doing something like cloud.lat=10.22; cloud.lon=43.22; you would have a method accepting lat/lon variables: cloud.setPos(lat, lon); | ||
| Line 250: | Line 241: | ||
Por ejemplo, en lugar de hacer algo así cloud.lat = 10,22; cloud.lon = 43,22; tendría que aceptar un método lat / lon variables: cloud.setPos (lat, lon); | Por ejemplo, en lugar de hacer algo así cloud.lat = 10,22; cloud.lon = 43,22; tendría que aceptar un método lat / lon variables: cloud.setPos (lat, lon); | ||
edits