Introdução
Definições para POO
Section titled “Definições para POO”Pessoal para iniciarmos nossos estudos sobre a utilização do paradigma de Orientação Objeto, precisamos definir alguns conceitos primeiro.
1. Por que a Programação Orientada a Objetos foi criada
Section titled “1. Por que a Programação Orientada a Objetos foi criada”A POO foi criada para resolver os problemas de complexidade, manutenção e reuso de código que surgiam nos sistemas desenvolvidos com paradigmas anteriores, especialmente o paradigma procedural (baseado em funções e procedimentos).
As principais motivações foram:
- Modelar o mundo real de forma mais natural: Permitir que o software representasse entidades e comportamentos do mundo real por meio de objetos com atributos e métodos, aproximando o raciocínio humano da lógica computacional.
- Reutilizar código com segurança: Através da herança e do polimorfismo, era possível reaproveitar funcionalidades e estender sistemas sem reescrever tudo do zero.
- Facilitar manutenção e evolução: O encapsulamento permitiu isolar partes do código, reduzindo o impacto de mudanças e tornando os sistemas mais robustos e modulares.
- Gerenciar sistemas cada vez maiores: À medida que os projetos de software cresceram em tamanho e complexidade (principalmente em engenharia, simulações e sistemas administrativos), a POO trouxe organização e modularidade, facilitando o trabalho em equipe e o versionamento.
Legal, temos agora uma motivação clara que: este paradigma foi criado para lidar com a complexidade dos sistemas.
Recomendo muito o vídeo a seguir:
2. Algumas definições
Section titled “2. Algumas definições”Legal, agora que definimos que a POO é um paradigma (um conjunto de convenções para escrever sistemas e códigos). Vamos compreender alguns dos elementos que utilizamos. É importante destacar um ponto aqui, essas definições não são vinculadas apenas a uma linguagem, elas são uma forma de representar os componentes dos sistemas.
Os elementos que compõem o sistema são chamados de Classes. As classes são componentes que representam elementos ou partes do sistema. As classes podem ser utilizadas para descrever desde uma pessoa, ou mesmo um sistema de pagamento.
Beleza, mas agora que temos definido que as classes vão definir as partes do sistema, como nós definimos as classes? Essa é uma ótima pergunta! Nossas classes são definidas utilizando Atributos e Métodos. Os atributos definem tudo que a classe CONHECE, são as variáveis locais da classe. Os métodos são os comportamentos que uma classe PODE FAZER, são as funções definidas na classe.
Murilão calma ae. Gostei, mas agora tem 3 coisas ai para gente entender não? Classes, Atributos e Métodos? Isso mesmo?
Denovo, uma pergunta excelente! Vamos tentar definir esses elementos com mais detalhes.
2.1 Classes
Section titled “2.1 Classes”As classes são a base da Programação Orientada a Objetos. Elas funcionam como modelos ou moldes que descrevem como determinado elemento do sistema deve se comportar e quais características ele deve possuir. Ela é como a planta de uma casa: ela não é a casa em si, mas define tudo o que a casa terá (quartos, portas, janelas). No código, isso significa que a classe define atributos (características) e métodos (ações).
Eita calma ai, aqui apareceram algumas coisas que falamos só em definição: os atributos.
2.2 Atributos
Section titled “2.2 Atributos”Os atributos são as características ou propriedades de uma classe. Eles representam o que a classe conhece — ou seja, quais informações ela guarda. Pense assim: se a classe for um “molde”, os atributos são os dados que personalizam cada instância (objeto) criada a partir dela.
Exemplo:
Neste caso:
quantidadeBancos,capacidadeTanqueCombustivel,fabricanteenomesão atributos do carro.- Cada carro que criamos (cada objeto) terá valores próprios para esses atributos.
E quanto os comportamentos?
2.3 Métodos
Section titled “2.3 Métodos”Os métodos são as ações que um objeto pode realizar — os comportamentos da classe. Eles definem o que o objeto pode fazer. Métodos são como funções associadas a um tipo específico de dado (a classe). Por exemplo, se temos uma classe Carro, ela pode ter métodos como acelerar(), frear() ou ligarMotor().
2.4 Objetos (Eita, esse é novo!)
Section titled “2.4 Objetos (Eita, esse é novo!)”Os objetos são as instâncias concretas das classes. Se a classe é o molde, o objeto é o produto final moldado. Enquanto a classe define o “tipo” e o “comportamento”, o objeto é uma representação real em execução, com valores próprios nos seus atributos.
Exemplo:
Neste caso:
carro1é um objeto (ou instância) da classeCarro;- Ele tem valores próprios para
modeloevelocidade; - Pode executar métodos definidos na classe, como
acelerar().
💡 Resumindo:
| Conceito | O que representa | Exemplo |
|---|---|---|
| Classe | Molde ou modelo | Carro |
| Atributo | Características | cor, velocidade |
| Método | Ações | acelerar(), frear() |
| Objeto | Instância concreta | carro1 criado a partir de Carro |
3. Sugestão de Exercícios
Section titled “3. Sugestão de Exercícios”Aqui vou deixar alguns exercícios para fixar alguns dos conceitos que colocamos aqui.
3.1 Criando sua primeira classe
Section titled “3.1 Criando sua primeira classe”Crie uma classe chamada Pessoa que possua os seguintes atributos:
- nome (String)
- idade (int)
- altura (float)
E um método chamado apresentar() que imprima uma mensagem como:
“Olá, meu nome é João, tenho 25 anos e 1.75m de altura.”
Depois, crie um objeto da classe e chame o método apresentar().
3.2 Adicionando comportamento
Section titled “3.2 Adicionando comportamento”Crie uma classe ContaBancaria com os atributos:
- titular (String)
- saldo (float)
Implemente os métodos:
- depositar(float valor) — adiciona o valor ao saldo.
- sacar(float valor) — subtrai o valor se houver saldo suficiente.
- mostrarSaldo() — exibe o saldo atual do titular.
Crie um objeto, faça um depósito e um saque e mostre o saldo final.
3.3 Desafio prático
Section titled “3.3 Desafio prático”Implemente um pequeno sistema de gerenciamento de Funcionários. Cada funcionário deve ter:
- nome, cargo, salario
- um método aumentarSalario(percentual)
- um método descricao() que exiba suas informações.
Crie 3 objetos diferentes (por exemplo, gerente, técnico, estagiário) e chame os métodos de aumento e descrição para cada um.