CLSSES E HERANCA
Pessoal alguem sabe me dizer como posso usar o atributos de uma classe sem ser por herança?[txt-size=2] [/txt-size]
Não ficou muito claro. Coloque ai o que você está tentando fazer pra que possamos te orientar melhor.
Veja se é isso que precisa:
Public Class Pessoa
Private Property ID as integer
Property Nome as String
End Class
Public Class Cliente
Inherits Pessoa
End Class
Dessa forma não conseguirá usar Cliente.ID = 10 porque a propriedade está como privada na classe pessoa.
Mas dá para usar Cliente.Nome = [Ô]Rodrigo[Ô] porque a proprieade Nome está publica.
Veja se é isso que precisa:
Public Class Pessoa
Private Property ID as integer
Property Nome as String
End Class
Public Class Cliente
Inherits Pessoa
End Class
Dessa forma não conseguirá usar Cliente.ID = 10 porque a propriedade está como privada na classe pessoa.
Mas dá para usar Cliente.Nome = [Ô]Rodrigo[Ô] porque a proprieade Nome está publica.
Você estaria falando de atributos de classe e propriedades? Se for, não entendi o que herança tem a haver com isso...
[txt-size=1]Tenho uma classe chamada Produto com atributos (código, nome e valor). Só que essa classe não está ligada com a Super Classe Encomenda e nem com as subClasses Encomenda Terceirizada e Encomenda expressa. Só que para calcular o valor total das encomendas, preciso do valor dos produtos.... Ai está minha dúvida, como pegar o valor dos produtos se a classe produto não tem nenhuma ligação com as outras.[/txt-size]
Bom, pra começar o que você se refere como atributos, são chamados propriedades, atributo é outra coisa.
Respondendo sua questão. Encomenda, contém produtos e não produtos contém encomentas, então, as classes de encomenda, seja qual for o tipo, vão conter X produtos, além dos dados da encomenda em si, que podem conter mais valores a serem inclusos na soma. Então:
Valores de encomenda + Soma de produtos = valor total
Então para criar suas classes de encomenda, inclua nelas propriedade do tipo List<T> de produto. Com isso, você pode adicionar quantos produtos quiser e somá-los usando até mesmo uma simples expressão lambda
Respondendo sua questão. Encomenda, contém produtos e não produtos contém encomentas, então, as classes de encomenda, seja qual for o tipo, vão conter X produtos, além dos dados da encomenda em si, que podem conter mais valores a serem inclusos na soma. Então:
Valores de encomenda + Soma de produtos = valor total
Então para criar suas classes de encomenda, inclua nelas propriedade do tipo List<T> de produto. Com isso, você pode adicionar quantos produtos quiser e somá-los usando até mesmo uma simples expressão lambda
O teu caso é parecido com Pedido, ItemPedido e Produto.
Class Pedido
property Itens as List(Of ItemPedido)
Public Function GetTotal() as Decimal
dim total as decimal
for each item as ItemPedido in Itens
total = total + (item.Produto.Preco * item.Quantidade)
next
return total
End Function
End Class
Class ItemPedido
property Produto as Produto
property Quantidade as Integer
End Class
Class Produto
property Nome as String
property Preco as Decimal
property Quantidade as Integer
End Class
Class Pedido
property Itens as List(Of ItemPedido)
Public Function GetTotal() as Decimal
dim total as decimal
for each item as ItemPedido in Itens
total = total + (item.Produto.Preco * item.Quantidade)
next
return total
End Function
End Class
Class ItemPedido
property Produto as Produto
property Quantidade as Integer
End Class
Class Produto
property Nome as String
property Preco as Decimal
property Quantidade as Integer
End Class
Substitua:
Public Function GetTotal() as Decimal
dim total as decimal
for each item as ItemPedido in Itens
total = total + (item.Produto.Preco * item.Quantidade)
next
return total
End Function
Por:
Public Function GetTotal() As Decimal
Return y.Sum(Function(som) som.valor)
End Function
Public Function GetTotal() as Decimal
dim total as decimal
for each item as ItemPedido in Itens
total = total + (item.Produto.Preco * item.Quantidade)
next
return total
End Function
Por:
Public Function GetTotal() As Decimal
Return y.Sum(Function(som) som.valor)
End Function
Faça seu login para responder