pdp - capitulo 3

7
Sistemas d e I nf ormação - 3º Período Pa radigmas de Progr amaçã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 paradigma orientado a objetos 2. Conceitos básicos do paradigma orientado a objetos 1. Introdução O conceito de programação orientada a objeto tem suas raízes na SIMULA 67, mas não foi amplamente desenvolvido até que a evolução da Smalltalk resultasse na produção de sua versão 80 (1980). De fato, alguns consideram a Smalltalk a única linguagem puramente orientada a objetos.  A idéia básica do paradigma orientado a objetos é imaginar que programas simulam o mundo real: um mundo povoado de objetos. Dessa maneira, linguagens baseadas nos conceitos 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 de que no mundo real frequentemente usamos objetos sem precisarmos conhecer como eles realmente funcionam. Assim, programação orientada a objetos fornece um ambiente onde mú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 e alarmes. Essas informações são atributos que são manipulados pelo relógio, ou seja, um objeto tem atributos. O relógio também tem botões, como um botão de iluminação, um botão para selecionar o 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 objeto tem funções (métodos).  Além dos botões, o relógio também tem uma caixa externa e uma pulseira, ou seja, um objeto relógio é composto de outros objetos. Um objeto pode ser formado a partir de um conjunto de objetos. Falamos de um relógio moderno, com alarmes e cronômetros; mas um relógio antigo só informava a hora; de um relógio de bolso evoluiu-se para relógios de pulso, para relógios de parede, para relógios com alarmes, com cronômetros etc., ou seja, um objeto pode evoluir de acordo com uma herança. Você também sabe que existe uma fábrica de relógios, e que nela estão as informaçõ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.

Upload: cesar-freitas

Post on 13-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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.

Page 2: PDP - Capitulo 3

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.

Page 3: PDP - Capitulo 3

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>

Page 4: PDP - Capitulo 3

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:

Page 5: PDP - Capitulo 3

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

Page 6: PDP - Capitulo 3

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;

Page 7: PDP - Capitulo 3

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