Até agora, falamos sobre diversas características que as linguagens de programação possuem em comum. Sem dúvidas, a parte das estruturas de repetição While e For, se destacam em alto grau de importância. Você precisa dominar esse tema!
Falamos também sobre as estruturas de controle de fluxo, em específico sobre if, else … if, else e switch, que tem igual importância, porém é mais simples a sua assimilação.
Falamos também que cada uma dessas estruturas possuem seus próprios escopos, que é uma delimitação de uma parte do programa, onde exemplificamos utilizando funções (functions). Pois bem… No artigo de hoje, vamos falar sobre Classes (class), que vai fazer total sentido para você uma vez que uma classe é como se fosse um “super escopo” que contém em sua estrutura, variáveis e funções para representar alguma coisa ou alguma ação.
Anatomia de uma Classe em linguagem de programação
Parece confuso nesse momento, mas você logo logo vai entender kkkkk Vamos fazer uma pequena analogia…. Você já parou para pensar, porque você sabe que um “gato” é um “gato”? Ou mesmo, você já parou para pensar, porque quando você vê um “zebra” você reconhece que é um “zebra”? kkkkk O ser humano, quando vai aprender esses tipos de coisas, ele aprende por observação e comparação. Alguém chega para você e fala isso é uma zebra! Aí ele pensa o seguinte:
- Nossa! Parece um cavalo (se ele já conhecer um cavalo)!
- Tem listras pretas e brancas ( se ele já conhecer as cores)!
- Eu nunca vi um cavalo com esses tipos de listras!
- Então será que uma zebra é um cavalo de pijamas? Não! Você não pensaria isso
O que você faz é observar e comparar para memorizar que uma “zebra” é uma “zebra”, e não um cavalo listrado para poder comparar, você teve que ver umas características que distingue uma “zebra” de um “cavalo”, correto? Essas características, vamos chama-se atributos. Uma vez que você já tem os atributos que identificam que uma “zebra” é uma zebra, você começa a fazer outras análises, como, o que as “zebras” fazem (quais suas ações)?. Vamos chamar essas ações de métodos, por exemplo: Qual método a zebra utiliza para andar? Qual método ela utiliza para comer? Qual método ela utiliza para correr? Você deve estar pensando agora: Walmir? O que “raios” uma “zebra” tem a ver com uma Classe em programação? Tem tudo a ver!!!!! Veja uma “zebra” em programação:
<?php namespace Growthdev\Animal; class Zebra { private string $nome; private bool $temListraNoCorpo; private bool $quantidadeDePatas; public function __construct( string $nome, bool $temListraNoCorpo, bool $quantidadeDePatas ) { $this->nome = $nome; $this->temListraNoCorpo = $temListraNoCorpo; $this->quantidadeDePatas = $quantidadeDePatas; } public function comer(): void { print("Comer grama\n"); } public function correr(): void { print("Trotar\n"); } }
Quando você analisa e separa os atributos e os métodos de alguma coisa, vamos chamar esse, alguma coisa de OBJETO, você está fazendo uma abstração de um objeto, sacou? E o que é uma Classe? É uma representação de uma estrutura definida através de uma abstração de um objeto, entendeu? Uma vez que você criou uma representação de um objeto, com a classe, você vai ter uma espécie de “molde” que você utiliza para “materializar” um objeto. Vou mostrar outro exemplo mais prático para você entender essa questão de “materialização” de objeto… Imagine que você quer fazer uma classe para representar uma “pessoa”.. Quais atributos e métodos você consegue abstrair para representar uma “pessoa”?
Atributos e métodos de uma classe
Uma pessoa pode ter os atributos (características):
- nome
- idade
- peso
- sexo
- altura
Uma pessoa pode ter os seguintes métodos (ação):
- andar
- dormir
- comer
- falar
Com essa abstração, você já consegue representar os atributos que fazem você reconhecer que uma “pessoa” é uma “pessoa” e os métodos definem o que essa pessoa pode fazer. Veja a classe “pessoa”:
<?php namespace Growthdev\Cadastro; class Pessoa { public string $nome; public int $idade; public float $peso; public string $sexo; public float $altura; public function andar(): void { printf("%s está andando", $this->nome); } public function dormir(): void { printf("%s está dormindo", $this->nome); } public function correr(): void { printf("%s está correndo", $this->nome); } public function falar(): void { printf("%s está falando", $this->nome); } }
Você já tem o “molde” de atributos e métodos que te dizem que essa é uma classe que representa uma Pessoa. Porém, para “materializar” uma pessoa, você precisa fazer o uso desses atributos e método e criar um objeto com seus respectivos valores e ações. Esse ato de criar o objeto a partir de uma classe, chama-se instânciação. Agora, me responda uma coisa: Dá para imaginar se uma pessoa é alta ou baixa sem ter uma noção de sua altura? Ou dizer se uma pessoa é gorda, ou magra sem informar seu peso? Óbvio que não! Então a classe é apenas a representação do que vai ser o objeto, e o objeto só vai ser “materializado” quando você instancia-lo. Sacou?
Instanciando uma classe para gerar um objeto
Vamos fazer um exemplo, imagine a pessoa Walmir, para você ter uma noção do objeto da Pessoa do Walmir, você precisa criar uma instância de modo que você consiga informar valores para os atributos e também tenha a capacidade de utilizar os métodos para definir se a Pessoa Walmir está, por exemplo, andando ou dormindo. Ou seja, você pega uma classe que representa um objeto, correto? Veja no exemplo a seguir como ficaria essa instância:
<?php namespace Growthdev\Cadastro; class Pessoa { public string $nome; public int $idade; public float $peso; public string $sexo; public float $altura; public function andar(): void { printf("%s está andando\n", $this->nome); } public function dormir(): void { printf("%s está dormindo\n", $this->nome); } public function correr(): void { printf("%s está correndo\n", $this->nome); } public function falar(): void { printf("%s está falando", $this->nome); } } $pessoaWalmir = new Pessoa(); $pessoaWalmir->nome = "Walmir"; $pessoaWalmir->idade = 20; $pessoaWalmir->peso = 80; $pessoaWalmir->sexo = "Masculino"; $pessoaWalmir->altura = 1.80; $pessoaWalmir->andar(); // Walmir está andando $pessoaWalmir->correr(); // Walmir está correndo
Normalmente, em várias linguagens de programação, utiliza-se a palavra reservada “new” para criar uma instância de uma classe e gerar um objeto, mas tem linguagens como Python que não utilizam. Observe que na linguagem de programação PHP, você utiliza “->” para acessar os atributos e métodos de uma classe, em outras linguagens você vai utilizar o sinal de ponto (.), também outras palavras reservadas para definir os métodos.. No caso do PHP utiliza a palavra function para definir um método, já o Python utiliza a palavra def, no Java apenas define seu nome e ai por diante… Existem muitas formas de escrita (sintaxe) kkkkk
Foque no conceito em entender o que é uma classe, suas propriedade, seus métodos e como se instancia uma classe para gerar um objeto. Ok?
Veja em outras linguagens como fica a sintaxe para criação de uma classe “Pessoa”(vou reduzir suas características e métodos para agilizar kkkkk):
Observe! São formas distintas de representar a mesma coisa. Foque no conceito! Foque no conceito! Observe que existem outras palavras reservadas dentro da classe, como as palavras: private, public, void, self, etc… Esse tema sobre classes e objetos, pertence ao estudo de Programação Orientada a Objetos. Quando chegarmos na parte prática, dou mais detalhes sobre esse tema que é tão vasto. Para o momento, no próximo artigo vou falar sobre essa “salada de palavras reservadas” kkkkk Até o próximo artigo!
Confiança Sempre!!!
Seja o primeiro a comentar