ResumosMIEI

Uma coleção de resumos, para ajudar os que precisam daquele empurrão.


Project maintained by mendess Hosted on GitHub Pages — Theme by mattgraham

Introdução ao Paradigma

Um objeto é apenas a junção de dados e comportamento numa unidade lógica.

Ou seja, se tivermos um carro poderíamos representá-lo da seguinte forma:

struct Car {
    String brand;
    String model;
    int kmsTotal;
    int kmsParcial;
}

Depois podemos querer definir que o carro pode “andar” e aumentar o número de kms que tem, ou reiniciar a quilometragem parcial. Para isto podemos definir funções como:

void andar(Car* car, int km) {
    car->kmsTotal += km;
    car->kmsParcial += km;
}

void resetParcial(Car* car) {
    car->kmsParcial = 0;
}


// Example Main
int main() {
    Car car = /* inicialização */
    andar(&car, 10);
    resetParcial(car);
}

Este padrão de funções que recebem a estrutura para fazer alterações sobre o mesmo é muito comum. Este tipos de funções são o que chamamos de comportamento e no paradigma orientado a objetos são definidas juntas com a estrutura em si. Em Java usamos classes para criar esta relação e estas funções chamam-se metodos.

Logo em Java definiríamos esta Class da seguinte forma.

public class Car {
    private String brand;
    private String model;
    private int kmsTotal;
    private int kmsParcial;

    public void andar(int km) {
        this.kmsTotal += km;
        this.kmsParcial += km;
    }

    public void resetParcial(int km) {
        this.kmsParcial = 0;
    }
}

// Example Main
public class Main {
    public static void main(String args[]){
        Car car = new Car();
        car.andar(10);
        car.resetParcial();
    }
}

Aqui podemos ver que a keyword this substitui a referencia da estrutura que temos sempre de ter em programação imperativa.

Nota

Em Java todos os objectos são pointers, (excepto os tipos primitivos, int, long, float, double, byte, etc), logo onde no código em Ctem de se explicitamente passar um pointer para as funções, em Java isto e implícito, fazendo o '.' em Java equivalente ao '->' em C.