Certificación Magento-Conceptos Básicos-Fundamentos

En esta entrada veremos los conceptos básicos de Arquitectura del Software utilizados en la creación de Magento. Se puede decir que se han utilizado un cúmulo de buenas practicas, quizás por esta razón  es un framework complejo y difícil de dominar.

Apartado 1- (POO) Programación Orientada a Objetos y (MVC)Modelo Vista Controlador: El nucleo de Magento esta realizado en Zend Framwork con POO y Basandose en la aquitectura MVC

Apartado 1.1-(POO)Programación Orientada a Objetos: Consiste en expresar la programación como una representación de objetos que recoge un comportamiento determinado, que permite modularizar para que los programas sean mas fácil de escribir, mantener y reutilizar.

Propiedades de este paradigma de programación:

  • Abstacción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un “agente” abstracto que puede realizar trabajo, informar y cambiar su estado, y comunicarse con otros objetos en el sistema sin revelar cómo se implementan estas características. Un ejemplo en Magento sería el método _initi() el cual es necesario ejecutar para inicializar un modelo que trabajará con la tabla en el CSDL. Nota: Instanciar una clase que herede de una clase abstracta la convierte automáticamente en abstracta. Después es necesario reescribirlos métodos abstractos de la clase padre, si no, seguirá siendo abstracta. Disponemos de muchas clases abstractas en Magento.
  • Encapsulación: Signica reunir a todos los elementos que se pueden considerar pertenecientes a una misma entidad, al mismo nivel de abstracción. Cuando deseas cambiar los datos pertenecientes a un objeto debes de hacerlo a través de los métodos destinados para tal efecto. La encapsulación se encarga de mantener ocultos los procesos internos que necesita para hacer cualquier acción, dándole al programador acceso sólo a lo que necesita. Por ejemplo: Dos productos no pueden contener la misma información, pero los metodos de tratar con ella son los mismos.
  • Polimorfismo: Comportamientos diferentes, asociados a objetos distintos . Pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O lo que es lo mismo, instancia de la misma clase son objetos diferentes. Un ejemplo serían los diferentes tipos de productos( productosimple, producto congurable, producto descargable, etc.) todos deberan de tener un método de cálculo de precio.
  • Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasicación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia en Magento esta bastante explotada, especialmente con el objeto Varien_Object_class la cual es heredada por  muchos objetos.

Apartado 1.2- MVC(Modelo Vista Controlador): Es un patrón de Arquitectura del Software que separa los datos, la interface de usuario y la lógica de negocio en tres componentes distintos.

Modelo Vista Controlador

  • Modelo: Serán las clases que proveen los datos a la lógica de negocio para que trabajen con ellos. En Magento la lógica de negocio se delega también a este tipo de elemento, saltandose un poco la Arquitectura MVC. En un Modulo estas clases las vamos a tener en bajo el directorio Model.
  • Vista: Son los métodos que representan visualmente los datos. Magento para componer la vista utiliza dos tipos de elmentos( bloques y template) estos elementos los podemos encontrar bajo el directorio Block de nuestro módulo y en la carpeta template de nuestro tema visual.
  • Controlador: Este tipo de elemento es el que permite al usuario interactuar con la aplicación mediante una petición http, tranfiere estas peticiones a las clases correspondientes. En Magento podemos encontrar este elemento bajo el directiorio controller.

Apartado 1.3 GRASP-patrones generales de software para asignación de responsabilidades:

El GRASP(General Responsibility Assignment Software Patterns) de experto en información es el principio básico de asignación de responsabilidades. Nos indica, por ejemplo, que la responsabilidad de la creación de un objeto o la implementación de un método, debe recaer sobre la clase que conoce toda la información necesaria para crearlo. De este modo obtendremos un diseño con mayor cohesión y así la información se mantiene encapsulada( disminución del acoplamiento )

Apartado 1.4-EAD-Arquitectura Dirigida por Eventos: Es un patrón de arquitectura Software que promueve la producción, detección, consumición y reacción en base a eventos. Un evento puede ser lanzado para indicar un cambio de estado signicante. Por ejemplo, cuando un modelo está salvando datos sobre la bbdd, tendremos enventos antes y despues de realizar la operación

  • Generador y escuchador de eventos( Event Listener & Generator): Cuando un evento ocurre, este elemento escucha dicho evento y lo manda al motor de eventos( Event Engine). En Magento esta funcionalidad esta cubierta por Mage::dispatchEvent()
  • Motor de eventos( Event Engine): Cuando el motor de eventos recibe un evento, este lo manda al cliente determinado para que lo procese. Esta funcionalidad esta recogida por Mage_Core_Model_App::dispatchEvent(), la cual lee el archivo config.xml y envia la señal al cliente con la ejecución de la función _callObserverMethod()
  • cliente(client): Cuando recibe dicho evento procesta el evento ejecutando la función asociada.

Nota: Si anteriormente has trabajado con Hooks, este sistema se diferencia con EAD en que los hooks paran el flujo de ejecución del programa, sin embargo con la arquitectura EAD el flujo de ejecución del programa no se detiene. Atiende el evento y continua por donde se había quedado.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *