Você está na página 1de 36

24/11/2023, 01:25 Programação Orientada a Objetos com Java

Artigo

Invista em você! Saiba como a DevMedia pode


ajudar sua carreira.

Programação orientada a
objetos com Java
Java é uma linguagem orientada a objetos. Neste artigo, entenderemos o
que isso significa, o que são objetos e por que isso é tão importante para a
linguagem Java.

Anotar Marcar como concluído

Artigos

Java

Programação orientada a objetos com Java

Orientação a objetos no Java

Programas grandes são difíceis de manter – por isso, é um bom hábito separá-los
em unidades mais ou menos isoladas. Em Java, isso é feito utilizando
32 objetos,

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 1/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

que são compostos por atributos e métodos definidos a partir de classes, que
por sua vez são organizadas em pacotes. Esses conceitos são tão centrais em Java
que não se pode programar na linguagem sem utilizá-los.

Todo programa em Java usa classes e objetos, e compreender esses conceitos é


fundamental para compreender a própria linguagem. Na prática, sistemas de
software reais são grandes e precisam ser fatorados em partes relativamente
independentes para serem viáveis. Como em Java isso é feito com classes e
objetos, compreendê-los é imprescindível para escrever qualquer programa
significativo.

Relacionado: Curso Básico de Java e Orientação a Objetos

Antigamente, os programas de computador eram escritos como uma série de


instruções, como receitas culinárias: dados os “ingredientes” (arquivos no disco,
interfaces de rede, memória, ciclos do processador etc.), uma série de passos era
seguida. A semelhança era tão notável que várias linguagens de programação
exigiam que os “ingredientes” do programa (variáveis, arquivos etc.) fossem
reservados antes de se escrever o “modo de preparo”.

Esta abordagem era ineficiente para grandes programas, com muitas de


funcionalidades. Para tentar solucionar isso, uma maneira diferente de
programar foi proposta: os softwares não seriam mais vistos apenas como
instruções alterando recursos, mas sim como vários pedaços, pequenos softwares
trabalhando em conjunto para alcançar o objetivo. Os programas não seriam mais
pensados como receitas, mas sim como carros e empresas: várias peças,
relativamente independentes e fáceis de trocar, exerceriam tarefas complicadas
isoladamente, sendo coordenadas de modo que o resultado final fosse
32 uma

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 2/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

máquina fácil de dirigir, ou uma organização eficiente. Assim como o operário


que põe o motor na carroceria não precisa compreender seu funcionamento
interno, e a secretária não precisa saber dos detalhes do setor de marketing, o
programador poderia se concentrar em uma parte do programa, sabendo que as
outras partes poderiam ser escritas depois, ser feitas por outros programadores
ou até mesmo compradas. O “programa como uma receita” ainda estaria nessas
partes (assim como o motor do carro segue uma série de passos, e o funcionário
uma série de procedimentos), mas essas “receitas” seriam menores, mais fáceis
de entender, alterar e substituir, podendo haver em uma só parte vários “modos
de preparo”.

O primeiro método é chamado programação estruturada e ainda hoje é usado.


Entretanto, o segundo modo se tornou popular e preferido de vários
programadores e organizações. É chamado programação orientada a objetos e é
desse modo que se programa em Java.

Objetos e classes

Em Java os programas são escritos em pequenos pedaços separados, chamados de


objetos. Objetos são pequenos programas que guardam dentro de si os dados – em
suma, as variáveis – que precisam para executar suas tarefas. Os objetos também
trazem em si, como sub-rotinas, as instruções para processar esses dados. As
variáveis que um objeto guarda são chamadas de atributos, e as suas sub-rotinas
são chamadas de métodos. Guarde bem esses nomes, pois você os verá ainda

muitas vezes.

Saiba mais: Métodos, atributos e classes no Java

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 3/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Em Java, objetos são criados a partir de modelos que os descrevem. Esses


modelos são chamados de classes. É dentro dessas classes que definimos que
atributos os objetos conterão e que métodos os objetos fornecerão.

Java e Eclipse

Agora que já sabemos um pouco sobre como se programa em Java, vejamos o que
é Java.

Java é uma linguagem de programação orientada a objetos estática e


fortemente tipada. Programas escritos em Java são compilados, como em C e
Pascal, mas o resultado da compilação são arquivos que não podem ser
executados diretamente pelo computador ou sistema operacional, de modo que
precisam também ser interpretados, como em BASIC e Python. Java é compilada

porque isso permite encontrar erros antes de executar o programa e facilita


executar os programas mais eficientemente, e é interpretada porque isso permite
que o mesmo arquivo compilado possa ser executado em qualquer computador
ou sistema operacional que tenha um interpretador Java – o que, atualmente,
equivale a quase qualquer computador, de smartphones a mainframes.

