ST363_OrientacaoObjeto
-
Upload
anderson-lima -
Category
Documents
-
view
219 -
download
0
Transcript of ST363_OrientacaoObjeto
-
8/6/2019 ST363_OrientacaoObjeto
1/39
Orientao a Objetos
Profa. [email protected]
FT Faculdade de TecnologiaST363 Linguagem e Tcnica de Programao II
-
8/6/2019 ST363_OrientacaoObjeto
2/39
Programao Orientada a Objetos
A programao orientada a objetos (OO) focaliza mais oproblema. Um programa OO equivalente a objetos quetrocam mensagens entre si. Os objetos do programaequivalem aos objetos da vida real (problema).
Primeira linguagem OO: Simula 67
O paradigma no foi amplamente desenvolvido at que aevoluo de Smalltalk resultasse em sua verso 80 (em1980). Alguns consideram Smalltalk a nica LP puramenteOO.
Existem linguagens de programao que suportam a
programao OO, ou seja, seguem algum outro paradigma,mas incorporam recursos para programao OO. Porexemplo: C++: paradigma imperativo com suporte a programao OO; Java: emprega apenas algumas estruturas bsicas do
paradigma imperativo com suporte a programao OO.
-
8/6/2019 ST363_OrientacaoObjeto
3/39
Programao OO x Estruturada Programao Estruturada:
Baseia-se no conceito de que um sistema umconjunto de programas inter-relacionados que atuamsobre um determinado conjunto de dados que se
deseja manipular para obter os resultados desejados. Programao Orientada a Objetos
Procura enxergar o mundo como um conjunto deobjetos que interagem entre si e apresentamcaractersticas e comportamento prpriosrepresentados por seus atributos e suas operaes,respectivamente. Os atributos esto relacionados aosdados e as operaes, aos processos que um objetoexecuta.
-
8/6/2019 ST363_OrientacaoObjeto
4/39
Conceitos Bsicos
Objetos
Mensagens
Mtodos Classes
-
8/6/2019 ST363_OrientacaoObjeto
5/39
Conceitos Bsicos Objetos Um objeto um conjunto encapsulado de
operaes e um estado que registra o efeito dasoperaes.
Um objeto executa uma operao em resposta aorecebimento de uma mensagem que estassociada operao.
O resultado da operao depende do contedo damensagem recebida e do estado do objeto quando elerecebe a mensagem.
O objeto pode, como parte da operao, enviar mensagens para outros objetos e para si mesmo.
-
8/6/2019 ST363_OrientacaoObjeto
6/39
Conceitos Bsicos Objetos Pode-se imaginar um objeto como algo que:
armazena dentro de si os dados (informaes) sobresua estrutura, definida por seus atributos;
possui um comportamento definido pelas suasoperaes (implementadas por mtodos).
Exemplo:
Objeto: Maria Atributos: Nome, Endereo,
Salrio Bruto
Operaes: Calcular salrio lquido
-
8/6/2019 ST363_OrientacaoObjeto
7/39
Conceitos Bsicos Objetos
Uma interface protege os dados e permite acomunicao de um objeto com os demais objetosdo sistema.
Todo tipo de alterao nos dados do objeto
(atributos) somente poder ser feita por meio dasoperaes, que recebem as solicitaes externas,fazem as alteraes nos dados (se permitidas) eretornam outras informaes para o meio externo.
-
8/6/2019 ST363_OrientacaoObjeto
8/39
Conceitos Bsicos Objetos
Comunicao entre Objetos:
-
8/6/2019 ST363_OrientacaoObjeto
9/39
Conceitos Bsicos Mensagens
As mensagens so requisies enviadas de umobjeto a outro, com o objetivo de se obter algumresultado desejado.
As mensagens podem ser acompanhadas deparmetros, que so aceitos pelo objeto receptore que podem ter algum efeito nas operaes aserem realizadas.
-
8/6/2019 ST363_OrientacaoObjeto
10/39
Conceitos Bsicos Mtodos
Os mtodos so definies de operaes que umobjeto realiza quando recebe uma mensagem(similar a subprogramas).
Uma mesma mensagem poderia resultar emmtodos diferentes, quando enviada paradiferentes objetos.
O mtodo associado a uma mensagem pr-definido.
-
8/6/2019 ST363_OrientacaoObjeto
11/39
Conceitos Bsicos Classes Uma classe define uma estrutura interna e um
conjunto de operaes (mtodos) que todos osobjetos, que so instncias da classe, iropossuir.
Uma classe cria objetos.
-
8/6/2019 ST363_OrientacaoObjeto
12/39
Propriedades
Encapsulamento Ocultao de Informaes
Herana Generalizao Polimorfismo
-
8/6/2019 ST363_OrientacaoObjeto
13/39
Propriedades Encapsulamento
Cada objeto visto como o encapsulamento deseu estado interno, suas mensagens e seusmtodos.
A estrutura que define o estado interno e os paresmensagem-mtodo so todos definidos pelaclasse a qual o objeto pertence.
O valor do estado interno determinado pelosmtodos que o objeto executa em resposta smensagens recebidas.
-
8/6/2019 ST363_OrientacaoObjeto
14/39
Fazendo-se um paralelo com a programaoestruturada, o encapsulamento se assemelha aoconceito de modularizao, diferindo:
no foco: programao estruturada: funcionalidades.
programao orientada a objetos: objetos e operaes.
na maneira de implementao: programao estruturada: subprogramas;
programao orientada a objetos: classes.
Propriedades Encapsulamento
-
8/6/2019 ST363_OrientacaoObjeto
15/39
O acesso a partes de uma classe pode ser:
privado: parte da classe fica oculta a outras
classes, o que caracteriza a ocultao deinformaes;
pblico: parte da classe fica visvel a outrasclasses;
protegido: parte da classe fica oculta a outrasclasses, mas visveis a subclasses no caso deherana (propriedade discutida a seguir).
Propriedades Ocultao de
Informaes
-
8/6/2019 ST363_OrientacaoObjeto
16/39
A herana possibilita a definio de umahierarquia de classes, onde classes so definidaspela herana de outras.
Usualmente, os nveis mais baixos em uma
hierarquia de classes representam umaespecificao mais detalhada e nveis mais altosrepresentam uma especificao mais abstrata(conceito de abstrao).
Propriedades Herana
entidade abstrata
entidade detalhe
viso mais abstrataviso mais detalhada
-
8/6/2019 ST363_OrientacaoObjeto
17/39
Uma classe que definida pela herana de outra chamada de subclasse ou classe derivada.
A classe que define uma subclasse denominada
superclasse. Uma subclasse herda todas as caractersticas da
superclasse, incluindo a estrutura que define oestado interno e os pares mensagem-mtodo.
Na subclasse: as caractersticas herdadas podem ser redefinidas,
sobrepondo-se a definio herdada; novas caractersticas podem ser adicionadas.
Propriedades Herana
-
8/6/2019 ST363_OrientacaoObjeto
18/39
Propriedades Herana
As subclasses Motorista, Secretria e Analistaherdam da superclasse Empregados todos os seus
atributos e operaes. Exemplo: se a superclasse Empregados possui os
atributos Nome e RG, ento as subclasses tambmtero tais atributos, alm daqueles especficos das
subclasses.
-
8/6/2019 ST363_OrientacaoObjeto
19/39
A herana pode ser: simples: se a classe criada por meio de herana tiver
uma nica superclasse;
mltipla: se a classe criada por meio de herana tivermais de uma superclasse.
A herana possibilita a definio de novas classes,sem duplicao de cdigo. Isso importante para
a reutilizao de software, pois possvel reutilizaruma classe criando uma subclasse onde permitido modificar algumas funcionalidades eadicionar outras.
Propriedades Herana
-
8/6/2019 ST363_OrientacaoObjeto
20/39
Propriedades Generalizao
O conceito de generalizao surge quandoobserva-se, por exemplo, duas classes econsegue-se abstrair uma terceira classe que
mais geral do que as duas primeiras. A generalizao permite que todas as instncias
de uma classe especfica sejam tambmconsideradas instncias de uma classe mais
abrangente.
-
8/6/2019 ST363_OrientacaoObjeto
21/39
Propriedades Generalizao
Generalizao pode ser descrita como uma associao um tipo de.
Exemplo:
Motorista, Secretria e Analista podem ser considerados classes
especficas de Empregados (conceito de especializao). Por outro lado, Empregados considerada uma classe mais geral
(conceito de generalizao) e pode-se dizer que, por exemplo,Motorista um tipo de Empregado.
-
8/6/2019 ST363_OrientacaoObjeto
22/39
Propriedades Polimorfismo
O polimosfismo permite que uma mesmamensagem seja enviada a diferentes objetos,sendo que cada objeto executa a operaoapropriada sua classe.
por exemplo, a mensagem "print" pode ser enviada aum objeto, sem a preocupao se aquele objeto umcaractere, um inteiro, uma stringou uma figura.
O polimorfismo proporcionado pela vinculaodinmica de mensagens a definies demtodos.
-
8/6/2019 ST363_OrientacaoObjeto
23/39
Propriedades Polimorfismo
Para a implementao do polimorfismo utiliza-se umnico nome para definir operaes implementadasde modos distintos, mas cujo objetivo o mesmo.
Exemplo Objeto Geomtrico: um objeto geomtrico pode ser, por exemplo, um
tringulo, um retngulo ou um crculo; uma operao que pode ser definida para qualquer um
desses trs objetos geomtricos o clculo da rea;
dependendo do objeto geomtrico, a rea deve sercalculada de uma maneira distinta; entretanto, deve-se observar que nos trs casos a
operao que ser realizada continuar sendo o clculoda rea de um objeto geomtrico.
-
8/6/2019 ST363_OrientacaoObjeto
24/39
-
8/6/2019 ST363_OrientacaoObjeto
25/39
Orientao a Objetos em C++
A linguagem de programao C++ foi criada paraadicionar novos recursos linguagem C.
O principal recurso foi suportar a programaoorientada a objetos.
-
8/6/2019 ST363_OrientacaoObjeto
26/39
Orientao a Objetos em C++
Encapsulamento: realizado por meio do uso declasses. Uma classe C++ uma descrio de umtipo de dado. As classes de C++ so uma extenso do tipo structdo C.
Ocultao de informaes: uma classe C++ podeter tanto caractersticas ocultas como visveis,especificadas usando as seguintes clusulas: private: especifica as caractersticas ocultas (privadas);
public: especifica as caractersticas visveis (pblicas).Essas caractersticas so descritas pela interface com osobjetos da classe;
protected: especifica caractersticas visveis apenas ssubclasses (no caso de herana).
-
8/6/2019 ST363_OrientacaoObjeto
27/39
Orientao a Objetos em C++
As definies de classes incluem a especificaode construtores (contructors) e destrutores(destructors).
Construtores: funes responsveis pela inicializao dos objetos; podem fazer a alocao dinmica de memria para os
objetos, se necessrio; podem incluir parmetros para a parametrizao de
objetos; so implicitamente chamados quando um objeto daclasse criado;
podem ser explicitamente chamados; tem o mesmo nome da classe da qual faz parte.
-
8/6/2019 ST363_OrientacaoObjeto
28/39
Orientao a Objetos em C++
Destrutores:
funes responsveis pela limpeza quando um objeto destrudo;
desalocam memria previamente alocada para osobjetos, se necessrio;
so implicitamente chamados quando se encerra otempo de vida de um objeto da classe;
podem ser explicitamente chamados;
tem o mesmo nome da classe precedido por til (~)
-
8/6/2019 ST363_OrientacaoObjeto
29/39
Exemplo: Pilha em C++
Um tipo abstrato de dados pilha denominado LIFO(Last In, First Out), ou seja, o ltimo elemento aentrar o primeiro a sair, e tem as seguintesoperaes:
create(pilha) cria e inicializa um objeto do tipo pilha; destroy(pilha) desaloca o armazenamento da pilha;
empty(pilha) retorna true se a pilha estiver vazia e falsecaso contrrio;
push(pilha, elemento) coloca o elemento especificado notopo da pilha;
pop(pilha) remove o elemento do topo da pilha;
top(pilha) retorna uma cpia do elemento do topo da pilha.
-
8/6/2019 ST363_OrientacaoObjeto
30/39
Exemplo: Pilha em C++
#include
using namespace std;
class pilha {
private: // visveis somente a outros membrosint *ptr_pilha;
int tam_max;
int top_ptr;
public: // visveis s unidades que usam a pilha
pilha( ) { // construtor
ptr_pilha = new int[100];tam_max = 99;
top_ptr = -1;
}
~pilha( ) { delete ptr_pilha; } // destrutor
-
8/6/2019 ST363_OrientacaoObjeto
31/39
Exemplo: Pilha em C++void push(int numero) {
if (top_ptr == tam_max)
cout
-
8/6/2019 ST363_OrientacaoObjeto
32/39
Exemplo: Pilha em C++
Um exemplo de programa que usa a pilha:void main( ) {int top_one;
pilha stk; // cria um objeto da classe pilha
stk.push(42);
stk.push(17);
top_one = stk.top( );
stk.pop( );
...
}
Quando o final da funo main( ) atingido, encerram-se ostempos de vida das variveis top_one e stk, o que resultana chamada implcita do destrutor para stk. Isso faz comque a desalocao de memria seja realizada.
-
8/6/2019 ST363_OrientacaoObjeto
33/39
Exemplo: Pilha em C++
Muitas vezes conveniente parametrizar tiposabstratos de dados.
Por exemplo, pode-se projetar uma pilha que
possa armazenar qualquer elemento de tipoescalar, em vez de ser necessrio escrever umapilha para cada tipo escalar diferente.
necessrio que a linguagem de programao
disponibilize recursos para a parametrizao. C++ suporta tipos abstratos de dados
parametrizados ou genricos.
-
8/6/2019 ST363_OrientacaoObjeto
34/39
Exemplo: Pilha em C++
Para tornar o exemplo de pilha anterior genrico em relaoao tamanho da pilha, somente o construtor precisa sermudado:pilha(int tamanho) {
ptr_pilha = new int[tamanho];
tam_max = tamanho 1;top_ptr = -1;
}
A declarao de um objeto pilha pode ser:
pilha stk(150);
A definio da classe pilha pode incluir ambos osconstrutores, de modo que os usurios podem usar a pilhade tamanho padro ou especificar algum outro tamanho.
-
8/6/2019 ST363_OrientacaoObjeto
35/39
Exemplo: Pilha em C++ Pode-se fazer com que o tipo de elemento da pilha
seja um parmetro usando classes modeladas:templates.
#include
using namespace std;
template // Type o parmetro modelo
class pilha {
private: // visveis somente a outros membros
Type *ptr_pilha;
int tam_max;
int top_ptr;
-
8/6/2019 ST363_OrientacaoObjeto
36/39
Exemplo: Pilha em C++
public: // visveis s unidades que usam o TAD
// construtor para pilhas de 100 elementos
pilha( ) {
ptr_pilha = new Type[100];
tam_max = 99;
top_ptr = -1;}
// construtor para nmero determinado
pilha(int tamanho) {
ptr_pilha = new Type[tamanho];
tam_max = tamanho 1;
top_ptr = -1;}
~pilha( ) { delete ptr_pilha; } // destrutor
-
8/6/2019 ST363_OrientacaoObjeto
37/39
Exemplo: Pilha em C++
void push(Type numero) {
if (top_ptr == tam_max)
cout
-
8/6/2019 ST363_OrientacaoObjeto
38/39
Exemplo: Pilha em C++
Um exemplo de programa que usa a pilhaparametrizada:void main( ) {
float top_one;
pilha stk(50); // cria uma pilha de 50 do tipo realstk.push(4.5);
stk.push(9.3);
top_one = stk.top( );
stk.pop( );
...
}
-
8/6/2019 ST363_OrientacaoObjeto
39/39
Exerccios de Fixao
1. Defina: Objetos, Mensagens, Mtodos e Classes2. Explique as cinco propriedades da Orientao a
Objetos.
3. Qual a diferena de herana simples e mltipla?4. Como feito o encapsulamento e a ocultao deinformaes em C++?
5. Fazer um programa C++ para testar a classe pilha
apresentada e implementar dois novos mtodos: um mtodo para imprimir a pilha em ordem inversa.
um mtodo que retorne o elemento imediatamente antesdo topo da pilha.