Aplicando a Orientação a Objetos: Classes, atributos e métodos [1/10]🧶
Tags: beginners, programming, tutorial, csharp
Published: 2023-05-16 19:47:48

_A programação Orientada a Objetos é um paradigma geralmente utilizado em linguagens compiladas ou interpretadas. Comumente é aplicada em linguagens como Java, JavaScript, Python, C#, etc. Os exemplos práticos aplicados aqui serão em C#_

## Classes

Que o paradigma é orientado a objetos e que quando programamos tentamos trazer objetos do mundo real para os códigos [nós já sabemos](https://dev.to/majuliah/orientacao-a-objetos-amigavel12-16m5). Mas antes de haver qualquer objeto que representa aspectos do nosso cotidiano, tem de haver classes e elas são o pilar número um deste paradigma.


Ao analisar um átomo, sabemos que ele é a unidade básica de construção da matéria e nele encontramos núcleo, prótons, neutros e elétrons. Tudo é formado por átomos.


![Um átomo e um relógio da apple](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/44k7hhoasn77fbnqodfs.jpg)


Um relógio, formado por átomos, possui componentes que o formam como um todo, tal como a pulseira, a tela, os componentes internos como fios, bateria etc. Todas esses componentes o fazem efetuar ações que só é possível pelo conjunto de peças que o forma. Ele é capaz de mostrar hora, previsão do tempo, quantidade de quilômetros percorrido e batimentos cardíacos do usuário e por aí vai. Mas por que isso?

Representando o conceito de abstração [antes visto](https://dev.to/majuliah/orientacao-a-objetos-amigavel12-16m5), a classe pode ser descrita como um molde que serve para a criação de objetos. Ela é a unidade primária quando vamos codificar e é a partir dela que construímos os nossos sistemas. Ao compararmos classes com átomos, podemos dizer que são a base para a formação de objetos. Aproximando os conceitos, se assimilarmos as classes com o relógio, as peças seriam os atributos e as funcionalidades seriam os métodos. Classes devem ser coesas tanto ao serem nomeadas quanto a ter atributos que a representem fielmente, além de executar ações que aquele objeto se propõe a fazer. Não faria sentido um relógio conter ovos e nem fazer o seu café da manhã, porque basicamente ele se propõe a te mostrar as horas. 


![Exemplo de atributos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nmyu1fj5rr5i89323hgn.png)


## Atributos


Depois de identificar uma classe e a nomear, precisamos montá-las com seus detalhes. Ela precisa de informações e essas informações precisam ser manipuladas. Os atributos são as características, os componentes, são os atributos da classe. Eles definem seus dados e as caracterizam, e com eles nós cumprimos a proposta de montá-las. Um famoso exemplo é a classe Pessoa. Uma pessoa possui atributos diversos como olhos, nariz, boca, pernas, braços, etc. Mais uma vez trazemos o conceito de coesão, pois os atributos de uma classe devem ser definidos de acordo com a proposta dela, uma classe pessoa deve ter os atributos que uma pessoa contém.

Quando criamos classes, queremos armazenar informações. Os atributos são características da classe que armazenam as informações que precisamos. Essas informações possuem valores, representados por tipos. Ainda na classe Pessoa, se representarmos atributo como QuantidadeDeOlhos ou QuantidadeDePernas, veremos que são do tipo inteiro porque uma pessoa pode ter 0, 1 ou 2 pernas/olhos: 


![Exemplo de uma classe com atributos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5v89t2yf5zwbh1ei6nhj.png)


## Métodos

Se atributos são substantivos, os métodos são verbos porque eles executam ações ao manipular os atributos das classes e são responsáveis por processar essas informações. Eles possuem uma nomenclatura, retornam ou não um tipo de valor, recebem parâmetros e devem, assim como as classes e atributos, ser coesos. Um exemplo de método em uma classe pessoa seria CalcularIdade, como a seguir:


![Exemplo de um método](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylx5dpgu8jjv3bdx7zbv.png)

- O método acima retorna um tipo inteiro, isso é especificado antes do nome CalcularIdade.

- Ele recebe um parâmetro, que está entre parênteses, também do tipo inteiro que representa o ano em que a pessoa nasceu. 

- No corpo do método temos um cálculo básico de idade, onde subtraindo do ano atual o ano de nascimento, temos a idade da pessoa.

- Por fim ele retorna a idade da pessoa, o return idade; ,que é uma variável inteira (do tipo int) como especificado no início do método.

O retorno de um método pode ser qualquer um dos tipos primitivos (string, double, int, float, etc) ou nenhum (void). Métodos de retorno void não retornam valor algum e geralmente são utilizados para atualizar os valores de atributos. 


![Exemplo de uma classe com atributos e métodos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cmziypwxr3ms4x1470r7.png)



Com isso, pudemos conhecer as unidades básicas da orientação a objetos. As classes são os moldes, conceitos da abstração que representam os objetos. Nelas temos atributos que armazenam valores de suas características e os métodos que são as operações dos atributos que retornam ou não valores. No próximo texto vamos ver melhor sobre métodos.