containeres associativos e conjuntos slides adaptados do ... · recurso de poo que permite o reúso...
TRANSCRIPT
![Page 1: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/1.jpg)
Profª Valéria de Carvalho Santos
Slides adaptados do profº Alan de Freitas
BCC702 - Programação de Computadores II
Containeres Associativos e ConjuntosProgramação Orientada a Objetos
1
![Page 2: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/2.jpg)
Relembrando… Templates
2
template <class T>T maximo(T a, T b, T c){
T max = a;if(b > max){
max = b;}if(c > max){
max = c;}return max;
}
![Page 3: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/3.jpg)
Relembrando… Templates
3
template <class T>T maximo(T a, T b, T c){
T max = a;if(b > max){
max = b;}if(c > max){
max = c;}return max;
}
int main(){int a = 7, b = 9, c = 2;cout<<"int:"<<maximo(a, b, c)<< endl;
cout<<"double:"<<maximo(7.2,3.8,6.5)<<endl;
cout<<"char:"<<maximo('e', 'r', 'v')<<endl;}
![Page 4: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/4.jpg)
Relembrando… Templates
4
template <class T>T maximo(T a, T b, T c){
T max = a;if(b > max){
max = b;}if(c > max){
max = c;}return max;
}
int main(){int a = 7, b = 9, c = 2;cout<<"int:"<<maximo(a, b, c)<< endl;
cout<<"double:"<<maximo(7.2,3.8,6.5)<<endl;
cout<<"char:"<<maximo('e', 'r', 'v')<<endl;}
int: 9double: 7.2char: v
![Page 5: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/5.jpg)
Relembrando… STL
5
Containers Gerenciam coleções de objetosTipos: sequenciais e associativos
Iteradores Percorrem elementos dos containers
Algoritmos Processam elementos dos containers
![Page 6: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/6.jpg)
Relembrando… Containers Sequenciais
❏ Vector
❏ Deque
❏ List
6
![Page 7: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/7.jpg)
Relembrando… Vector
❏ Internamente, utiliza um vetor alocado dinamicamente❏ Funções básicas:
❏ push_back: insere no fim❏ pop_back: remove do fim❏ front: retorna o elemento do início❏ back: retorna o elemento do fim
7
![Page 8: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/8.jpg)
Relembrando… Deque
❏ Internamente, utiliza um vetor alocado dinamicamente, com variáveis para controlar o início e o fim da sequência para implementar uma estrutura circular
8
![Page 9: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/9.jpg)
Relembrando… Deque
❏ Funções básicas:❏ push_front: insere no início❏ push_back: insere no fim❏ pop_front: remove do início❏ pop_back: remove do fim❏ front: retorna o elemento do início❏ back: retorna o elemento do fim
9
![Page 10: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/10.jpg)
Relembrando… List
❏ Representa listas duplamente encadeadas❏ Internamente, utilizam células para armazenar valores
com ponteiros para a célula anterior e a próxima célula
10
valoranterior próximo
![Page 11: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/11.jpg)
Relembrando… List
❏ Utiliza apenas a quantidade de memória necessária❏ Funções básicas:
❏ push_front: insere no início❏ push_back: insere no fim❏ pop_front: remove do início❏ pop_back: remove do fim❏ front: retorna o elemento do início❏ back: retorna o elemento do fim
11
![Page 12: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/12.jpg)
Relembrando… Subscritos
❏ Permite o acesso aleatórios aos elementos do container❏ Apenas para vector e deque
12
![Page 13: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/13.jpg)
Relembrando… Iteradores
❏ Utilizados para percorrer qualquer container
13
#include <iostream>#include <list>
using namespace std;
int main(){list<int> c;for(int i = 0; i < 10; i++)
c.push_back(i+1);list<int>::iterator p;for(p = c.begin(); p != c.end(); p++)
cout << *p << " ";}
![Page 14: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/14.jpg)
Containers Associativos e Conjuntos
❏ Os containers associativos são utilizados para representar conjuntos
❏ Foca em saber se um elemento pertence ou não ao conjunto
❏ A posição do elemento no conjunto não é relevante❏ Como localizar um elemento no conjunto?
❏ Chave de busca
14
![Page 15: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/15.jpg)
Containers Associativos e Conjuntos
❏ Set❏ Multiset❏ Map
15
![Page 16: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/16.jpg)
Set
❏ Permite o armazenamento de valores únicos❏ Ao acessar cada elemento do set, eles são ordenados de
acordo com seu valor
16
![Page 17: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/17.jpg)
17
#include <iostream>#include <set>using namespace std;
int main(){set<char> c;
c.insert('v');c.insert('a');c.insert('k');c.insert('p');c.insert('i');c.insert('u');
set<char>::iterator p;for(p = c.begin(); p != c.end(); p++)
cout << *p << " ";}
![Page 18: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/18.jpg)
18
#include <iostream>#include <set>using namespace std;
int main(){set<char> c;
c.insert('v');c.insert('a');c.insert('k');c.insert('p');c.insert('i');c.insert('u');
set<char>::iterator p;for(p = c.begin(); p != c.end(); p++)
cout << *p << " ";}
vk
ap
iu
a i k p u v
c
![Page 19: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/19.jpg)
19
#include <iostream>#include <set>using namespace std;
int main(){set<char> c;
c.insert('v');c.insert('a');c.insert('k');c.insert('p');c.insert('i');c.insert('u');
c.erase('p');c.erase('k');
}
v ai
u
c
![Page 20: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/20.jpg)
Multiset
❏ Similar ao set, sendo que permite armazenar elementos repetidos
20
![Page 21: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/21.jpg)
21
#include <iostream>#include <set>using namespace std;
int main(){multiset<char> c;
c.insert('v');c.insert('a');c.insert('a');c.insert('k');c.insert('p');c.insert('i');c.insert('u');c.insert('i');c.insert('i');
multiset<char>::iterator p;for(p = c.begin(); p != c.end(); p++)
cout << *p << " ";}
vk
ap
iu
ai
i
c
![Page 22: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/22.jpg)
22
#include <iostream>#include <set>using namespace std;
int main(){multiset<char> c;
c.insert('v');c.insert('a');c.insert('a');c.insert('k');c.insert('p');c.insert('i');c.insert('u');c.insert('i');c.insert('i');
multiset<char>::iterator p;for(p = c.begin(); p != c.end(); p++)
cout << *p << " ";}
vk
ap
iu
ai
i
a a i i i k p u v
c
![Page 23: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/23.jpg)
Map
❏ Container que representa arranjos associativos❏ É composto por várias chaves, onde cada chave é
associada a um valor❏ A chave e o valor não precisam ser do mesmo tipo
23
![Page 24: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/24.jpg)
24
#include <iostream>#include <map>using namespace std;
int main(){map<string,double> c;
c["bala"] = 0.5;c["chocolate"] = 2.5;c["bombom"] = 1.2;c["chiclete"] = 1.0;
}
![Page 25: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/25.jpg)
25
#include <iostream>#include <map>using namespace std;
int main(){map<string,double> c;
c["bala"] = 0.5;c["chocolate"] = 2.5;c["bombom"] = 1.2;c["chiclete"] = 1.0;
}
bala 0.5 chocolate 2.5
bombom 1.2
chiclete 1.0
![Page 26: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/26.jpg)
26
#include <iostream>#include <map>using namespace std;
int main(){map<string,double> c;
c["bala"] = 0.5;c["chocolate"] = 2.5;c["bombom"] = 1.2;c["chiclete"] = 1.0;
map<string,double>::iterator p;for(p = c.begin(); p != c.end(); p++)
cout << p->first << ": " << p->second << endl; //cout << (*p)->first << ": " << *(p)->second << endl;
}
bala 0.5 chocolate 2.5
bombom 1.2
chiclete 1.0p
first second
![Page 27: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/27.jpg)
27
#include <iostream>#include <map>using namespace std;
int main(){map<string,double> c;
c["bala"] = 0.5;c["chocolate"] = 2.5;c["bombom"] = 1.2;c["chiclete"] = 1.0;
map<string,double>::iterator p;for(p = c.begin(); p != c.end(); p++)
cout << p->first << ": " << p->second << endl; //cout << (*p).first << ": " << (*p).second << endl;
}
bala: 0.5bombom: 1.2chiclete: 1.0Chocolate: 2.5
![Page 28: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/28.jpg)
Programação Orientada a Objetos
❏ Abstração de dados❏ Permite modelar objetos do mundo real❏ Definição de classes
❏ Encapsulamento❏ Torna os detalhes de implementação invisível ao
usuário❏ Protege a alteração indevida dos valores dos
atributos28
![Page 29: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/29.jpg)
Sobrecarga de Operadores
❏ Já vimos que um mesmo operador pode ser utilizado para tipos diferentes❏ Operador + pode ser usado com int, float, double…
❏ A sobrecarga de operadores permite redefinir a ação de alguns operadores básicos para a classe em definição
29
![Page 30: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/30.jpg)
Sobrecarga de Operadores
❏ Precedência, associatividade e número de operandos não podem ser alterados pela sobrecarga.
❏ Alguns operadores que podem ser sobrecarregados:
- * / = < > == != <= >= ++ -- += -= *= /= <<>> % && ||
30
![Page 31: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/31.jpg)
Sobrecarga de Operadores
❏ Exemplo: definir a sobrecarga do operador + para a classe Retângulo, sendo que a soma é a soma das larguras e das alturas dos dois retângulos somados.
31
2
5
4
3
6
8
![Page 32: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/32.jpg)
32
class Retangulo{public:
Retangulo(int, int); int area(); Retangulo operator+(const Retangulo &);
private: int largura, altura;};
Retangulo Retangulo::operator+(const Retangulo &direita){int novaLargura = largura + direita.largura;int novaAltura = altura + direita.altura;Retangulo temp(novaLargura, novaAltura);return temp;
}
int main(){Retangulo r1(2,5);Retangulo r2(4,3);Retangulo r3 = r1 + r2;cout << r3.area();
}
![Page 33: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/33.jpg)
33
class Retangulo{public:
Retangulo(int, int); int area(); Retangulo operator+(const Retangulo &);
private: int largura, altura;};
Retangulo Retangulo::operator+(const Retangulo &direita){int novaLargura = largura + direita.largura;int novaAltura = altura + direita.altura;Retangulo temp(novaLargura, novaAltura);return temp;
}
int main(){Retangulo r1(2,5);Retangulo r2(4,3);Retangulo r3 = r1 + r2;cout << "Area de r3: " << r3.area();
}
![Page 34: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/34.jpg)
34
class Retangulo{public:
Retangulo(int, int); int area(); Retangulo operator+(const Retangulo &);
private: int largura, altura;};
Retangulo Retangulo::operator+(const Retangulo &direita){Retangulo temp(largura + direita.largura, altura + direita.altura);return temp;
}
int main(){Retangulo r1(2,5);Retangulo r2(4,3);Retangulo r3 = r1 + r2;cout << "Area de r3: " << r3.area();
}
![Page 35: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/35.jpg)
35
class Retangulo{public:
Retangulo(int, int); int area(); Retangulo operator+(const Retangulo &);
private: int largura, altura;};
Retangulo Retangulo::operator+(const Retangulo &direita){Retangulo temp(largura + direita.largura, altura + direita.altura);return temp;
}
int main(){Retangulo r1(2,5);Retangulo r2(4,3);Retangulo r3 = r1 + r2;cout << "Area de r3: " << r3.area();
}
Area de r3: 48
![Page 36: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/36.jpg)
Exercício
❏ Defina a sobrecarga do operador de igualdade (==) para retângulos, sendo que dois retângulos são iguais se possuem mesma largura e mesma altura.
36
![Page 37: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/37.jpg)
❏ Observe as figuras abaixo. ❏ Que atributos você definiria para cada uma? E que
métodos?
37
![Page 38: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/38.jpg)
38
Retângulo Triângulo
Polígono
![Page 39: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/39.jpg)
Herança
❏ Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento de uma classe existente e os aprimora com novas capacidades.
❏ Ao criar uma classe, em vez de escrever atributos e funções-membro novos, é possível a nova classe herdar membros de uma classe existente.
39
![Page 40: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/40.jpg)
Herança
❏ A classe existente é chamada classe básica ou superclasse
❏ A nova classe é chamada classe derivada ou subclasse❏ Exemplos:
40
Superclasse Subclasse
Polígono Retângulo, Triângulo, Losango
Conta Conta Corrente, Poupança, Conta Salário
Pessoa Pessoa Física, Pessoa Jurídica
![Page 41: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/41.jpg)
Herança
❏ Como implementar a herança em C++:❏ A superclasse é definida normalmente❏ A definição da subclasse deve informar de qual
superclasse está herdando:
class nomeSubclasse : public nomeSuperclasse
41
![Page 42: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/42.jpg)
42
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
![Page 43: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/43.jpg)
43
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
protected: os atributos não são acessíveis por quem cria objetos da classe; são acessíveis por objetos que herdam da classe.
![Page 44: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/44.jpg)
44
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
Qualquer objeto que herdar de polígono, também terá esse recurso.
![Page 45: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/45.jpg)
45
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
Além das funções definidas para polígono, a classe Retangulo tem uma função área.
![Page 46: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/46.jpg)
46
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
class Triangulo : public Poligono{public:
int area(){return (largura*altura)/2;
}};
![Page 47: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/47.jpg)
47
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
class Triangulo : public Poligono{public:
int area(){return (largura*altura)/2;
}};
int main(){Retangulo ret;Triangulo tri;ret.setValores(7,3);tri.setValores(10,4);cout << ret.area() << endl;cout << tri.area() << endl;
}
![Page 48: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/48.jpg)
48
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
class Triangulo : public Poligono{public:
int area(){return (largura*altura)/2;
}};
int main(){Retangulo ret;Triangulo tri;ret.setValores(7,3);tri.setValores(10,4);cout << ret.area() << endl;cout << tri.area() << endl;
}
![Page 49: Containeres Associativos e Conjuntos Slides adaptados do ... · Recurso de POO que permite o reúso de software através da criação de uma classe que absorve dados e comportamento](https://reader034.vdocuments.net/reader034/viewer/2022052613/5f17b1ef99e3fb7b0846a583/html5/thumbnails/49.jpg)
49
//representa poligonos que tem largura e alturaclass Poligono{
public: setValores(int, int);
protected: int largura, altura;};
class Retangulo : public Poligono{public:
int area(){return largura*altura;
}};
class Triangulo : public Poligono{public:
int area(){return (largura*altura)/2;
}};
int main(){Retangulo ret;Triangulo tri;ret.setValores(7,3);tri.setValores(10,4);cout << ret.area() << endl;cout << tri.area() << endl;
}