POO - Aula 05 - Herança - Generalização e Especialização.pdf

liliannemaia82 32 views 12 slides Aug 28, 2025
Slide 1
Slide 1 of 12
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12

About This Presentation

Nesta aula sobre Programação Orientada a Objetos (POO), o foco é o conceito de Herança. O material explica como a generalização permite criar classes mais amplas e abstratas, enquanto a especialização define classes filhas com comportamentos específicos. Discutimos a importância da heranç...


Slide Content

Herança: Especialização
e Generalização
Disciplina: POO
Prof. Ivan Luiz Vieira de Araújo

SUMÁRIO
→ Conceitos
→ Herança
→ Generalização
→ Especialização

Herança
Herança é a capacidade de uma subclasse (filho)acessar as propriedades da
superclasse (mãe)a ela relacionada propagando assim seus atributos e métodos
de cima para baixo.
Neste caso, é dito que uma subclasse herda as propriedades e métodos da sua
superclasse.
A relação de Herança entre duas classes configura-se da seguinte forma:
ClasseA “é um tipo de” ClasseB
Conceito

Herança
As sub-classes Veículo e Moto “são um tipo de”
da classe-base Veículo:
Os atributos Placa e Renavam
São herdados pelas classes filhas
Exemplo

Construtor de Classes Derivadas
Ao instanciar um objeto de uma classe derivada inicia-se uma
chamada a uma cadeia de construtores em uma execução Top-Down.
Antes de realizar suas tarefas o construtor da classe derivada chama o construtor
da classe base.
Sendo assim, quando criamos um objeto da classe derivada estamos criando
também um objeto da classe base.
Herança

Exemplo de Derivação Top-Down de Construtores
Herança
Exemplo

Generalização/Especialização
A generalizaçãoconsiste em obter similaridade entre várias classes e a partir
destas características em comum, novas classes são definidas, as superclasses.
A especialização por sua vez consiste em observar diferenças entre os objetos
de uma mesma classe e dessa forma novas classes são criadas, as subclasses
Herança

Generalização/Especi
alização
Exemplo
Exemplo Diagrama
de Classe: Pessoa

Modificadores de Acesso
Conceito
+ public: um método definido como publicpode ser acessado por qualquer classe de
qualquer projeto
-private: é mais restritivo, somente a classe onde ele foi definido é
que pode acessá-lo, nenhuma outra tem permissão, nem mesmo classes que herdam
da classe onde o método foi definido
# protected: somente as classes que herdam da classe que contem
o método protegido tem tempermissão para acessá-lo e as classes que estão no
mesmo pacote.
Existem outros modificadores de acesso em C#:
-Internal: acesso limitado ao assemblyatual (componente)
-protectedinternal: ao assemblyatual e aos seus componentes derivados

Modificadores de Acesso
Conceito
Classe Não-
Derivada
(outro
assembly)
Classe
Derivada
(outro
assembly)
Classe Não-
Derivada
(mesmo
assembly)
Classe
Derivada
(mesmo
assembly)
Mesma
Classe
Modificador
✗✗✗✗✓private
✗✓✗✓✓protected
✗✗✓✓✓internal
✗✓✓✓✓
protected
internal
✓✓✓✓✓public

Exercício
Exemplo Diagrama de Classe
G
e
n
e
r
a
l
i
z
a
ç
ã
o
E
s
p
e
c
i
a
l
I
z
a
ç
ã
o

Exercício: Veículo
Exercício
1)Implemente o diagrama de Classes do Sistema de Veículos visto anteriormente:
a)Pacotes: crie um pacote para cada tipo de SubClasse:
Ex: com.aluno.veiculos.entidades.carros
b) Controle os modificadores permitindo acesso de maneira mais restritiva funcional possível:
ex: Atributos -privatee métodos #protectede +publicde acordo com necessidade.
c)Implemente o método mostrar( ) na Classe Veiculo que deverá ser sobrescrito nas classes filhas:
Veiculo (1 nível) : ex: publicvirtual voidmostrar( ) { ...};
Carro (2 nível) : ex: publicoverridevoidmostrar( ) { ... };
Sedan (3 nível): ex: publicoverridevoidmostrar( ) {...}d)Crie um pacote para a classes de serviços, dentro de entidades e crie uma “classe” Seguroque tenha um
método apenas com assinatura, herde e sobrescreva este método nas classes Carros:
Ex: nome do pacote: com.aluno.veiculos.entidades.servicos
ExInterface: publicinterface Seguro { publicvoidseguroParticular( ); }
e)Faça um esquema de controle de cadastro de veículos na Main, testando cada um dos tipos como pelo menos
2 objetos instanciados de cada.