Introdução à Programação Orientada a Objetos (POO) em C# ⚙️ TRILHA C Sharp Etapa 07

    Seja muito bem-vindo à  Academy Code Christ!




🌍 Academy Code Christ está disponível em vários idiomas.
Fique à vontade para usar o tradutor na Barra lateral (Sidebar) e aprender no seu idioma.


⚙️ TRILHA C Sharp Etapa 07

Programação Orientada a Objetos (POO) 



📚 Continue sua jornada de aprendizado


A Academy Code Christ oferece trilhas de aprendizado em diferentes tecnologias. Explore os cursos, acompanhe as aulas e avance em sua jornada de conhecimento acessando os menus correspondentes:



💻 Pratique o que você aprende


🎯 O que você vai aprender nesta aula?

A Programação Orientada a Objetos é um paradigma — ou seja, um modo de pensar e organizar código.

 Em vez de focar apenas nas ações (funções), ela foca em entidades do mundo real, chamadas objetos.

Esses objetos têm características e comportamentos, e cooperam entre si para formar sistemas completos.


O Que é POO e Por Que Usá-la?


A POO foi criada para resolver um problema que cresceu junto com o tamanho dos programas:
 ➡️ o caos de sistemas grandes, cheios de funções soltas e difíceis de manter.

A solução foi organizar o código da mesma forma que o mundo real funciona.

Por exemplo, pense numa escola:

●     Temos alunos, professores, turmas e disciplinas.

●     Cada elemento tem atributos (dados) e ações (funções).

Na POO, transformamos essas entidades em classes e objetos.


O Que São Classes e Objetos


●     Classe é o molde ou modelo que descreve as características e comportamentos de algo.

●     Objeto é uma instância da classe, ou seja, uma cópia real daquele molde em uso.

📘 Exemplo:

class Aluno

{

    // Atributos (características)

    public string Nome;

    public int Idade;

 

    // Métodos (ações)

    public void Estudar()

    {

        Console.WriteLine($"{Nome} está estudando!");

    }

}

 

E para criar um objeto da classe:

class Program

{

    static void Main()

    {

        Aluno aluno1 = new Aluno(); // Criação do objeto

        aluno1.Nome = "Julia";

        aluno1.Idade = 17;

 

        aluno1.Estudar(); // Chamando o método

    }

}

 

🧠 O objeto aluno1 tem agora um “estado” (Nome = Julia, Idade = 17) e um comportamento (método Estudar()).


Atributos e Métodos


●     Atributos: variáveis internas da classe (guarda informações).

●     Métodos: funções dentro da classe (executam ações).

Por exemplo:

class Carro

{

    public string Modelo;

    public int Ano;

    public double Velocidade;

 

    public void Acelerar()

    {

        Velocidade += 10;

        Console.WriteLine($"{Modelo} acelerou para {Velocidade} km/h");

    }

 

    public void Frear()

    {

        Velocidade -= 10;

        if (Velocidade < 0) Velocidade = 0;

        Console.WriteLine($"{Modelo} reduziu para {Velocidade} km/h");

    }

}

 


🧩 Usando a classe:

Carro meuCarro = new Carro();

meuCarro.Modelo = "Mustang";

meuCarro.Ano = 2022;

meuCarro.Velocidade = 0;

 

meuCarro.Acelerar();

meuCarro.Frear();

 

🎯 Cada objeto tem seu próprio estado, independente dos outros.


Construtores


Construtores são métodos especiais que definem como o objeto será criado.

class Pessoa

{

    public string Nome;

    public int Idade;

 

    // Construtor

    public Pessoa(string nome, int idade)

    {

        Nome = nome;

        Idade = idade;

    }

 

    public void Apresentar()

    {

        Console.WriteLine($"Olá, meu nome é {Nome} e tenho {Idade} anos.");

    }

}

 

Usando:

Pessoa p1 = new Pessoa("Carla", 25);

p1.Apresentar();

 

💡 O construtor é chamado automaticamente quando o objeto é criado com new Pessoa(...).


Encapsulamento


Encapsulamento é o princípio que protege os dados internos de uma classe, permitindo acesso apenas controlado.

Em vez de expor as variáveis, usamos propriedades (getters e setters).

class ContaBancaria

{

    private double saldo;

 

    public void Depositar(double valor)

    {

        saldo += valor;

    }

 

    public void Sacar(double valor)

    {

        if (valor <= saldo)

            saldo -= valor;

        else

            Console.WriteLine("Saldo insuficiente!");

    }

 

    public double VerSaldo()

    {

        return saldo;

    }

}

 

Uso:

ContaBancaria conta = new ContaBancaria();

conta.Depositar(500);

conta.Sacar(100);

Console.WriteLine("Saldo atual: R$" + conta.VerSaldo());

 

📘 Variável saldo é privada, só pode ser manipulada por métodos da própria classe.


Propriedades Automáticas


Em vez de criar get e set manuais, o C# permite fazer isso automaticamente.

class Produto

{

    public string Nome { get; set; }

    public double Preco { get; private set; }

 

