Download - PDP - Capitulo 3
7/23/2019 PDP - Capitulo 3
http://slidepdf.com/reader/full/pdp-capitulo-3 1/7
Sistemas de Informação - 3º PeríodoParadigmas de Programação
Ernani Viriato de Melo Página 1
Capítulo 3 – Paradigma Orientado a
Objetos
Sumário
1. Introdução 3. Considerações finais do paradigmaorientado a objetos
2. Conceitos básicos do paradigmaorientado a objetos
1. Introdução
O conceito de programação orientada a objeto tem suas raízes na SIMULA 67, masnão foi amplamente desenvolvido até que a evolução da Smalltalk resultasse na produção desua versão 80 (1980). De fato, alguns consideram a Smalltalk a única linguagem puramenteorientada a objetos.
A idéia básica do paradigma orientado a objetos é imaginar que programas simulam omundo real: um mundo povoado de objetos. Dessa maneira, linguagens baseadas nosconceitos de simulação do mundo real devem incluir um modelo de objetos que possam enviar
e receber mensagens e reagir a mensagens recebidas. Esse conceito é baseado na idéia deque no mundo real frequentemente usamos objetos sem precisarmos conhecer como elesrealmente funcionam. Assim, programação orientada a objetos fornece um ambiente ondemúltiplos objetos podem coexistir e trocar mensagens entre si.
Um exemplo:
Retire o seu relógio do pulso e comece a analisá-lo. Verifique que ele é um objeto real,que lhe dá algumas informações como hora, data e dia da semana e que tem cronômetro ealarmes. Essas informações são atributos que são manipulados pelo relógio, ou seja, umobjeto tem atributos.
O relógio também tem botões, como um botão de iluminação, um botão para selecionaro atributo a ser visto, um botão para acertar a hora. Podemos dizer que o acionamento desses
botões corresponde ao acionamento de uma determinada função do relógio. Logo, um objetotem funções (métodos).
Além dos botões, o relógio também tem uma caixa externa e uma pulseira, ou seja, umobjeto relógio é composto de outros objetos. Um objeto pode ser formado a partir de umconjunto de objetos.
Falamos de um relógio moderno, com alarmes e cronômetros; mas um relógio antigosó informava a hora; de um relógio de bolso evoluiu-se para relógios de pulso, para relógios deparede, para relógios com alarmes, com cronômetros etc., ou seja, um objeto pode evoluir deacordo com uma herança.
Você também sabe que existe uma fábrica de relógios, e que nela estão asinformações para se construir o relógio. Veremos que uma classe é uma fábrica de objetos, e éna classe que se encontram as informações de como montar o objeto.
7/23/2019 PDP - Capitulo 3
http://slidepdf.com/reader/full/pdp-capitulo-3 2/7
Sistemas de Informação - 3º PeríodoParadigmas de Programação
Ernani Viriato de Melo Página 2
2. Conceitos básicos do paradigma orientado a objetos
O paradigma orientado a objetos tem uma série de conceitos que auxiliam as pessoas
a delinearem claramente um problema e a identificarem os objetos e seus relacionamentos. Osconceitos são: abstração, objeto, classe, atributos, métodos, herança e polimorfismo.
2.1 Abstração
No dicionário Aurélio, abstração significa considerar isoladamente coisas que estãounidas, ou seja, partimos do enfoque global de um determinado problema e procuramosseparar os elementos fundamentais e colocá-los de uma forma mais próxima da solução. Aidéia da abstração é identificar os elementos essenciais de um problema e suas propriedadesfundamentais.
Para orientação a objetos, abstração é o processo de identificação dos objetos e seusrelacionamentos. Ela permite ao programador concentrar-se no que um objeto é e faz, sem se
preocupar como ele o faz. A abstração se dá em diferentes níveis: inicialmente, abstrai-se oobjeto; de um conjunto de objetos cria-se um conjunto de classes relacionadas, de um conjuntode classes cria-se uma biblioteca de classes.
2.2 Objeto (ou Instância)
Objetos são coisas do mundo real ou imaginário, que podemos de alguma formaidentificar. Um objeto possui determinadas propriedades que o caracterizam e que sãoarmazenadas no próprio objeto. As propriedades de um objeto são chamadas ainda deatributos. Os atributos de um objeto não são estáticos, pois sofrem alterações com o tempo.
Quando temos uma instância de uma classe, possuímos um objeto dessa classe.Instância é um outro nome que se dá ao objeto, geralmente se refere a um objeto específico.
2.3 Classes
Uma classe é um conjunto de códigos de programação que incluem a definição dosatributos e dos métodos necessários à criação de um ou mais objetos.
A classe contém a descrição da forma do objeto, é um molde para a criação do objeto,é uma fábrica de objetos. Uma classe também é um tipo definido pelo usuário.
Classe abstrata: Uma classe é abstrata quando não é completa e não pode criarobjetos.
2.4 Encapsulamento
Encapsulamento é o ato de esconder do usuário informações que não são de seu
interesse. O objeto atua como uma caixa preta, que realiza determinada operação, mas ousuário não sabe, e não precisa saber, exatamente como é feita. Ou seja, o encapsulamentoenvolve a separação dos elementos visíveis de um objeto dos invisíveis.
Exemplo: um computador é um objeto extremamente complexo, mas para o usuário oque importa é o teclado, o monitor, o mouse e o gabinete.
2.5 Atr ibutos (Propriedades/Variáveis)
Podemos relacionar alguns atributos (propriedades) a todo objeto. No exemplo dorelógio, a hora e a data. Na programação orientada a objeto, os atributos são definidos naclasse e armazenados de forma individual ou coletiva pelos objetos.
Atributos de classe (coletivos): Quando um atributo é dividido entre todos os objetos
daquela classe, ele é armazenado na classe. Atributos de objeto (individuais): Quando um atributo é individual, ele é armazenado noobjeto.
7/23/2019 PDP - Capitulo 3
http://slidepdf.com/reader/full/pdp-capitulo-3 3/7
Sistemas de Informação - 3º PeríodoParadigmas de Programação
Ernani Viriato de Melo Página 3
2.6 Métodos (Funções)
Podemos relacionar determinados comportamentos, ações e reações a um objeto.No paradigma orientado a objetos, as ações e os comportamentos dos objetos são
descritos pelos métodos. Ou seja, os métodos servem para manipular e alterar os atributos doobjeto (alteram o estado do objeto).
Construtor: método que define as inicializações de valores de atributos para a classequando se define um novo objeto.
2.7 Herança (Hereditariedade)
A herança está relacionada às hierarquias e às relações entre os objetos.No paradigma orientado a objetos, herança é o mecanismo em que uma classe-filha
(classe-derivada) compartilha automaticamente todos os métodos e atributos de sua classe-pai(classe-base).
Superclasse: uma superclasse é a classe-base de uma hierarquia de classes, é a
classe mais alta na hierarquia (é a origem da árvore).
2.8 Polimorf ismo
Polimórfico: aquilo ou aquele capaz de assumir múltiplas formas.Polimorfismo ocorre quando se pode atribuir diferentes significados ou utilizações para
algo em contextos diferentes – por exemplo o nome de uma única ação pode ser definido sobremais de um objeto, podendo assumir diversas implementações em cada um deles.
Polimorfismo de subclasse é a propriedade pela qual uma variável pode apontar paraobjetos de diferentes classes em instantes diferentes.
2.9 Exemplo utilizando C++
OBSERVAÇÃO: O intuito deste tópico é apenas ilustrar um programa (neste casoescrito em C++) com o paradigma orientado a objetos. Existe uma disciplina no curso emespecial para o paradigma de programação orientado a objetos.
Exemplo: Considere o objeto Retângulo
Exemplo1: Considere o objeto Cliente:
/ * Exempl o 1: Desenvol vendo comP. O. O.Aut or : Er naniDat a: 10/ 01/ 2007
*/#include <iostream>
#include <conio.h>
7/23/2019 PDP - Capitulo 3
http://slidepdf.com/reader/full/pdp-capitulo-3 4/7
Sistemas de Informação - 3º PeríodoParadigmas de Programação
Ernani Viriato de Melo Página 4
/ / Def i ni r a cl asse Cl i ent eclass Cl i ent e{ private: / / At r i but os
int numCl i ent e;float sal do;
public: / / Metodos int AcessaNumCl i ent e( ) ;float AcessaSal do( ) ;void At ual i zaSal do( float NovoSal do) ;/ / Const r ut orCl i ent e( int _numCl i ent e, float _sal do) ;
};
/ / Funcao pr i nci pal
int mai n( ){
/ / Cr i ar umobj et o da cl asse cl i ent eCl i ent e obj Cl i ent e( 49, 6795. 97) ;
/ / Exi bi r val or es. / n - > “ent er ” st d: : cout << "\ nSal do do cl i ent e " << obj Cl i ent e. AcessaNumCl i ent e( )
<< " = " << obj Cl i ent e. AcessaSal do( ) << "\ n" ;get ch( ) ; / / Aguar dar a pessoa di gi t ar al guma t ecl a
return 0;}/ / Fi m de mai n( )
/ / Const r ut orCl i ent e: : Cl i ent e( int _numCl i ent e, float _sal do){
numCl i ent e = _numCl i ent e;sal do = _sal do;
}
/ / I mpl ement ação dos métodos da cl asse cl i ent e.
int Cl i ent e: : AcessaNumCl i ent e( ){
return( numCl i ent e) ;}
float Cl i ent e: : AcessaSal do( ){
return( sal do) ;}
void Cl i ent e: : At ual i zaSal do( float NovoSal do){
saldo = NovoSal do;}
Exemplo 2: Considere os objetos:
7/23/2019 PDP - Capitulo 3
http://slidepdf.com/reader/full/pdp-capitulo-3 5/7
Sistemas de Informação - 3º PeríodoParadigmas de Programação
Ernani Viriato de Melo Página 5
/ * Exempl o 2: Desenvol vendo comP. O. O. com herancaAut or : Er naniDat a: 10/ 01/ 2007
*/
#include <iostream>
#include <conio.h>
/ / Def i ni r a cl asse Baseclass Pessoa{ protected : / * At r i but os acessados pel a cl asse
e pel as cl asses der i vadas. */char *CPF;char *Dat aNasci ment o;char *Nome;
public:
/ / Const r ut orPessoa( char *_Nome) ;};
/ / Def i ni r as cl asses der i vadasclass Al uno: public Pessoa{ private: / / At r i but os
int Per i odo;char *RA;
public:/ / Const r ut orAl uno(char *_Nome, char *_RA, int _Per i odo) ;
/ / Met odoschar* AcessaNome( ) ;int AcessaPer i odo( ) ;
7/23/2019 PDP - Capitulo 3
http://slidepdf.com/reader/full/pdp-capitulo-3 6/7
Sistemas de Informação - 3º PeríodoParadigmas de Programação
Ernani Viriato de Melo Página 6
};
class Pr of essor : public Pessoa{ private: / / At r i but os
char *URL;char *Di sci pl i nasMi ni str adas;
public:/ / Const r ut orPr of essor ( char *_Nome, char *_URL,
char *_Di sci pl i nasMi ni str adas);/ / Metodoschar* AcessaNome( ) ;char* AcessaDi sci pl i nasMi ni st r adas( ) ;
};
/ / Funcao pr i nci palint mai n( ){
/ / Cr i ar um obj et o da cl asse al unoAl uno obj Al uno( "Laur a" , "09092006" , 4 ) ;
/ / Cr i ar um obj et o da cl asse pr of essorPr of essor obj Pr of essor ( "Ernani " , "ht t p: / / www. er nani . et i . br " ,
"Paradi gmas de Pr ogramacao") ;
/ / Exi bi r val ores .
st d: : cout << "\ nAl uno " << obj Al uno. AcessaNome( )<< " est a no per i odo " << obj Al uno. AcessaPeri odo( ) ;
st d: : cout << "\ nPr of essor " << obj Prof essor . AcessaNome( )<< " mi ni str a as di sci pl i nas: " << obj Pr of essor . AcessaDi sci pl i nasMi ni st r adas( ) << "\ n" ;
get ch( ) ; / / Aguar dar a pessoa di gi t ar al guma t ecl a
return 0;}/ / Fi m de mai n( )
/ / I mpl ement ação dos mét odos.
/ / Const r ut or es
Pessoa: : Pessoa( char *_Nome){
Nome = _Nome;}
Al uno: : Al uno( char *_Nome, char *_RA, int _Per i odo) : Pessoa( _Nome){
RA = _RA;Per i odo = _Per i odo;
}
Pr of essor : : Pr of essor ( char *_Nome, char *_URL,char *_Di sci pl i nasMi ni st r adas) : Pessoa( _Nome)
{URL = _URL;
7/23/2019 PDP - Capitulo 3
http://slidepdf.com/reader/full/pdp-capitulo-3 7/7
Sistemas de Informação - 3º PeríodoParadigmas de Programação
Ernani Viriato de Melo Página 7
Di sci pl i nasMi ni st r adas = _Di sci pl i nasMi ni st r adas;}
/ / Metodos da Cl asse Al unochar* Al uno: : AcessaNome( )
{ return Nome;}
int Al uno: : AcessaPer i odo( ){
return Per i odo;}
/ / Met odos da Cl asse Pr of essorchar* Prof essor : : AcessaNome( ){
return Nome;}
char* Pr of essor : : AcessaDi sci pl i nasMi ni st r adas( ){
return Di sci pl i nasMi ni st r adas;}
3. Considerações finais do paradigma orientado a objetos
- Reemprego do código dos objetos, ao invés das subrotinas individuais;- Biblioteca de objetos: extensão da linguagem de programação utilizada;- Um objeto é uma unidade autocontida de software, capaz de migrar entre aplicações;- A herança permite que se crie extensões de objetos existentes para atender às
especificidades do sistema em construção;- A orientação a objeto permite que se construa bons e maus programas. Sem uma
modelagem bem feita, não há nada que a O.O. possa fazer;- Entretanto, a orientação a objeto facilita a construção de bons programas, fáceis de
construir, de reutilizar e de manter. Desta forma, pode-se obter vantagens significativas noprocesso de desenvolvimento de software.
Observação do Autor: Recomendo que estudem bastante o paradigma orientado a
objetos. Em especial as linguagens de programação: Java e .Net (C#)