A Programação Orientada a Objetos, ou mais conhecida como OOPs, é um dos principais pilares do Java que alavancou seu poder e facilidade de uso. Para se tornar um desenvolvedor Java profissional, você deve obter um controle perfeito sobre os vários gostar , Abstração , Encapsulamento e polimorfismo. Por meio deste artigo, darei a você uma visão completa de um dos conceitos mais importantes de OOPs, ou seja, Encapsulamento em Java e como ele é alcançado.
Abaixo estão os tópicos que irei discutir neste artigo:
- Introdução ao Encapsulamento
- Por que precisamos de encapsulamento em Java?
- Benefícios do encapsulamento
- Um exemplo em tempo real
Você também pode passar por esta gravação de onde você pode entender os tópicos de forma detalhada com exemplos.
Introdução ao Encapsulamento
Encapsulamento refere-se ao agrupamento de dados em uma única unidade. É o mecanismo que vincula o código e os dados que ele manipula. Outra forma de pensar sobre o encapsulamento é que ele é um escudo protetor que evita que os dados sejam acessados pelo código fora desse escudo. Neste, as variáveis ou dados de um está oculto de qualquer outra classe e pode ser acessado apenas por meio de qualquer função de membro da própria classe na qual foram declarados.
Agora, vamos pegar o exemplo de uma cápsula médica, onde o medicamento está sempre seguro dentro da cápsula. Da mesma forma, por meio do encapsulamento, os métodos e variáveis de uma classe ficam bem escondidos e seguros.
O encapsulamento em Java pode ser alcançado por:
- Declarando as variáveis de uma classe como privadas.
- Fornecimento de métodos setter e getter públicos para modificar e visualizar os valores das variáveis.
Agora, vamos examinar o código para obter uma melhor compreensão do encapsulamento:
public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}
Como você pode ver no código acima, eu criei uma classe Student que tem um privado nome . Em seguida, criei um getter e um setter para obter e definir o nome de um aluno. Com a ajuda desses métodos, qualquer classe que deseja acessar a variável name tem que fazer isso usando os métodos getter e setter.
Agora vamos ver mais um exemplo e entender o encapsulamento em profundidade. Neste exemplo, a classe Car possui dois campos –name e topSpeed. Aqui, ambos são declarados como privados, o que significa que não podem ser acessados diretamente fora da classe. Temos alguns métodos getter e setter, como getName, setName, setTopSpeed etc., e eles são declarados como públicos. Esses métodos são expostos a “estranhos” e podem ser usados para alterar e recuperar dados do objeto Carro. Temos um método para definir a velocidade máxima do veículo e dois métodos getter para recuperar o valor da velocidade máxima em MPH ou KMHt. Então, basicamente, isso é o que o encapsulamento faz - ele oculta a implementação e nos dá os valores que queremos. Agora, vamos dar uma olhada no código abaixo.
package Edureka public class Car {private String name private double topSpeed public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed (double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed * 1.609344}}
Aqui, o programa principal cria um objeto Car com um determinado nome e usa o método setter para armazenar a velocidade máxima para esta instância. Fazendo isso, podemos obter facilmente a velocidade em MPH ou KMH sem nos preocupar com como a velocidade é convertida na classe Carro.
tipos de funções em sql
package Edureka public class Exemplo {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4.8 litros V8') car.setTopSpeed (201) System.out.println (car. getName () + 'a velocidade máxima em MPH é' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'a velocidade máxima em KMH é' + car.getTopSpeedKMH ())
So, é assim que o encapsulamento pode ser alcançado em Java. Agora, vamos prosseguir e ver por que precisamos do encapsulamento.
Por que precisamos de encapsulamento em Java?
O encapsulamento é essencial em Java porque:
- Ele controla a forma de acessibilidade de dados
- Modifica o código com base nos requisitos
- Nos ajuda a conseguir um casal solto
- Alcança a simplicidade de nosso aplicativo
- Também permite que você altere a parte do código sem interromper qualquer outra função ou código presente no programa
Agora, vamos considerar um pequeno exemplo que ilustra a necessidade de encapsulamento.
class Student {int id String name} public class Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}
No exemplo acima, ele contém duas variáveis de instância como modificador de acesso. Portanto, qualquer classe dentro do mesmo pacote pode atribuir e alterar valores dessas variáveis, criando um objeto dessa classe. Portanto, não temos controle sobre os valores armazenados na classe Aluno como variáveis. Para resolver este problema, encapsulamos a classe Aluno.
Então, esses foram os poucos indicadores que retratam a necessidade do Encapsulamento. Agora, vamos ver alguns benefícios do encapsulamento.
Benefícios do encapsulamento
- Ocultação de dados: Aqui, o usuário não terá ideia sobre a implementação interna da classe. Mesmo o usuário não saberá como a classe está armazenando valores nas variáveis. Ele só estará ciente de que estamos passando os valores para um método setter e que as variáveis estão sendo inicializadas com aquele valor.
- Maior flexibilidade: Aqui, podemos tornar as variáveis da classe somente leitura ou somente gravação, dependendo de nossos requisitos. No caso de você desejar tornar as variáveis como somente leitura, então temos que omitir os métodos setter como setName (),setAge() etc. ou se desejarmos tornar as variáveis somente para gravação, devemos omitir os métodos get como getName (), getAge () etc. do programa acima.
- Reutilização: Também melhora a reutilização e é fácil de alterar com novos requisitos.
Agora que entendemos os fundamentos do encapsulamento, vamos mergulhar no último tópico deste artigo e entender o encapsulamento em detalhes com a ajuda de um exemplo em tempo real.
Um exemplo em tempo real de encapsulamento
Vamos considerar um exemplo de televisão e entender como os detalhes de implementação interna são ocultados da classe externa.Basicamente, neste exemplo, estamos ocultando dados de código interno, ou seja, circuitos do mundo externo pela tampa. Agora em , isso pode ser feito com a ajuda de modificadores de acesso. Os modificadores de acesso definem o acesso ou nível de uma classe, variáveis de construtores etc. Como você pode ver no código a seguir, usei o modificador de acesso privado para restringir o nível de acesso da classe. Variáveis declaradas como privadas são acessíveis apenas dentro da classe Television.
public class Television {private double width private double height private double Screensize private int maxVolume imprimir int volume private boolean power public Television (double width, double height, double screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (canal interno) {switch (canal) {case1: return 34,56 case2: return 54,89 case3: return 73,89 case1: return 94,98} return 0} public int diminuirVolume () {if (0volume) volume ++ return volume}} class test {public static void main (String args []) {Television t = new Television (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () television. // Lança um erro porque a variável é privada e não pode ser acessada fora da classe}}
No exemplo acima, declarei todas as variáveis como privadas e métodos, construtores e classe como públicas. Aqui, construtores, métodos podem ser acessados fora da classe. Quando eu crioum objetoda classe Television, ele pode acessar os métodos e construtores presentes na classe, enquanto as variáveis declaradas com o modificador de acesso privado ficam ocultas. É por isso que quando você tenta acessar variável de largura no exemplo acima, ele jogaum erro. É assim que os detalhes de implementação internos são ocultados das outras classes. É assim que o encapsulamento é obtido em Java.
Isso nos leva ao final deste artigo sobre “Encapsulamento em Java”. Espero que você tenha achado informativo e tenha ajudado a agregar valor ao seu conhecimento. Se você deseja aprender mais sobre Java, você pode consultar o
Agora que você entendeu 'o que é encapsulamento em Java', verifique o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso de certificação e treinamento Java J2EE e SOA da Edureka é projetado para estudantes e profissionais que desejam ser um desenvolvedor Java. O curso foi elaborado para dar a você uma vantagem inicial na programação Java e treiná-lo para os conceitos básicos e avançados de Java, juntamente com várias estruturas Java como Hibernate e Spring.
Tem alguma questão para nós? Mencione isso na seção de comentários deste blog “Encapsulation in Java” e entraremos em contato com você o mais breve possível.