Contexto e Posicionamento

Jack é uma linguagem de programação desenvolvida no projeto Nand2Tetris com fins pedagógicos. Esta análise foca em conceitos de linguagens de programação - isto é, como a linguagem funciona, suas características, e como ela permite expressar ideias computacionais.

Características Fundamentais

Aspecto Descrição Impacto
Paradigma Orientada a objetos baseada em classes Modularização por objetos
Tipificação Estática (tipos em tempo de compilação) Possibilidade de detectar de erros de tipos em tempo de compilação
Sintaxe Inspirada em Java Familiar a programadores
Expressividade Deliberadamente limitada Foco no essencial
Sem Herança Não suporta herança ou polimorfismo Simplicidade estrutural

📖 PARADIGMA: ORIENTAÇÃO A OBJETOS

1. MODELO DE OBJETOS

Jack implementa um modelo de orientação a objetos baseado em classes, similar ao Java clássico:

┌─────────────────────────────────────────┐
│         MUNDO DE OBJETOS JACK            │
└─────────────────────────────────────────┘

        ┌────────────────┐
        │     CLASS      │
        │    (Molde)     │
        └────────────────┘
               ↓ instantiation
        ┌────────────────┐
        │    OBJETO 1    │
        │ (Instância 1)  │
        └────────────────┘
               ↓
        ┌────────────────┐
        │    OBJETO 2    │
        │ (Instância 2)  │
        └────────────────┘

1.1 O Conceito de Classe

Uma classe é um molde (ou blueprint) que define:

Exemplo Real:

class Circle {
    // Variáveis de instância (estado)
    field int x, y;      // Centro do círculo
    field int radius;    // Raio do círculo

    // Construtor (cria uma instância)
    constructor Circle new(int cx, int cy, int r) {
        let x = cx;
        let y = cy;
        let radius = r;
        return this;
    }

    // Métodos (comportamento)
    method void setRadius(int newR) {
        let radius = newR;
        return;
    }

    method int getArea() {
        // Área = π * r²  (simplificado: r * r)
        return radius * radius;
    }
}

Conceitos fundamentais: