Gooden Posted October 13, 2009 at 10:43 AM Report Share #291487 Posted October 13, 2009 at 10:43 AM Boas People. =D Estava a responder a outro tópico fiz aqui um código que pode interessar a muitos quanto a mexer com estruturas juntamente com List of. =) Primeiro criamos a estrutura =D Private Structure Cliente Implements IComparable(Of Cliente) Private _nome As String Private _zona As String 'esta sub server para podermos usar o New Cliente("","") Public Sub New(ByVal Nome As String, ByVal Zona As String) _nome = Nome _zona = Zona End Sub 'Server Para retomar ou Definir o Nome Public Property Nome() As String Get Return _nome End Get Set(ByVal Nome As String) _nome = Nome End Set End Property 'Server Para retomar ou Definir a Zona Public Property Zona() As String Get Return _zona End Get Set(ByVal Zona As String) _zona = Zona End Set End Property 'Funçao que irá Comparar as Zonas Public Function CompararZonas(ByVal bo As Cliente) As Boolean 'Neste caso o UPPER fara com que não haja diferença em escrever LISBOA ou Lisboa Return bo.Zona.ToUpper = Me.Zona.ToUpper End Function 'Funçao que irá Comparar os Nomes Public Function CompararNomes(ByVal bo As Cliente) As Boolean 'Neste caso o UPPER fara com que não haja diferença em escrever JOÃO ou João Return bo.Nome.ToUpper = Me.Nome.ToUpper End Function 'Comparar Nome Com Cliente Public Function CompareNomeTo(ByVal other As Cliente) As Integer Implements System.IComparable(Of Cliente).CompareTo Return other.Nome.ToLower = Me.Nome.ToLower End Function End Structure É uma estrutura simples para que entendam bem =) os comentários estão la para ajudar a entender as coisitas =D Após isso é só testar 👍 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Criamos uma Lista de Clientes e Zona onde moram Dim Clientes As New List(Of Cliente) Clientes.Add(New Cliente("Bruno Pacheco", "Porto")) Clientes.Add(New Cliente("Heckel", "Braga")) Clientes.Add(New Cliente("João Silva", "Lisboa")) Clientes.Add(New Cliente("Bruno XPTO", "Rio Grande")) Clientes.Add(New Cliente("Heckel", "Lisboa")) 'Aqui vamos criar um cliente com os parametros que queremos procurar =) 'Escrevi com Letras maiusculas e minusculas para o .toUpper fazer a sua Funçao =) Dim Procurar As New Cliente("HeCkEl", "LiSbOa") 'Vamos procurar Todos os Clientes neste caso na zona de lisboa Dim Clt As Cliente For Each Clt In Clientes.FindAll(AddressOf Procurar.CompararZonas) MsgBox("Zona Igual: " & Clt.Nome & " - " & Clt.Zona) Next 'Vamos procurar Todas as zonas cujo o nome do cliente é igual For Each Clt In Clientes.FindAll(AddressOf Procurar.CompararNomes) MsgBox("Nome Igual: " & Clt.Nome & " - " & Clt.Zona) Next 'Vamos procurar Todas as zonas cujo o nome do cliente é igual, Metodo 2 For Each Clt2 As Cliente In Clientes If Procurar.CompareNomeTo(Clt2) Then MsgBox("Nome Igual: " & Clt2.Nome & " - " & Clt2.Zona) End If Next Clt2 'vamos procurar se existe algum Bruno Pacheco na Zona de Lisboa If Clientes.Contains(New Cliente("Bruno Pacheco", "Lisboa")) Then MsgBox("Bruno Pacheco encontrado na zona de Lisboa!") Else MsgBox("Bruno Pacheco não encontrado na zona de Lisboa!") End If 'vamos procurar se existe algum Bruno Pacheco na Zona de Porto If Clientes.Contains(New Cliente("Bruno Pacheco", "Porto")) Then MsgBox("Bruno Pacheco encontrado na zona de Porto!") Else MsgBox("Bruno Pacheco não encontrado na zona de Porto!") End If End Sub Espero que isto vos seja útil de alguma maneira =) Projecto: http://rapidshare.com/files/292404579/Exemplo_Structure_Com_List_Of.zip.html Link to comment Share on other sites More sharing options...
ribeiro55 Posted October 13, 2009 at 11:09 AM Report Share #291491 Posted October 13, 2009 at 11:09 AM Porreiro porreiro era incluíres isso de alguma forma no artigo sobre Structures que está na Wiki 👍 De qualquer maneira, bom trabalho. Bem comentadinho 😛 Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips" Link to comment Share on other sites More sharing options...
Gooden Posted October 13, 2009 at 11:24 AM Author Report Share #291493 Posted October 13, 2009 at 11:24 AM Posso É rescrever aquilo que axas? Link to comment Share on other sites More sharing options...
ribeiro55 Posted October 13, 2009 at 11:43 AM Report Share #291497 Posted October 13, 2009 at 11:43 AM É o bom de ser uma Wiki como é. Se achas que está mal, incompleto ou impreciso... larga ferro 👍 Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips" Link to comment Share on other sites More sharing options...
fLaSh_PT Posted October 13, 2009 at 02:21 PM Report Share #291516 Posted October 13, 2009 at 02:21 PM Como a abordagem está boa 👍 Vou falar das interfaces que também é possível as implementar.. a syntax é Implements, que fica na linha a baixo do nome da Structure.. Um exemplo da implementação da interface IComparable.. Public Structure Pessoa Implements IComparable(Of Pessoa) Public Nome As String Public Apelido As String Private Idade As Integer Public Morada As String Public Property AnoNascimento() As Integer Get Return Now.Year - Idade End Get Set(ByVal value As Integer) Idade = Now.Year - value End Set End Property Public Function NomeCompleto() As String Return Nome & Space(1) & Apelido End Function Public Sub New(ByVal NomePessoa As String) Nome = NomePessoa End Sub Public Function CompareTo(ByVal other As Pessoa) As Integer Implements System.IComparable(Of Pessoa).CompareTo Return other.Nome.ToLower = Me.Nome.ToLower End Function End Structure Nota: ao colocar 'Implements IComparable', automaticamente o VB irá colocar os métodos da respectiva interface.. que neste caso é CompareTo Compr. Making the impossible possible and pwing the world on db at a time. Link to comment Share on other sites More sharing options...
ribeiro55 Posted October 13, 2009 at 02:27 PM Report Share #291519 Posted October 13, 2009 at 02:27 PM Todos os ingredientes reunidos para uma boa sopa de Wiki. Sempre queres reescrever o artigo Gooden? Se não, quando tiver uns tempinhos dou-lhe uns retoques para ficar mais completo. fLaSh_PT, porreiro era um artigo sobre Interfaces (já estive quase, quase para escrever um, mas a porcaria do tempo....) para que se possa referenciar no artigo das structures. Acho preferível os artigos lá do que a informação aqui e desta forma. Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips" Link to comment Share on other sites More sharing options...
Gooden Posted October 13, 2009 at 04:12 PM Author Report Share #291538 Posted October 13, 2009 at 04:12 PM fLaSh_PT alterei o código inicial... era aqulo? Link to comment Share on other sites More sharing options...
fLaSh_PT Posted October 14, 2009 at 08:37 AM Report Share #291624 Posted October 14, 2009 at 08:37 AM fLaSh_PT alterei o código inicial... era aqulo? Foi apenas um exemplo, secalhar até ficaria melhor com uma interface criada.. como por exemplo: ' Iterface do Cliente Interface Comparador(Of Cliente) ' Funções.. Function CompararNomes(ByVal bo As Cliente) As Boolean Function CompararZonas(ByVal bo As Cliente) As Boolean ' Propriedades .. Property Nome() As String Property Zona() As String End Interface Private Structure Cliente Implements Comparador(Of Cliente) 'Implementa a interface.. Private _nome As String Private _zona As String 'esta sub server para podermos usar o New Cliente("","") Public Sub New(ByVal Nome As String, ByVal Zona As String) _nome = Nome _zona = Zona End Sub 'Server Para retomar ou Definir a Zona Public Property Nome() As String Implements Comparador(Of Cliente).Nome Get Return _nome End Get Set(ByVal value As String) _nome = value End Set End Property 'Server Para retomar ou Definir o Nome Public Property Zona() As String Implements Comparador(Of Cliente).Zona Get Return _zona End Get Set(ByVal value As String) _zona = value End Set End Property 'Funçao que irá Comparar as Zonas Public Function CompararNomes(ByVal bo As Cliente) As Boolean Implements Comparador(Of Cliente).CompararNomes 'Neste caso o UPPER fara com que não haja diferença em escrever JOÃO ou João Return bo.Nome.ToUpper = Me.Nome.ToUpper End Function 'Funçao que irá Comparar os Nomes Public Function CompararZonas(ByVal bo As Cliente) As Boolean Implements Comparador(Of Cliente).CompararZonas 'Neste caso o UPPER fara com que não haja diferença em escrever LISBOA ou Lisboa Return bo.Zona.ToUpper = Me.Zona.ToUpper End Function End Structure Isto serve apenas para demonstrar como utilizar as interfaces nas Structure, pode não parecer mas é muito útil, imaginem que tem um projecto com umas 100 classes.. na qual umas 15 tem os mesmas propriedades e metodos, se for criado uma interface e ser implementados nessas 15 classes.. quando houver necessidade de alterar/adicionar/remover alguma método o trabalho torna se simples 🙂 PS: as Interfaces são utilizadas nas classes da mesma forma que nas Structure .. Compr. Making the impossible possible and pwing the world on db at a time. Link to comment Share on other sites More sharing options...
jpaulino Posted October 14, 2009 at 09:11 AM Report Share #291628 Posted October 14, 2009 at 09:11 AM Estou a gostar da "discussão" e dos métodos que estou a ver, mas mais um pequeno exemplo de como as Lambda Expressions podem simplificar: For Each Clt As Cliente In Clientes.FindAll(Function(f) f.Zona.ToUpper = "LISBOA") Debug.WriteLine(String.Format("Nome: {0} - Morada: {1}", Clt.Nome, Clt.Zona)) Next Isto não invalida que não se utilizem structures e interfaces, mas em muitas situações, e especialmente para coisas não muito complexas, é muito útil e simples de utilizar. Link to comment Share on other sites More sharing options...
fLaSh_PT Posted October 14, 2009 at 10:13 AM Report Share #291638 Posted October 14, 2009 at 10:13 AM @jpaulino Sim, muito útil e simple de utilizar.. Não utilizo ainda muito, porque são novos métodos do .NET 3.x e a maioria dos PC's ainda não o tem instalado.. com .NET 2.x é mais provável um determinado PC já o ter instalado.. mas claro é uma questão de tempo.. creio que o Windows 7, já traz embutido o .NET 3.x 🙂 Making the impossible possible and pwing the world on db at a time. Link to comment Share on other sites More sharing options...
jpaulino Posted October 14, 2009 at 03:23 PM Report Share #291665 Posted October 14, 2009 at 03:23 PM Não utilizo ainda muito, porque são novos métodos do .NET 3.x e a maioria dos PC's ainda não o tem instalado.. com .NET 2.x Também eu 🙂 No emprego todos os PC's têm apenas o .NET Framework 2.0 e apenas em projectos externos utilizo Lambda, LINQ ou XML Literals. Paciência. Link to comment Share on other sites More sharing options...
Gooden Posted October 15, 2009 at 09:01 AM Author Report Share #291730 Posted October 15, 2009 at 09:01 AM Ribeiro importas-te depois de dar uma revisa e fazer o artigo para a wiki??? Não tenho muito jeito para isso e meu português é de assassino xD Link to comment Share on other sites More sharing options...
fLaSh_PT Posted October 15, 2009 at 10:49 AM Report Share #291739 Posted October 15, 2009 at 10:49 AM Ribeiro importas-te depois de dar uma revisa e fazer o artigo para a wiki??? Não tenho muito jeito para isso e meu português é de assassino xD Creio que deves ser tu fazer o artigo para a wiki.. quanto a erros podes utilizar um processador de texto como o MS Word.. acho que seria melhor começares e caso precises de ajuda.. levantares questões, assim creio que não te deve faltar ajuda.. 🙂 Making the impossible possible and pwing the world on db at a time. Link to comment Share on other sites More sharing options...
Gooden Posted October 15, 2009 at 11:46 AM Author Report Share #291746 Posted October 15, 2009 at 11:46 AM Não gosto de pessoas como tu..... fazem-me concordar com elas e com vontade de trabalhar 😄 estou a brincar.... Vou começar a escrever o artigo. 🙂 HERE I GOOOOOOOOOOOOOOO WIIIIIIIIII Sou da opinião que não se devia falar de implements neste artigo... fazer 1 apenas de estruturas e depois outro de implements Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now