Neste post, vamos falar sobre Programação Orientada a Objetos (POO). A POO é um paradigma de programação que organiza o código em objetos, que são entidades que combinam dados e comportamento. Ela se baseia em quatro pilares principais: abstração, herança, polimorfismo e encapsulamento. Nesse post, abordaremos dois desses pilares: abstração e herança. Os outros dois serão vistos na próxima postagem.
Abstração
A abstração é um conceito fundamental na POO, onde se imitam aspectos do mundo real em um sistema computacional. Por exemplo, se quisermos desenvolver um sistema que registre alunos, podemos criar um objeto chamado “Aluno”, que terá propriedades como nome, idade, RG e endereço. Assim, abstraímos características do mundo real para dentro do software.
Vamos ver isso, na prática com um exemplo em C#. Para isso, abrimos o Visual Studio e criamos um projeto do tipo aplicativo de console (console app), nomeando-o de “POO01”. Nosso objetivo será criar uma abstração relacionada ao funcionamento de um banco, mais especificamente uma “Conta”. A conta terá atributos como número da conta, saldo e proprietário.
Em C#, objetos são implementados por classes. Então, criaremos uma classe chamada Conta
. Para isso, vá ao gerenciador de soluções (solution explorer), clique com o botão direito sobre o projeto e selecione “Adicionar > Class (Add > Class)”. Nomeie a classe para o nome”Conta”.
Estrutura da Classe
Dentro da classe, temos:
- Os pacotes importados no topo, usados pelo C#.
- O namespace do projeto, que no nosso caso é “POO01”.
- A estrutura da classe em si, que definiremos a seguir.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace POO01 { internal class Conta { } }
Vamos modificar a classe para torná-la pública, permitindo o acesso a ela em todo o projeto. Em seguida, definimos as propriedades da classe, que representam os atributos da conta (número da conta, proprietário e saldo). Essas propriedades podem ser criadas com o comando prop
seguido de Tab
duas vezes ou você pode dicar as instrução manualmente.
Agora nossa classe Conta
está dessa forma:
namespace POO01 { public class Conta { public string NumeroConta { get; set; } public string Proprietario { get; set; } public decimal Saldo { get; set; } } }
Agora, vamos criar um construtor, que é o método responsável por instanciar o objeto, ou seja, criar uma nova conta. No construtor, definimos regras, como a obrigatoriedade de passar o nome do proprietário e o saldo inicial:
namespace POO01 { public class Conta { public string NumeroConta { get; set; } public string Proprietario { get; set; } public decimal Saldo { get; set; } public Conta(string proprietario, decimal saldo) { Proprietario = proprietario; Saldo = saldo; } } }
Isso garante que, ao criar uma nova conta, essas informações serão fornecidas. Agora que temos a classe pronta, vamos instanciá-la e ver como ela funciona na prática.
Instanciando a Classe
Dentro do arquivo Program.cs
, vamos criar uma instância da classe Conta
:
using POO01; class Program { static void Main(string[] args) { var conta = new Conta("Filipe Brito", 100m); } }
Aqui, criamos uma nova conta, passando o nome do proprietário e o saldo inicial. Em seguida, podemos imprimir essas informações no console:
using POO01; class Program { static void Main(string[] args) { var conta = new Conta("Filipe Brito", 100m); Console.WriteLine($"O saldo de {conta.Proprietario} é de {conta.Saldo}."); } }
Ao executar o código, veremos a saída: “O saldo de Filipe Brito é de 100”.
Herança
A herança é o conceito que permite uma classe herdar atributos e métodos de outra classe. Para exemplificar, vamos criar uma nova classe chamada Animal
, que terá propriedades comuns a todos os animais, como Nome
e Idade
. Depois, criaremos uma classe Cachorro
, que herdará de Animal
.
Começamos criando a classe Animal
:
public class Animal { public string Nome { get; set; } public int Idade { get; set; } public Animal(string nome, int idade) { Nome = nome; Idade = idade; } }
Agora, criamos a classe Cachorro
, que herda de Animal
:
public class Cachorro : Animal { public string Apelido { get; set; } public Cachorro(string nome, int idade, string apelido) : base(nome, idade) { Apelido = apelido; } }
Note que a classe Cachorro
herda os atributos Nome
e Idade
da classe Animal
, e também define um atributo adicional Apelido
. No construtor de Cachorro
, chamamos o construtor da classe base (Animal
) com base(nome, idade)
.
Instanciando a Classe Cachorro
Agora, dentro do Program.cs
, vamos instanciar a classe Cachorro
:
class Program { static void Main(string[] args) { var cachorro = new Cachorro("Nick", 3, "Nicky"); Console.WriteLine($"Meu cachorro se chama {cachorro.Nome}, tem {cachorro.Idade} anos e o apelido é {cachorro.Apelido}."); } }
Esse código cria um objeto do tipo Cachorro
e imprime suas propriedades no console.
Conclusão
Nesta aula, vimos os conceitos de abstração e herança na Programação Orientada a Objetos com C#. Criamos exemplos práticos de como abstrair objetos do mundo real para um sistema computacional e como utilizar a herança para compartilhar características entre classes. No próximo post, abordaremos polimorfismo e encapsulamento.
Se você quiser acompanhar o tutorial completo, acesse o vídeo e inscreva-se no canal do BraboDev.
“No princípio era a Palavra, e a Palavra estava com Deus, e a Palavra era um deus.”
João 1:1