Seja muito bem-vindo à Academy Code Christ!

⚙️ TRILHA C Sharp Etapa 07
Programação Orientada a Objetos (POO)
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.
%20-%20Copia.png)
.png)
.png)
.png)
Postar um comentário