<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Idéias sobre encapsulamento, linq e delegates em C#</title>
	<atom:link href="http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/</link>
	<description></description>
	<lastBuildDate>Thu, 28 Jul 2011 09:44:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Alondra Noel</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-175</link>
		<dc:creator>Alondra Noel</dc:creator>
		<pubDate>Thu, 28 Jul 2011 09:44:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-175</guid>
		<description>A book mark to this text was provided by Christian Dillstrom, you are doing a fantastic job as mobile + social media marketing shark provides a hyperlink to you?</description>
		<content:encoded><![CDATA[<p>A book mark to this text was provided by Christian Dillstrom, you are doing a fantastic job as mobile + social media marketing shark provides a hyperlink to you?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Almir Sousa</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-138</link>
		<dc:creator>Almir Sousa</dc:creator>
		<pubDate>Thu, 23 Sep 2010 17:45:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-138</guid>
		<description>Luiz,

Excelente artigo! Gostaria de saber qual ferramenta você utilizou para modelar o exemplo?

Att.

Almir</description>
		<content:encoded><![CDATA[<p>Luiz,</p>
<p>Excelente artigo! Gostaria de saber qual ferramenta você utilizou para modelar o exemplo?</p>
<p>Att.</p>
<p>Almir</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luiz Costa</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-128</link>
		<dc:creator>Luiz Costa</dc:creator>
		<pubDate>Wed, 04 Aug 2010 03:58:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-128</guid>
		<description>Oi Edmilson,

Obrigado pelo comentário.

Não tenho muita certeza do que vc quer dizer com &quot;Método de Extensão&quot;, mas o fato é que tem um erro no diagrama, falta colocar público o método Inativar na classe funcionário. O atributo de &quot;ativo&quot; de funcionário realmente é privado, mas este é manipulado apenas através de métodos, neste caso o método &quot;Inativar&quot;. Na classe empresa, é possível acessar este método normalmente pq ele é público na classe funcionário. 

Um bom ponto de partida para entender um pouco sobre projeto orientado a objetos é o livro do  Craig Larman segue o link 
http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1280894086&amp;sr=8-1.

 É uma excelente introdução e tem uma versão em português também.

Nós escrevemos um post aqui no saga ano passado sobre modelo de objetos e modelo de dados, talvez possa te ajudar. 
Segue o link
http://www.sagadoprogramador.com.br/2009/07/nosso-modelo-de-objetos-nao-deve-ser-uma-copia-do-nosso-modelo-de-dados/

Um abraço,
Luiz Costa</description>
		<content:encoded><![CDATA[<p>Oi Edmilson,</p>
<p>Obrigado pelo comentário.</p>
<p>Não tenho muita certeza do que vc quer dizer com &#8220;Método de Extensão&#8221;, mas o fato é que tem um erro no diagrama, falta colocar público o método Inativar na classe funcionário. O atributo de &#8220;ativo&#8221; de funcionário realmente é privado, mas este é manipulado apenas através de métodos, neste caso o método &#8220;Inativar&#8221;. Na classe empresa, é possível acessar este método normalmente pq ele é público na classe funcionário. </p>
<p>Um bom ponto de partida para entender um pouco sobre projeto orientado a objetos é o livro do  Craig Larman segue o link<br />
<a href="http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1280894086&#038;sr=8-1" rel="nofollow">http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1280894086&#038;sr=8-1</a>.</p>
<p> É uma excelente introdução e tem uma versão em português também.</p>
<p>Nós escrevemos um post aqui no saga ano passado sobre modelo de objetos e modelo de dados, talvez possa te ajudar.<br />
Segue o link<br />
<a href="http://www.sagadoprogramador.com.br/2009/07/nosso-modelo-de-objetos-nao-deve-ser-uma-copia-do-nosso-modelo-de-dados/" rel="nofollow">http://www.sagadoprogramador.com.br/2009/07/nosso-modelo-de-objetos-nao-deve-ser-uma-copia-do-nosso-modelo-de-dados/</a></p>
<p>Um abraço,<br />
Luiz Costa</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luiz Costa</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-127</link>
		<dc:creator>Luiz Costa</dc:creator>
		<pubDate>Wed, 04 Aug 2010 03:46:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-127</guid>
		<description>@Rodrigo
Oi rodrigo, é verdade, seria interessante deixar a lista read only, mas isso não evita a violação do encapsulamento causado pelo uso descuidado das queries do linq.

@marcio 
Obrigado pelo comentário. A arquitetura antiga do j2ee realmente influenciou bastante a comunidade java. Mas isso tem mudado bastante. Mas acho que isso não é exclusividade do java, em .net também temos vários exemplos de design questionáveis. Mas como vc mesmo disse, design é design.</description>
		<content:encoded><![CDATA[<p>@Rodrigo<br />
Oi rodrigo, é verdade, seria interessante deixar a lista read only, mas isso não evita a violação do encapsulamento causado pelo uso descuidado das queries do linq.</p>
<p>@marcio<br />
Obrigado pelo comentário. A arquitetura antiga do j2ee realmente influenciou bastante a comunidade java. Mas isso tem mudado bastante. Mas acho que isso não é exclusividade do java, em .net também temos vários exemplos de design questionáveis. Mas como vc mesmo disse, design é design.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Edmilson</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-126</link>
		<dc:creator>Edmilson</dc:creator>
		<pubDate>Tue, 03 Aug 2010 23:37:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-126</guid>
		<description>Excelente Artigo,  Parabéns!

so fiquei com uma duvida,  se a propriedade Ativo do Funcionário  esta  Private no ultimo Diagrama de Classe, como é que  se faz  para  pode  realizar  com sucesso  o metodo de Extensão  funcionario.Inativar()  no Metodo Demite() da classe Empresa?  
 Necessito saber  isso, pois estou na busca  de  informações de como fazer  um bom Design   já que  não sei trabalhar  OOP  e so  faço  modelos anêmicos  por falta  de  dominio  de  modelagem/Design.  

Por falar nisso,  o que vocês indicam para quem quer aprender  mais sobre modelagem/Desing?
  Hoje  só consigo  pensar  em Tabelas  e querys  que vão  realizar  alguma modificação  no Banco.  Uma limitação  de quem não domina OOP  e Design.  Este sou  eu...!!

[]´s

Edmilson</description>
		<content:encoded><![CDATA[<p>Excelente Artigo,  Parabéns!</p>
<p>so fiquei com uma duvida,  se a propriedade Ativo do Funcionário  esta  Private no ultimo Diagrama de Classe, como é que  se faz  para  pode  realizar  com sucesso  o metodo de Extensão  funcionario.Inativar()  no Metodo Demite() da classe Empresa?<br />
 Necessito saber  isso, pois estou na busca  de  informações de como fazer  um bom Design   já que  não sei trabalhar  OOP  e so  faço  modelos anêmicos  por falta  de  dominio  de  modelagem/Design.  </p>
<p>Por falar nisso,  o que vocês indicam para quem quer aprender  mais sobre modelagem/Desing?<br />
  Hoje  só consigo  pensar  em Tabelas  e querys  que vão  realizar  alguma modificação  no Banco.  Uma limitação  de quem não domina OOP  e Design.  Este sou  eu&#8230;!!</p>
<p>[]´s</p>
<p>Edmilson</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Márcio Torres</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-125</link>
		<dc:creator>Márcio Torres</dc:creator>
		<pubDate>Fri, 30 Jul 2010 17:54:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-125</guid>
		<description>Legal Luiz, muito bom o teu artigo.

Evidente que o modelo rico aumenta a coesão e melhora muito a leitura, ao contrário do modelo anêmico. Já vi muitos casos semelhantes ao que falaste, como (em Java) getFuncionarios().add(funcionario), isto dentro de um objeto de negócio (no estilo Transaction Script, como um EJB).

Sou iniciante na plataforma .NET, tenho muito mais background em Java, mas estes conceitos são crosslanguages e crossplatforms, afinal, é design.

Um abraço.</description>
		<content:encoded><![CDATA[<p>Legal Luiz, muito bom o teu artigo.</p>
<p>Evidente que o modelo rico aumenta a coesão e melhora muito a leitura, ao contrário do modelo anêmico. Já vi muitos casos semelhantes ao que falaste, como (em Java) getFuncionarios().add(funcionario), isto dentro de um objeto de negócio (no estilo Transaction Script, como um EJB).</p>
<p>Sou iniciante na plataforma .NET, tenho muito mais background em Java, mas estes conceitos são crosslanguages e crossplatforms, afinal, é design.</p>
<p>Um abraço.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-124</link>
		<dc:creator>Rodrigo</dc:creator>
		<pubDate>Fri, 30 Jul 2010 17:39:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-124</guid>
		<description>Se você estivesse usando Generics no get você poderia fazer isso.

private List funcionarios;
public List Funcionarios
{
     get { return funcionarios.AsReadOnly(); }
}</description>
		<content:encoded><![CDATA[<p>Se você estivesse usando Generics no get você poderia fazer isso.</p>
<p>private List funcionarios;<br />
public List Funcionarios<br />
{<br />
     get { return funcionarios.AsReadOnly(); }<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cadu</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-123</link>
		<dc:creator>Cadu</dc:creator>
		<pubDate>Fri, 30 Jul 2010 14:03:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-123</guid>
		<description>Cara Muito bom artigo, gostei abração!!!!!</description>
		<content:encoded><![CDATA[<p>Cara Muito bom artigo, gostei abração!!!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luiz Costa</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-122</link>
		<dc:creator>Luiz Costa</dc:creator>
		<pubDate>Fri, 09 Jul 2010 01:09:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-122</guid>
		<description>Olá Orlando,

Obrigado pelo seu comentário.

Neste caso, a lista de funcionários privada é proposital. Não é interessante, neste contexto, deixar obter uma referência para lista de funcionários, isto vai quebrar o encapsulamento. O meu ponto é que se esta referência estiver disponível, tem que se ter muito cuidado para não fazer operações sobre a lista que deveriam ser da classe Empresa. Tenho visto alguns projetos ignorando este detalhe e tendo uma duplicação absurda de código.
Mas você tem razão, as properties do C# são uma mão na roda mesmo. Só tem que tomar cuidado com o encapsulamento.

Até
Luiz Costa</description>
		<content:encoded><![CDATA[<p>Olá Orlando,</p>
<p>Obrigado pelo seu comentário.</p>
<p>Neste caso, a lista de funcionários privada é proposital. Não é interessante, neste contexto, deixar obter uma referência para lista de funcionários, isto vai quebrar o encapsulamento. O meu ponto é que se esta referência estiver disponível, tem que se ter muito cuidado para não fazer operações sobre a lista que deveriam ser da classe Empresa. Tenho visto alguns projetos ignorando este detalhe e tendo uma duplicação absurda de código.<br />
Mas você tem razão, as properties do C# são uma mão na roda mesmo. Só tem que tomar cuidado com o encapsulamento.</p>
<p>Até<br />
Luiz Costa</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Orlando</title>
		<link>http://www.sagadoprogramador.com.br/2010/05/ideias-sobre-encapsulamento-linq-delegates-em-c/comment-page-1/#comment-121</link>
		<dc:creator>Orlando</dc:creator>
		<pubDate>Thu, 08 Jul 2010 13:51:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=510#comment-121</guid>
		<description>Olá.

No primeiro exemplo, você poderia utilizar

public List Funcionarios {get; private set;}

a fim de que fosse possível recuperar a lista de funcionários. Isto aproveita melhor os recursos da linguagem C#.

Se você fez que nem em Java (como abaixo), você praticamente dispensou o uso das propriedades automáticas do C# 3.0.

private List Funcionarios;
public List GetFuncionarios(){
  return this.Funcionarios;
}


Quanto a parte de encapsulamento e Linq, ficou muito bom. É isso mesmo! Parabéns! :D</description>
		<content:encoded><![CDATA[<p>Olá.</p>
<p>No primeiro exemplo, você poderia utilizar</p>
<p>public List Funcionarios {get; private set;}</p>
<p>a fim de que fosse possível recuperar a lista de funcionários. Isto aproveita melhor os recursos da linguagem C#.</p>
<p>Se você fez que nem em Java (como abaixo), você praticamente dispensou o uso das propriedades automáticas do C# 3.0.</p>
<p>private List Funcionarios;<br />
public List GetFuncionarios(){<br />
  return this.Funcionarios;<br />
}</p>
<p>Quanto a parte de encapsulamento e Linq, ficou muito bom. É isso mesmo! Parabéns! <img src='http://www.sagadoprogramador.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

