<?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>Calcifer &#187; uml</title>
	<atom:link href="http://blog.calcifer.com.ar/tag/uml/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.calcifer.com.ar</link>
	<description></description>
	<lastBuildDate>Sat, 02 Oct 2010 05:32:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>UML &#8211; Relaciones entre clases</title>
		<link>http://blog.calcifer.com.ar/2007/03/uml-relaciones-entre-clases/</link>
		<comments>http://blog.calcifer.com.ar/2007/03/uml-relaciones-entre-clases/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 23:27:34 +0000</pubDate>
		<dc:creator>lvidarte</dc:creator>
				<category><![CDATA[None]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://blog.calcifer.com.ar/2007/03/29/uml-relaciones-entre-clases/</guid>
		<description><![CDATA[La relación entre dos clases se representa mediante una linea que las une. Si la línea no termina con una flecha (en ninguno de sus extremos) la relación es bidireccional, es decir, ambas clases saben de la existencia de la otra.
Tipos de relaciones

Generalización
Es ni más ni menos que un sinónimo de &#8220;Herencia&#8221;. También se lo [...]]]></description>
			<content:encoded><![CDATA[<p>La relación entre dos clases se representa mediante una linea que las une. Si la línea no termina con una flecha (en ninguno de sus extremos) la relación es bidireccional, es decir, ambas clases saben de la existencia de la otra.</p>
<h3>Tipos de relaciones</h3>
<dl class="L">
<dt>Generalización</dt>
<dd><img src='http://blog.calcifer.com.ar/uploads/2007/03/generalization.png' alt='UML - Generalization' class="noborder" /><br />Es ni más ni menos que un sinónimo de &#8220;Herencia&#8221;. También se lo llama &#8220;Especialización&#8221;.</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:340px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">public</span> <span class="kw1">class</span> Author <span class="kw1">extends</span> Person<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="co1">//...</span><br />
<span class="br0">&#125;</span></div></div>
</dd>
<dt>Dependencia</dt>
<dd><img src='http://blog.calcifer.com.ar/uploads/2007/03/dependency.png' alt='UML - Dependency' class="noborder" /><br />Es una relación semántica entre dos elementos. Un cambio en el elemento independiente puede afectar al elemento dependiente. Indica que una clase usa otra en alguno de sus métodos, pero esta última no forma parte estructural de la clase que la utiliza.</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:340px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">import</span> <span class="co2">Author</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> Files<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">int</span> getFilesByAuthor<span class="br0">&#40;</span>Author author<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//...</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div>
</dd>
<dt>Asociación</dt>
<dd><img src='http://blog.calcifer.com.ar/uploads/2007/03/association.png' alt='UML - Association' class="noborder" /><br />Significa que una clase está constituída por otra. Es decir, estructuralmente una clase incluye uno o más objetos de otra clase. Aquí existen dos tipos, dependiendo de la forma que incluyamos un objeto dentro de otro:</p>
<dl class="L">
<dt>Composición</dt>
<dd><img src='/uploads/2007/03/composition.png' alt='UML - Composition' class="noborder" /><br />El objeto incluído es pasado por valor. Se trata de una relación estática, donde el tiempo de vida del objeto incluído depende del objeto que lo incluye. Si este último es destruído, también será destruido el objeto incluído.</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">import</span> <span class="co2">Date</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adate+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Date</span></a> time <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adate+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Date</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></div>
</dd>
<dt>Agregación</dt>
<dd><img src='/uploads/2007/03/aggregation.png' alt='UML - Aggregation' class="noborder" /><br />El objeto incluído es pasado por referencia. Esta es una relación dinámica, donde el tiempo de vida del objeto incluído no depende del objeto que lo incluye. El objeto incluído puede seguir existiendo si el que lo incluye es destruído.</p>
<div class="codecolorer-container java " style="overflow:auto;white-space:nowrap;width:300px"><div class="java codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">import</span> <span class="co2">File</span><span class="sy0">;</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> Files<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a><span class="br0">&#91;</span><span class="br0">&#93;</span> files <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">int</span> pointer <span class="sy0">=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="co1">//..</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> getLast<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">pointer</span> <span class="sy0">&gt;=</span> <span class="nu0">0</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">files</span><span class="br0">&#91;</span><span class="kw1">this</span>.<span class="me1">pointer</span><span class="sy0">--</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">null</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
<span class="br0">&#125;</span></div></div>
</dd>
</dl>
</dd>
</dl>
<h3 class="margin30">Multiplicidad de las asociaciones</h3>
<p>Determina cuántos objetos de cada tipo intervienen en la relación. Es el número de instancias de una clase que se relacionan con UNA instancia de otra clase.</p>
<ul>
<li>Cada asociación tiene 2 multiplicidades (una por cada extremo de la relación)</li>
<li>La multiplicidad se indica mediante un mínino y un máximo</li>
<li>Cuando la multiplicidad mínima es 0, la relación es opcional</li>
<li>Una multiplicidad mínima mayor o igual a 1 establece una relación obligatoria</li>
</ul>
<table class="table1">
<tr>
<th>Multiplicidad</th>
<th>Significado</th>
</tr>
<tr>
<td>1</td>
<td>Uno y sólo uno</td>
</tr>
<tr>
<td>0..1</td>
<td>Cero o uno</td>
</tr>
<tr>
<td>n..m</td>
<td>De n a m</td>
</tr>
<tr>
<td>*</td>
<td>Cero o más</td>
</tr>
<tr>
<td>0..*</td>
<td>Cero o más (idem anterior)</td>
</tr>
<tr>
<td>1..*</td>
<td>Uno o más</td>
</tr>
</table>
<h3>Interfaces</h3>
<p>La implementación de una interfaz se representa con una linea terminada en un círculo, seguido del nombre de dicha interfaz:<br /><img src='http://blog.calcifer.com.ar/uploads/2007/03/interface.png' alt='UML - Interface' class="noborder" /></p>
<h3>Ejemplo</h3>
<p>Este es un ejemplo de diagrama de clases hecho con <a href="http://live.gnome.org/Dia" class="linkexternal">Día</a>:</p>
<p><a href='http://blog.calcifer.com.ar/uploads/2007/03/uml_class_diagram.png' title='UML - Class Diagram'><img src='http://blog.calcifer.com.ar/uploads/2007/03/uml_class_diagram_part.png' alt='UML - Class Diagram' width="420" /></a><br />
<a href='http://blog.calcifer.com.ar/uploads/2007/03/uml_class_diagram.png' title='UML - Class Diagram'>Click en la imagen para ver el diagrama completo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.calcifer.com.ar/2007/03/uml-relaciones-entre-clases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

