Ampliación de funciones heredados y las propiedades de

Hemos dicho mucho sobre la teoría de la herencia de componentes de ColdFusion, y, francamente, muchos de ellos está gravemente exageradas. Acciones de la herencia de su nombre con el mundo orientado a objetos, pero eso es todo lo que comparte. La herencia de CFC puede ser fácilmente resumirse en los siguientes tres simples reglas:

  

Uno de los componentes pueden heredar o ampliación de otro, después de que el componente de la herencia puede hacer uso de las propiedades de sus antepasados y los métodos.

Si el componente de la herencia declara sus propios métodos de nombres diferentes de las de su antecesor, tanto el antecesor de los métodos y los métodos del componente de la herencia puede ser llamado a través del componente de la herencia. Lo mismo sucede para la declaración de propiedades utilizando nombres que no coinciden con sus ancestros.

Si el componente de la herencia declara sus propios métodos el mismo nombre que los de sus antepasados, los métodos del componente de la herencia de reemplazar los métodos de los antepasados con el mismo nombre, como si se ocultan los métodos de los ancestros. Lo mismo sucede para la declaración de propiedades mediante el uso de nombres que coincidan con sus ancestros. Just mantener estos tres principios simples en cuenta al proceder a través de las siguientes partes y no creo que la herencia es más complicado que esto. Herencia ha algunas aplicaciones en tiempo real el desarrollo del mundo ColdFusion, pero es probable que encuentre que son raras. Sin embargo, usted debe entender la herencia de manera que pueda identificar lugares en su aplicación en las que puede estar justificada.

Usted puede utilizar el paquete que se crea en los códigos de aprender acerca de la ampliación componentes. Aunque no discutimos antes, hemos creado una propiedad en el componente de Emp nombre empProperty, como sigue:

Creación de una variable en el ámbito de aplicación del presente del componente Emp hace que una variable característica de ese componente. Recuerde que todo el código en el área de inicialización de un componente se ejecuta una vez como una instancia del componente se creó por primera vez, lo que significa que la propiedad empProperty automáticamente crea e inicializa con el valor original Emp ya que cada instancia del componente se crea Emp. Puede cambiar el valor de This.empProperty después se inicia, y cada instancia del componente Emp puede contener su propio valor de empProperty. Si hereda o ampliación de un componente, las funciones y propiedades del antepasado son, en esencia, copiar en el heredero, donde pueden ser llamados y utilizados como si fueran una parte de la heredera. Así que, si se crea un componente llamado Administrador de que se extienda el componente de EMP, como se muestra en el código, el componente Administrador también contiene una propiedad nombre empProperty. Manager amplía EMP, por lo que Manager hereda las propiedades y las funciones de Emp.


   
   
   
   
   
 

Observe también que el código anterior declara una propiedad directamente en el Administrador, nombrado managersOwnProperty. Administrador de Emp hereda las propiedades, pero el proceso es una calle de sentido único, por lo que managersOwnProperty sólo está disponible en el componente de Administrador y, no en el componente de Emp. Los mismos principios de la herencia que trabajan para propiedades de los componentes trabajan también para las funciones de los componentes. La PME componente contiene un bono () que calcula las bonificaciones de los empleados nonmanagerial, pero los administradores hacer una bonificación adicional del 15 por ciento. Para calcular las bonificaciones Manager, extender la funcionalidad del Administrador de, al declarar una función llamada ManagerBonus (), como se muestra en los códigos. Para recuperar el bono normal de un empleado, ManagerBonus () debe llamar a la bonificación () que se declara en el componente de Emp. Pero el jefe de Emp extiende, por lo que Bono () está disponible como una de las funciones propias de gerente, todos ManagerBonus () debe hacer es devolver Bono (), multiplicado por 1,15, como sigue:

El código muestra la herencia en la acción. Observe cómo las propiedades y funciones del EMP y el Administrador son directamente accesibles desde el Administrador.

 managerServices = CreateObject ( "Componente", "com.herdomain.calcbonus.Manager");  

Estas son todas a través del componente Administrador sólo:

Administrador de Bono: # managerServices.ManagerBonus ( "012-34-5678") #
managersOwnProperty: # # managerServices.managersOwnProperty

Norma Bonus: # managerServices.Bonus ( "012-34-5678") #
empProperty: # # managerServices.empProperty

Todo lo que hemos hecho hasta ahora se conoce como la ampliación, ya que dejan toda la funcionalidad del componente antepasado sin modificar y ampliar sólo mediante la adición de nuevas funciones y propiedades. En el mundo orientado a objetos, esta técnica es conocida como la especialización: Un gestor es un empleado especializado que hace las mismas cosas básicas, más un poco más. Para utilizar un objeto de par de términos orientados, un gerente es un subtipo de un empleado y el empleado es el supertipo del administrador. No te colgó en estos términos, que menciono aquí sólo para que usted puede seguir a lo largo de en los debates inevitable que se escuchan en la comparación de los componentes a los objetos.

Imperiosas sustituye a propiedades heredadas y funciones con algo completamente diferente de lo que fue heredado. Para anular una función o característica, simplemente declarar una función o propiedad del mismo nombre en el componente de heredero. Es tan simple como eso. El código de muestra primordial en la acción. La compañía telefónica que fabrican Stan Cox-Fooster-resulta ser estafando a todo el mundo. A través de los contratos de negociación creativa con varios "hot-hablar" de servicios y opciones de servicio de la agrupación con el modelo Fooster de ADHCC (AutoDial Hot Chicks ColdFusion) Teléfono, Fooster presuntos beneficios inexistentes que hicieron precio de sus acciones se disparan por las nubes y atraer a los inversores. El dinero que comenzaron a llegar, por lo que la empresa tenía que encontrar algo que hacer con él. La respuesta: las bonificaciones de los empleados.


   
   
   
   
   
   
 

Así que si usted es un empleado Fooster, su bono anual total es de su prima de Navidad, más 113 millones de dólares. Sweet! Al declarar su propio Bono () la función, el componente Fooster reemplaza el Bono de función () heredado de la componente de los asalariados, pero XmasBonus heredado () está todavía disponible porque no se reemplaza. El código de muestra el sistema de bonificación Fooster en acción.

 embezzlerServices = CreateObject ( "Componente", "com.herdomain.calcbonus.Fooster"); 

Estas son todas a través del componente de Fooster sólo:

Norma Bono, Fooster estilo: # embezzlerServices.Bonus ( "012-34-5678") #
empProperty: # # embezzlerServices.empProperty
foostersOwnProperty: # # embezzlerServices.foostersOwnProperty

¿Ves cómo la herencia directa de componentes de ColdFusion es? Las reglas son sencillas: las funciones de los antepasados y las propiedades están disponibles en el heredero menos que se sustituya. Estos ejemplos son, por necesidad, muy breve. Del mundo real implementaciones de componente primordial son el resultado del componente de planificación y diseño muy cuidado, porque deben tener en cuenta el conjunto de los comportamientos de cada tipo de componente y sus subtipos extendida. Trate de hacer eso con alguna categoría de cosas en la naturaleza, como los aviones o armas de fuego, y rápidamente ver cómo este no es un asunto trivial.

un artículo presentado por Christian Roldán


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: En este artículo "La ampliación de funciones y propiedades heredadas", fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 499 users browsing the articles directory