5,810
edits
| Line 233: | Line 233: | ||
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. | 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. | ||
Por ejemplo, en lugar de hacer algo así cloud.lat = 10,22; cloud.lon = 43,22; tendrías que aceptar un método lat / lon variables: cloud.setPos (lat, lon); | |||
Eso significa que las variables reales que contiene los valores de latitud y longitud no están expuestos o utilizados fuera del objeto real. Esto se conoce como encapsulamiento y te proporciona una manera de administrar el estado y asegurar que el estado interno es válido en todo momento, ya que otros códigos sólo pueden utilizar la interfaz externa. | |||
Esto te permite, por ejemplo cambiar el nombre simplemente a una variable de clase, sin tener que cambiar nada del código que utiliza el objeto, por otro código sólo utiliza métodos de la clase. | |||
Another important thing in OOP is separation of concerns, i.e. you don't want to end up with huge bloated "super classes" that manage all sorts of different state, but instead use different classes where appropriate to split code into abstract "modules" with well defined responsibilities. | |||
Otra cosa importante en la programación orientada a objetos es la separación de las preocupaciones, es decir, sino quieres terminar con "superclases" hinchadas que manejan todo tipo de estados diferentes, pero en lugar de utilizar diferentes clases en su caso, para dividir el código en "módulos" abstractos con responsabilidades bien definidas. | |||
So, one of the very first steps to convert procedural code to OOP code would be to group your code into a number of logical "classes" (e.g. cloud, cloud field ). | So, one of the very first steps to convert procedural code to OOP code would be to group your code into a number of logical "classes" (e.g. cloud, cloud field ). | ||
edits