Relacionado: Guia Completo de Java

O interpretador Java, além de interpretar as instruções compiladas, também é


responsável por retirar da memória objetos que não são mais utilizados. O
algoritmo que executa essa tarefa de “limpeza” é chamado de coletor de lixo, e é
um dos grandes atrativos do Java: em linguagens mais tradicionais, como C e C++,
o programador é responsável por limpar a memória na mão, o que é uma tarefa
32
tediosa e até perigosa.
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 4/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Apesar de tudo, Java é uma linguagem relativamente complicada e verborrágica.


Exige-se que se digite muito, facilitando que se erre. É preciso compilar os
programas para depois rodá-los. As classes que criarão os objetos dos programas
devem ficar em hierarquias de diretórios precisamente definidas, tanto na hora
da compilação quanto durante a execução. Cuidar de todos esses detalhes é
cansativo e facilita o erro. Por isso, para programar a sério em Java, o uso de um
ambiente integrado de desenvolvimento – ou como são mais conhecidos, IDEs – é
praticamente indispensável.

Figura 1. IDE Eclipse.

Neste artigo, trabalharemos com a IDE Eclipse. O Eclipse é um software popular,


poderoso e gratuito. Assumimos que o Eclipse, assim como o ambiente Java, já
estão devidamente instalados. A Figura 1 apresenta um screenshot do
32 Eclipse.

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 5/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Relacionado: Conhecendo o Eclipse

Figura 2. Primeira tela do Eclipse, para escolha do workspace.

Para chegar a essa tela da Figura 1, abra o Eclipse. Primeiro, ele perguntará que
workspace você quererá usar, como pode ser visto na Figura 2. Workspace é o
diretório onde se cria e trabalha em projetos. Se você não tem nenhuma razão
para mudar o padrão, apenas clique em Ok. Feito isso, aparecerá a tela da Figura
3. Esta tela aparece todas as vezes que se abre um workspace novo; para ir ao
ambiente de trabalho, clique no ícone do canto superior direito, com o rótulo
Workbench.

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 6/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Figura 3. Tela inicial de um workspace novo do Eclipse.

É possível usar vários workspaces com uma mesma instalação do Eclipse. Muitos

programadores costumam manter vários workspaces, com projetos relacionados em cada

um. Por exemplo, se o desenvolvedor trabalha como freelancer para várias empresas, pode

ter um projeto para cada uma; se o desenvolvedor também é estudante, pode manter um

projeto para o trabalho e outro para o curso; e assim por diante.

Classes e pacotes no Eclipse

Para criar um programa em Java usando o Eclipse, precisamos primeiro criar um


projeto do Eclipse. Um projeto é uma unidade de trabalho genérica, mas podemos
assumir nesse tutorial que um projeto é um programa. Para criá-lo quando o
Eclipse já estiver apresentando a tela da Figura 1, pressione Control + N. Feito isso
você verá a janela da Figura 4.
32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 7/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Figura 4. Caixa de diálogo para criação de novos elementos.

Nela, selecione a opção Java Project e clique em Next. Na tela que pode ser vista
na Figura 5, podemos configurar vários detalhes do projeto. Por ora, vamos
apenas dar um nome para o projeto. Poderíamos clicar em Next e mudar outras
configurações, mas não precisamos disso agora, então clique apenas em Finish. O
projeto aparecerá no compartimento do lado esquerdo, na aba Project Explorer.

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 8/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Figura 5. Criando um novo projeto.

Criado o projeto, podemos criar as classes. Pressione novamente Control + N,


escolha a opção Class e clique em Next. A janela da Figura 6 aparecerá com várias
opções para definição da classe. No campo rotulado Name, digite PrimeiraClasse .

Um alerta aparecerá dizendo que é recomendável declarar um pacote (package)


32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 9/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

também; para declará-lo, digite “artigoinicial.primeironome” no campo rotulado


Package. Depois clique em Finish.

Pacotes são agrupamentos que podem conter classes e outros pacotes. Cada um é
um diretório, e os arquivos de código-fonte das classes – assim como os arquivos
compilados – que pertencem a um pacote devem vir dentro do diretório
correspondente. Em artigoinicial.primeironome, por exemplo, há dois pacotes:
um chamado artigoinicial e outro chamado primeironome, que está dentro do
primeiro. Os pacotes são importantes para organizar o código, pois programas
podem ter literalmente milhares de classes.

