Introdução à POO
Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy — lição 2 de 87.
A Programação Orientada a Objetos (POO) é uma maneira de estruturar código usando objetos que contêm dados e comportamento.
Uma classe é um modelo
public class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public String makeSound() {
return this.name + " makes a sound!";
}
}Um objeto é uma instância criada a partir do modelo
Animal dog = new Animal("Buddy");
System.out.println(dog.makeSound());Saída:
Buddy makes a sound!A POO permite modelar coisas do mundo real como objetos. Cada objeto possui dados (campos) e ações (métodos). Os quatro pilares da POO são Encapsulamento, Herança, Polimorfismo e Abstração.
Desafio
FácilCrie uma classe Animal que demonstre os fundamentos de OOP:
- Um campo
name(String) - Um construtor que define o nome
- Um método
makeSound()que retorna"<name> makes a sound!"
Folha de consulta
A Programação Orientada a Objetos (POO) estrutura o código usando objetos que contêm dados e comportamento.
Uma classe é um modelo para criar objetos:
public class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public String makeSound() {
return this.name + " makes a sound!";
}
}Um objeto é uma instância criada a partir de uma classe:
Animal dog = new Animal("Buddy");
System.out.println(dog.makeSound());Objetos possuem dados (campos) e ações (métodos). Os quatro pilares da POO são Encapsulamento, Herança, Polimorfismo e Abstração.
Experimente você mesmo
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
Animal animal = new Animal(name);
System.out.println("Animal name: " + animal.name);
System.out.println(animal.makeSound());
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de POO
Arquivos ExternosIntrodução à POOClasses vs ObjetosA Palavra-chave thisMétodosCampos (Atributos)Método ConstrutorSobrecarga de ConstrutorRecapitulação - Calculadora Simples4Herança
Herança Básica (extends)A Palavra-chave superSobrescrita de Método (@Override)Encadeamento de ConstrutoresA Classe ObjectHerança Simples e MultinívelPor que não há Herança Múltipla de ClassesRecapitulação - Hierarquia de Funcionários7Métodos Especiais e a Classe Object
Método toString()equals() e hashCode()Método clone()compareTo() e ComparableInterface ComparatorRecapitulação - Ordenação Personalizada2Modificadores de Acesso e Encapsulamento
Visão Geral dos Níveis de AcessoMétodos Getter e SetterOcultação de InformaçõesA Palavra-chave finalRecapitulação - Gerenciador de Conta Bancária5Polimorfismo
Fundamentos de Sobrecarga de MétodosSobrescrita de Métodos (Tempo de Execução)Upcasting e DowncastingO Operador instanceofClasses e Métodos AbstratosRecapitulação - Calculadora de Formas8Conceitos Avançados de OOP
Composição vs HerançaAgregação vs ComposiçãoClasses Internas, Aninhadas e AnônimasEnums e Métodos de EnumRecords (Java 16+)Classes Seladas (Java 17+)11Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão BuilderPadrão ObserverPadrão Strategy3Propriedades de Classe e Membros Estáticos
Variáveis de Instância vs EstáticasMétodos EstáticosBlocos EstáticosConstantes (static final)Recapitulação - Contador e Utilitário6Interfaces e Classes Abstratas
Introdução às InterfacesImplementando InterfacesImplementação de Múltiplas InterfacesDefault e Static em InterfacesClasses Abstratas vs InterfacesInterfaces FuncionaisRecapitulação - Sistema de Pagamento9Generics
Introdução a GenericsClasses GenéricasMétodos GenéricosParâmetros de Tipos DelimitadosWildcards (?, extends, super)Recapitulação - Container Genérico12Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão CompositePadrão Iterator