Prévia do material em texto
Introdução a classes, objetos e
métodos
Apresentação
Diversos elementos marcam a evolução da programação orientada a objetos (POO). Entre os
principais, estão as classes, que abrigam elementos. Os elementos, denominados métodos, são
caracterizados por seus atributos, que são semelhantes entre si. Para o desenvolvimento com base
em uma linguagem orientada a objetos, como o Java, é importante aplicar os métodos, definindo
tanto os dados quanto os códigos que operam sobre eles. Assim, classes são como um plano que
determinam como o objeto será criado.
Basicamente, os métodos especificam os mecanismos pelos quais a classe ou um objeto pode
operar a partir de uma instância. É fundamental compreender como um programa é constituído. De
maneira geral, todos os objetos em Java são acessados por meio de classes e objetos. O estudo
sobre os conceitos importantes acerca desses componentes facilita o processo de desenvolvimento
de software (Schildt, 2015).
Nesta Unidade de Aprendizagem, você será introduzido aos fundamentos da programação
orientada a objetos, com foco na compreensão das estruturas que compõem um programa nesse
paradigma. Por meio de exemplos práticos, será possível explorar como organizar dados e
comportamentos em estruturas lógicas, compreender a construção dessas estruturas em uma
linguagem orientada a objetos e acompanhar o processo de instanciação e manipulação de
elementos no ambiente Java.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir classes, objetos e métodos.•
Construir classes com seus elementos utilizando uma linguagem orientada a objetos.•
Descrever a criação de objetos por meio da linguagem Java.•
Desafio
Antes de desenvolver qualquer aplicação, existem algumas etapas de preparação a serem seguidas.
Durante o planejamento de um projeto, é necessário realizar um levantamento sobre os requisitos a
serem implementados.
O levantamento de requisitos é o processo em que o desenvolvedor desenha todas as
necessidades e objetivos a serem atingidos, facilitando a construção de uma aplicação que atenda
às necessidades do cliente. Um bom profissional preza pela qualidade do software e, por isso,
precisa pensar no escopo técnico, visando, principalmente, ao resultado que será visto pelo cliente
(Pressman; Maxim, 2016).
Considerando as informações apresentadas, analise o seguinte cenário:
A imagem a seguir possui audiodescrição. Para acessar o recurso, clique aqui
https://creator-files.plataforma.grupoa.education/undefined/REVISADO_9107_Audiodescricao_Desafio-2025-09-01T16:26:49-03:00.docx
Para essa entrega, você deve considerar os seguintes aspectos:
O gerente solicitou que uma linguagem de POO fosse criada. Sua recomendação é o uso de
Java.
•
Para que o gerente possa avaliar o projeto antes da implementação, este deve ser entregue
em formado .zip.
•
Pode ser usado o ambiente de desenvolvimento integrado (IDE) de sua preferência para
construção do código-fonte, como, por exemplo, NetBeans e Eclipse.
•
Infográfico
A POO tem o propósito de representar sistemas de diferentes complexidades por meio do uso de
estruturas hierárquicas e do relacionamento entre os objetos. As unidades básicas são os objetos,
porém estes precisam ser aplicados em conjunto com métodos e classes para permitir a troca de
mensagens e as atividades propostas pela linguagem de programação.
Essa abordagem promove a modularização do código, facilitando a manutenção, a reutilização e a
expansão de aplicações ao longo do tempo. Ao adotar uma linguagem como o Java, que oferece
suporte robusto à orientação a objetos, o desenvolvedor pode criar soluções que espelham melhor
os processos do mundo real, favorecendo o entendimento do sistema como um todo (Horstmann,
2009).
Neste Infográfico, compreenda conceitos importantes sobre os componentes que fazem parte da
POO. Após isso, para complementar seu conhecimento, confira o infográfico interativo.
A imagem a seguir possui audiodescrição. Para acessar o recurso, clique aqui
https://creator-files.plataforma.grupoa.education/undefined/REVISADO_9107_Audiodescricao_Infografico-2025-09-01T16:32:02-03:00.docx
Aponte a câmera para o
código e acesse o link do
conteúdo ou clique no
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/363098d9-5a92-4fe5-923c-4ff985e00c55/8e7d1512-8371-4fde-b76f-bef782fabeb5.png
Agora, por meio de um infográfico interativo, aprenda mais sobre os algoritmos e os seus principais
conceitos.
A imagem a seguir possui audiodescrição. Para acessar o recurso, clique aqui
Conteúdo interativo disponível na plataforma de ensino!
https://creator-files.plataforma.grupoa.education/undefined/REVISADO_9107_Audiodescricao_Infografico_Imagem2-2025-09-03T16:21:12-03:00.docx
Conteúdo do Livro
A POO é um paradigma de programação que visa organizar e estruturar o código de maneira mais
intuitiva, simulando a interação entre objetos do mundo real. Ao simular entidades com atributos e
comportamentos próprios, a POO permite ao desenvolvedor representar problemas complexos por
meio de soluções modulares e reutilizáveis. Essa estruturação favorece não apenas a clareza e a
manutenção do código, mas também aproxima a lógica computacional da realidade observada,
facilitando o desenvolvimento de aplicações mais robustas e coerentes (Horstmann, 2009).
Dentro desse paradigma, conceitos como classes, métodos e objetos são centrais. As classes
funcionam como moldes que definem os atributos e comportamentos dos objetos, enquanto os
métodos representam as ações que esses objetos podem realizar. Ao empregar esses elementos de
forma coordenada, o programador consegue construir sistemas organizados e sustentáveis (Arnold;
Gosling; Holmes, 2005).
No capítulo Introdução a classes, objetos e métodos, base teórica desta Unidade de Aprendizagem,
você vai aprender o que são e como utilizar as classes, métodos e objetos, além de exemplos
práticos em Java.
Boa leitura.
Os elementos gráficos deste capítulo possuem audiodescrição. Para acessar o recurso,
clique aqui
https://creator-files.plataforma.grupoa.education/undefined/REVISADO_9107_Audiodescricao_Conteudo_Livro-2025-09-01T16:36:08-03:00.docx
PROGRAMAÇÃO
ORIENTADA A
OBJETOS
OBJETIVOS DE APRENDIZAGEM
> Definir classes, objetos e métodos.
> Construir uma classe com seus elementos, com auxílio de uma linguagem
de programação orientada a objetos.
> Descrever a criação de objetos por meio da linguagem Java.
Introdução
A programação orientada a objetos (POO) proporciona uma maneira mais es-
truturada de desenvolver software, tornando-o mais fácil de manter, modificar
e reutilizar. Com a POO, é possível modelar objetos do mundo real e resolver
problemas complexos de forma eficiente e organizada.
Uma classe é um conceito fundamental que representa um modelo ou uma
descrição abstrata de um objeto. Ela é usada como um plano ou um molde
para criar objetos específicos durante a execução de um programa. Uma classe
encapsula dados (atributos) e comportamentos (métodos) relacionados numa
única unidade lógica. Ela define a estrutura, o estado inicial e o comportamento
que os objetos derivados dessa classe terão. Já os objetos são instâncias
concretas de uma classe, ou seja, são criados a partir da classe e possuem
características individuais.
Neste capítulo, você vai aprender os conceitos e a prática sobre como
construir classes, objetos e métodos usando a linguagem Java.
Introdução a classes,
objetos e métodos
Nicolli Souza Rios Alves
Classes, objetos e métodos
A POO é um paradigma de programação que organiza o código em torno de
objetos, que são instâncias de classes. Essa abordagem permite criar estru-
turas de software mais modulares, flexíveis e fáceis de entender e manter.
Na POO, o conceito de classe aborda uma estrutura fundamental que define
as propriedades e comportamentos de um objeto (HORSTMANN, 2009). Ela
serve como um modelo ouplano para criar instâncias específicas de objetos.
É importante ressaltar que uma classe é uma abstração lógica. Somente
quando um objeto dessa classe é criado é que existe uma representação
física dela na memória (HORSTMANN, 2009). Além disso, vale lembrar que os
métodos e variáveis que compõem uma classe são chamados de membros da
classe. Os membros de dados também são chamados de variáveis de instância.
Na linguagem de programação Java, uma classe é declarada usando-se a
palavra-chave class, seguida pelo nome da classe. Vamos considerar uma
forma geral simples para definir uma class:
class nome da classe {
// declara atributos
tipo atributo1;
tipo atributo2;
// ...
tipo variavelN;
// declara metodos
tipo metodo1(parametros) {
// corpo do método
}
tipo metodo2(parametros) {
// corpo do método
}
// ...
tipo metodoN(parametros) {
// corpo do método
}
}
Introdução a classes, objetos e métodos2
É muito importante levar em consideração que, para uma classe ser bem
projetada, precisa agrupar informações que são logicamente conectadas
(ARNOLD; GOSLING; HOLMES, 2005). Assim, não faz sentido, por exemplo, ter
uma classe que armazena nome e e-mail, além de previsão do tempo, variação
do dólar ou qualquer outra informação não relacionada.
Na POO, temos public class e private class. Esses são mo-
dificadores de acesso utilizados para controlar a visibilidade de uma
classe (SCHILDT, 2015). Uma classe declarada como public é acessível a partir
de qualquer lugar no programa. Isso significa que outras classes podem acessar,
estender (herdar) e criar instâncias dessa classe. Por exemplo:
public class MinhaClasse {
// Definição da classe
}
Por sua vez, uma classe declarada como private é acessível somente dentro
da própria classe em que foi declarada. Ela não pode ser acessada de fora da
classe, nem mesmo por outras classes no mesmo pacote. Geralmente, classes
declaradas como private são utilizadas para auxiliar na implementação interna
de uma classe principal. Por exemplo:
public class MinhaClasse {
private class ClasseAuxiliar {
// Definição da classe auxiliar
}
// Resto da definição da classe principal
}
Nesse exemplo, a classe ClasseAuxiliar só pode ser acessada dentro
da classe MinhaClasse. Ela não é visível fora dessa classe e não pode ser
estendida ou instanciada por outras classes.
É importante lembrar que o uso de classes private é menos comum que
o uso de classes public ou outras combinações de modificadores de acesso.
Classes private geralmente são utilizadas para encapsular lógica interna e
fornecer uma estrutura mais organizada para a classe principal, mantendo a
implementação oculta e protegida de acesso externo (SCHILDT, 2015).
Introdução a classes, objetos e métodos 3
Como citamos anteriormente, objetos são criados a partir de uma classe,
que é uma estrutura que define suas propriedades e comportamentos (HORST-
MANN, 2009). As propriedades de um objeto, também chamadas de atributos,
são características que descrevem seu estado atual. Uma classe Celular,
por exemplo, pode ter atributos como cor, modelo, marca e capacidade de
armazenamento.
Além das propriedades, os objetos também possuem comportamentos,
que são ações que eles podem executar. Esses comportamentos são definidos
por métodos, que são funções dentro de uma classe. Um objeto da classe
Celular, por exemplo, pode ter métodos como telefonar e fotografar.
Em POO, um método é uma função associada a uma classe ou objeto que
define o comportamento ou ações que o objeto pode executar. Os métodos
permitem interagir e modificar o estado de um objeto, bem como realizar
cálculos e retornar valores específicos (HORSTMANN, 2009).
Nesse âmbito, uma coisa importante de aprender é o método construtor.
Trata-se de um tipo especial de método utilizado para criar e inicializar objetos
a partir de uma classe. O objetivo principal de um construtor é garantir que
um objeto seja criado com um estado inicial consistente e válido.
Em Java, um construtor é declarado com o mesmo nome da classe e não
possui um tipo de retorno, nem mesmo void. Ele é invocado automaticamente
quando um objeto é criado utilizando a palavra-chave new.
As principais características de um método construtor são (SCHILDT, 2015):
� Nome igual ao nome da classe — um construtor recebe o mesmo nome
que a classe em que está declarado. Isso permite que o compilador
identifique qual construtor deve ser chamado quando um objeto é
criado.
� Ausência de tipo de retorno — ao contrário de outros métodos, um
construtor não apresenta um tipo de retorno definido. Ele é responsável
apenas por inicializar o objeto.
� Habilitação para parâmetros — um construtor pode receber parâmetros,
permitindo que valores sejam passados durante a criação do objeto.
Isso possibilita uma personalização e flexibilidade na inicialização
dos objetos.
� Inicialização de atributos — dentro de um construtor, é comum atribuir
valores iniciais aos atributos do objeto, garantindo que estejam num
estado válido desde o início.
Introdução a classes, objetos e métodos4
� Construtores-padrão — se nenhum construtor for explicitamente de-
clarado numa classe, o compilador Java cria automaticamente um
construtor-padrão sem parâmetros. Esse construtor-padrão inicializa
os atributos com valores-padrão ou nulos.
� Sobrecarga de construtores — é possível ter múltiplos construtores
na mesma classe com diferentes parâmetros. Isso é conhecido como
sobrecarga de construtores e permite a criação de objetos com dife-
rentes configurações iniciais.
A utilização de construtores é importante para garantir que os objetos
sejam inicializados corretamente e estejam em estado válido antes de serem
utilizados (HORSTMANN, 2009). Assim, proporcionam uma forma estruturada
de criar objetos e configurar seus atributos, facilitando a criação de um código
organizado, legível e reutilizável.
Suponha que temos uma classe chamada Funcionario, que define os
atributos nome e idade e os métodos associados a eles, conforme mostrado
a seguir:
public class Funcionario {
// Atributos
private String nome;
private int idade;
// Método construtor
public Funcionario(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
// Métodos
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
Introdução a classes, objetos e métodos 5
public void setIdade(int idade) {
this.idade = idade;
}
public int getIdade() {
return idade;
}
public void fazerAniversario() {
idade++;
}
}
Nesse exemplo, a classe Funcionario possui dois atributos: nome e
idade. Esses atributos descrevem o estado de uma pessoa específica. Na
classe ainda temos o método construtor, além de outros quatro métodos, que
são getters e setters. Esses métodos são comumente utilizados em POO para
acessar e modificar os valores dos atributos de uma classe. Eles oferecem
uma maneira de interagir com os atributos encapsulados da classe, seguindo
o princípio do encapsulamento.
Os getters (métodos de obtenção) são responsáveis por retornar o valor de
um atributo específico. Geralmente, têm o tipo de retorno correspondente ao
tipo do atributo que estão recuperando. Nesse exemplo, o método getNome
retorna uma string correspondente ao nome do funcionário.
Os setters (métodos de configuração) são responsáveis por definir (ou
modificar) o valor de um atributo específico. Geralmente, recebem um pa-
râmetro correspondente ao novo valor a ser atribuído ao atributo. Nesse
exemplo, o método setNome recebe uma string correspondente ao novo
nome do funcionário e atualiza o valor do atributo nome.
Ao usar esses métodos getter e setter, a classe pode controlar como os
atributos são acessados e modificados, garantindo assim a encapsulação dos
dados e o controle sobre as operações realizadas sobre eles (HORSTMANN,
2009).Isso é importante para manter a integridade dos dados e aplicar vali-
dações ou lógica adicional, se necessário.
Como exemplo, ao acessar o atributo nome de um objeto da classe Fun-
cionario, em vez de acessá-lo diretamente (funcionario.nome), é preferível
usar o método getter getNome(). Dessa forma, é possível adicionar lógica
Introdução a classes, objetos e métodos6
de validação, restrições de acesso ou outras operações necessárias antes de
retornar o valor do atributo.
Da mesma forma, ao modificar o atributo idade de um objeto da classe
Funcionario, em vez de atribuir diretamente um novo valor (funcionario.
idade = 30), é preferível usar o método setter setIdade(). Dessa forma,
é possível adicionar lógica de validação, restrições ou outras operações
necessárias antes de atualizar o valor do atributo.
Nesse mesmo exemplo da classe Funcionario, temos um método cha-
mado fazerAniversario que incrementa a idade do funcionário em 1. Esse
método não possui parâmetro algum e não retorna valor algum (tipo void).
Ele incrementa a idade do objeto Funcionario em 1.
Agora, vamos criar um objeto da classe Funcionario e interagir com ele:
public class Main {
public static void main(String[] args) {
// Criando uma instância da classe Funcionario
Funcionario funcionario1 = new Funcionario("João", 30);
// Obtendo e exibindo os valores dos atributos
System.out.println("Nome: " + funcionario1.getNome());
System.out.println("Idade: " + funcionario1.getIdade());
// Criando outro objeto Funcionario
Funcionario funcionario2= new Funcionario("Maria", 25);
System.out.println("Nome: " + funcionario2.getNome());
System.out.println("Idade: " + funcionario2.getIdade());
// Fazendo aniversário do funcionario1
funcionario1.fazerAniversario();
System.out.println("Nova idade: " + funcionario1.
getIdade());
}
}
Introdução a classes, objetos e métodos 7
Nesse exemplo, criamos um objeto Funcionario chamado funciona-
rio1 com nome "João" e idade 30 e outro objeto Funcionario chamado
funcionario2 com nome "Maria" e idade 25. Em seguida, exibimos os nomes
e as idades iniciais do objeto.
Depois disso, chamamos o método fazerAniversario do objeto fun-
cionario1. Esse método incrementa a idade em 1. Em seguida, exibimos
a nova idade do objeto funcionario1. A Figura 1 mostra a resultado da
execução desse programa.
Figura 1. Saída da execução do programa no Visual Studio Code.
Essa abordagem de criar objetos a partir de uma classe permite modelar
e representar entidades individuais com suas próprias características e com-
portamentos. Cada objeto tem seu próprio estado e pode ser manipulado
independentemente dos demais objetos da mesma classe. Isso proporciona
flexibilidade e reutilização de código na POO (ARNOLD; GOSLING; HOLMES,
2005).
Agora que aprendemos os conceitos de classes, métodos e objetos, vamos
entendê-los na forma de um exemplo prático.
Construção de classes
Para fixar melhor os conceitos aprendidos, vamos estudar um exemplo que
utiliza classes, métodos e objetos. Para isso, vamos construir em Java uma
classe simples chamada Hospital e entender cada etapa da sua construção:
public class Hospital {
// Atributos
private String nome; // Nome do hospital
private int capacidade; // Capacidade de leitos do hospital
private boolean possuiUTI; // Indica se o hospital pos-
sui UTI
Introdução a classes, objetos e métodos8
// Método construtor
public Hospital(String nome, int capacidade, boolean
possuiUTI) {
this.nome = nome;
this.capacidade = capacidade;
this.possuiUTI = possuiUTI;
}
// Métodos
// Realiza o atendimento de um paciente no hospital
public void realizarAtendimento(String paciente) {
System.out.println("O paciente " + paciente + " está
sendo atendido no hospital " + nome);
}
// Adiciona um leito ao hospital
public void adicionarLeito() {
capacidade++;
System.out.println("Foi adicionado mais um leito ao
hospital " + nome);
}
// Verifica se o hospital possui UTI
public void verificarDisponibilidadeUTI() {
if (possuiUTI) {
System.out.println("O hospital " + nome + " possui
UTI");
} else {
System.out.println("O hospital " + nome + " não
possui UTI");
}
}
// Getters e Setters
Introdução a classes, objetos e métodos 9
// Retorna o nome do hospital
public String getNome() {
return nome;
}
// Define o nome do hospital
public void setNome(String nome) {
this.nome = nome;
}
// Retorna a capacidade de leitos do hospital
public int getCapacidade() {
return capacidade;
}
// Define a capacidade de leitos do hospital
public void setCapacidade(int capacidade) {
this.capacidade = capacidade;
}
// Verifica se o hospital possui UTI
public boolean isPossuiUTI() {
return possuiUTI;
}
// Define se o hospital possui UTI
public void setPossuiUTI(boolean possuiUTI) {
this.possuiUTI = possuiUTI;
}
}
Agora, vamos entender cada parte da construção da classe Hospital:
� Atributos — a classe Hospital possui três atributos privados: nome
(representando o nome do hospital), capacidade (indicando o nú-
mero de leitos disponíveis) e possuiUTI (um booleano que indica se
o hospital possui UTI).
Introdução a classes, objetos e métodos10
� Construtor —é responsável por inicializar os atributos da classe. O
construtor recebe como parâmetros o nome, a capacidade e a informa-
ção sobre a UTI, e atribui esses valores aos atributos correspondentes.
� Métodos — a classe Hospital possui três métodos além do construtor.
O método realizarAtendimento recebe o nome do paciente como
parâmetro e imprime uma mensagem informando que o paciente está
sendo atendido no hospital específico. O método adicionarLeito
incrementa a capacidade do hospital em 1 leito e exibe uma mensagem
informando que um novo leito foi adicionado. O método verificar-
DisponibilidadeUTI verifica se o hospital possui UTI e exibe uma
mensagem informando a disponibilidade.
� Getters e setters — são métodos que permitem acessar e modificar
os atributos privados da classe. São usados para obter ou alterar os
valores dos atributos nome, capacidade e possuiUTI.
Com essa classe Hospital, é possível criar objetos representando dife-
rentes hospitais, definir seus atributos e chamar os métodos para realizar
ações específicas, como atender pacientes, adicionar leitos e verificar a
disponibilidade de UTI.
Agora que aprendemos a utilizar os métodos, vamos compreender como
instanciar objetos dessas classes e usar esses métodos.
Criação de objetos
Dentro da POO, uma instância de objeto é a criação concreta de um objeto a
partir de uma classe. Uma classe, por sua vez, serve como um modelo ou uma
descrição que define os atributos e comportamentos de um objeto, enquanto
uma instância de objeto é um objeto específico que foi criado a partir dessa
classe (HORSTMANN, 2009).
Quando uma classe é instanciada, um novo objeto é criado na memória,
ocupando um espaço separado e contendo seus próprios valores de atributos
e estado. Cada instância de objeto possui seu próprio conjunto de atributos,
independentes de outras instâncias da mesma classe.
Considere, por exemplo, a classe Funcionario que definimos anterior-
mente. Podemos criar várias instâncias de objetos dessa classe, cada qual
representando um funcionário diferente, com seu próprio nome e idade:
Introdução a classes, objetos e métodos 11
Funcionario funcionario1 = new Funcionario ("Jorge", 32);
// Instância de objeto 1
Funcionario funcionario2 = new Funcionario ("Natalia", 27);
// Instância de objeto 2
Funcionario funcionario3 = new Funcionario ("Pedro", 41);
// Instância de objeto 3
Nesse exemplo, cada linha de código cria uma nova instância de objeto da
classe Funcionario usando o operador new. Cada instância é armazenada
numa variável separada (funcionario1, funcionario2 e funcionario3).
Ademais,cada instância de objeto possui seu próprio conjunto de atributos
(nome e idade) que podem ser acessados e modificados independentemente
das outras instâncias. Podemos, por exemplo, chamar métodos ou modificar
atributos de uma instância específica:
System.out.println(funcionario1.getNome()); // Saída: Jorge
funcionario2.setNome("Ana");
System.out.println(funcionario2.getNome()); // Saída: Ana
As instâncias de objetos permitem que trabalhemos com dados específicos
e realizemos ações relacionadas a cada objeto individualmente (HORSTMANN,
2009). Cada instância é única, com seu próprio estado e comportamento,
permitindo uma modelagem mais precisa e flexível de um sistema orientado
a objetos.
Retornando ao exemplo de construção de classe apresentado anterior-
mente, vamos criar um objeto da classe Hospital:
// Método main
public static void main(String[] args) {
// Criando um objeto da classe Hospital
Hospital hospital = new Hospital("Hospital ABC", 100,
true);
// Acessando os atributos e chamando os métodos do
objeto
System.out.println("Nome do hospital: " + hospital.
getNome());
System.out.println("Capacidade do hospital: " + hos-
pital.getCapacidade());
Introdução a classes, objetos e métodos12
hospital.realizarAtendimento("João");
hospital.adicionarLeito();
hospital.verificarDisponibilidadeUTI();
// Modificando os atributos do objeto
hospital.setNome("Hospital Santo Antônio");
hospital.setCapacidade(152);
hospital.setPossuiUTI(false);
// Exibindo os atributos atualizados
System.out.println("Novo nome do hospital: " + hos-
pital.getNome());
System.out.println("Nova capacidade do hospital: " +
hospital.getCapacidade());
hospital.verificarDisponibilidadeUTI();
}
}
Neste exemplo, o método main cria um objeto da classe Hospital cha-
mado hospital utilizando o construtor da classe. Em seguida, esse método
acessa os atributos do objeto utilizando os métodos getters e exibe as in-
formações na tela.
O método main também chama os outros métodos da classe Hospital,
como realizarAtendimento, adicionarLeito e verificarDisponibi-
lidadeUTI, a fim de realizar algumas operações com o objeto. Em seguida,
esse método modifica os atributos do objeto utilizando os métodos setters e
exibe as informações atualizadas. A Figura 2 mostra a resultado da execução
desse programa.
Figura 2. Saída da execução do programa no Visual Studio Code.
Introdução a classes, objetos e métodos 13
Assim, o método main nos permite testar e interagir com os recursos da
classe Hospital e seus objetos, demonstrando o uso dos atributos, métodos,
getters e setters.
Ao instanciar objetos em Java, é recomendado seguir algumas boas
práticas para garantir um código organizado, legível e de fácil ma-
nutenção. Eis a seguir algumas boas práticas ao instanciar objetos em Java
(SCHILDT, 2015):
� Utilize nomes significativos para as variáveis de referência — dê nomes des-
critivos às variáveis que armazenam as referências aos objetos. Isso ajuda a
entender o propósito do objeto e facilita a leitura e manutenção do código.
� Utilize a palavra-chave new para criar instâncias de objetos — a palavra-chave
new é usada para criar novas instâncias de classes em Java. Certifique-se de
utilizá-la ao criar objetos, para evitar erros de compilação.
� Evite criar objetos desnecessários — crie objetos somente quando necessário.
Evite criar objetos temporários ou objetos que não serão utilizados poste-
riormente, pois isso pode causar um consumo desnecessário de recursos.
� Mantenha o escopo das variáveis o mais restrito possível — declare as vari-
áveis de referência no escopo em que serão usadas. Isso evita vazamentos
de memória e facilita a compreensão do código, pois as variáveis são usadas
somente onde são necessárias.
� Utilize interfaces como tipo de referência quando possível — ao declarar
variáveis de referência, sempre que possível utilize interfaces em vez de
classes concretas. Isso permite maior flexibilidade, facilitando a substituição
de implementações e tornando o código mais modular.
� Utilize construtores apropriados — ao instanciar objetos, utilize construtores
apropriados para configurar os valores iniciais dos objetos. Se uma classe
possui vários construtores, escolha o mais adequado ao contexto e aos re-
quisitos do objeto a ser criado.
� Utilize métodos de fábrica (Factory Methods) quando apropriado — em alguns
casos, é benéfico utilizar métodos de fábrica estáticos para criar objetos.
Esses métodos encapsulam a lógica de criação do objeto e podem retornar
instâncias de subclasses ou objetos pré-configurados de acordo com deter-
minados parâmetros.
� Considere o uso de padrões de projeto — alguns padrões de projeto, como
Singleton, Factory Method, Builder, entre outros, fornecem abordagens pa-
dronizadas para a criação de objetos. Ao aplicar esses padrões, você pode
obter uma criação mais flexível e controlada de objetos.
Seguindo essas boas práticas, podemos ter um código mais limpo, legível e
com boa manutenibilidade ao instanciar objetos em Java.
Introdução a classes, objetos e métodos14
Neste capítulo, exploramos os conceitos fundamentais de classes, métodos
e objetos na POO. Aprendemos que as classes são estruturas que definem os
atributos e comportamentos de um determinado tipo de objeto. Os métodos,
por sua vez, representam as ações que os objetos podem executar e permitem
a interação entre eles. Os objetos são instâncias das classes, ou seja, são
entidades concretas que podem ser criadas e manipuladas durante a execução
do programa. Compreender esses conceitos é essencial para construir pro-
gramas estruturados, modulares e reutilizáveis. Ao aplicar corretamente os
princípios da POO, podemos desenvolver sistemas mais flexíveis, escaláveis
e de fácil manutenção.
Referências
ARNOLD, K.; GOSLING, J.; HOLMES, D. The Java programming language. 4th. ed. London:
Addison Wesley Professional, 2005.
HORSTMANN, C. Conceitos de computação com Java. 5. ed. Porto Alegre: Bookman, 2009.
SCHILDT, H. Java para iniciantes: crie, compile e execute programas Java rapidamente.
6. ed. Porto Alegre: Bookman, 2015.
Leituras recomendadas
BLOCH, J. Effective Java. 2nd. ed. London: Prentice, 2017.
ESTEVÃO. Como criar minha primeira classe em Java. DEVMEDIA, 2019. Disponível em:
https://www.devmedia.com.br/como-criar-minha-primeira-classe-em-java/38940.
Acessado em 26 de maio de 2023.
FINEGAN, E.; LIGUORI, R. OCA Java SE 8: guia de estudos para o exame 1Z0-808. Porto
Alegre: Bookman, 2018.
REGES, S.; STEPP, M. Building Java programs: a back to basics approach. 4th. ed. London:
Pearson, 2014.
RONALDO. Aprender Java: boas práticas para um bom projeto de software. DEVMEDIA,
2013. Disponível em: https://www.devmedia.com.br/aprender-java-boas-praticas-
-para-um-bom-projeto-de-software/29713. Acesso em: 3 jun. 2023.
Os links para sites da web fornecidos neste capítulo foram todos
testados, e seu funcionamento foi comprovado no momento da
publicação do material. No entanto, a rede é extremamente dinâmica; suas
páginas estão constantemente mudando de local e conteúdo. Assim, os edito-
res declaram não ter qualquer responsabilidade sobre qualidade, precisão ou
integralidade das informações referidas em tais links.
Introdução a classes, objetos e métodos 15
Dica do Professor
Projetar um software é como projetar uma casa. Tanto a engenharia civil quanto a de software têm
um esquema ou desenho. Na engenharia civil, é chamado de desenho arquitetônico ou planta; na
engenharia de software, de arquitetura ou design, todos incluídos na fase de projeto. Logo, é
essencial saber interpretar tais desenhos.
Na engenharia de software, o projeto define não apenas a estrutura, mas também os componentes
e a forma como eles interagem. Essa representação é fundamental para garantir que o sistema
atenda aos requisitos previamente levantados, respeitando critérios de qualidade. Assimcomo um
engenheiro civil prevê detalhes da obra para evitar problemas futuros, o projetista de software
precisa antecipar cenários técnicos, funcionais e lógicos (Sommerville, 2011).
Nesta Dica do Professor, aprenda a implementar uma classe denominada “Media”, definindo
atributos e métodos para calcular a média aritmética entre duas notas. Será utilizada uma caixa de
mensagens para imprimir o resultado. O exemplo será realizado por meio da importação da classe
JOptionPane do pacote swing do Java, com o uso da ferramenta Astah Community, que utiliza as
notações UML (linguagem unificada de modelagem).
As imagens do vídeo a seguir possuem audiodescrição. Para acessar o recurso,
clique aqui
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://creator-files.plataforma.grupoa.education/undefined/REVISADO_9107_Audiodescricao_Dica_Professor-2025-09-01T16:40:05-03:00.docx
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/b24abb8daf3af45078ff6415eb69fc6b
Exercícios
1)
O conceito de encapsulamento está intimamente ligado à segurança e à organização interna
dos dados em POO, permitindo esconder os detalhes de implementação.
Analise o código a seguir:
public class Conta {
private double saldo;
public void depositar(double valor) {
if (valor > 0) saldo += valor;
}
public double getSaldo() {
return saldo;
}
}
Agora, assinale a alternativa que descreve corretamente uma característica do
encapsulamento em Java.
A) O atributo saldo é público e acessível diretamente fora da classe.
B) O método depositar é responsável por criar novas instâncias de conta.
C) O encapsulamento permite que o saldo seja acessado somente por métodos definidos na
própria classe.
D) getSaldo() invalida o princípio do encapsulamento ao expor o valor do atributo.
E) O método depositar deve, obrigatoriamente, retornar o novo saldo para manter o
encapsulamento.
As práticas modernas de desenvolvimento em Java valorizam o uso de construtores
personalizados e sobrecarregados, o que permite versatilidade na criação de objetos.
Considere o trecho de código abaixo:
public class Produto {
private String nome;
private double preco;
2)
public Produto() {
this.nome = "Sem nome";
this.preco = 0.0;
}
public Produto(String nome, double preco) {
this.nome = nome;
this.preco = preco;
}
}
Agora, assinale a alternativa que descreve corretamente um conceito avançado relacionado
à sobrecarga de construtores.
A) O construtor-padrão com parâmetros sobrescreve obrigatoriamente o construtor sem
parâmetros.
B) A classe Produto viola o encapsulamento por não declarar métodos get e set.
C) O uso de dois construtores com assinaturas diferentes caracteriza a sobrecarga, que permite
múltiplas formas de instanciar objetos.
D) A palavra-chave this impede a criação de instâncias com valores dinâmicos.
E) O compilador não reconhece mais de um construtor dentro da mesma classe.
3)
O encapsulamento é um dos pilares da POO e representa uma barreira lógica entre o estado
interno de um objeto e o ambiente externo. Ao adotar métodos acessores, como get e set, o
programador é capaz de controlar o acesso aos dados e proteger a integridade da aplicação.
Em uma aplicação orientada a objetos desenvolvida em Java, foi necessário restringir o
acesso direto aos atributos de uma classe para garantir segurança e controle dos dados.
Diante desse cenário, assinale a alternativa que justifica corretamente a adoção de métodos
getter e setter em uma classe Java:
A) Getters e setters tornam o código mais extenso e, por isso, são usados apenas como boa
prática estética.
B) Esses métodos permitem acesso direto aos atributos públicos, substituindo a necessidade de
construtores.
C) O uso de métodos acessores compromete a modularidade, mas é exigido pelo compilador em
tempo de execução.
D) Esses métodos permitem que atributos privados sejam lidos ou modificados de maneira
controlada, aplicando regras de validação, se necessário.
E) Getters e setters são utilizados apenas quando os atributos precisam ser herdados por
subclasses.
4)
Compreender a estrutura e o comportamento de uma classe em Java é essencial para
projetar sistemas orientados a objetos robustos. Uma classe bem construída deve refletir a
coesão dos dados e comportamentos, respeitando os princípios da linguagem.
Considerando a estrutura e os conceitos fundamentais de uma classe em Java, analise se as
afirmativas a seguir são verdadeiras (V) ou falsas (F):
( ) A ausência de um construtor explícito impede que objetos sejam instanciados.
( ) A definição de métodos dentro da classe permite que objetos executem comportamentos
específicos.
( ) O uso de classes aninhadas é proibido em Java por razões de segurança e modularidade.
( ) É possível declarar atributos sem inicializá-los, desde que sejam privados.
( ) O uso do modificador class permite a criação de interfaces e classes concretas com a
mesma palavra-chave.
Assinale a alternativa que indica a sequência correta:
A) F – V – F – V – F.
B) V – F – V – F – V.
C) F – F – V – F – V.
D) V – F – F – F – V.
E) F – V – V – V – F.
O ciclo de vida de um objeto em Java envolve criação, uso e descarte, sendo essencial para a
eficiência e estabilidade de um sistema. Compreender as regras que regem a instanciação e o
comportamento dos objetos garante maior domínio sobre a arquitetura da aplicação.
Com base nos conceitos de instanciação e uso de objetos em Java, analise se as afirmativas a
seguir são verdadeiras (V) ou falsas (F):
5)
( ) Objetos em Java podem ser criados por meio do operador new ou diretamente por
chamada ao construtor da classe.
( ) A sobrecarga de métodos permite que métodos com o mesmo nome, mas com diferentes
assinaturas, coexistam em uma classe.
( ) A palavra-chave main deve, obrigatoriamente, ser utilizada em qualquer classe que declare
métodos.
( ) A visibilidade private impede que os próprios métodos da classe modifiquem os atributos
declarados.
( ) Cada objeto instanciado em Java tem seu próprio conjunto de atributos,
independentemente de outras instâncias da mesma classe.
Assinale a alternativa que indica sequência correta:
A) V – F – V – V – F.
B) F – F – V – F – V.
C) V – F – V – F – F.
D) F – V – V – V – V.
E) F – V – F – F – V.
Na prática
A criação de sistemas eficientes e bem estruturados exige a adoção de paradigmas que favoreçam a
organização e a reutilização do código. Entre esses paradigmas, a POO se destaca por permitir que
o desenvolvedor modele soluções inspiradas em entidades do mundo real, promovendo maior
clareza e modularidade no desenvolvimento.
A utilização de classes, atributos e métodos se torna, portanto, uma base sólida para a construção
de aplicações escaláveis e alinhadas às boas práticas de engenharia de software. A POO é um
padrão de desenvolvimento de software suportado por diversas linguagens e muito utilizado no
mercado em diferentes contextos, como aplicativos web, mobile e games (Horstmann, 2009).
Neste Na Prática, acompanhe um exemplo de criação de classes e objetos que reflete na inserção
de elementos na programação.
A imagem a seguir possui audiodescrição. Para acessar o recurso, clique aqui
https://creator-files.plataforma.grupoa.education/undefined/REVISADO_9107_Audiodescricao_Na_Pratica-2025-09-01T16:43:43-03:00.docx
Aponte a câmera para o
código e acesse o link do
conteúdo ou clique no
código para acessar.
https://creator-files.plataforma.grupoa.education/learning-object/63291/Na-Pra_tica-2025-08-11T15:52:41-03:00.png
Saiba mais
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Programação orientada a objetos | explicação simples
Neste vídeo, de um jeito leve e claro, você vai descobrir como funciona a POO, além de ver
exemplos práticos, que fazem sentido no diaa dia.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
ComFAPOO: método de ensino de programação orientada a
objetos baseado em aprendizagem significativa e computação
física
É possível aprender POO de forma prática, usando sensores e dispositivos físicos. Neste artigo,
conheça o método ComFAPOO (computação física para aprendizagem de programação orientada a
objetos), uma abordagem criativa que aproxima teoria e realidade, ideal para quem quer ensinar ou
aprender programação.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
A linguagem de programação orientada a objetos e seus
benefícios
Esse texto revela por que dominar a POO é importante e como esse paradigma vai além da teoria,
transformando a forma de pensar, estruturar e manter sistemas modernos.
https://www.youtube.com/embed/pbb0jzXt_xA?si=WmH_bQQOkjhRrA3T
https://journals-sol.sbc.org.br/index.php/rbie/article/view/2851/2173
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://imasters.com.br/carreira-dev/a-linguagem-de-programacao-orientada-a-objetos-e-seus-beneficios