Você está na página 1de 23

Programação Orientada a Objetos

Caio Noronha

Oct 4, 2018·6 min


readhttps://medium.com/@caio.cnoronh
a/programa%C3%A7%C3%A3o-
orienta%C3%A7%C3%A3o-a-objetos-
poo-759d96dda910cO que é
Programação Orientada a Objetos?
Antes de começarmos, você pode perguntar "Por que outro paradigma de programação
se já temos Programação Estruturada?"

Em Programação Estruturada, você cria um programa extenso com algumas partições


(com funções), mas o código permanece muito grande e, no futuro, pode ser mais difícil
de entender.

Na Programação Orientada a Objetos, você tenta aproximar a vida real da programação,


tornando mais intuitivo e fácil de entender, além de poder repartir ainda mais o código,
dividindo-o cada vez melhor.

Algumas linguagens em POO:

 Swift
 Java
 Python
 php

O que é um Objeto?
“Coisa material ou abstrata que pode ser percebida pelos sentidos e descrita através de
suas características, comportamentos e estados atuais.”
Ou seja, são objetos materiais (Carro, Celular, Relógio) ou imateriais (Data, Estudante,
Conta bancária) que podem ser transmitidos para a programação.
O que compõe um objeto?
Todo objeto pode conter características e ações que o definem, e isso também é passado
para a programação. Entre eles estão:

 Atributos: Características do objeto, como nome, idade, endereço.


 Métodos: Ações de um objeto, como caminhar, escrever, nadar.

Na programação, quando definimos valores para atributos, os chamamos de “Estado”.


Isso pode definir a diferença entre os outros objetos.
Ex: dois carros, têm o mesmo atributo chamado “cor”, mas cada vez que uma cor
diferente, use o mesmo atributo, mas com valores diferentes.

Mas devemos criar um “objeto” para cada objeto que vamos criar? Devemos criar um
objeto para cada carro, criando os mesmos atributos e métodos para cada um,
reescrevendo? Não! Porque nós temos a classe!

O que é uma Classe?


Classes são objetos do mundo real, de maneira “abstrata”, permitindo que um objeto o
use com seus atributos e métodos.
Como usar uma classe em um objeto?
Pense na classe como um molde de bolo. Você pode fazer vários bolos com esse molde.
Objetos fazem exatamente a mesma coisa, são “instâncias” de classes, e a Classe é o
modelo para a criação de objetos.

Ex: Uma fábrica de automóveis está criando um novo modelo de carro, e todos os carros
criados podem ser diferentes em cores, rodas, ar-condicionado etc. Mas todos seguem
um molde do novo modelo para seguir o mesmo padrão.
Os quatro pilares
Na programação orientada a objetos, temos quatro pilares muito importantes a serem
seguidos em seus projetos, facilitando a manutenção, mais protegido e com um código
mais otimizado. Os quatro pilares são:

 Abstração
 Encapsulamento
 Herança
 Polimorfismo

Abstração
Algumas pessoas não o consideram um dos pilares, mas talvez seja o mais importante.
Com isso, você a usa para abstrair as coisas relevantes do mundo real para o código e,
se você fizer isso errado, poderá adicionar muita informação ou ficar confuso. É por isso
que é extremamente importante, mas lembre-se sempre: se não fizer sentido no mundo
real, não fará sentido no código.
Ex: você criará um sistema de banco digital. Do que você vai precisar? Nome? Sim!
CPF? Sim! Cor dos olhos? Não! É por isso que é tão importante abstrair e identificar
apenas o que é NECESSÁRIO para o programa.

Encapsulamento
Encapsulamento é o pilar que protege o código, criando pontes no projeto, dizendo o
que pode ser acessado por usuários, objetos diferentes e outros. Imagine criar um carro,
sem nenhuma proteção para o motor, 100% exposto ao usuário para modificar tudo o
que ele deseja, mesmo que ele não entenda o assunto. Seria perigoso e um problema,
certo? Não precisamos entender como o carro funciona, só precisamos saber como
dirigir o carro. A programação é a mesma coisa. Há partes muito importantes que
precisam ser protegidas de outras pessoas, especialmente se você estiver construindo
um projeto com uma equipe.
 O encapsulamento não é obrigatório, mas é uma boa prática de programação e produz
