DEVO USAR MÉTODOS OU PROPIEDADES EM OO?

MARCOS 27/07/2016 09:53:02
#465172
Prezados colegas,
Tenho uma dúvida referente a estrutura
lógica utilizada em um projeto .NET orientados a objeto.
Me refiro aos projetos (WinForm),orientados a objeto (Mas,sem utilizar padrão de projeto).

O caso:

Digamos que tenho uma classe.Nesta classe um método qualquer que para
funcionar deve receber, por exemplo 3 parâmetros.Para esta classe,eu posso
fornecer os valores para o método,por meio de parâmetros ou utilizando as propiedades
da classe.

Ou seja,Para utilizar esta classe eu a instancio,depois executo o método.
Ao executar o método,eu posso tanto fornecer os dados que o método precisa
usando as propiedades , bem como passar os valores ,usando os parâmetros.

A dúvida:

Na orientação a Objetos (OO),o correto é passar os valores que o método da
classe necessita,por meio:

1.das propiedades
2.Ao executar o método (Usando parâmetros) no método
3.Ou os dois modos estão corretos e é uma questão de preferência pessoal ?


Agradeço qualquer orientação
ACCIOLLY 27/07/2016 10:32:20
#465174
Acho que a Orientação a objetos é muito mais do que simplesmente instanciar classes. é um conceito. Por que? Ela prega o [Ô]reaproveitamento de dados[Ô]. Pra que? poupar trabalhos. Talvez, não momentâneos, mas futuros. Entendendo este conceito, a forma como você usa ele vai muito da sua preferência. Ta certo que você vai querer estudar padrões e tal, mas por outro lado vai poder criar seu próprio padrão. Eu por exemplo prefiro criar uma classe com atributos (variáveis) privadas, encapsulando-as em metodos públicos para acessa-las como objeto instanciado em outra classe. Gosto bastante de usar o método construtor da classe, e ainda posso criar uma sobrecarga deles principalmente em se tratando de Windows Form.
Também gosto muito de criar classes com atributos públicos e estáticos, etc...
Então, dá pra fazer muita coisa com a Orientação a Objetos. Agora como você vais usar cada coisa, depende muito do momento.
MOUSER 27/07/2016 10:39:10
#465175
Eu dentro da classe usaria algumas variáveis privadas, usaria as propriedades como intercessor dessas variáveis, assim trabalhando com elas dentro do método. é um meio bem simples facil; Eu particularmente prefiro desta forma.
Citação:


Public Class Registro
Private _Nome As String
[...]
Public Property Nome() As String
Get
Return _Nome
Set(ByVal value As String)
_Nome = Value
End Set
End Property

Public Sub Gravar()
Dim Query As New StringBuilder
Query.Append ([Ô]Insert Into Tabela (NOME) Values ([ô][Ô] & _Nome &[Ô][ô]);[Ô])
Dim Conecta As New classeBancoDados
conecta.executacomando(query.tostring)
End Sub


Um exemplo da forma que eu faço.
JABA 27/07/2016 14:38:54
#465180
Resposta escolhida
Marcos, ao utilizar propriedades como parâmetros de um método, você está deixando o seu código redundante, e por isso, infringindo o conceito de coesão. é claro também que poderá existir casos bem específicos onde você seja obrigado a fazer dessa maneira, mas no geral, isso aí é uma má prática. Outra coisa interessante é que se os parâmetros do método não são propriedades do respectivo objeto, e eles juntos formam características de um único objeto, então, pega-se esses parâmetros e torne-os propriedades de uma outra classe, depois substitua os parâmetros antigos do método por uma referência a esta classe. Fazendo desse jeito, você preserva a assinatura do seu método e o design de seu projeto, pois se você precisar futuramente fazer uma modificação, o que mudará será apenas o algorítimo de implementação, e por isso, terá menos partes de código sendo afetadas pelas mudanças. O grande segredo da OO é parar de enxergar as classes como repositórios de dados, a coisa vai muito além disso. Não tem nada a ver com reaproveitamento de dados, como foi dito pelo colega ACCIOLLY. As vezes a herança mais atrapalha do que ajuda. O que mais importa é como o seu projeto está arquitetado para lidar com as mudanças, que é algo praticamente inevitável.

MARCOS 28/07/2016 09:19:33
#465210
Bom dia!
Ao que parece, os colegas Mouser e Jaba tem uma opinião diferente, para dúvida que postei:
Vou tentar , colocar então uma situação prático , para tentar chegar a conclusão sobre o que é melhor:

O exemplo prático:

Digamos que eu tenho uma classe para lidar com usuários ( ClFuncionario).

- Esta classe tem um método chamado : VerificarIdentificacao. ( Com 2 parâmetros, Nome e senha )
- Digamos que nesta mesma classe, eu criei também duas propiedades: Usuario e Senha

Neste caso, o melhor é executar o método, passando os dados, por meio dos parâmetros do método, ou
devo fornecer os dados para as propiedades e depois executar o método???

é claro, que irá funcionar dos 2 modos. Mas, do ponto de vista da OO, o que pode ser considerado boa prática???
Fornecer os dados de entrada do método usando as propiedades ou direto no método,usando os parâmetros ????

Agradeço qualquer opinião...
JABA 28/07/2016 11:12:37
#465212
Se as duas possibilidades resolvem o mesmo problema e só se diferenciam pela forma de implementação, então qual seria a finalidade de criar tal redundância? Isso é parecido com a ideia de se criar dois métodos de somar e eles se diferenciarem apenas pela ordem dos parâmetros. Ou seja, não faz sentido algum ter duas implementações para o mesmo problema numa mesma classe. Então qual seria a forma mais adequada para esse caso? As duas formas, desde que não deixe o código com redundâncias. O que vai definir qual delas escolher é a lógica de negócio. Existirão projetos que será melhor fazer uso dos atributos no método e outros que será melhor passar os dados via parâmetros.
Tópico encerrado , respostas não são mais permitidas