Johan de Bruin

Programación en php, tutorial de api wordpress y posicionamiento en buscadores seo.

Programacion orientada a objetos y diagramas UML en PHP

Una recopilación de como construir clases en PHP junto a un diagrama de la relación UML. Útil para ir obteniendo nociones sobre el modelado del código.

Herencia

Indica que una clase hereda todos los atributos y métodos de otra, hay que tener en cuenta que en el diagrama UML el triangulo toca al padre:

class Senior {

}
class Junior extends Senior {

}

herencia php


Agregación

Es cuando una clase puede es parte de otra, con lo cual esta primera clase tendrá acceso a los métodos de la segunda. Al haber sido instanciada fuera de la segunda, aunque esta muera la primera seguira viviendo. Se les conoce como clases “Data Access”, y se dice que la primera clase controla parte de la segunda. Se relacionan con un diamante que toca la clase controlada

class Dao {
    function getSomething() {
    }
}
class Model {
    var $dao;
    function Model (& $dao) {
        $this->dao=& $dao;
    }
    function doSomething () {
        $this->dao->getSomething();
    }
}
$dao=new Dao;
$model=new Model($dao);
$model->doSomething();

herencia php


Composición

Es cuando una clase instancia a otra, esta segunda instancia moriria con la primera, esto significa que la primera clase controla a toda la segunda, se representa con un solido diamante tocando a la clase controlada.

class LinkWidget {
}
class View {
    var $linkWidget;
    var $page;
    function View () {
        $this->linkWidget=new LinkWidget;
    }
    function renderPage () {
        $this->page=$this->linkWidget->display()
    }
}

herencia php


Mensajes

Es cuando una clase comunica a otra que está controlando una instancia suya. En php suele emplearse el operador scope. Que sirve para hacer referencias a métodos de clases que no estan instanciadas.

class HtmlUtils {
    function unHtmlEntities ($str) {
        $trans_tbl =
get_html_translation_table (HTML_ENTITIES);
        $trans_tbl = array_flip ($trans_tbl);
        return strtr ($str, $trans_tbl);
    }
}
class View {
    function renderPage {
        $text=HtmlUtils::unHtmlEntities($text);
    }
}

herencia php



Existe otra variante de esta relación, donde el mensaje se envia mutuamente entre las dos clases, un ejemplo de código:

class Debug {
    function display () {
        echo ($this->errorMsg);
    }
}
class SomeClass {
    var $errorMsg='This is an error message';
    function someFunction () {
        if ( DEBUG == 1 ) {
            Debug::display();
        }
    }
}
define ('DEBUG',1);
$someClass= &new SomeClass;
$someClass->someFunction();

bidireccional php


Fuente, phppatterns

One Response to “Programacion orientada a objetos y diagramas UML en PHP”

Leave a Response