jemluz / java-basic

A starter java project to deal with basic concepts
1 stars 0 forks source link

Programação Orientada a Objetos (Feijão c Arroz) #4

Open jemluz opened 8 months ago

jemluz commented 8 months ago

Como era antes (na programação estruturada)

Na programação estruturada, um programa é composto por três tipos básicos de estruturas:

Essas estruturas são usadas para processar a entrada do programa, alterando os dados até que a saída esperada seja gerada. Até aí, nada que a programação orientada a objetos não faça, também, certo?

A diferença principal é que na programação estruturada, um programa é tipicamente escrito em uma única rotina (ou função) podendo, é claro, ser quebrado em subrotinas.

Mas o fluxo do programa continua o mesmo, de tal forma que, no final, só haja uma grande rotina que execute todo o programa.

Além disso, o acesso às variáveis não possuem muitas restrições na programação estruturada.

Em linguagens fortemente baseadas nesse paradigma, restringir o acesso à uma variável se limita a dizer se ela é visível ou não dentro de uma função (ou módulo, como no uso da palavra-chave static, na linguagem C), mas não se consegue dizer de forma nativa que uma variável pode ser acessada por apenas algumas rotinas do programa.

O contorno para situações como essas envolve práticas de programação danosas ao desenvolvimento do sistema, como o uso excessivo de variáveis globais. Vale lembrar que variáveis globais são usadas tipicamente para manter estados no programa, marcando em qual parte dele a execução se encontra.

Artigo: Programação orientada a objetos e programação estruturada

jemluz commented 8 months ago

Entendendo o básico

POO é um paradigma de programação onde a gente se baseia na ideia de organizar e modelar o nosso software em torno de objetos. Sendo objetos representações de qualquer entidade do mundo real.

Pacotes

Utilizamos pacotes (que no fim das contas nada mais são do que pastas) para organizar nossas entidades em POO

jemluz commented 8 months ago

O paradigma

A programação orientada a objetos surgiu como uma alternativa a essas características da programação estruturada. O intuito da sua criação também foi o de aproximar o manuseio das estruturas de um programa ao manuseio das coisas do mundo real, daí o nome "objeto" como uma algo genérico, que pode representar qualquer coisa tangível.

Esse novo paradigma se baseia principalmente em dois conceitos chave: classes e objetos. Todos os outros conceitos, igualmente importantes, são construídos em cima desses dois.

O que são classes e objetos? (O mundo invisivel e o visível)

Classes são abstrações, modelos que irão definir como algo (uma entidade) deve ser. E objeto é a concretização dessas abstrações.

A classe é o projeto de um carro na ainda na mão do engenheiro (no mundo das ideias). O objeto é o carro na garagem da sua casa (no mundo real).

Todos os carros, mesmo com suas características particulares e distintas: cores, marcas, portes, maquinário, preços... todos obedecem o modelo original: a ideia que deu forma e definiu os critérios mínimos necessários para que um carro, seja de fato considerado um carro.

Exemplo em java

public class Carro {
    Double velocidade;
    String modelo;

    public Carro(String modelo) {
        this.modelo = modelo;
        this.velocidade = 0;
    }

    public void acelerar() {
        /* código do carro para acelerar */
    }

    public void frear() {
        /* código do carro para frear */
    }

    public void acenderFarol() {
        /* código do carro para acender o farol */
    }
}

Exemplo em python

class Carro:
    def __init__(self, modelo):
        self.modelo = modelo;
        self.velocidade = 0

    def acelerar(self):
        # Codigo para acelerar o carro

    def frear(self):
        # Codigo para frear o carro

    def acenderFarol(self):
        # Codigo para acender o farol do carro
jemluz commented 8 months ago

Feijão com Arroz da Classe e Objeto

image

image

Nós podemos elaborar mais, adiconando métodos/funções para poupar trabalhos repetitivos.

image image

jemluz commented 8 months ago

Construtores

São métodos que obrigatóriamente:

image

Servem para inicialização dos objetos da classe. Pense nele como um canal de automatização, alguém para facilitar sua vida e poupar que você fique declarando cada objeto de modo mais verboso, linha a linha.

Você pode ter mais de um construtor na mesma classe, todos com mesmo nome (não vai dar erro, deus fez assim) mas que recebem entradas de parâmetros diferentes. Por exemplo:

Eles serão distinguidos de acordo com a diferença na quantidade, ou ordem dos parâmetros.

image

Você pode não criar nenhum construtor, mas sempre há um construtor default (que não recebe parâmetro nenhum) em toda classe. Mas se você criar um construtor, para usar o default terá que declará-lo explicitamente.