Programação Orientada a Objetos
Conceitos
A Programação Orientada a Objetos (POO) é um paradigma de programação que organiza o código em torno de objetos que possuem atributos (dados) e métodos (comportamentos).
Em Kotlin, assim como em outras linguagens modernas, utilizamos classes, objetos, construtores, encapsulamento, herança e polimorfismo para implementar POO.
Conceitos a serem estruturados a seguir:
Classe: modelo para objetos
Objeto: instância de uma classe
Construtor: inicializa objetos
Encapsulamento: protege e controla o acesso a dados
Herança: reaproveitamento de código entre classes
Polimorfismo: comportamentos diferentes para o mesmo método
1. Classes
Uma classe é como uma planta arquitetônica de uma casa: ela descreve como algo deve ser, mas não é o objeto em si.
Dentro de uma classe, podemos ter:
Propriedades (atributos) → variáveis que guardam informações do objeto.
Métodos (funções) → ações que o objeto pode executar.
Aqui definimos uma classe Pessoa com duas propriedades (nome e idade) e um método (apresentar).
|
2.Objetos
Um objeto é uma instância de uma classe.
Cada objeto tem valores próprios para os atributos definidos pela classe. Enquanto a classe é o molde, o objeto é o produto final construído a partir desse molde.
|
Neste exemplo:
-
pessoa1 e pessoa2 são objetos diferentes criados a partir da mesma classe Pessoa.
-
Cada um tem valores próprios para nome e idade.
-
O método apresentar() usa os dados de cada objeto individualmente.
3.Construtores
O construtor é usado para inicializar objetos de forma prática.
Em Kotlin, podemos usar o primary constructor diretamente na definição da classe.
|
-
val nome: String → propriedade somente leitura (não pode ser alterada depois).
-
var idade: Int → propriedade mutável (pode ser alterada depois).
-
Quando fazemos Pessoa("Ana", 20), já passamos os valores direto para o construtor.
4. Encapsulamento
O encapsulamento protege os dados internos de uma classe, controlando o acesso com modificadores de visibilidade:
(padrão) → acessível de qualquer lugar
→ acessível apenas dentro da classe
→ acessível na classe e subclasses
→ acessível apenas dentro do mesmo módulo
|
-
saldo é private, ou seja, ninguém fora da classe pode acessá-lo diretamente.
-
Só é possível interagir com o saldo através dos métodos depositar, sacar e consultarSaldo.
-
Isso garante segurança e controle sobre como os dados são manipulados.
5. Herança
A herança permite que uma classe (subclasse) herde características de outra (superclasse).
Em Kotlin, usamos para permitir herança.
|
-
open class → em Kotlin, por padrão, classes não podem ser herdadas. Por isso usamos open.
-
override → usado para sobrescrever um método da classe pai.
-
Cachorro e Gato herdam nome e emitirSom() de Animal, mas cada um implementa o som de forma diferente
6. Polimorfismo
O polimorfismo permite que objetos de classes diferentes possam ser tratados de forma uniforme através da herança.
Cada classe pode ter sua própria implementação do mesmo método.
|
-
A lista animais contém objetos de diferentes subclasses (Cachorro e Gato).
-
Mesmo chamando animal.emitirSom() de forma genérica, o método correto é escolhido em tempo de execução.
Isso é polimorfismo → um único comando (emitirSom()) gera comportamentos diferentes dependendo do objeto.
Vídeos sobre POO:
https://youtu.be/QT-HK_r3MTo?si=GGdTqUrLGU-skjWA
https://youtu.be/z_0jLLtB83U?si=3obxbDpvBuYDhD4I
https://youtu.be/cN7FuVa2dAA?si=_v1YiQO27i8abudH
https://youtu.be/Scy4mupiado?si=GwzMdd7CL1yfgQdt
https://youtu.be/KzO6tMM5QI0?si=ZDVPmWh1smO-dXuk
https://youtu.be/5-vqDPFolTA?si=JZybM1P-UcSONbj1
Referências:
FARIAS SILVA, Víctor de; ZUCHI, Jederson Donizete. Análise dos fundamentos do paradigma orientado a objetos na linguagem Kotlin. Revista Interface Tecnológica, Taquaritinga, SP, v. 20, n. 2, p. 170–181, 2023. DOI:
10.31510/infa.v20i2.1796. Disponível em: https://revista.fatectq.edu.br/interfacetecnologica/article/view/1796.
SENHOR DEV. Orientação a objetos em Kotlin: conceitos e aplicações práticas. Senhor DEV, 13 mar. 2025. Disponível em: https://senhordev.com/2025/03/13/orientacao-a-objetos-em-kotlin-conceitos-e-aplicacoes-praticas
ROCKETSEAT. Dominando a orientação a objetos em Kotlin: abstração, encapsulamento, herança e polimorfismo. DIO (via Rocketseat), 27 ago. 2023. Disponível em: https://www.dio.me/en/articles/dominando-a-orientacao-a-objetos-em-kotlin-abstracao-encapsulamento-heranca-e-polimorfismo.
