AULA 02
MÓDULO 1
fundamentos java
⏱ 50 min
Classe, Objeto e UML
Modele antes de codificar. Diagrama de Classes UML. Classe vs objeto. Referências em Java. Tipos primitivos e Wrappers.
UMLdiagrama de classesreferênciaswrapperprimitivosinstanciação
Diagrama de Classes UML
Antes de escrever uma linha de código, o UML nos deixa modelar o sistema visualmente. O Diagrama de Classes é o mapa da estrutura do software — mostra classes, atributos, métodos e relacionamentos.
conexão com Banco de Dados
Você já viu isso: Entidade → Classe, Atributo → campo, Instância → linha na tabela. O modelo OO e o modelo ER são representações diferentes do mesmo mundo.┌──────────────────────┐
│ Livro │ ← nome da classe
├──────────────────────┤
│ - titulo: String │ ← atributos (- = private)
│ - ano: int │
│ - autor: Autor │ ← relação com outra classe
├──────────────────────┤
│ + getTitulo(): String│ ← métodos (+ = public)
│ + toString(): String │
└──────────────────────┘
Classe vs Objeto — molde vs instância
Classe é o molde — define estrutura e comportamento. Objeto é a instância — ocupa memória, tem estado próprio. Uma classe pode gerar milhares de objetos distintos.
referências em Java
Em Java, variável de objeto guarda uma REFERÊNCIA (endereço de memória), não o valor. Aluno a1 = a2 → os dois apontam para o mesmo objeto! Isso explica por que a1.setNota(9) afeta quem usa a2.1
Livro livro1 = new Livro(...) — new aloca memória, construtor inicializa, livro1 guarda o endereço
2
Livro livro2 = livro1 — livro2 aponta para o MESMO objeto — não é uma cópia!
3
livro2.setAno(2025) — livro1.getAno() também retorna 2025 — mesmo objeto em memória
4
Para clonar: implement Cloneable — ou construtor cópia — Java não copia automaticamente
Tipos primitivos vs Wrapper
Java tem 8 tipos primitivos (int, double, boolean...) que NÃO são objetos. Para usar em coleções genéricas, use os Wrappers correspondentes.
| Primitivo | Wrapper | Uso típico |
|---|---|---|
| int | Integer | variável, cálculo (mais rápido) |
| double | Double | ponto flutuante |
| boolean | Boolean | flag |
| char | Character | caractere |
| long | Long | valores grandes |
autoboxing
Java converte automaticamente: int → Integer (boxing) e Integer → int (unboxing). Cuidado: Integer a = null; int b = a; → NullPointerException em runtime!
java
// Classe Autor e Livro com relacionamento 1:1 public class Autor { private String nome; private String pais; public Autor(String nome, String pais) { this.nome = nome; this.pais = pais; } public String getNome() { return nome; } public String toString() { return nome + " (" + pais + ")"; } } public class Livro { private String titulo; private int ano; private Autor autor; // relação: Livro TEM UM Autor public Livro(String titulo, int ano, Autor autor) { this.titulo = titulo; this.ano = ano; this.autor = autor; } public String toString() { return titulo + " (" + ano + ") por " + autor; } } public class Main { public static void main(String[] args) { Autor a = new Autor("Joshua Bloch", "EUA"); Livro l = new Livro("Effective Java", 2018, a); System.out.println(l); // → Effective Java (2018) por Joshua Bloch (EUA) // Demonstrar referências: dois nomes, um objeto Livro outro = l; outro.toString(); // mesmo objeto que l } }
quiz · aula 02
Teste seus conhecimentos em Java
0/3 respondidas
QUESTÃO 01
Qual é a diferença entre classe e objeto em Java?
QUESTÃO 02
O que acontece ao executar: Aluno a2 = a1; a2.setNota(10);
QUESTÃO 03
Por que Integer e não int para usar em ArrayList?
0/3