Pacotes também evitam conflitos. É possível usar classes produzidas por outras
pessoas e organizações, e alguns nomes são bem comuns, como File, User, List
etc. Em Java, toda classe é compilada para um arquivo que tem o mesmo nome – e
não seria possível ter dois arquivos com o mesmo nome no mesmo diretório.
Porém, se ponho minha classe File no pacote
br.com.minhaempresa.nomedoprojeto e você puser a sua em br.org.suaong.projeto , é
possível usar ambas as classes em um mesmo programa.

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 10/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Figura 6. Caixa de diálogo para criação de nova classe.

A classe aparecerá no painel do lado direito, como visto na Figura 7, e um editor


abrirá no centro da tela. Nele, estará o seguinte código:

1 public class PrimeiraClasse {}

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 11/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Esse código define uma classe vazia. Na primeira linha, o pacote da classe é
declarado. A palavra public significa que a classe é pública, quaisquer outras
classes podem usar serviços que ela proveja. Já a palavra class define que o que
será declarado agora é uma classe; o nome da classe, PrimeiraClasse , deve vir

logo após a palavra class. As chaves que se seguem ({ }) definem o corpo da classe:
é entre elas que os atributos e métodos devem ser descritos. Por fim, é visível na
Figura 7 que o nome do arquivo em que o código-fonte está é
PrimeiraClasse.java . Em Java, é obrigatório que o arquivo tenha o nome da
classe principal que ele contém seguido da extensão .java. Felizmente, todos esses
detalhes já foram resolvidos pelo Eclipse.

Figura 7. Nova classe vista no painel.

Método main()

Todo programa em Java precisa de uma classe que crie os primeiros objetos e lhes
passe as tarefas iniciais. Quem faz isso é um método especial, chamado main() .A
forma desse método é a seguinte:

1 public static void main(String[] args) {


2 }

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 12/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

A palavra public, aqui, significa que qualquer outra classe pode utilizar esse
método. main é o nome do método, e antes do nome deve vir o tipo do valor que
ele retornará; como o método main não retorna nada, diz-se que ele retorna void.
Já a palavra static tem um sentido bem especial: significa que o método pode ser
invocado mesmo sem ser criado nenhum objeto da classe. Na maioria das vezes,
os métodos de uma classe só podem ser chamados por seus objetos, mas um
método static escapa dessa restrição.

Note que o programa é iniciado por um método chamado main() , não por uma função,

como em C ou C++. Em Java, não existem funções “livres”, apenas métodos.

Após o nome do método deve vir a lista de parâmetros. main() recebe apenas um
parâmetro: um vetor (também chamado array) de objetos da classe String , que
representa sequências de caracteres. A declaração do parâmetro é o seu tipo
seguido do seu nome (no caso, foi chamado de args, mas poderia ser qualquer
identificador não reservado). Note que há um par de colchetes ([]) logo à frente da
palavra String ; os colchetes significam que o parâmetro args não é uma String ,
mas sim um array de String . Por ora, esse parâmetro pode ser ignorado.

Em C e C++, declara-se que uma variável é um vetor colocando o par de colchetes após o

nome da variável, como em char array[] . É possível fazer isso também em Java, mas

geralmente é recomendado colocar o par de colchetes após o tipo, pois isso deixaria claro que

o tipo da variável não é String , mas sim um vetor.

O parâmetro que o método main() recebe é um array com todos os argumentos que foram

passados, pela linha de comando, para o programa Java, de modo semelhante aos parâmetros

argc e argv da função main() de C.

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 13/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Olá, mundo!

Agora que já foi visto como criar uma classe e declarar o método main() , pode-se
adicionar o método à classe já criada. Vejamos, por exemplo, como criar o tão
famoso “Hello, World”. Para isto, basta acrescentar, dentro do método main() a
seguinte linha:

1 System.out.println("Olá, mundo!");

A classe resultante pode ser vista na Listagem 1. Para executá-la, basta clicar no
botão Run do Eclipse ( ). Aparecerá uma aba na parte inferior da janela,
chamada Console, e nela haverá uma parte em branco em que estará escrito “Olá,
Mundo!”, como pode ser visto na Figura 8.

Enfim, acabamos de criar nosso primeiro programa em Java. No começo do artigo


foi dito que os programas em Java são compostos por vários objetos; até agora,
porém, pode-se ter a impressão de que não só nenhum objeto foi utilizado como
apenas uma classe foi usada. Seria um engano: no nosso programa várias classes
e objetos foram utilizados.

Listagem 1. Exemplo de classe simples com o método main() .

1 public class PrimeiraClasse {


2 public static void main(String[] args) {
3 System.out.println("Olá, mundo!");
4 }
5 }

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 14/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Figura 8. O que o programa imprime no terminal sai na aba Console.

Para começar, o texto “Olá, Mundo!” foi representado por uma instância de
String . (“Instância de X” é sinônimo de “objeto da classe X”.) Este objeto String

