Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Princípios da POO: Abstração | OOP
course content

Conteúdo do Curso

Java OOP

Princípios da POO: AbstraçãoPrincípios da POO: Abstração

Abstração

Chegamos assim ao último, porém muito importante, princípio da POO: Abstração. A palavra "abstração" soa bastante abstrata, e, resumidamente, este princípio nos diz que devemos depender da abstração em vez de uma implementação específica. Porém, isso pode parecer complexo agora. Vamos começar olhando para a definição:

Abstraction is one of the principles of OOP that states that during the design of classes and creation of objects, it's necessary to highlight only the main properties of an entity and discard secondary ones.

Por exemplo, temos uma classe chamada Person, e muitas outras classes são derivadas dela. Person possui diversos campos e métodos comuns a todas as classes. No entanto, quando temos uma classe chamada BasketballPlayer, a característica height (altura) torna-se crucial, enquanto para uma classe como Driver (Motorista), height é irrelevante e não é importante. É aí que a abstração entra em cena. Ao herdar de uma abstração, podemos tornar o parâmetro height opcional, para que não tenhamos que usá-lo onde ele não é necessário.

Pode parecer complexo, então vamos a um exemplo:

java

Car.java

A classe Car não representa algo específico. Não existe apenas um Car; há sedãs, caminhões, tratores. Assim, nós dependemos da abstração chamada Car. Para simplificar ainda mais: Car é um modelo baseado no qual criamos classes de carros específicas.

Preste atenção à sintaxe:

Essa é a sintaxe para declarar uma classe abstrata. Além disso, observe a sintaxe para declarar um método abstrato:

Um método abstrato não tem corpo; essa é a sua principal característica. As subclasses de uma classe abstrata vão sobrescrever esse método abstrato para definir sua própria implementação, usando polimorfismo.

Vamos dar uma olhada mais de perto no que é uma classe abstrata:

An abstract class in Java is like a blueprint for other classes. It can't be instantiated itself, but it defines methods that must be implemented by its subclasses. It's a way to share common methods and enforce structure in related classes.

Note que não podemos criar um objeto de uma classe abstrata; isso resultará em um erro:

As classes abstratas nos libertam de lidar apenas com "objetos"; elas nos fornecem um estado básico e comportamento. Tomando o exemplo de carros, cada carro deve ter um modelo, ano de produção, velocidade máxima e cor. Eles também devem ser capazes de mover-se e parar. Isso é tudo; a partir daí, você projetará suas classes específicas com base neste esquema abstrato.

Regras para criar uma classe abstrata

  1. Uma classe abstrata é uma classe que contém pelo menos um método abstrato. Você pode criar uma classe abstrata sem nenhum método abstrato, mas então ela não serviria a propósito. Você não será capaz de instanciar objetos de uma classe abstrata;
  2. Métodos abstratos só podem existir dentro de uma classe abstrata; você não pode criar métodos abstratos fora de uma classe abstrata;
  3. Métodos dentro de uma classe abstrata podem ser ou métodos abstratos ou métodos com implementações;
  4. Uma classe que herda de uma classe abstrata deve sobrescrever todos os métodos abstratos;
  5. Você pode herdar de no máximo uma classe (abstrata ou não abstrata);
  6. Uma classe abstrata deve representar as propriedades e comportamentos comuns de suas classes herdeiras. Nós discutiremos isso com mais detalhes quando estudarmos os princípios SOLID.

Vamos considerar um exemplo para entender como subclasses devem sobrescrever métodos abstratos herdando de uma classe abstrata, usando o exemplo da classe filha Truck:

Image 1
Image 2
Image 3

Vamos examinar mais detalhadamente o que está escrito acima:

  • Primeiro slide: Estamos criando uma subclasse Truck que vai herdar da classe abstrata Car. Podemos ver que a IDE nos solicita a implementar os métodos requeridos;
  • Segundo slide: Estamos sobrescrevendo os métodos necessários. Por exemplo, escreveremos que o Truck começou a se mover e, em seguida, parou;
  • Terceiro slide: Criamos um objeto no método main. Preste atenção à sintaxe usada: Car name = new Truck();. Começamos a criar o objeto através da abstração e terminamos com uma implementação específica. Isso se chama composição. Então atribuímos valores aos campos conforme necessário e chamamos os métodos sobrescritos.

E voilà! Se você entendeu tudo, aprendeu como usar uma classe abstrata!

Resumo

Abstração é provavelmente o princípio mais desafiador da POO para entender, e é bastante provável que você ainda não tenha compreendido tudo neste momento. Mas não pense que está sozinho nisso. Abstração é um conceito que inicialmente se mostra difícil para a maioria dos desenvolvedores entender. Com o tempo, você passará a compreender melhor como trabalhar eficazmente com abstração e classes abstratas. Abstração é um princípio crucial porque nos permite tornar nossos programas extensíveis e altamente flexíveis.

1. O que é abstração em Programação Orientada a Objetos?
2. Quais das seguintes afirmações são verdadeiras sobre abstração?
3. Qual é o propósito de uma classe abstrata em Java?
4. Como a abstração contribui para a manutenibilidade do código?

O que é abstração em Programação Orientada a Objetos?

Selecione a resposta correta

question-icon

Quais das seguintes afirmações são verdadeiras sobre abstração?

Selecione algumas respostas corretas

Qual é o propósito de uma classe abstrata em Java?

Selecione a resposta correta

Como a abstração contribui para a manutenibilidade do código?

Selecione a resposta correta

Tudo estava claro?

