Minutos de Desenvolvimento de Sistemas: Abstração e Encapsulamento na Programação Orientada a Objetos.
Introdução
Hoje vamos começar uma série especial de artigos falando sobre Desenvolvimento de Sistemas, uma área bem “faca na caveira” de Tecnologia da Informação (TI). Na publicação de estreia, vamos abordar abstração e encapsulamento na programação orientada a objetos (POO).
Se você nunca viu o tema, terá oportunidade de aprender e entender os conceitos de uma maneira bem didática. Por outro lado, se você já é veterano da área de TI, poderá ficar conosco para fazer aquela revisão rápida e caprichada. Afinal, recordar é viver. Veja o que vamos abordar:
- Programação Orientada a Objetos
- Abstração
- Encapsulamento
- Mapa Mental
Uma dica: se você vai fazer provas de TI, mas não tem certeza se o tópico cairá, então leia o artigo. Programação orientada a objetos é assunto certo em qualquer prova de Desenvolvimento de Sistemas. As bancas não perdoam.
Contudo, para entender os conceitos de abstração e encapsulamento, recomendamos que você tenha noções básicas de programação. Não precisa ser muito aprofundado: apenas o básico para não ficar perdido em determinados momentos da leitura.
Você deve estar se perguntando: vai demorar muito? Será que valerá a pena? Temos uma boa notícia para te dar: além de escrever para facilitar os seus estudos, vamos também usar o nosso poder de síntese para condensar tudo de forma bem objetiva.
Em outras palavras, embora o artigo seja reduzido, garantimos que você vai gastar apenas alguns minutos preciosos em sua leitura. Então, está preparado? Sem mais delongas, vamos começar.
Tempo de leitura aproximada: 5 a 10 minutos
Programação Orientada a Objetos
Programação orientada a objetos é um paradigma de programação que trabalha com o conceito de objetos. Antes de mais nada, você precisará saber a diferença entre classe e objeto para entendê-lo.
Classe: estrutura que define um conjunto de elementos que possuem as mesmas propriedades e comportamentos. As propriedades denominam-se atributos, enquanto os comportamentos denominam-se métodos.
Objeto: ocorrência de uma classe, ou seja, um elemento da vida real. No jargão computacional, a ocorrência denomina-se instância. Cada um dos objetos (ou instâncias) é único.
Para facilitar a sua vida, vamos dar um exemplo bem clássico que os alunos que estudam POO adoram (e os professores também!). Pense em um carro. Um carro tem cor, ano, potência etc. Além disso, o carro permite acelerar, frear, estacionar etc.
Veja que carro é uma classe. Os atributos são as propriedades que falamos (cor, ano, potência etc.). Por outro lado, os métodos seriam os comportamentos do carro (acelerar, frear, estacionar etc.).
E o que seria um objeto? Pense em um Hyundai HB20, cor cinza, ano 2018, potência 1.0. Esse HB20 é uma ocorrência de um carro. Ou seja, é uma instância. Se você está com dificuldades, pense que classe é algo mais geral, enquanto objeto é algo particular da classe. Perceba também que nem sempre o objeto é concreto.
Classe | Objeto |
---|---|
Inseto | Joaninha |
Time | Flamengo |
Curso | Estratégia Concursos |
Os 4 pilares da POO são abstração, encapsulamento, herança e polimorfismo. No artigo de hoje, vamos falar sobre abstração e encapsulamento. Em breve, teremos outra publicação falando sobre herança e polimorfismo. Fique conosco e não saia daí.
Abstração
O conceito de abstração relaciona-se com a ocultação de detalhes que não sejam necessários no contexto. Em outras palavras, uma classe só deverá se preocupar com os seus atributos e métodos. Além disso, cada um dos atributos e métodos atuam de forma independente dos demais.
Vamos ver um exemplo bem simples na linguagem Java e aproveitar para mostrar como as classes são representadas. Não se preocupe com a sintaxe da linguagem, porque não é nosso objetivo falar sobre Java hoje. Foque em entender os conceitos de abstração (e, posteriormente, encapsulamento).
Na imagem a seguir, temos a classe Conta. Veja que ela possui um atributo, denominado saldo, e 3 métodos, denominados depositar, sacar e consultaSaldo.
Observe que depositar e sacar são ações diferentes. Ao depositar, o saldo da conta é incrementado com o valor. Em contrapartida, o saldo é decrementado ao sacar determinado valor. Em ambos os casos, eles abstraem o que as outras operações realizaram no passado.
Por outro lado, a consulta de saldo não movimenta a conta. Ela apenas exibe o saldo. Em outras palavras, a consulta abstrai os depósitos e saques feitos previamente. O foco é apenas mostrar o valor disponível no momento. Isso é abstração.
Encapsulamento
Depois de falar sobre abstração, vamos abordar o encapsulamento. Ele prega que uma classe não deve expor seus detalhes internos. Esses detalhes dizem respeito apenas à classe. Em outras palavras, propriedades e métodos de uma classe devem ser protegidos de acessos indevidos por outras classes externas.
Qual a melhor forma de proteger o que deve ser acessado ou não por outras classes? A melhor forma é usando modificadores de acesso. Na prática, eles são classificações dos atributos e métodos, de acordo com seu grau de sigilo. Vamos ver rapidamente os principais modificadores:
Modificador | Significado |
---|---|
public (público) | Todos conseguem acessar o atributo ou método. |
private (privado) | Acesso permitido somente dentro da classe em que foi declarado. |
protected (protegido) | Acesso permitido dentro da classe em que foi declarado e nas classes derivadas. |
Um exemplo clássico de encapsulamento ocorre nos métodos getters e setters. Na prática, nós criamos um método get para consultar o valor da propriedade e um método set para alterá-la. Isso evita um acesso direto à propriedade, de modo a preservá-la. Veja:
Lembra da classe Conta? Nós realizamos uma adaptação para incluir os métodos get e set. Observe que o saldo é um atributo privado, ou seja, só pode ser manipulado dentro da própria classe.
A manipulação é feita pelos métodos getSaldo e setSaldo, que são públicos e podem ser acessados por qualquer um. O getSaldo apenas irá retornar o valor de saldo. Por outro lado, o método setSaldo irá redefinir o valor de saldo.
Mapa Mental
Não poderíamos terminar este artigo sem o tradicional mapa mental com os conceitos de abstração e encapsulamento. Aliás, a nossa intuição diz que um grupinho de alunos estava aguardando ansiosamente este momento na leitura. Aproveite bastante, pois esse presente agora é seu.
Esperamos que este mapa mental faça a diferença nos seus estudos. Se você gostou do conteúdo, salve-o nos seus arquivos pessoais. Alternativamente, você também poderá armazenar este artigo para ler e reler quantas vezes quiser.
Conclusão
Hoje falamos sobre abstração e encapsulamento na programação orientada a objetos, o nosso tema de estreia de Desenvolvimento de Sistemas. Conforme mencionamos no início, esse assunto despenca em provas. Ainda bem que você é um concurseiro ligado e ficou conosco até o final.
Recomendamos fortemente agora que você faça muitas questões para treinar. A teoria é importante, mas os exercícios são fundamentais e decisivos para a aprovação. O acesso ao Sistema de Questões do Estratégia Concursos é feito pelo link: https://concursos.estrategia.com/.
Além dos exercícios, não deixe de revisar os conceitos de abstração e encapsulamento periodicamente. As revisões são um artifício essencial para o conteúdo ficar gravado de vez na sua mente. E o nosso mapa mental pode ajudá-lo muito nesse desafio.
Por fim, se você quiser aprofundar o conteúdo ou tirar dúvidas específicas, busque o material do Estratégia Concursos. Nós oferecemos diversos cursos em pdf, videoaulas e áudios para você ouvir onde quiser. Saiba mais por meio do link http://www.estrategiaconcursos.com.br/cursos/.
Bons estudos e até a próxima!
Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Professional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022) e TCE-RJ (2022). Atualmente exerce o cargo efetivo de Auditora de Controle Externo – Tecnologia da Informação no Tribunal de Contas do Estado do Rio de Janeiro (TCE-RJ), além de ser produtora de conteúdo dos Blogs do Estratégia Concursos, OAB e Carreiras Jurídicas.