Os métodos são manipuladores de informações que executam operações importantes para o funcionamento dos nossos programas orientados a objetos. Sabemos que eles possuem dois tipos conhecidos como construtores e destrutores responsáveis pela instanciação do objeto. Nesta publicação, veremos encapsulamento e sobrecarga para concluir a introdução dos métodos.
Construtores são métodos utilizados para instanciar objetos passando valores iniciais a ele. Destrutores são métodos que destroem um objeto em determinado momento da aplicação.
SOBRECARGA
Quando vimos construtores, pudemos perceber que podem haver vários desde que fossem passados parâmetros diferentes, e isso é a sobrecarga de um método. Em diversas situações nos vemos com a necessidade de atribuir a um método parâmetros diferentes para executar operações específicas em contextos distintos. A sobrecarga de método se aplica a métodos em geral, não sendo limitada apenas aos construtores. A seguir vemos um exemplo de uma classe Area.
Para criar sobrecargas de métodos, devemos sempre preservar o nome em questão. No exemplo o método se chama CalculaArea;
Quando uma sobrecarga é feita, mudamos apenas os parâmetros, podendo acrescentar ou retira-los. No exemplo acima, a sobrecarga que calcula o quadrado possui apenas um parâmetro denominado altura enquanto a sobrecarga que calcula o retângulo possui dois determinados como valorBase e valorAltura. Os parâmetros podem ter diferentes tipos (int, double, etc.)
Como vamos saber de qual sobrecarga de método estamos utilizando ao realizar determinada ação? As sobrecargas devem ser criadas de forma cautelosa e, basta atribuir ao objeto a mesma sequência de parâmetros presentes na sobrecarga criada. Ao calcular a área do quadrado, passaremos apenas um parâmetro que representa a altura, e área do retângulo informaremos a base e a altura.
Conhecendo sobrecargas, conseguimos aplicar o conceito de reuso anteriormente citado, já que com a elas nós só alteramos a assinatura dos métodos e evitamos a geração de código repetida e desnecessária.
ENCAPSULAMENTO
Em certos momentos, nós precisamos proteger atributos de possíveis alterações que possam atingir a integridade do programa. Como antes visto, o encapsulamento é uma forma de privar membros sensíveis aos contatos externos, protegendo códigos sensíveis de manipulações indesejadas. O encapsulamento é dedicado a manter estados consistentes de nossos objetos. No C#, o ele pode ser feito manualmente, especificado a seguir, com properties e autoproperties, assuntos futuros.
Na classe produto, temos três atributos privados. Isso quer dizer que apenas a classe destes atributos podem modificar seus valores. Por este motivo, existem quatro métodos.
Atributos privados não podem ser alterados e por esta razão, foram criados quatro métodos a fim de obter e atribuir valores dos atributos.
Os chamados GetNome e GetPreco são membros que fornecem os valores dos objetos, já que os valores estão privados. Quando um objeto for instanciado, basta chamá-los para que a operação seja realizada.
-
Os chamados SetNome e SetPreco são responsáveis por atribuir novos valores aos atributos.
Com o encapsulamento efetuado, se tornou necessário utilizar métodos para acessar os valores. O encapsulamento manual é utilizado geralmente quando existem condições e verificações que precisam ser atendidas para que o valor possa ser alterado, aumentando o nível de segurança e respeitando a regra de negócio.
Um exemplo disso é se colocássemos uma condição de integridade para validar o SetNome.
Como este método altera o nome do produto, poderíamos inserir uma verificação de quantidade de caracteres. A alteração só poderia ser feita se o novo nome que está sendo atribuído tivesse mais de 5 caracteres ou não fosse nulo, por exemplo.
Você pode ler mais sobre níveis de acessibilidade no C# aqui.
Agora conseguimos realmente entender como os métodos são ferramentas poderosas quando bem utilizadas, capazes de otimizar, definir e proteger nossas aplicações. Com esta perspectiva poderemos prosseguir em outros pilares da orientação a objetos.
Top comments (0)