O sistema de controle automotivo SisAut foi modelado orientado a objetos. O SisAut possui a classe Veículo, que compartilha seu código-fonte com suas subclasses: Carro e Moto. As subclasses Carro e Moto aproveitam os métodos e atributos da classe Veículo. Em orientação a objeto, o mecanismo pelo qual uma classe pode estender outra classe ou ser estendida por outra classe é:
- A)interface;
Interface define um contrato de métodos, mas não é o mecanismo de uma classe estender outra.
- B)herança;
Correta: herança é o mecanismo pelo qual uma classe pode estender outra e reaproveitar seus atributos e métodos.
- C)pacotes;
Pacotes servem para organizar classes e namespaces, não para estabelecer relação de extensão entre classes.
- D)agregação;
Agregação indica uma relação de todo-parte entre objetos, e não compartilhamento de código por extensão de classe.
- E)encapsulamento.
Encapsulamento protege o acesso aos dados internos, mas não cria a relação de especialização entre classes.
Gabarito: B
Em orientação a objetos, quando uma classe reaproveita atributos e métodos de outra, estamos diante de um caso clássico de herança. É como se a classe “filha” recebesse a base da classe “mãe” e depois pudesse especializar o comportamento sem começar do zero. No enunciado, a classe Veículo é a superclasse, e Carro e Moto aproveitam seu código-fonte, o que é exatamente a ideia de estender uma classe ou ser estendida por ela. A herança permite reutilização de código e organização hierárquica do sistema. Em vez de repetir dados e métodos comuns em Carro e Moto, você centraliza isso em Veículo e deixa as subclasses com suas particularidades. Fica mais limpo, mais fácil de manter e menos sujeito a duplicação, aquele velho inimigo silencioso dos sistemas mal modelados. Por isso o gabarito é a letra B. As demais alternativas tratam de outros conceitos da orientação a objetos: interface serve para definir contrato, agregação para relação entre objetos, encapsulamento para esconder detalhes internos e pacotes para organizar classes, mas nenhuma delas representa o mecanismo de uma classe estender outra. Em doutrina de OO, herança é justamente a relação de generalização/especialização entre classes.