foi passado como parâmetro para o método println() de um objeto apontado


pela variável out. A variável out aponta para um objeto da classe PrintStream , que

é capaz de imprimir o que for necessário no terminal. A variável out é um atributo


estático (isto é, não está dentro de um objeto comum, mas está dentro de uma
classe) da classe System, que contém várias ferramentas úteis para o
programador.

A expressão "Olá, Mundo!" não representa na verdade um objeto da classe String , mas um

objeto vetor de caracteres. Entretanto, Java converte automaticamente vetores de caracteres

para objetos da classe String .

O programa da Listagem 1, simples como é, usou pelo menos dois objetos e


quatro classes. Além destes, é possível que outros objetos e classes tenham sido
usados pelos objetos explicitamente mostrados no código. É aí que está a mágica
da programação orientada a objetos: todos os detalhes dessa execução foram
escondidos, cada objeto cuida dos seus problemas. Com cada objeto resolvendo
um “pedaço” da tarefa maior, nem nos damos conta de quantos objetos o
programa usa!

Saiba mais sobre Java ;) 32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 15/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Guias de Java 66 Guias:

Encontre aqui os Guias de estudo que vão ajudar você a aprofundar seu conhecimento na

linguagem Java. Desde o básico ao mais avançado. Escolha o seu!

Como se tornar um Programador Java:

Aprender Java não é uma tarefa simples, mas seguindo a ordem proposta nesse Guia, você evitará

muitas confusões e perdas de tempo no seu aprendizado. Vem aprender java de verdade, vem!

Todos os Cursos de Java:

Torne-se um programador Java completo. Aqui você encontra cursos sobre as mais ferramentas e

frameworks do universo Java. Aprenda a desenvolver sites e web services com JSF, Jersey,

Hibernate e mais.

O programa da Listagem 1 utiliza várias classes e objetos, mas o programador só


criou uma classe. Programas mais sofisticados, mesmo que só um pouco,
precisam de mais classes.

Considere um programa que leia os nomes de pessoas e imprima o nome


completo e as iniciais. Este seria um programa simples que poderia ser escrito
com apenas uma classe, mas provavelmente ficaria mais elegante com mais de
uma. Por exemplo, uma classe que guardasse os vários nomes da pessoa poderia
ser criada. Esta classe precisaria ter atributos para guardar os pedaços do nome:

1 public class Pessoa {


2 private String primeiroNome;
3 private String ultimoNome;
4 private String nomesDoMeio;
5 }

No código acima, uma classe chamada Pessoa é definida com três atributos para
apontar para os três trechos do nome. Essa classe é um modelo, uma “fôrma” para
32
criar objetos, e cada objeto vai ter seus próprios atributos. Vamos examinar uma
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 16/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

das declarações: private String primeiroNome;. A palavra-chave private serve


para declarar o atributo como privado: apenas métodos definidos na própria
classe Pessoa podem alterar ou ler esses atributos. String , como já vimos antes,
é o nome de uma classe que representa uma sequência de caracteres; nessa
declaração, significa que o atributo apontará para um objeto criado a partir da
classe String – ou, como se costuma dizer, é do tipo String . Por fim, aparece o
nome do atributo, primeiroNome. O ponto-e-vírgula que se segue é exigido, em
Java, após qualquer declaração de variável (o que inclui atributos) e depois de
qualquer comando.

Se você quiser testar esses códigos você mesmo, sugerimos que crie um novo projeto e nele

crie as novas classes, como foi explicado anteriormente. Isto é, inclusive, um bom exercício!

Experimente!

Como se tornar um programador Java: Primeiros passos

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 17/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Confira: Como dar os primeiros passos como programador Java

Um objeto desta classe não deve apenas “armazenar” dados, mas também
processá-los: além dos “ingredientes”, tem de ter também as “receitas”. No caso, o
processamento deve ser feito por métodos. Um método necessário é aquele que
retorne o nome inteiro a partir dos nomes armazenados no objeto. Esse método
poderia ser assim:

1 public String getNomeCompleto() {


2
3 String nomeCompleto = primeiroNome + " " + nomesDoMeio +
4 return nomeCompleto;
5 }

A primeira linha, public String getNomeCompleto() , especifica o método.

Primeiro, declara-se, através da palavra-chave public, que o método é público –


isto é, qualquer método, de qualquer classe, pode invocá-lo. O método retorna
objetos do tipo String e se chama getNomeCompleto. O par de parênteses vazio
significa que ele não recebe parâmetro algum.

O conteúdo do método vem entre um par de chaves. Dentro do método, declara-se


uma nova variável, do tipo String , chamada nomeCompleto. Ao contrário de
variáveis como primeiroNome , nomeCompleto não é um atributo, mas sim uma

