<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Johan de Bruin &#187; programacion orientada a objetos</title>
	<atom:link href="http://www.johandebruin.com/t/programacion-orientada-a-objetos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.johandebruin.com</link>
	<description>Programación en php, tutorial de api wordpress y posicionamiento en buscadores seo.</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:18:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Programacion orientada a objetos y diagramas UML en PHP</title>
		<link>http://www.johandebruin.com/programacion-orientada-a-objetos-y-diagramas-uml-en-php/</link>
		<comments>http://www.johandebruin.com/programacion-orientada-a-objetos-y-diagramas-uml-en-php/#comments</comments>
		<pubDate>Tue, 11 May 2010 06:10:48 +0000</pubDate>
		<dc:creator>Johan</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[clases]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[poo]]></category>
		<category><![CDATA[programacion orientada a objetos]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[uml php]]></category>

		<guid isPermaLink="false">http://www.johandebruin.com/?p=525</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<h3>Herencia</h3>
<p>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:</p>
<pre lang="php" style="float:left;width:420px">
class Senior {

}
class Junior extends Senior {

}
</pre>
<p><img style="float:right" src="http://www.johandebruin.com/wp-content/uploads/2010/05/herencia.gif" alt="herencia php" title="herencia php" width="102" height="179" class="aligncenter size-full wp-image-527" /><br />
<br style="clear: both" /><br />
<span id="more-525"></span></p>
<h3>Agregación</h3>
<p>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 &#8220;Data Access&#8221;, y se dice que la primera clase controla parte de la segunda. Se relacionan con un diamante que toca la clase controlada</p>
<pre lang="php" style="float:left;width:420px">
class Dao {
    function getSomething() {
    }
}
class Model {
    var $dao;
    function Model (&#038; $dao) {
        $this->dao=&#038; $dao;
    }
    function doSomething () {
        $this->dao->getSomething();
    }
}
$dao=new Dao;
$model=new Model($dao);
$model->doSomething();
</pre>
<p><img style="float:right" src="http://www.johandebruin.com/wp-content/uploads/2010/05/agregacionpoo.gif" alt="herencia php" title="herencia php" width="102" height="179" class="aligncenter size-full wp-image-527" /></p>
<p><br style="clear: both" /></p>
<h3>Composición</h3>
<p>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.</p>
<pre lang="php" style="float:left;width:420px">
class LinkWidget {
}
class View {
    var $linkWidget;
    var $page;
    function View () {
        $this->linkWidget=new LinkWidget;
    }
    function renderPage () {
        $this->page=$this->linkWidget->display()
    }
}
</pre>
<p><img style="float:right" src="http://www.johandebruin.com/wp-content/uploads/2010/05/composicionpooo.gif" alt="herencia php" title="herencia php" width="102" height="179" class="aligncenter size-full wp-image-527" /></p>
<p><br style="clear: both" /></p>
<h3>Mensajes</h3>
<p>Es cuando una clase comunica a otra que está controlando una instancia suya. En php suele emplearse el <a href="http://www.php.net/manual/en/keyword.paamayim-nekudotayim.php">operador scope</a>. Que sirve para hacer referencias a métodos de clases que no estan instanciadas.</p>
<pre lang="php" style="float:left;width:420px">
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);
    }
}
</pre>
<p><img style="float:right" src="http://www.johandebruin.com/wp-content/uploads/2010/05/mensajeUnidireccionalpoo.gif" alt="herencia php" title="herencia php" width="102" height="179" class="aligncenter size-full wp-image-527" /></p>
<p><br style="clear: both" /><br />
Existe otra variante de esta relación, donde el mensaje se envia mutuamente entre las dos clases, un ejemplo de código:</p>
<pre lang="php" style="float:left;width:420px">
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= &#038;new SomeClass;
$someClass->someFunction();
</pre>
<p><img style="float:right" src="http://www.johandebruin.com/wp-content/uploads/2010/05/bidireccionalpoo.gif" alt="bidireccional php" title="herencia php" width="102" height="179" class="aligncenter size-full wp-image-527" /></p>
<p><br style="clear: both" /></p>
<p>Fuente, <a href="http://www.phppatterns.com/docs/design/php_and_uml_class_diagrams">phppatterns</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.johandebruin.com/programacion-orientada-a-objetos-y-diagramas-uml-en-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