Seção 2. Capítulo 7
course content

Conteúdo do Curso

Java OOP

Princípios da POO: AbstraçãoPrincípios da POO: Abstração

Abstração

Chegamos assim ao último, porém muito importante, princípio da POO: Abstração. A palavra "abstração" soa bastante abstrata, e, resumidamente, este princípio nos diz que devemos depender da abstração em vez de uma implementação específica. Porém, isso pode parecer complexo agora. Vamos começar olhando para a definição:

Abstraction is one of the principles of OOP that states that during the design of classes and creation of objects, it's necessary to highlight only the main properties of an entity and discard secondary ones.

Por exemplo, temos uma classe chamada Person, e muitas outras classes são derivadas dela. Person possui diversos campos e métodos comuns a todas as classes. No entanto, quando temos uma classe chamada BasketballPlayer, a característica height (altura) torna-se crucial, enquanto para uma classe como Driver (Motorista), height é irrelevante e não é importante. É aí que a abstração entra em cena. Ao herdar de uma abstração, podemos tornar o parâmetro height opcional, para que não tenhamos que usá-lo onde ele não é necessário.

Pode parecer complexo, então vamos a um exemplo:

java

Car.java

A classe Car não representa algo específico. Não existe apenas um Car; há sedãs, caminhões, tratores. Assim, nós dependemos da abstração chamada Car. Para simplificar ainda mais: Car é um modelo baseado no qual criamos classes de carros específicas.

Preste atenção à sintaxe:

Essa é a sintaxe para declarar uma classe abstrata. Além disso, observe a sintaxe para declarar um método abstrato:

Um método abstrato não tem corpo; essa é a sua principal característica. As subclasses de uma classe abstrata vão sobrescrever esse método abstrato para definir sua própria implementação, usando polimorfismo.

Vamos dar uma olhada mais de perto no que é uma classe abstrata:

An abstract class in Java is like a blueprint for other classes. It can't be instantiated itself, but it defines methods that must be implemented by its subclasses. It's a way to share common methods and enforce structure in related classes.

Note que não podemos criar um objeto de uma classe abstrata; isso resultará em um erro:

As classes abstratas nos libertam de lidar apenas com "objetos"; elas nos fornecem um estado básico e comportamento. Tomando o exemplo de carros, cada carro deve ter um modelo, ano de produção, velocidade máxima e cor. Eles também devem ser capazes de mover-se e parar. Isso é tudo; a partir daí, você projetará suas classes específicas com base neste esquema abstrato.

Regras para criar uma classe abstrata

  1. Uma classe abstrata é uma classe que contém pelo menos um método abstrato. Você pode criar uma classe abstrata sem nenhum método abstrato, mas então ela não serviria a propósito. Você não será capaz de instanciar objetos de uma classe abstrata;
  2. Métodos abstratos só podem existir dentro de uma classe abstrata; você não pode criar métodos abstratos fora de uma classe abstrata;
  3. Métodos dentro de uma classe abstrata podem ser ou métodos abstratos ou métodos com implementações;
  4. Uma classe que herda de uma classe abstrata deve sobrescrever todos os métodos abstratos;
  5. Você pode herdar de no máximo uma classe (abstrata ou não abstrata);
  6. Uma classe abstrata deve representar as propriedades e comportamentos comuns de suas classes herdeiras. Nós discutiremos isso com mais detalhes quando estudarmos os princípios SOLID.

Vamos considerar um exemplo para entender como subclasses devem sobrescrever métodos abstratos herdando de uma classe abstrata, usando o exemplo da classe filha Truck:

Image 1
Image 2
Image 3

Vamos examinar mais detalhadamente o que está escrito acima:

  • Primeiro slide: Estamos criando uma subclasse Truck que vai herdar da classe abstrata Car. Podemos ver que a IDE nos solicita a implementar os métodos requeridos;
  • Segundo slide: Estamos sobrescrevendo os métodos necessários. Por exemplo, escreveremos que o Truck começou a se mover e, em seguida, parou;
  • Terceiro slide: Criamos um objeto no método main. Preste atenção à sintaxe usada: Car name = new Truck();. Começamos a criar o objeto através da abstração e terminamos com uma implementação específica. Isso se chama composição. Então atribuímos valores aos campos conforme necessário e chamamos os métodos sobrescritos.

E voilà! Se você entendeu tudo, aprendeu como usar uma classe abstrata!

Resumo

Abstração é provavelmente o princípio mais desafiador da POO para entender, e é bastante provável que você ainda não tenha compreendido tudo neste momento. Mas não pense que está sozinho nisso. Abstração é um conceito que inicialmente se mostra difícil para a maioria dos desenvolvedores entender. Com o tempo, você passará a compreender melhor como trabalhar eficazmente com abstração e classes abstratas. Abstração é um princípio crucial porque nos permite tornar nossos programas extensíveis e altamente flexíveis.

1. O que é abstração em Programação Orientada a Objetos?
2. Quais das seguintes afirmações são verdadeiras sobre abstração?
3. Qual é o propósito de uma classe abstrata em Java?
4. Como a abstração contribui para a manutenibilidade do código?

O que é abstração em Programação Orientada a Objetos?

Selecione a resposta correta

question-icon

Quais das seguintes afirmações são verdadeiras sobre abstração?

Selecione algumas respostas corretas

Qual é o propósito de uma classe abstrata em Java?

Selecione a resposta correta

Como a abstração contribui para a manutenibilidade do código?

Selecione a resposta correta

Tudo estava claro?

Seção 2. Capítulo 7
some-alt