variável local. primeiroNome existirá desde a criação do objeto até sua retirada da
memória, mas nomeCompleto só existirá enquanto o método getNomeCompleto()

estiver sendo executado, e para cada chamada do método uma nova variável será
criada. 32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 18/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

A variável nomeCompleto recebe o resultado da concatenação de String . O sinal


de atribuição é =, e a concatenação de String é feita através do operador +. Ao
final, um ponto-e-vírgula sinaliza o fim deste comando. Abaixo, temos o comando
return. Quando ele é invocado, o método termina e o valor que está à sua frente
(no caso, o valor referenciado pela variável n nomeCompleto ) é retornado.

Como todo programa em Java precisa de uma classe com o método main() ,
criamos uma nova classe, denominada ProgramaNome , que tenha esse método:

1 public class ProgramaNome {


2 public static void main(String[] args) {
3
4 }
5 }

Até agora, não vimos como criar objetos. Para isso, Java provê uma ferramenta
especial chamada construtor, que são definidos de forma semelhante a métodos
(embora não sejam métodos). Nós não definimos nenhum construtor em Pessoa ,
mas isso não é necessário para criar objetos: toda classe sem construtor definido
tem, por padrão, um construtor simples. Os construtores têm o mesmo nome de
suas classes e são invocados pelo comando new. A linha abaixo chama o
construtor padrão de Pessoa ; esse construtor cria um novo objeto, e o objeto é
armazenado na variável pessoa :

1 Pessoa pessoa = new Pessoa();

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 19/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Em Java, não é possível dar o mesmo nome a uma classe e a um objeto, mas
podemos criar uma classe chamada Pessoa e uma variável chamada pessoa

porque Java distingue entre maiúsculas e minúsculas. Assim, Pessoa, pessoa,


PESSOA e pEsSoA são nomes diferentes.

Para criar uma pessoa que se chamasse, por exemplo, João Paulo Silva,
poderíamos tentar criar a seguinte classe:

1 public class ProgramaNome {


2 public static void main(String[] args) {
3 Pessoa pessoa = new Pessoa();
4 pessoa.primeiroNome = “João”;
5 pessoa.nomeDoMeio = “Paulo”;
6 pessoa.ultimoNome = “Silva”;
7 System.out.println(pessoa.getNomeCompleto());
8 }
9 }

No entanto, isto não é possível porque os atributos são privados. Apenas os


métodos da classe Pessoa podem acessá-los. Isso pode ser solucionado de várias
maneiras, e uma das mais elegantes é criando o nosso próprio construtor, como
abaixo:

1 public Pessoa(String primeiro, String meio, String ultimo) {


2
3 primeiroNome = primeiro;
4 ultimoNome = ultimo;
5 nomesDoMeio = meio;
6 }

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 20/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

A declaração do construtor é sempre o nome da classe seguido pela lista de


parâmetros. A palavra public indica que o construtor é público, de modo que
pode ser invocado por qualquer classe. Um ponto importante sobre construtores é
que eles não criam nem retornam objetos; quem faz isso é a palavra reservada
new. O construtor apenas executa algum procedimento sobre o objeto criado pelo
comando new. Este construtor, no caso, recebe os nomes como parâmetros e os
atribui aos atributos.

Agora, podemos trocar as quatro primeiras linhas do método main() inválido por
apenas a seguinte:

1 Pessoa pessoa = new Pessoa("João", "Paulo", "Silva");

A classe Pessoa completa pode ser vista na Listagem 2. A classe ProgramaNome ,

por sua vez, encontra-se na Listagem 3. Ao executar o programa, obtém-se no


console a seguinte saída:

1 João Paulo Silva

Mostramos como fazer um programa que imprima o nome completo da pessoa.


Agora, propomos um exercício: altere esse programa para que imprima também
as iniciais. Crie um método chamado getIniciais() na classe Pessoa . Uma dica:
estude o método charAt() da classe String . Boa sorte!

Listagem 2.Classe Pessoa , que gera o nome completo a partir das partes.
32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 21/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

1 public class Pessoa {


2 private String primeiroNome;
3 private String ultimoNome;
4 private String nomesDoMeio;
5
6
7 public Pessoa(String primeiro, String meio, String ultimo)
8 primeiroNome = primeiro;
9 ultimoNome = ultimo;
10 nomesDoMeio = meio;
11 }
12
13
14 public String getNomeCompleto() {
15 String nomeCompleto = primeiroNome + " " + nomesDoMeio +
16 return nomeCompleto;
17 }
18
19 }

Listagem 3. Classe ProgramaNome , que utiliza a classe Pessoa para gerar um nome
completo a partir das partes.

