Conceptos Básicos de POO
Conceptos básicos sobre la programación orientada a objetos
En las siguientes secciones se utiliza un gato (cat) como analogía para demostrar su semejanza con los conceptos de OOP.
Objetos
Piense en un objeto del mundo real, como por ejemplo un gato. Podría decirse que un gato tienepropiedades (o estados) como nombre, edad y color; también tiene comportamientos como dormir, comer y ronronear. En el mundo de la OOP, los objetos también tienen propiedades y comportamientos. Al utilizar las técnicas orientadas a objetos, se puede tomar como modelo un objeto del mundo real (como un gato) o un objeto más abstracto (como un proceso químico).
Para más información sobre objetos, consulte Tipo de datos Object (objeto).
Instancias y miembros de clase
Siguiendo con la analogía de un gato, piense que hay gatos de distintos colores, edades y nombres, con maneras diferentes de comer y ronronear. Pero a pesar de sus diferencias individuales, todos los gatos pertenecen a la misma categoría o, en términos de OOP, a la misma clase: la clase formada por los gatos (cats). En la terminología de OOP, se dice que cada gato individual es una instancia de la clase Cat (gato).
Del mismo modo que en OOP, una clase define un modelo para un tipo de objeto. Las características y los comportamientos que pertenecen a una clase se conocen conjuntamente como miembros de dicha clase. Las características (en el ejemplo del gato, el nombre, la edad y el color) se denominan propiedades de la clase, y se representan como variables; los comportamientos (jugar, dormir) se denominan métodos de la clase, y se representan como funciones.
Para más información sobre instancias y miembros de clases, consulte Miembros de clase y Utilización de miembros de clase.
Herencia
Una de las principales ventajas de la OOP es que se pueden crear subclases de una clase (es decir,ampliar la clase); la subclase heredará todas las propiedades y los métodos de la clase.
La subclase normalmente define métodos y propiedades adicionales o anula los métodos o propiedades definidos en la superclase. Las subclases también pueden suplantar a (proporcionar sus propias definiciones para) los métodos heredados de una superclase.
Una de las principales ventajas que aporta el uso de una estructura superclase/subclase es que resulta más fácil reutilizar código similar entre diversas clases. Por ejemplo, puede crear una superclase denominada Animal que contenga características y comportamientos comunes a todos los animales. Seguidamente, tendría que crear diversas subclases que heredaran de la superclase Animal y que añadieran características y comportamientos específicos de ese tipo de animal.
Podría crear una clase Cat que heredara de otra clase. Por ejemplo, podría crear una clase Mammal (mamífero) que defina determinadas propiedades y comportamientos comunes a todos los mamíferos. Luego podría crear una subclase Cat (gato) que se ampliara a la clase Mammal. A su vez, otra subclase, pongamos por caso, la clase Siamese (siamés), podría ampliar (subclase) la clase Cat y, así, sucesivamente.
La escritura de subclases le permite reutilizar el código. En lugar de volver a crear todo el código común a las dos clases, simplemente puede ampliar una clase existente.En una aplicación compleja, determinar la estructura jerárquica de las clases constituye una parte importante del proceso de diseño. Asegúrese de que determina esta jerarquía antes de comenzar a programar.Para más información sobre herencia y subclases, consulte Herencia.
Interfaces
En OOP, las interfaces pueden describirse como plantillas de definiciones de clases y clases que implementan interfaces necesarias para implementar dicha plantilla de métodos. Siguiendo la analogía del gato, una interfaz es similar a un modelo de un gato: indica las partes que necesita, pero no necesariamente cómo se montan dichas partes o cómo funcionan.
Las interfaces se pueden utilizar para añadir estructura y facilitar el mantenimiento de las aplicaciones. Dado que ActionScript 2.0 sólo admite la ampliación desde una única superclase, puede utilizar las interfaces como una forma de herencia múltiple limitada.
Una interfaz también puede considerarse como un "contrato de programación" que puede utilizarse para aplicar relaciones entre clases que de otro modo no estarían relacionadas. Por ejemplo, suponga que está trabajando con un equipo de programadores y que cada uno de ellos está trabajando en una parte (clase) distinta de la misma aplicación. Al diseñar la aplicación, se acordaron una serie de métodos que utilizan las distintas clases para comunicarse. Por lo tanto, puede crear una interfaz que declare estos métodos, sus parámetros y sus tipos de devolución. Todas las clases que implementen esta interfaz deben proporcionar definiciones de dichos métodos; de lo contrario, se produce un error en el compilador.
Para más información sobre la herencia, consulte Herencia. Para más información sobre interfaces, consulte Interfaces.
Encapsulado
En el diseño elegante orientado a objetos, los objetos son vistos como "cajas negras" que contienen oencapsulan funcionalidad. Un programador debe poder interactuar con un objeto conociendo sólo sus propiedades, métodos y eventos (su interfaz de programación), sin conocer los detalles de su implementación. Este enfoque permite a los programadores pensar con niveles superiores de abstracción y ofrece un marco organizativo para la creación de sistemas complejos.
El encapsulado es la razón por la cual ActionScript 2.0 incluye, por ejemplo, control de acceso para miembros, de manera que los detalles de la implementación puedan ser privados e invisibles en el código externo a un objeto. El código situado fuera del objeto se ve forzado a interactuar con la interfaz de programación de objetos en lugar de con los detalles de la implementación (que pueden estar ocultos en métodos y propiedades privadas). Este enfoque aporta importantes ventajas; por ejemplo, permite al creador del objeto cambiar la implementación del objeto sin necesidad de realizar cambios en el código externo al objeto, es decir, siempre y cuando la interfaz de programación no cambie.
Para más información sobre encapsulado, consulte Utilización de encapsulado.
Polimorfismo
La OOP le permite expresar diferencias entre clases individuales mediante la técnica conocida comopolimorfismo, que permite que las clases sustituyan métodos de sus superclases y definan implementaciones especializadas de dichos métodos. En Flash, las subclases pueden definir implementaciones especializadas de métodos heredados de su superclase pero no pueden acceder a la implementación de la superclase como en los demás lenguajes de programación.
Por ejemplo, puede comenzar con una clase llamada Mammal que tenga los métodos play() ysleep(). Puede crear las subclases Cat, Monkey y Dog para ampliar la clase Mammal. Las subclases sustituyen el método play() de la clase Mammal para reflejar los hábitos de estos tipos de animales en particular. Monkey implementa el método play() para columpiarse de árbol en árbol; Cat implementa el método play() para abalanzarse sobre una madeja; Dog implementa el método play() para buscar una pelota. Dado que la funcionalidad sleep() es similar entre los animales, utilizaría la implementación de la superclase.
No hay comentarios:
Publicar un comentario