Resumo: Programação Orientada a Objetos
⚠️ Aviso: Este conteúdo foi gerado com ajuda de Inteligência Artificial (IA) e pode conter erros ou imprecisões.
Sempre verifique a informação antes de utilizar.
🎥 Vídeo no Spotify — gerado por IA com resumos do conteudo.
Útil para uma revisão rápida dos temas tratados na disciplina.
1. Visibilidade e Modificadores de Acesso
A visibilidade, em POO, “indica o nível de acesso aos componentes internos de uma classe”. Ela define quem pode acessar os atributos e métodos de uma classe. Os principais modificadores de visibilidade são:
- Público (+): “A classe atual e todas as outras classes” podem acessar o componente. Componentes públicos são a interface da classe com o mundo exterior.
- Privado (-): Apenas “somente a classe atual” pode acessar o componente. Atributos privados são a forma principal de proteger os dados internos.
- Protegido (#): Permite acesso a “classes no mesmo pacote e subclasses”.
- Sem modificador (default ou package-private): Apenas “classes no mesmo pacote” podem acessar.
Exemplo (Classe Caneta com sinais de visibilidade UML):
classDiagram
class Caneta {
+String modelo
+String cor
-float ponta
-int carga
#boolean tampada
+rabiscar()
-escrever()
#tampar()
#destampar()
}
Explicação:
modeloecorsão públicos, acessíveis por qualquer outra classe.pontaecargasão privados, acessíveis apenas dentro da classe Caneta.tampadaé protegida, acessível pela Caneta, classes no mesmo pacote e subclasses.
2. Encapsulamento
O encapsulamento é um dos pilares da POO e “consiste em ocultar os detalhes internos de uma classe, expondo para os demais objetos somente os dados e métodos necessários por meio de interfaces públicas.” As “interfaces públicas” são os “dados ou métodos que podem ser acessados/chamados por outros objetos”, definindo “o que ele é capaz de fazer sem revelar como faz.”
Benefícios do Encapsulamento:
- Controle de Acesso: “Permite que a classe controle como as variáveis de instância são acessadas ou modificadas, garantindo, por exemplo, que valores inválidos não sejam atribuídos.”
- Flexibilidade e Manutenção: “A implementação da classe pode ser alterada sem impactar as classes que a utilizam, desde que os métodos getters e setters sejam mantidos.”
- Segurança de Dados: “Protege a integridade dos dados, impedindo que sejam expostos ou alterados de forma inadequada.”
3. Métodos Inicializadores (Construtores)
“Além de métodos e atributos, a definição de uma classe pode incluir também inicializadores (construtores, apesar de não construírem nada!) que são operações usadas para inicializar os atributos dos objetos.”
Características dos Construtores:
- Mesmo Nome da Classe: “Inicializadores têm o mesmo nome da classe.”
- Sobrecarga: “Podem haver mais de um, desde que com número e/ou tipos de argumentos diferentes.” Isso permite criar objetos de diferentes maneiras.
Exemplo:
class Caneta {
public String modelo;
public String cor;
// Construtor com dois parâmetros
Caneta(String modelo, String cor) {
this.modelo = modelo;
this.cor = cor;
}
// Construtor com um parâmetro (sobrecarga)
Caneta(String modelo) {
this.modelo = modelo;
}
}
class Main {
public static void main(String[] args) {
Caneta c1 = new Caneta("M1", "Azul"); // Usando o primeiro construtor
Caneta c2 = new Caneta("M2"); // Usando o segundo construtor
}
}
4. Getters e Setters
Getters e Setters são métodos que “permitem o acesso indireto a atributos privados de uma classe.” Eles são uma “manifestação prática do princípio de encapsulamento,” oferecendo “uma maneira segura e controlada de acessar os dados de um objeto.”
Princípio Fundamental:
“Em um contexto ideal, todos os atributos de uma classe são mantidos privados para protegê-los de acessos e modificações não autorizadas. Para acessar ou modificar esses atributos, são utilizados métodos públicos conhecidos como getters e setters.”
4.1. Getters (Acessores)
Propósito: “Permitem a leitura dos valores dos atributos. Eles não modificam os dados, apenas retornam seus valores.”
Convenção de Nomenclatura: Prefixo get seguido pelo nome do atributo com a primeira letra maiúscula.
class Caneta {
private String modelo;
private String cor;
public String getModelo() {
return modelo;
}
public String getCor() {
return cor;
}
}
4.2. Setters (Modificadores)
Propósito: “São usados para modificar os valores dos atributos. Prefixo set seguido pelo nome do atributo com a primeira letra maiúscula.”
class Caneta {
private String modelo;
private String cor;
public void setModelo(String modelo) {
this.modelo = modelo;
}
public void setCor(String cor) {
this.cor = cor;
}
}
4.3. Melhores Práticas com Getters e Setters:
- Validação de Dados: “No setter, sempre valide os dados antes de atribuí-los aos atributos.”
- Nominação Consistente: “Utilize convenções de nomenclatura consistentes.”
- Minimizar o Uso de Setters para Atributos Imutáveis: “Para atributos que não devem ser alterados após a criação do objeto, é recomendável não implementar setters. Em vez disso, os valores podem ser definidos uma única vez através do construtor.”
Em suma, a combinação de visibilidade controlada, encapsulamento, construtores para inicialização e o uso estratégico de getters e setters promove uma “arquitetura de software robusta, flexível e fácil de manter.”
Last updated 15 set. 2025, 18:37 -0300 .