1 public class ProgramaNome {


2
3 public static void main(String[] args) {
4 Pessoa pessoa = new Pessoa("João", "Paulo", "Silva");
5 System.out.println(pessoa.getNomeCompleto());
6 }
7
8 }

Herança
32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 22/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Em Java, os tipos dos objetos são classes. Entretanto, ao contrário dos tipos
primitivos, que não são classes (veja o quadro “Tipos primitivos”), um objeto pode
ter vários tipos – desde que esses tipos estejam hierarquicamente relacionados.
Esses relacionamentos são como taxonomias biológicas. Por exemplo, todo
mamífero é um animal, e todo cachorro é mamífero. Há uma hierarquia entre
esses conceitos, que vai do mais geral (animal) ao mais específico (cachorro).

Por exemplo, poderíamos ter uma classe Animal que representasse animais em
geral e as atividades que todos eles executam. Uma dessas atividades é comer, e
nossa classe poderia ser como a abaixo. (Se for testá-la, crie um novo projeto e
chame-o de “Animais”.)

1 public class Animal {


2 public void comer(String alimento) {
3 System.out.println("Eu estou comendo "+alimento);
4 }
5 }

Uma classe de mamíferos estenderia a classe de animais, porque mamíferos


podem fazer coisas que outros animais não podem – por exemplo, gerar leite.
Uma classe Mamifero estenderia a classe Animal usando a palavra reservada
extends em sua declaração:

1 public class Mamifero extends Animal {


2 }

Um novo método, lactar() , também poderia ser adicionado:


32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 23/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

1 public String lactar() {


2 return "leite";
3 }

O resultado pode ser visto na Listagem 4.

Como mamíferos são animais, também precisam do método comer() , e aí entra

uma das vantagens da herança: como a classe Mamifero estende a classe Animal ,
ela herda todos os métodos de Animal , então não é preciso reescrevê-los. O
programa da Listagem 5 representa bem isso: note como o método comer() é
invocado, mesmo sem ser declarado em Mamifero. Esse programa imprimirá:

1 Eu estou comendo plantas


2
3 Eu estou comendo queijo
4 O produto da lactação é leite

Listagem 4. Classe Mamifero.

1 public class Mamifero extends Animal {


2
3 public String lactar() {
4 return "leite";
5 }
6
7 }

Listagem 5. Superclasse e subclasse em uso.

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 24/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

1 public class AnimaisAgindo {


2 public static void main(String[] args) {
3 Animal animal = new Animal();
4 Mamifero mamifero = new Mamifero();
5 animal.comer("plantas");
6 mamifero.comer("queijo");
7 String produto = mamifero.lactar();
8 System.out.println("O produto da lactação é " + produto);
9 }
10 }

Tipos primitivos

Quase todos os tipos de Java são classes, e quase todos os valores são objetos,
incluindo strings e vetores. Entretanto, alguns tipos em Java não são classes, e
seus valores não são objetos Esses tipos são chamados tipos primitivos e
representam, basicamente, valores numéricos. A Tabela Q1 os lista.

Tabela Q1. Tipos primitivos em Java.

Tipo Descrição
int Representa números inteiros, de -2147483648 a 2147483647
byte Representa números inteiros, de -128 a 127
short Representa números inteiros, de -32768 a 32767
long Representa números inteiros, de -9223372036854775808 a 9223372036854775807
Valores numéricos que vão de 0 a 0xFFFF. Entretanto, não são usados em
char operações matemáticas; representam caracteres, de acordo com o encoding
UTF-16.
Números com frações usando representação de ponto flutuante. Vai de valores
float tão pequenos quanto 1,4 ∙ 10-45 até 3,4 ∙ 1038. Representa uma grande faixa de
números, mas perde em eficiência comparado com tipos inteiros.
double Números com frações usando representação de ponto flutuante. Abrange uma
32
faixa ainda maior que a do tipo float (de 4,9 ∙ 10-324 até 1,7 ∙ 10308), com
https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 25/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

precisão ainda maior, mas são ainda mais lentos e ocupam mais memória.

Para completar este artigo, veja o vídeo que ensina mais alguns recursos
importantes do Java ao darmos os primeiros passos com a linguagem.

Conclusão

Programação estruturada, a maneira tradicional de se programar, é bastante


simples e clara. Entretanto, essa simplicidade não “escala”: à medida que
programas crescem, é mais difícil mantê-los. A orientação a objetos é,
provavelmente, a solução mais popular para esse problema, e Java é a linguagem
de referência para esse paradigma de programação. Nesse artigo vimos que, em
Java, programas são compostos por unidades chamadas objetos. Os objetos
possuem métodos (código) e atributos (dados). Para declarar métodos e atributos,
escrevem-se classes, que são modelos a partir dos quais os objetos são criados.
Vimos também que é possível criar classes novas a partir de outras, usando
herança, e que classes podem ser agrupadas, para melhor compreensão, em
pacotes.

