Conteúdo do Curso
Java OOP
Java OOP
Princí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:
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:
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:
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
- 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;
- Métodos abstratos só podem existir dentro de uma classe abstrata; você não pode criar métodos abstratos fora de uma classe abstrata;
- Métodos dentro de uma classe abstrata podem ser ou métodos abstratos ou métodos com implementações;
- Uma classe que herda de uma classe abstrata deve sobrescrever todos os métodos abstratos;
- Você pode herdar de no máximo uma classe (abstrata ou não abstrata);
- 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
:
Vamos examinar mais detalhadamente o que está escrito acima:
- Primeiro slide: Estamos criando uma subclasse
Truck
que vai herdar da classe abstrataCar
. 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.
Quais das seguintes afirmações são verdadeiras sobre abstração?
Selecione algumas respostas corretas
Tudo estava claro?
Conteúdo do Curso
Java OOP
Java OOP
Princí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:
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:
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:
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
- 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;
- Métodos abstratos só podem existir dentro de uma classe abstrata; você não pode criar métodos abstratos fora de uma classe abstrata;
- Métodos dentro de uma classe abstrata podem ser ou métodos abstratos ou métodos com implementações;
- Uma classe que herda de uma classe abstrata deve sobrescrever todos os métodos abstratos;
- Você pode herdar de no máximo uma classe (abstrata ou não abstrata);
- 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
:
Vamos examinar mais detalhadamente o que está escrito acima:
- Primeiro slide: Estamos criando uma subclasse
Truck
que vai herdar da classe abstrataCar
. 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.
Quais das seguintes afirmações são verdadeiras sobre abstração?
Selecione algumas respostas corretas
Tudo estava claro?