ORIENTACAO A OBJETOS - CONCEITO
Citação:Hmmm, parece que está todo mundo [Ô]brincando[Ô] com as List<T>, ou ninguém entendeu
Vou dar uma praticada.
Obrigado
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.
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>.
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.
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...
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>
é 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
Obrigado.
Citação::
é isso ai KERPLUNK,
Obrigado.
Divirta-se!
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.