28
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

Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Embed Size (px)

Citation preview

Page 1: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Page 2: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

ExemplosHerança em POO

Page 3: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Herança no VBSintaxe

• Classe Base

• Classes Derivadas Palavra-Chave: Inherits

Page 4: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Exemplo

Page 5: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Não-exemplo

Page 6: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Pilares da POO

Abstracção Herança e PolimorfismoEncapsulamento

Page 7: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Page 8: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Palavra-Chave:

Inherits

Herança no VBSintaxe – Cont.

Page 9: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Pessoa => Classe base

Pessoa

estudante professor

Page 10: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Classes derivadas

Estudante Professor

Page 11: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Polimorfismo

Ambos possuem uma mesma função que é gravar

mas esta função é realizada de forma diferente

Page 13: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

• 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”

Page 14: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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()

Page 15: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Actividade

Page 16: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Actividade

Page 17: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Actividade

Classe Base

Classes Derivadas

Page 18: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Actividade

Na classe derivada:

Na classe base:

Public overloads Function getArea() As Double

Public Function obterArea() As Double

objecto.getArea()

Page 19: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Page 20: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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.

Page 21: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Page 22: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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”

Page 23: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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()

Page 24: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Page 25: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Page 26: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Candida
Ou seja o comportamento do objecto vai variar em função do seu estado
Page 27: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

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

Page 28: Herança em POO É um mecanismo existente no paradigma Orientado a Objectos que permite a reutilização dos membros (atributos, propriedades, métodos) de

Recordar…

Veículo

Carro

geral

especifico

Classe Base

Classes Derivadas

Herança

Polimorfismo

Comunicação

Bicicleta