Herança em POO
É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de uma classe (superclasse) ao definir-se novas classes (subclasses) a partir dela.
Importante:• Os construtores não são herdados!!!!• Uma subclasse deriva apenas de uma superclasse• Só os membros públicos ou friend da superclasse podem
ser herdados pelas classes derivadas
ExemplosHerança em POO
Herança no VBSintaxe
• Classe Base
• Classes Derivadas Palavra-Chave: Inherits
Exemplo
Não-exemplo
Pilares da POO
Abstracção Herança e PolimorfismoEncapsulamento
Exemplo – Cont.
Classe Base(características comuns)
Classe Derivada(características específicas)
Possui os atributos e os métodos da classe base
Superclasse
Subclasse
Hierarquia
Palavra-Chave:
Inherits
Herança no VBSintaxe – Cont.
Pessoa => Classe base
Pessoa
estudante professor
Classes derivadas
Estudante Professor
Polimorfismo
Ambos possuem uma mesma função que é gravar
mas esta função é realizada de forma diferente
Polimorfismo
veículoTodos os veículos possuem um modo de acelerar
usa um motor usa pedais e corrente
Mas com implementação e comportamento diferente em cada um dos objectos
acelerar acelerar
Invocam o método
• O polimorfismo é uma característica importante da programação orientada a objectos e está directamente ligada à herança entre classes.
• “O polimorfismo ocorre quando um método que já foi definido na classe base é redefinido na classe derivada com um comportamento diferente.”
A ideia do polimorfismo é que embora a mensagem seja a mesma, osobjectos poderão ter comportamentos diferentes (muitas formas).
Polimorfismo “Pilar da POO”
Polimorfismo “Pilar da POO”
Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe derivada.
É necessário que os métodos tenham exactamente a mesma identificação
veículo Acelerar()
Acelerar()Acelerar()
forma getArea()
getArea()getArea()getArea()
Actividade
Actividade
Actividade
Classe Base
Classes Derivadas
Actividade
Na classe derivada:
Na classe base:
Public overloads Function getArea() As Double
Public Function obterArea() As Double
objecto.getArea()
Actividade
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim r As New Retangulo(txt_altura.Text, txt_base.Text)
MsgBox("Área do retângulo de base=" & txt_base.Text & " e altura=" & txt_altura.Text & " : " & r.getArea()) End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim r As New Triangulo(txt_base.Text, txt_altura.Text)
MsgBox("Área do triângulo de base=" & txt_base.Text & "e altura=" & txt_altura.Text & " : " & r.getArea()) End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim r As New Quadrado(txt_lado.Text)
MsgBox("Área do quadrado de lado " & txt_lado.Text & ": " & r.getArea()) End Sub
Private Sub SairToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SairToolStripMenuItem.Click Me.Close() End SubEnd Class
Vantagens do Polimorfismo
Uma mesma mensagem pode provocar respostas diferentes quando recebidas por objectos diferentes.
Vantagem
Com o polimorfismo, pode-se enviar uma mensagem genérica e deixar a implementação a cargo do objecto receptor da mensagem.
Mensagens em POO
• Elementos básicos: Classes
• atributos + métodos• não executáveis
Objectos• variáveis (dinâmicas) criadas a partir das classes• estado + comportamento• podem ser criados, copiados, destruídos, passados como
argumentos, devolvidos como resultado...
Mensagens• actuam sobre objectos• invocação os membros (métodos/propriedades)
descritos na classe
Deco29
central
Deco.Lista()
Deco.Passa()
Deco.Recebe()
Deco.Finta()Deco.Marca()Figo34
médio
Figo.Lista()
Deco.Recebe()
Figo.Passa()
Mensagens em POO
• Uma mensagem é dirigida a um objecto e– provoca a execução de um membro que utiliza e/ou altera os
valores dos seus atributos - o seu estado.
– pode provocar o envio de novas mensagens por parte deste, quer para ele próprio (internas), quer para outros objectos (externas).
Jogador:Figo
nome: “Figo”idade: 34função: “médio”
Jogador:Deco
nome: “Deco”idade: 29função: “central”
Jogador1.Ganhou()
Jogador1.estado()
Altera o estado(atributo jogadas)
Jogo1. jogar()
Mensagens em POO
• Uma mensagem é dirigida a um objecto e– provoca a execução de um método que utiliza e/ou altera os
valores dos seus atributos - o seu estado.
– pode provocar o envio de novas mensagens por parte deste, quer para ele próprio (internas), quer para outros objectos (externas).
JogoGalo:Jogo1
jogadas(2,2)nJogadas
JogodorxPC:Jogo2
jogadas(2,2)nJogadas
Jogo2.JogadaComputador()
Jogo2. JogarAtaque()
Comunicação em POO
Atributos
Finta
Marca
Lista
Passa
Recebe Nome
Idade
Função
Métodos(encapsulados)
(Interface)
Classe Jogador
Pos_x Pos_y
Tem bola
Finta
Marca
Lista
Passa
RecebeDesloca
+ Métodos
Comunicação em POOElementos
A comunicação entre os objectos dá-se através de mensagens trocadas pela interface (ou protocolo) especificada para o objecto.
Análogo a uma chamada de função
Mensagem: permitem a activação de ummétodo/propriedade do objecto
Interface: conjunto de métodos e atributos definidos na classe e oferecidos pelo objecto
Comunicação em POOElementos
Todos os objectos de uma mesma classe possuem a mesma interface e aplicam o mesmo método em resposta a uma mensagem idêntica.
O valor retornado pode, no entanto, variar em função dos valores dos seus atributos e da existência de polimorfismo nas classes.
Mensagem: permitem a activação de um método/propriedade do objecto
Interface: conjunto de métodos e atributos definidos na classe e oferecidos pelo objecto
Recordar…
seleccionar aspectos importantes para o problema (abstrair entidades, acções, relacionamento, etc, ) capturar a estrutura da realidade
Agrupamento de elementos reais que possuem um conjunto atributos e comportamentos comuns
Abstracção
Classificação
Problema
representação VB
Recordar…
Veículo
Carro
geral
especifico
Classe Base
Classes Derivadas
Herança
Polimorfismo
Comunicação
Bicicleta