Orientação a objetos não se restringe a esses conceitos. Para se programar

competentemente de maneira orientada a objetos, saber como organizar estes


componentes é crucial. Entretanto, para isso é preciso conhecer estes
componentes, e esse artigo explica o que são, a importância e o papel de cada um.

Saiu na DevMedia!

Inno Setup: Instalando e distribuindo o SQL Server Express:

Veremos neste artigo como é possível distribuir e instalar aplicativos que utilizam como base de

dados o SQL Server Express utilizando o Inno Setup.

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 26/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Conheça o MySQL Fabric:

Neste artigo iremos conhecer e entender o que é o MySQL Fabric e em qual situações podemos

utilizá-lo. Também falaremos sobre as melhores práticas na configuração, instalação e

monitoramento do MySQL com o MySQL Fabric.

O que são testes unitários?:

Os testes unitários procuram aferir a corretude do código, em sua menor fração. Em linguagens

orientadas a objetos, essa menor parte do código pode ser um método de uma classe.

Saiba mais sobre Java ;)

Introdução ao Java 9: Conheça os novos recursos:

Confira uma introdução ao Java 9 bem completa. Aprenda neste artigo as principais novidades do

JDK, que trará para o Java a modularização, jShell, HTTP 2.0, JMH, entre outras melhorias. Confira

Como criar minha primeira classe em Java:

Neste conteúdo você aprenderá a criar sua primeira classe na linguagem Java. Aprenda também a

usar herança e interfaces, bem como métodos, atributos e propriedades.

Java: if/else e o operador ternário:

Este documento apresenta as estruturas condicionais if/else e operador ternário, recursos que

possibilitam executar diferentes trechos de código com base em uma expressão booleana.

Links

Tutorial oficial da antiga Sun Microsystems, empresa desenvolvedora de Java, em inglês.Acesse.

Página do livro Thinking in Java, de Bruce Eckel. É um dos melhores livros para se começar a

estudar Java, e há uma edição antiga mas muito boa gratuitamente disponível no site. Em inglês.

Livro:

Java: Como programar, Harvey M. Deitel, Prentice-Hall, 2005

Tecnologias:
32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 27/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Java POO

Anotar Marcar como concluído

Confira outros conteúdos:

Novidades do Java Teste unitário com JUnit

Em caso de dúvidas chame no whatsapp


32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 28/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

ÚLTIMA SEMANA!
Plano Recorrente
BLACK FRIDAY
R$89,90 /MÊS
PRIMEIROS
3 MESES
Plano Anual
R$ 49,90 A PARTIR
/MÊS DO 4° MÊS

12x R$ 45,00 12 MESES = R$ 718,80

R$ 178 de desconto
Formação FullStack completa

12 MESES = R$ 540,00
+10mil exercícios gamificados

+50 projetos reais


Formação FullStack completa

Suporte online
+10mil exercícios gamificados

Pra quem tem pouco limite no


+50 projetos reais
cartão

Suporte online Fidelidade de 12 meses

Matricule-se
APROVEITE

Perguntas Frequentes
Quem somos?

Por que a programação se tornou a profissão mais promissora da


atualidade?
32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 29/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Como faço para começar a estudar?

Em quanto tempo de estudo vou me tornar um programador?

Sim, você pode se tornar um programador e não precisa ter


diploma de curso superior!

O que eu irei aprender estudando pela DevMedia?

Principais diferenciais da DevMedia

Qual o investimento financeiro que preciso fazer para me tornar


um programador?

Como funciona a forma de pagamento da DevMedia?

Nossos casos de sucesso

Leonardo Carlos

Eu sabia pouquíssimas coisas de programação antes de começar a estudar


com vocês, fui me especializando em várias áreas e ferramentas que tinham
na plataforma, e com essa bagagem consegui um estágio logo no início do
meu primeiro período na faculdade.

Lucas Rodrigues

Estudo aqui na Dev desde o meio do ano passado! Nesse período a Dev me
ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha empresa. 32
Hoje eu

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 30/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

lidero um time de desenvolvimento!


Minha meta é continuar estudando e praticando para ser um Full-Stack Dev!

Heráclito Júnior

Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a


pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia
de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!

Julio Cablen

Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento


front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito
que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando
demais.

Joelberth Sena

Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um


passo a passo incrível. Só não aprende quem não quer. Foi o melhor
investimento da minha vida!

Felipe Nunes

