Es/FlightGear Newsletter September 2010: Difference between revisions

Jump to navigation Jump to search
Line 221: Line 221:
== Nasal para novatos OOP ==
== Nasal para novatos OOP ==


These member fields can be variables (e.g. lat, lon, alt) or functions (setAlt, setPos). And the actual instance (cloud[n] in the property tree) of such a thing is then called an "object". Functions that work with instance specific state are called "methods", they may refer to instance specific state using a "self reference" (me) in Nasal, that ensures that access to a field or method is using the right instance specific data.


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 miembros de las variables (por ejemplo, lat, lon, alt) o funciones (setAlt, setPos). Y el ejemplo real (nube de [n] en el árbol de la propiedad) de una cosa se denomina un "objeto". Funciones que trabajan con el estado instancia específica se denominan "métodos", que puede referirse a otro caso concreto mediante una "autorreferencia" (yo) en la nasal, que asegura que el acceso a un campo o método es utilizar la instancia correcta de datos específicos.
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 modificada por una interfaz abstracta: la clase "métodos", en lugar de acceder directamente a campos de clase interna.
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.
 
 
 
 
 
 
 
This provides a way for managing access to a member variable (field), such an abstract interface is also useful for keeping logics private, and internal. For example, the name of a variable "altitude" can be easily changed internally to "altitude_ft", without having to rename all users of the class - simply because all other code will refer to the methods providing access to the field.


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:




Esto proporciona una forma para 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 "altura" puede ser fácilmente modificado internamente para "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.
 


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);
5,810

edits

Navigation menu