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

Conteúdo do Curso

Java OOP

Java OOP

1. Como Trabalhar com IDE?
2. Poo
3. Interface

book
Princípios da POO: Abstração

Abstração

Chegamos 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. No entanto, isso pode parecer complexo neste momento. Vamos começar analisando a definição:

Por exemplo, temos uma classe chamada Person,, e muitas classes diferentes são derivadas dela. Person possui vários campos e métodos que são comuns a todas as classes. No entanto, quando temos uma classe chamada BasketballPlayer,, a característica height torna-se crucial, enquanto para uma classe como Driver, height é irrelevante e não importante. É aí que a abstração entra em cena. Herdando de uma abstração, podemos tornar o parâmetro height opcional, assim não precisamos utilizá-lo onde não for necessário.

Isso pode parecer complexo, então vamos passar para um exemplo:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

A classe Car não representa algo específico. Não existe apenas um Car; existem sedãs, caminhões, tratores. Portanto, dependemos da abstração chamada Car. Para simplificar ainda mais: Car é um modelo a partir do qual criamos classes de carros específicas.

Atenção à sintaxe:

Esta é 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 possui corpo; esta é sua principal característica. Subclasses de uma classe abstrata irão sobrescrever esse método abstrato para definir sua própria implementação, utilizando polimorfismo.

Vamos analisar mais de perto o que é uma classe abstrata:

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

Classes abstratas nos libertam de lidar apenas com "objetos"; elas nos fornecem um estado básico e comportamento. No exemplo dos carros, cada carro deve ter um modelo, ano de fabricação, velocidade máxima e cor. Eles também devem ser capazes de mover e parar. Isso é tudo; a partir daí, você projetará suas classes específicas com base nesse modelo 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 métodos abstratos, mas então ela não teria utilidade. Não será possível instanciar objetos de uma classe abstrata;

  2. Métodos abstratos só podem existir dentro de uma classe abstrata; não é possível criar métodos abstratos fora de uma classe abstrata;

  3. Métodos dentro de uma classe abstrata podem ser métodos abstratos ou métodos com implementação;

  4. Uma classe que herda de uma classe abstrata deve sobrescrever todos os métodos abstratos;

  5. É possível 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 derivadas. Discutiremos isso em mais detalhes ao estudarmos os princípios SOLID.

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

Aqui está o código da captura de tela, reescrito para melhor legibilidade e clareza:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Vamos analisar com mais detalhes o que está escrito acima:

  • Primeiro slide: Criação de uma subclasse Truck que herda da classe abstrataCar. O IDE indica a necessidade de implementar os métodos obrigatórios;

  • Segundo slide: Sobrescrita dos métodos necessários. Por exemplo, será indicado que o Truck começou a se mover e depois parou;

  • Terceiro slide: Criação de um objeto no método main. Atenção à sintaxe utilizada: Car name = new Truck();. O objeto é criado por meio da abstração e finalizado com uma implementação específica. Este conceito é chamado de composição. Em seguida, os valores são atribuídos aos campos conforme necessário e os métodos sobrescritos são chamados.

Voilà! Se tudo ficou claro, o uso de uma classe abstrata foi aprendido.

Resumo

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

1. O que é abstração na Programação Orientada a Objetos?

2. Quais das alternativas a seguir 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?

question mark

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

Select the correct answer

question mark

Quais das alternativas a seguir são verdadeiras sobre abstração?

Select the correct answer

question mark

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

Select the correct answer

question mark

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

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 7

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

Java OOP

Java OOP

1. Como Trabalhar com IDE?
2. Poo
3. Interface

book
Princípios da POO: Abstração

Abstração

Chegamos 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. No entanto, isso pode parecer complexo neste momento. Vamos começar analisando a definição:

Por exemplo, temos uma classe chamada Person,, e muitas classes diferentes são derivadas dela. Person possui vários campos e métodos que são comuns a todas as classes. No entanto, quando temos uma classe chamada BasketballPlayer,, a característica height torna-se crucial, enquanto para uma classe como Driver, height é irrelevante e não importante. É aí que a abstração entra em cena. Herdando de uma abstração, podemos tornar o parâmetro height opcional, assim não precisamos utilizá-lo onde não for necessário.

Isso pode parecer complexo, então vamos passar para um exemplo:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

A classe Car não representa algo específico. Não existe apenas um Car; existem sedãs, caminhões, tratores. Portanto, dependemos da abstração chamada Car. Para simplificar ainda mais: Car é um modelo a partir do qual criamos classes de carros específicas.

Atenção à sintaxe:

Esta é 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 possui corpo; esta é sua principal característica. Subclasses de uma classe abstrata irão sobrescrever esse método abstrato para definir sua própria implementação, utilizando polimorfismo.

Vamos analisar mais de perto o que é uma classe abstrata:

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

Classes abstratas nos libertam de lidar apenas com "objetos"; elas nos fornecem um estado básico e comportamento. No exemplo dos carros, cada carro deve ter um modelo, ano de fabricação, velocidade máxima e cor. Eles também devem ser capazes de mover e parar. Isso é tudo; a partir daí, você projetará suas classes específicas com base nesse modelo 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 métodos abstratos, mas então ela não teria utilidade. Não será possível instanciar objetos de uma classe abstrata;

  2. Métodos abstratos só podem existir dentro de uma classe abstrata; não é possível criar métodos abstratos fora de uma classe abstrata;

  3. Métodos dentro de uma classe abstrata podem ser métodos abstratos ou métodos com implementação;

  4. Uma classe que herda de uma classe abstrata deve sobrescrever todos os métodos abstratos;

  5. É possível 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 derivadas. Discutiremos isso em mais detalhes ao estudarmos os princípios SOLID.

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

Aqui está o código da captura de tela, reescrito para melhor legibilidade e clareza:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Vamos analisar com mais detalhes o que está escrito acima:

  • Primeiro slide: Criação de uma subclasse Truck que herda da classe abstrataCar. O IDE indica a necessidade de implementar os métodos obrigatórios;

  • Segundo slide: Sobrescrita dos métodos necessários. Por exemplo, será indicado que o Truck começou a se mover e depois parou;

  • Terceiro slide: Criação de um objeto no método main. Atenção à sintaxe utilizada: Car name = new Truck();. O objeto é criado por meio da abstração e finalizado com uma implementação específica. Este conceito é chamado de composição. Em seguida, os valores são atribuídos aos campos conforme necessário e os métodos sobrescritos são chamados.

Voilà! Se tudo ficou claro, o uso de uma classe abstrata foi aprendido.

Resumo

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

1. O que é abstração na Programação Orientada a Objetos?

2. Quais das alternativas a seguir 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?

question mark

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

Select the correct answer

question mark

Quais das alternativas a seguir são verdadeiras sobre abstração?

Select the correct answer

question mark

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

Select the correct answer

question mark

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

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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