Classes mais eficientes.

Benefícios:
→ Tornar as alterações invisíveis.
→ Facilitar a reutilização de código.
→ Reduza os efeitos colaterais.

Tipos de encapsulamento

 Público
 Privado
 Protegido

Público: Todo mundo tem acesso a esse atributo, função ou classe.


Privado: Somente a própria classe tem acesso ao atributo, função ou subclasse.
Protegido: Somente a própria classe ou classes herdadas (subclasses) dela que podem
ser acessadas.

Como obtenho acesso a atributos privados?

Com o encapsulamento — na maioria das vezes — deixamos os atributos de uma classe


totalmente privados. Mas como vamos obter acesso à alteração e obter esses atributos
em outras partes do código? Com getters e setters.

Getters e Setters são funções que tornam possível OBTER e ALTERAR o atributo.

Métodos Getter, Setter e Construtor:

Getter: Método “GET”, significa “pegar”, ou seja, obter o valor da variável


Ex: “getName”, pegar o nome.

Setter: Método “SET”, altera a variável para novos valores.


Ex: “setNome”, muda o nome de Pedro para João.

Construtor: Método de construção de atributos necessários quando o Objeto é


instanciado.
Ex: A conta bancária sempre começa com o nome do proprietário.

Herança
Imagine que uma fábrica de automóveis queira expandir as vendas para novos estilos de
veículos, como motocicletas e aviões. Em sua linha de produção, eles passam por várias
etapas diferentes, mas depois percebem que, apesar de terem vários produtos e etapas
diferentes para cada um, eles repetiram etapas entre os produtos. Todo mundo tem um
motor, um número de assentos ou número de rodas, certo? Isso é herança! Quando
todas as classes têm uma característica comum, herdadas de uma superclasse.
Ex: As classes “Carro”, “Avião” e “Moto” são herdadas da classe veículo, com os
mesmos atributos (rodas, motor, assentos) e estados diferentes.
Benefícios :
→ Faça encapsulamento protegido.
→ Facilitar a reutilização de código.
→ Reduza os efeitos colaterais.

Conceitos

 Abstrato
 Final
 Extender
Abstrato: Uma classe ou método que não pode ser instanciado, apenas herdado.
Final: Uma classe ou método que só pode ser instanciado, não herdado.
Estender: Quando uma classe herda / se estende de outra classe, utilizando os métodos
e atributos.

Polimorfismo
Não podemos pensar em polimorfismo sem herança. Imagine que agora, existem vários
animais, diferentes de várias maneiras, mas similares em algumas. Entre as
semelhanças, todo mundo emite um som, mas quase todo mundo emite sons diferentes.
Isso é polimorfismo! Quando eles herdam de uma classe, mas a implementam de
maneiras diferentes para o mesmo método.
Benefícios :
→ Maior clareza.
→ Facilitar a reutilização de código.
→ Manutenção de código.

Tipos de Polimorfismo

 Sobrepor
 Sobrecarga
Sobrepor: Substituir funções em subclasses e com diferentes implementações.
Sobrecarga: Funções com o mesmo nome na mesma classe, mas com assinaturas
diferentes.

Muito obrigado pela atenção, espero que tenha gostado da leitura! �

Written by

Caio Noronha

— iOS� and Game� Developer. —


Sharing some of the knowledge I’m learning.

More from Caio Noronha

— iOS� and Game� Developer. —


Sharing some of the knowledge I’m learning.

Aug 1, 2018

Como passar entre páginas no Xcode.


 Como usamos ferramentas exclusivas de IOS para criamos Apps, acabamos
programando na linguagem computacional “Swift”.
 Nele, resumidamente, existem 3 tópicos para resumir os processos/etapas de um
Aplicativo, como demonstrado a seguir:
 View( A tela do usuário)
 Controller
 Model

Exemplo: Em seu celular, você acessa um app de Fotos para acessar suas fotos,
apertando apenas um Botão, na qual tudo isso é exibido na View. Ao apertar o botão,
passamos para o “user action”, ou seja, iniciando o comando para o Controller
consultar a foto. Após a Controller receber o comando, ela envia um “update” para a
Model, ou seja, requere a foto para ela. …