ORIENTACAO A OBJETOS - CONCEITO

NILSONTRES 25/07/2013 19:13:59
#426530
Citação:

Hmmm, parece que está todo mundo [Ô]brincando[Ô] com as List<T>, ou ninguém entendeu


Vou dar uma praticada.
Obrigado
FFCOUTO 26/07/2013 09:43:21
#426545
Então, se eu entendi de forma correta, podemos carregar uma tabela do banco de dados, e trabalhar de forma desconectada, é isso? Obviamente, que de tempos em tempos terá de fazer uma nova carga dos dados devidos a atualizações.

Se for isso, vejo muitas possibilidades. Dessa forma, toda vez que eu fizer um filtro (pesquisa) tenho de acessar o banco. Agora posso fazer direto.
NILSONTRES 26/07/2013 09:47:55
#426547
Vixi, já parei aqui:
Citação:

Cliente cli = new Cliente();
List<Cliente> listaCli = new List<Cliente>();



Onde coloco, coloquei em um button, mas o vb não entende.
tentei:

Citação:

Dim cli = New Cliente
List<Cliente> listaCli = new List<Cliente>()


mas nada, desculpe, sou zero em lit<T>.
KERPLUNK 26/07/2013 10:06:03
#426549
Citação:

:
Então, se eu entendi de forma correta, podemos carregar uma tabela do banco de dados, e trabalhar de forma desconectada, é isso? Obviamente, que de tempos em tempos terá de fazer uma nova carga dos dados devidos a atualizações.

Se for isso, vejo muitas possibilidades. Dessa forma, toda vez que eu fizer um filtro (pesquisa) tenho de acessar o banco. Agora posso fazer direto.


Sim, é uma das possibilidades. Mas há muitas outras. Por exemplo. Suponha que você carregue um grid com uma lista que veio do banco. Depois você altera, inclui e exclui dados do grid e consequentemente, da lista. Então você quer mandar isso de volta para atualizar o banco. Simplesmente crie um método na sua classe DAO que receba como parâmetro uma lista de entidades. Então, simplesmente grave esses dados no banco e pronto.
Mais possibilidades:
- Decorar as propriedades com atributos customizados: esse atributo pode conter uma propriedade que guarda o nome do campo referente à essa propriedade no banco. Então se pode [Ô]formular[Ô] um comando SQL à partir desse atributo, criando assim, uma rotina que faz interação com o banco, de forma autônoma. A vantagem disso, é que se você inserir um novo campo, basta inserir a propriedade correspondente na sua classe, todos os métodos de gravação(insert/update/delete), já vão reconhecer esse novo campo e não precisa fazer mais nada no código. Esse atributo customizado, também pode conter uma propriedade [Ô]nome de exibição[Ô], então cada propriedade também tem o seu nome padrão para exibição que pode ser buscada para mostra, por exemplo, como cabeçalho de coluna de um grid, fazendo assim, a montagem do grid de forma automática também.
- Tipos(classes) como lista: Imagine um cliente que tem N contatos. Você pode criar uma propriedade na classe cliente, que seja uma List<T> da classe [Ô]Contato[Ô], que por sua vez, vai conter os contatos do cliente. Com isso, você teria uma classe cliente, e dentro dela uma propriedade List<T> com N contatos, prontinha para ser exibida.
- Métodos de extensão: Os métodos de extensão(posso falar disso mais adiante), são um recurso poderoso. Você pode ter um método de extensão que, por exemplo, envie um e-mail com os dados do objeto corrente. Como você pode também estender métodos para List<T>, você pode ter um método de extensão que, por exemplo, transforme uma lista em uma tabela HTML, ou em um PDF, com métodos de extensão, o céu é o limite.

Usando outras técnicas, combinadas com List<T>, as possibilidades são praticamente infinitas. Como por exemplo, usar Reflection para trabalhar com a própria List<T>, Expressões regulares para validações, padrão factory para [Ô]encontrar[Ô] o banco de dados, usar herança para fazer todo o necessário com suas entidades(incluindo, toda a interação com o banco de forma autônoma, usar Deferred Loading(lazy loading) para carregar a List<T> somente quando for necessária, criar sua própria classe que herde de List<T> e criar métodos nativos para ela sem precisar de métodos de extensão... enfim é tanta coisa que os posts ficam até chatos de se ler.
KERPLUNK 26/07/2013 10:24:44
#426551
Ainda por cima, tem outros tipos de lista, como Stack, Dictionary, Queue, ArrayList, HashTable, enfim, tem muitos tipos de listas no namespace System.Collections e todas tem muita utilidade.
Além disso, a OOP, oferece recursos que pouca gente explora, mas usados corretamente, resolvem muitos problemas, como por exemplo Eventos

Gente, tem tanto pra ver...
NILSONTRES 26/07/2013 15:03:21
#426578
Não entendi essa parte:
Citação:

List<Cliente> listaCli = new List<Cliente>


Tem diferença pra vb ?
Esta funcional da forma descrita no exemplo ?

Tentei novamente:

Citação:

Dim cli = New Cliente()
cli.Codigo = 1
cli.Nome = [Ô]Jose da Silva[Ô]
cli.DataNascimento = New DateTime(1964, 4, 5)
Dim listaCli As New List(Cliente)
aqui não rola:
List<Cliente> listaCli = new List<Cliente>

KERPLUNK 26/07/2013 15:28:33
#426580
List<Cliente> listaCli = new List<Cliente>();
é equivalente à
Dim listaCli As New List(Of Cliente)()


Acho que no que escrevi, estava faltando o () no final...

Editado: não, o meu código está certo, você só não conseguiu [Ô]traduzir[Ô] para VB, dica, use isto para converter C# para VB e vice-versa
NILSONTRES 26/07/2013 16:42:44
#426586
é isso ai KERPLUNK,

Obrigado.
KERPLUNK 26/07/2013 18:25:05
#426594
Citação:

:
é isso ai KERPLUNK,

Obrigado.


Divirta-se!
FFCOUTO 29/07/2013 10:08:44
#426631
Essa implementação citada no exemplo, clientes e contatos eu uso muito, até mesmo no velho VB6. Realmente facilita e muito na manipulação dos dados.

Os métodos de extensão eu até criei um para validar dados nulos vindos e enviados para o banco de dados, e digo que é fantástico a sua utilização. Outro uso que deve ser interessante, ainda não testei, é para cálculo de imposto nos itens de venda.

Veja código da extensão:

public static class NullableObject
{
public static T ValidateNull<T>(this Object value, T defaultValue)
{
if (value == Convert.DBNull)
return (T)defaultValue;
return (T)value;
}
}


Para usar fica assim:
oCli.Credito = ds[[Ô]situacao[Ô]].ValidateNull(0);


No caso do imposto, pode criar um método para calcular ICMS, IPI, etc.

Amigos, OOP é algo de outro mundo.
Página 5 de 14 [136 registro(s)]
Faça seu login para responder