Buscar

[Prof. Emiliana] aula teórica 7

Prévia do material em texto

Herança - Polimorfismo
BCC702-Programação de Computadores II
Emiliana Mara Lopes Simões
simoes.eml@gmail.com
Universidade Federal de Ouro Preto
abril 2010
Herança
Na aula passada vimos herança em C++
A herança é uma forma de reutilização de software em que o
programador cria uma classe que “absorve” os dados e
comportamentos de uma classe existente e os aprimora com novas
capacidades
Nomenclatura:
Classe básica (superclasse) classe já existente;
Classe derivada (subclasse) classe criada a partir da classe
básica.
Exemplo 1: Implementação da classe Retangulo
Exemplo 1: Implementar uma classe para representar um retângulo
Exemplo 1: Implementação da classe Retangulo
Devem ser fornecidas funções para:
Inicializar todos os dados do retângulo (construtor com
parâmetros);
Obter o valor de (gets) para os dados do retângulo;
Calcular a área do retângulo;
Imprimir os dados do retângulo.
Exemplo 1: Implementação da classe Retangulo
Devem ser fornecidas funções para:
Inicializar todos os dados do retângulo (construtor com
parâmetros);
Obter o valor de (gets) para os dados do retângulo;
Calcular a área do retângulo;
Imprimir os dados do retângulo.
Exemplo 1: Implementação da classe Retangulo
Devem ser fornecidas funções para:
Inicializar todos os dados do retângulo (construtor com
parâmetros);
Obter o valor de (gets) para os dados do retângulo;
Calcular a área do retângulo;
Imprimir os dados do retângulo.
Exemplo 1: Implementação da classe Retangulo
Devem ser fornecidas funções para:
Inicializar todos os dados do retângulo (construtor com
parâmetros);
Obter o valor de (gets) para os dados do retângulo;
Calcular a área do retângulo;
Imprimir os dados do retângulo.
Exemplo 1: Implementação da classe Retangulo
Devem ser fornecidas funções para:
Inicializar todos os dados do retângulo (construtor com
parâmetros);
Obter o valor de (gets) para os dados do retângulo;
Calcular a área do retângulo;
Imprimir os dados do retângulo.
Exemplo 1: Implementação da classe Retangulo
Diagrama de classe
Exemplo 1: Implementação da classe Retangulo
class Retangulo{
private:
double ladoa;
double ladob;
public:
Retangulo(double a, double b);
double getLadoa();
double getLadob();
double area();
void imprimir();
};
Arquivo: Retangulo.h
Exemplo 1: Implementação da classe Retangulo
#include “Retangulo.h”
#include <iostream>
using namespace std;
Retangulo::Retangulo(double a, double b){
ladoa = a;
ladob = b;
}
double Retangulo::getLadoa(){
return ladoa;
}
...
Arquivo: Retangulo.cpp
Exemplo 1: Implementação da classe Retangulo
...
double Retangulo::getLadob(){
return ladob;
}
double Retangulo::area(){
return ladoa * ladob;
}
void Retangulo::imprimir(){
cout << “Retangulo com lados: ”
<< ladoa << “ e ” << ladob << endl
<< “Area: ” << area() << endl << endl;
}
Arquivo: Retangulo.cpp
Exemplo 2: Implementação da classe Paralelepipedo
Exemplo 2: A partir da classe Retangulo (figura plana) criar a
classe Paralelepipedo (Figura Espacial).
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Além de herdar os dados e as funções da classe Retangulo, na
classe Paralelepipedo temos:
O dado que corresponde à altura do paralelepípedo (ladoc);
As funções para:
Inicializar todos os dados do paralelepípedo (construtor com
parâmetros);
Obter o valor de (get) para o ladoc;
Calcular a área do paralelepípedo;
Calcular o volume do paralelepípedo;
Imprimir os dados do paralelepípedo.
Exemplo 2: Implementação da classe Paralelepipedo
Diagrama de classe
Exemplo 2: Implementação da classe Paralelepipedo
Uma classe derivada herda os dados e as funções de sua
classe básica, mas pode também:
Estender a estrutura de dados;
Adicionar novas funções;
Redefinir a implementação de funções já existentes.
Exemplo 2: Implementação da classe Paralelepipedo
Uma classe derivada herda os dados e as funções de sua
classe básica, mas pode também:
Estender a estrutura de dados;
Adicionar novas funções;
Redefinir a implementação de funções já existentes.
Exemplo 2: Implementação da classe Paralelepipedo
Uma classe derivada herda os dados e as funções de sua
classe básica, mas pode também:
Estender a estrutura de dados;
Adicionar novas funções;
Redefinir a implementação de funções já existentes.
Exemplo 2: Implementação da classe Paralelepipedo
Uma classe derivada herda os dados e as funções de sua
classe básica, mas pode também:
Estender a estrutura de dados;
Adicionar novas funções;
Redefinir a implementação de funções já existentes.
Exemplo 2: Implementação da classe Paralelepipedo
#include “Retangulo.h”
class Paralelepipedo : public Retangulo{
private:
double ladoc;
public:
Paralelepipedo(double a, double b, double c);
double getLadoc();
double volume();
double area();
void imprimir();
};
Arquivo: Paralelepipedo.h
Exemplo 2: Implementação da classe Paralelepipedo
#include “Paralelepipedo.h”
#include <iostream>
usingnamespace std;
Paralelepipedo::Paralelepipedo(double a,double b,double c)
: Retangulo(a, b){
ladoc = c;
}
double Paralelepipedo::getLadoc(){
return ladoc;
}
...
Arquivo: Paralelepipedo.cpp
Exemplo 2: Implementação da classe Paralelepipedo
...
double Paralelepipedo::volume(){
return Retangulo::area() * ladoc;
}
double Paralelepipedo::area(){
return 2 * ( Retangulo::area()
+ getLadoa()*ladoc
+ ladoc*getLadob() );
}
...
Arquivo: Paralelepipedo.cpp
Exemplo 2: Implementação da classe Paralelepipedo
...
void Paralelepipedo::imprimir(){
cout << “Paralelepipedo com Comprimento: ”
<< getLadoa() << endl
<< “Largura: ” << getLadob() << endl
<< “Altura: ” << ladoc << endl
<< “Area: ” << area() << endl
<< “Volume: ” << volume() << endl << endl;
}
...
Arquivo: Paralelepipedo.cpp
Herança - Polimorfismo
QUADRO
Dúvidas?
Próxima Aula
Polimorfismo

Continue navegando