Foi um dos melhores investimentos que já fiz na vida e tenho aprendido


bastante com a plataforma. Vocês estão fazendo parte da minha jornada
nesse mundo da programação, irei assinar meu contrato como
programador graças a plataforma.

Wanderson Oliveira

Comprei a assinatura tem uma semana, aprendi mais do que 4 meses


estudando outros cursos. Exercícios práticos que não tem como não
aprender, estão de parabéns!

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 31/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

José Lucas

Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão


presente na vida acadêmica de seus alunos, parabéns!

Eduardo Dorneles

Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje


estou há 1 ano empregado trabalhando 100% com React!

Adauto Junior

Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou
aprendendo muito, muito obrigado por existirem. Estão de parabéns...
Espero um dia conseguir um emprego na área.

Ver todos os casos de sucesso

Por Adam
Em 2010

COMENTÁRIOS

Luciano Mendel
Nível 4

Ola tenho uma dúvida, cara por que na declaração do meu construtor tipo
um exemplo 32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 32/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

public Pessoa(int id, String nome){


this.id = id;
this.nome = nome;
}

Ja vi pessoas no lugar do this.nome = nome. colocarem this(nome); e


funcionar. Porém quando eu faço no intellij IDE this(nome), apresenta
erro?

public Pessoa(int id, String nome){


this(nome);
this.id = id;

}
há +1 ano

Ver comentário anterior

Marcio Souza
DevMedia

Oi Luciano.

private int id;

private String nome;

public Pessoa(int id, String nome){

this.id = id;

this.nome = nome;

Esse construtor vai receber os valores das variaveis 'id' e 'nome', que estão
na assinatura do método, e atribui-los nas variaveis da classe 'id' e 'nome'.

Já esse método construtor

public Pessoa(int id, String nome){


this(nome); 32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 33/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

this.id = id;
}

vai atribuir o 'id' na variavel 'id' da classe e 'nome' será passado como
parametro para outro método construtor, similar a esse:

public Pessoa(String nome){


this.nome = nome;
}

E então a variavel 'nome' atribuí seu valor a váriavel 'nome' da classe.


Sendo assim, sempre que usar 'this.variavel' estará acessando a variavel da
classe e não do método. Sempre que usar 'this(variavel)' estará acessando
outro método construtor da classe.
há +1 ano

Rafael Oliveira
Nível 2

Muito bom e esclarecedor!


há +1 ano

Moderacao Devmedia
Nível 0

\\o/ Show Raphael, agradecemos seu comentário. Qualquer dúvida é só


falar.

Valeu, forte abraço.


há +1 ano

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 34/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Silva Santos
Nível 3

muito bom mesmo... Parabéns


há +1 ano

Rafael Albuquerque
Nível 1

Putz, artigo excelente! Parabéns!


há +1 ano

Eduardo N.toporoski
Nível

Caramba, pela primeira vez acho uma explicação simples e facil de


entender Prog.Orientada a Objeto, Parabéns!!
há +1 ano

Menu
Assine agora Hospedagem web por Porta 80 Web Hosting.
Quem Somos
Fale conosco
Plano para Instituição de ensino
Assinatura para empresas

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 35/36
24/11/2023, 01:25 Programação Orientada a Objetos com Java

Tecnologia:
HTML - CSS - Algoritmo - Javascript - React - React Native - Node.js - SQL - MySQL - UML - Scrum -
Levantamento de Requisitos - Padrão de Projeto - Teste de Software

Cursos:
HTML e CSS - Javascript - Programação para Iniciantes - Angular - React - Vue.js - Node.js - Spring - .NET
Core - Mobile - React Native - Android - Flutter - Algoritmo - Automação - Delphi - Java - PHP - Python -
SQL e Banco de Dados - Engenharia de Software - Canal Mais - Gratuitos

Artigos:
Front-End - Javascript - Iniciantes - Angular - Dart - Engenharia - Mobile - Node.js - Python - React
Native - Vue.js - Android - Banco de Dados - Delphi - Flutter - Java - Kotlin - .Net - PHP - React - Spring -
Gratuitos

DevCast:
HTML e CSS - Javascript - Angular - Engenharia - Mobile - Node.js - Python - React Native - Android -
Banco de Dados - Delphi - Flutter - Java - Automação - .Net - PHP - React - Spring - Gratuitos - Canal
Mais

Guia:
Fundamentos - .NET - PHP - Python - Java - Delphi - HTML e CSS - JavaScript - Node - React Native -
Flutter - Banco de Dados - Mobile - Spring - Arquitetura - Automação - Engenharia - + Assuntos

32

https://www.devmedia.com.br/programacao-orientada-a-objetos-com-java/18449 36/36

Você também pode gostar