    public Produto(string nome, double preco)

    {

        Nome = nome;

        Preco = preco;

    }

 

    public void AplicarDesconto(double porcentagem)

    {

        Preco -= Preco * porcentagem / 100;

    }

}

 

Uso:

Produto p = new Produto("Notebook", 3000);

p.AplicarDesconto(10);

Console.WriteLine($"Preço com desconto: R${p.Preco}");

 

🔐 O modificador private set impede que Preco seja alterado fora da classe.


Herança


Herança permite que uma classe herde características e comportamentos de outra.
 É como dizer: “um Aluno é uma Pessoa, mas com mais detalhes.”

class Pessoa

{

    public string Nome { get; set; }

    public int Idade { get; set; }

 

    public void Apresentar()

    {

        Console.WriteLine($"Olá! Sou {Nome} e tenho {Idade} anos.");

    }

}

 

class Aluno : Pessoa

{

    public string Curso { get; set; }

 

    public void Estudar()

    {

        Console.WriteLine($"{Nome} está estudando {Curso}.");

    }

}

 

Uso:

Aluno a1 = new Aluno();

a1.Nome = "Pedro";

a1.Idade = 20;

a1.Curso = "Programação";

 

a1.Apresentar();

a1.Estudar();

 

🎯 A classe Aluno herda tudo o que Pessoa tem, e ainda adiciona novos atributos e comportamentos.


Polimorfismo


Polimorfismo significa “muitas formas”.
 Em POO, ele permite que métodos com o mesmo nome se comportem de maneiras diferentes em classes derivadas.

class Animal

{

    public virtual void Falar()

    {

        Console.WriteLine("O animal faz um som.");

    }

}

 

class Cachorro : Animal

{

    public override void Falar()

    {

        Console.WriteLine("O cachorro late: Au Au!");

    }

}

 

class Gato : Animal

{

    public override void Falar()

    {

        Console.WriteLine("O gato mia: Miau!");

    }

}

 

Uso:

Animal a1 = new Cachorro();

Animal a2 = new Gato();

 

a1.Falar();

a2.Falar();

 

🔍 Cada objeto executa o método Falar() de forma adequada à sua classe.


Abstração


A abstração é o ato de esconder detalhes complexos e mostrar apenas o essencial.
 É o que fazemos quando usamos o celular — apertamos um botão, mas não precisamos saber como o circuito interno funciona.

Em C#, usamos classes abstratas para definir modelos genéricos que servem de base para outras classes.

abstract class Funcionario

{

    public string Nome { get; set; }

    public abstract double CalcularSalario(); // método abstrato

}

 

class Gerente : Funcionario

{

    public override double CalcularSalario()

    {

        return 8000;

    }

}

 

class Vendedor : Funcionario

{

    public override double CalcularSalario()

    {

        return 4000 + 500; // comissão

    }

}

 

Uso:

Funcionario f1 = new Gerente { Nome = "Marcos" };

Funcionario f2 = new Vendedor { Nome = "Paula" };

 

Console.WriteLine($"{f1.Nome} ganha R${f1.CalcularSalario()}");

Console.WriteLine($"{f2.Nome} ganha R${f2.CalcularSalario()}");

 


Interfaces


Uma interface define o que uma classe deve fazer, mas não como.
 Ela é como um contrato.

interface INotificavel

{

    void EnviarNotificacao(string mensagem);

}

 

class Email : INotificavel

{

    public void EnviarNotificacao(string mensagem)

    {

        Console.WriteLine("Enviando e-mail: " + mensagem);

    }

}

 

class Sms : INotificavel

{

    public void EnviarNotificacao(string mensagem)

    {

        Console.WriteLine("Enviando SMS: " + mensagem);

    }

}

 

Uso:

INotificavel notificacao = new Email();

notificacao.EnviarNotificacao("Sua compra foi aprovada!");

 

🔗 Interfaces são a base da flexibilidade e manutenção em sistemas profissionais.


Conclusão: Parabéns 🎉 — você acaba de entrar no coração da programação moderna.

Agora você domina os conceitos de:
 ✅ Classes e objetos
 ✅ Encapsulamento (proteger dados)
 ✅ Herança (reutilizar comportamentos)
 ✅ Polimorfismo (adaptar comportamentos)
 ✅ Abstração (ocultar complexidade)
 ✅ Interfaces (contratos de código)

Esses pilares da POO transformam o modo como você projeta programas — tornando-os modulares, reutilizáveis e fáceis de manter.



Este conteúdo faz parte do Academy Code Christ. 

Um projeto criado para ajudar jovens e iniciantes a aprender programação do zero, de forma simples e gratuita.

Nossa missão é compartilhar conhecimento e incentivar mais pessoas a descobrir que também podem aprender tecnologia, criar projetos e desenvolver novas habilidades.
Todo o conteúdo é disponibilizado gratuitamente, de forma clara, prática e 
sem enrolação. 

Você pode apoiar o projeto se quiser 
com um café. 



Post a Comment

Postagem Anterior Próxima Postagem