You are on page 1of 22

3.

Programação
Orientada a Objectos

Antonio L. Bajuelos
B l
Departamento de Matemática
Universidade de Aveiro

Programação Orientada a Objectos


„ Histórico
… Anos 70
„ queda do preço dos computadores

„ consequente proliferação do uso dos computadores

„ cresceu a demanda do software

… As técnicas de desenvolvimento de software utilizadas


até então não eram suficientes para contornar os
problemas existentes no desenvolvimento de sistemas

Surge a programação estruturada, seguida pelo conceito


de desenvolvimento estruturado de sistemas

Linguagens e Ambientes de Programação Antonio L. Bajuelos


2

1
Programação Orientada a Objectos
„ Histórico (cont …)
… As técnicas de desenvolvimento estruturado tentavam oferecer
soluções para os problemas do desenvolvimento de sistemas a
partir dos seguintes princípios:
„ Princípio da abstracção
… para resolver um problema, o analista deveria analisá-lo separadamente
dos demais, ou seja, abstrair os detalhes;
„ Princípio da formalidade
… o analista deveria seguir um caminho rigoroso e metódico para
solucionar um problema;
„ Princípio de “dividir para reinar”
… o analista deveria dividir o problema em partes menores, independentes
e com possibilidade de serem mais simples de entender e solucionar;
„ Princípio da disposição hierárquica
… o analista deveria organizar os componentes da solução do problema na
forma de uma árvore com estrutura hierárquica.
… O sistema seria entendido e construído nível a nível, onde cada novo nível
acrescentaria mais detalhes.
Linguagens e Ambientes de Programação Antonio L. Bajuelos
3

Programação Orientada a Objectos


„ Histórico (cont …)
… As novas aplicações se caracterizam por:
„ Grande interacção com o utilizador
„ U de
Uso d interfaces
i t f gráficas
áfi (GUI) como o Windows;
Wi d
„ Necessidade permanente de alteração e expansão, dada a
velocidade de mudanças na tecnologia de hardware;
„ Interacção com outros sistemas, possibilitando a troca de
dados entre estes;
„ Portabilidade para diversas plataformas e sistemas
operacionais.

Demandava-se novas técnicas!!!


Linguagens e Ambientes de Programação Antonio L. Bajuelos
4

2
Programação Orientada a Objectos
„ Histórico (cont …)

… Nasce a Programação Orientada a Objectos (POO)


… Algumas das novidades da POO:
„ A linguagem do analista e do utilizador passam a
ser semelhantes, por se referirem a objectos do
mundo real
„ Pode-se utilizar um mesmo objecto em diferentes
sistemas, aumentando a produtividade do processo
de desenvolvimento
„ Se a biblioteca de objectos for independente do
sistema operacional utilizado, ao se mudar a
plataforma ou o sistema operacional, basta
recompilar o programa portabilidade
Linguagens e Ambientes de Programação Antonio L. Bajuelos
5

Programação Orientada a Objectos


„ Histórico (cont …)
… Importante!
„ A metodologia da POO vem oferecer uma
solução alternativa para o desenvolvimento de
sistemas, e significa uma grande evolução desde a
programação estruturada
„ A POO para além de utilizar os mesmos
princípios da programação estruturada
(abstracção, hierarquização, decomposição)
acrescenta novos princípios, como objectos,
classes, herança, etc.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


6

3
Programação Orientada a Objectos
„ Os fundamentos da POO
…A Enciclopédia Britânica afirma:
… as pessoas empregam constantemente três métodos
de organização…
I. Diferenciação de objetos particulares e seus atributos
II. Distinção entre objetos como um todo e entre suas partes
componentes
III. Formação de, e distinção entre, as diferentes classes de
objetos (por exemplo, quando formam uma classe de todas
as árvores, uma outra classe de todas as rochas e
distinguem-nas)

A POO se apóia nestes três métodos usuais de organização

Linguagens e Ambientes de Programação Antonio L. Bajuelos


7

Programação Orientada a Objectos


„ Uma observação importante
…O conceito de Orientação a Objectos depende mais
da mentalidade do programador do que da
linguagem
i de programação

…É possível desenhar programas razoavelmente


orientados a objeto em linguagens tipicamente
estruturadas
ou
…É possível conseguir programas estruturados em
linguagens de programação OO

Linguagens e Ambientes de Programação Antonio L. Bajuelos


8

4
Programação Orientada a Objectos
„ Exemplo:

“O navio atraca no porto e descarrega sua carga”


… Duas interpretações
„ 1ª (Estruturada) verbos
… Como o navio atraca no porto e como ele faz para
descarregar sua carga i.e. o importante é a acção que será
posteriormente transformada num procedimento

„ 2ª (POO) substantivos
… 1º passo: identificar os objectos (o objecto navio, o objecto
porto e o objecto carga)
… 2º passo: definir o comportamento dos objectos

… 3º passo: identificar o relacionamento entre os objectos

Linguagens e Ambientes de Programação Antonio L. Bajuelos


9

Programação Orientada a Objectos


„ Evolução das LP OO
… 1967: Simula - os primeiros conceitos de OO
… 1972: Smalltalk
… 1980: C++ linguagem híbrida, derivada da
linguagem C
… 1983: Ada criada para uso militar nos EUA
… 1984: Eiffel primeiras características formais de OO
… 1986: Object Pascal
… 1995: Java - Linguagem puramente orientada a
objectos
… ….

Linguagens e Ambientes de Programação Antonio L. Bajuelos


10

5
Programação Orientada a Objectos
„ Conceitos Gerais introduzidos pela POO
„ Objectos
„ Cl
Classes
„ Abstracção
„ Hierarquização
„ Encapsulamento
„ Herança

Linguagens e Ambientes de Programação Antonio L. Bajuelos


11

Programação Orientada a Objectos


„ Objectos
… Definição:
Um objecto é qualquer entidade, não
„
necessariamente
i palpável
l á l que apresenta
atributos e/ou métodos
„ Ele deve ser visto como algo que tenha vida,
mesmo que seja a abstracção de algo inanimado.
… Representação:
„ Um objecto normalmente é representado por um círculo
com o nome na sua parte interna.
… Sinónimos:
„ Objecto = Instância = Ocorrência

Linguagens e Ambientes de Programação Antonio L. Bajuelos


12

6
Programação Orientada a Objectos
„ Objectos
… Exemplos:

„ Objecto
j físico: um carro,, uma p
pessoa,,
uma casa, etc.
„ Objecto conceitual: um organograma de
uma empresa
„ Objecto de software: um botão em uma
GUI

Linguagens e Ambientes de Programação Antonio L. Bajuelos


13

Programação Orientada a Objectos


„ Objectos…(atributos)
… Os atributos definem o estado interno de um objecto:
as suas características
… Exemplos:
„ o objecto:
… Estante possui as características tamanho, cor e tipo de
estrutura.
… Carro possui as características: marca, modelo, cilindrada
e cor
… Fracção (matemática) possui as características:
numerador e denominador
… Observações:
„ Aos atributos de um objecto apenas o próprio objecto deve ter
acesso;
„ Um atributo de um objecto pode ser outro objecto (um
atributo de um carro é o seu motor).
Linguagens e Ambientes de Programação Antonio L. Bajuelos
14

7
Programação Orientada a Objectos
„ Objectos…(métodos)
… Os métodos são as funções que operam sobre o objecto
… Exemplos:
„ com o objecto caneta podemos escrever
escre er e desenhar.
desenhar São estas as
funções oferecidas pelo objecto caneta.
„ Ao objecto fracção podemos associas os seguintes métodos:
simplificar, somar com outra fracção ou número, subtrair com outra
fracção, etc.
… O comportamento do objecto será resultado da acção efectuada
sobre ele, e da função que esta acção chamou.
… Exemplo:
„ Tanto o rádio quanto a TV possuem um botão para ligá-los. Quando
apertamos este botão (ou seja, efectuamos uma acção sobre este
objecto), o comportamento apresentado por ambos é diferente.
… ligar o rádio significa emitir som;
… ligar a TV significa emitir som e imagem.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


15

Programação Orientada a Objectos


„ Objectos…(mensagens)
Os objectos comunicam entre si através de
mensagens que emitem e recebem
„ Quando uma mensagem é enviada deve deve-
se especificar:
… um receptor
… uma requisição de serviços
… argumentos ou parâmetros (se
necessário)
„ Caso o serviço não possa ser atendido, o
emissor é notificado e o receptor não
realiza nenhum processamento
„ Caso o serviço solicitado possa ser
atendido, o receptor aceita e responde à
mensagem activando o método
correspondente

Linguagens e Ambientes de Programação Antonio L. Bajuelos


16

8
Programação Orientada a Objectos
„ Objectos…(mensagens)

„ O atendimento de uma mensagem envolve a execução


de algum tipo de código (método) sobre algum um
dado associado àquela operação (atributo).
„ Quando um objecto é criado, o acesso a suas
características é feito através de mensagens. Para cada
mensagem recebida pelo objecto, existe um método
associado para respondê-la.
„ As operações
A õ podem
d t parâmetros
ter â t d entrada
de t d e
saída com tipos determinados. Esta característica,
juntamente com o seu nome, definem a assinatura de
uma mensagem
Linguagens e Ambientes de Programação Antonio L. Bajuelos
17

Programação Orientada a Objectos


„ Classes
… Definição:
„ As classes são declarações de objectos ou também se poderiam
definir como abstracções de objectos.
objectos

o objecto é uma de instância de uma determinada classe, o que


significa que ele possui o comportamento e as características
definidos pela classe para suas instâncias, este processo é
chamado de instanciação.
… Representação:
„ Uma
U classe
l é representada
d por um rectângulo
â l dividido
di idid em três
ê
partes:
… Na primeira esta o nome da classe
… Na segunda estão os atributos dos objectos descritos na classe.
… Na terceira estão os métodos desses objectos
Linguagens e Ambientes de Programação Antonio L. Bajuelos
18

9
Programação Orientada a Objectos
„ Classes
… Exemplo:

Círculo
Círculos
Raio: Real
R Abstracção x : Real Classe
(x, y) y : Real
Move(Δx, Δy)
Resize(ΔR)
Atributos

Operações

Linguagens e Ambientes de Programação Antonio L. Bajuelos


19

Programação Orientada a Objectos


„ Classes
… Exemplos
Dados privados
Move(Δx, Δy)
Círculos
Raio: Real
x : Real Raio: Real
y : Real x : Real Funções públicas
y : Real
Move(Δx, Δy)
Resize(ΔR)
Resize(ΔR)

Geralmente, funções são o único meio de acesso as


atributos da classe!!

Linguagens e Ambientes de Programação Antonio L. Bajuelos


20

10
Programação Orientada a Objectos
„ Classes
… Exemplos:
class Circulos
Circulos {
private:
Raio: Real
float x, y;
x : Real Em C++ fica
float R;
y : Real
public:
Move(Δx, Δy) void Move (float Delta_x, float Delta_y);
Resize(ΔR) void Resize (float Delta_R);

}; // fim class Circulos

Linguagens e Ambientes de Programação Antonio L. Bajuelos


21

Programação Orientada a Objectos


„ Classes
… Algumas observações:
„ Os objectos de uma determinada classe não são
i
iguais.
i A sua similaridade
i il id d consiste
i apenas no facto
f
de que possuem propriedades idênticas.
„ No instante em que um objecto é instanciado, é
reservado um espaço em memória para ele e
automaticamente executado seu construtor. A partir
deste momento o objecto está pronto para ser
utilizado.
tili d
„ Quando o objecto é eliminado ele automaticamente
executa o seu destrutor

Linguagens e Ambientes de Programação Antonio L. Bajuelos


22

11
Programação Orientada a Objectos
„ Abstracção
… Definição:
„ Abstracção é a capacidade de olhar apenas uma
parte de um todo, ou seja retirar da realidade
apenas as entidades e fenómenos considerados
essenciais
… Exemplo:
„ Para entendermos o funcionamento das plantas, dividimo-las em três
partes básicas: raiz, caule e folhas.
„ Estudamos cada uma de suas partes, abstraindo as demais.
„ Para cada parte, identificamos funções diferentes e bem delimitadas.
… A raiz é responsável pela absorção de água e sais minerais,
… O caule transporta os materiais colectados para as folhas e estas, através
destes materiais fornecidos
… A folhas produzem, através de fotossíntese, alimento para toda a
planta.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


23

Programação Orientada a Objectos


„ Hierarquização
… Após dividirmos uma forma complexa em várias partes, é comum
hierarquizarmos estas partes, ou seja, ordená-las de alguma
forma.
… Exemplo:
„ Um computador pode ser subdividido, por exemplo, em três
componentes principais: CPU, vídeo e teclado
… Cada um destes componentes pode ser dividido por sua vez em
outras partes.
… Uma CPU pode ser dividida em memória RAM, memória ROM,
processador, controlador de DMS, etc. Cada um destes itens, por
sua vez podem também ser divididos em componentes mais
específicos.
Hierarquizar um todo não significa dar prioridade a determinadas
partes. A escolha de qual subsistema é fundamental para o sistema
depende única e exclusivamente do observador

Linguagens e Ambientes de Programação Antonio L. Bajuelos


24

12
Programação Orientada a Objectos
„ Hierarquização

Linguagens e Ambientes de Programação Antonio L. Bajuelos


25

Programação Orientada a Objectos


„ Encapsulamento
… Definição:
„ Encapsulamento é um mecanismo que utilizamos
para esconder detalhes de estruturas complexas,
que de outra forma iriam interferir em nossa
análise.
„ Objectivo: Proteger os dados

… Restringir o acesso dos atributos aos métodos da


classe garante que nenhum dado será alterado
por engano ou de forma descontrolada.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


26

13
Programação Orientada a Objectos
„ Encapsulamento
… Este mecanismo garante que a única forma de acesso aos dados é
através dos métodos disponíveis ao usuário (chamados públicos).
Os demais métodos e os atributos da classe ficam sendo
privados.
i

Linguagens e Ambientes de Programação Antonio L. Bajuelos


27

Programação Orientada a Objectos


„ Encapsulamento
… Atenção!!!
„ Encapsulamento tem sido considerado erradamente
como sinónimo
i ó i d
de ocultação
lt ã d
de d d
dados e
implementação interna, mas na realidade significa
que os componentes (definições, dados e rotinas) são
“metidos numa cápsula” (classe)
„ O Encapsulamento garante que uma classe seja
interpretada como uma caixa preta para o
utilizador:
tili d ele
l não
ã sabeb o que há dentro
d t dod objeto,
bj t
sabe apenas para que serve e quais os métodos
disponíveis para a manipulação deste

Linguagens e Ambientes de Programação Antonio L. Bajuelos


28

14
Programação Orientada a Objectos
„ Encapsulamento
… Recomendações:
„ A menos que hajam razões muito fortes:
… Os atributos de uma classe devem ser definidos
como private (encapsulamento)
… Os métodos que são chamados de fora da classe
devem ser public (interface de acesso)
… Os métodos que devem ser usados somente
dentro da própria classe, devem ser
especificados como private

Linguagens e Ambientes de Programação Antonio L. Bajuelos


29

Programação Orientada a Objectos


„ Encapsulamento

Linguagens e Ambientes de Programação Antonio L. Bajuelos


30

15
Programação Orientada a Objectos

Abstracção, Hierarquização e Encapsulamento


estão intimamente ligados.

„ Abstracção é a capacidade de dividirmos estruturas em partes,


para analisá-las separadamente,
„ conforme vamos decompondo sucessivamente cada uma das
partes de um todo, geramos uma Hierarquia, que se estende
até o componente mais específico,
„ desta forma quando agregamos componentes, formando um
novo todo, estamos Encapsulando estes componentes, que não
mais aparecerão.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


31

Programação Orientada a Objectos


„ Herança
… Herança é o mecanismo que permite numa hierarquia
que os descendentes herdem o acesso ao código e
estruturas de dados dos seus ancestrais.
… Coad-Yourdon define Herança como:
“Mecanismo para expressar a similaridade entre
classes, simplificando a definição de Classes
similares a outras que já foram definidas. Ela
representa generalização e especialização,
especialização tornando
atributos e serviços comuns em uma hierarquia de
Classe”

Linguagens e Ambientes de Programação Antonio L. Bajuelos


32

16
Programação Orientada a Objectos
„ Herança
… Através do mecanismo de Herança, a classe mais
especializada
p herda todos os métodos e atributos da
classe mais geral
…A superclasse descreve todos os atributos e métodos
herdados das suas subclasses em vez de estes se
repetirem num nível mais baixo

Linguagens e Ambientes de Programação Antonio L. Bajuelos


33

Programação Orientada a Objectos


„ Herança
… Exemplo:

Linguagens e Ambientes de Programação


Antonio L. Bajuelos 34

17
Programação Orientada a Objectos
„ Herança
… Tipos de herança:
„ Herança entre classes (simples)
… tipo de herança onde uma subclasse herda as propriedades
das suas superclasses
„ Herança múltipla
… a classe pode pertencer a duas ou mais superclasses

Linguagens e Ambientes de Programação Antonio L. Bajuelos


35

Programação Orientada a Objectos


„ Polimorfismo
Definição:
… Polimorfismo é a propriedade de uma ou mais classes
responderem a mesma mensagem, cada uma de uma
forma diferente.
… Isto implica que então é possível que objectos
diferentes reagirem segundo a sua função a uma ordem
padrão.
… Exemplo:
p O comando "abre",, p por exemplo,
p , faz um
objecto entrar em acção, seja ele uma janela, uma
porta ou uma tampa de garrafa.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


36

18
Programação Orientada a Objectos
„ Polimorfismo
… Outro Exemplo:
„ Três classes: os Complexos, os Vectores e os
R i
Racionais
i
„ Em cada classe podemos implementar, por exemplo
o método mod()
„ Para as três classe o resultado será sempre um
número racional positivo, mas a sua determinação é
diferente.
„ No programa no pode existir “confusão” já que
quando apliquemos o método temos que definir o
objecto envolvido.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


37

Programação Orientada a Objectos


„ Principais Vantagens
… Existem várias razões para adoptarmos a metodologia
da programação orientada a objectos:
„ Continuidade

„ Reutilização

„ Manutenção

„ Produtividade

Linguagens e Ambientes de Programação Antonio L. Bajuelos


38

19
Programação Orientada a Objectos
„ Continuidade
… Um dos inconvenientes do desenvolvimento estruturado de
sistemas é o abismo que há entre as fases de desenvolvimento:
Análise - Projecto - Programação
… Isto porque cada fase do desenvolvimento cria documentos
diferentes dificultando o entendimento da equipe de
desenvolvimento:
Analista / Projectista / Programador
… Na metodologia da POO padroniza-se um documento que será
utilizado por todos os componentes da equipe: o Diagrama de
Classes
… O uso de ambientes de POO permite que o próprio código seja
visto como documentação, por reflectir de forma quase completa o
Diagrama de Classes

Linguagens e Ambientes de Programação Antonio L. Bajuelos


39

Programação Orientada a Objectos


„ Reutilização
… Os objectos que compõem o sistema poderão ser
aproveitados em outros sistemas, sem qualquer
alteração.
… Caso haja necessidade, podemos criar novos objectos
baseados em outros já existentes, herdando as
características do objecto doador

Linguagens e Ambientes de Programação Antonio L. Bajuelos


40

20
Programação Orientada a Objectos
„ Reutilização
… Exemplo:

Linguagens e Ambientes de Programação Antonio L. Bajuelos


41

Programação Orientada a Objectos


„ Manutenção
… Como o objecto encapsula todos os mecanismos de
seu funcionamento, caso haja necessidade de alterá-
lo, os sistemas que dependem deste objecto não
necessitarão de qualquer alteração.
… Isto é possível pois como o funcionamento do objecto
foi escondido do sistema, este não sofrerá nenhum
impacto com alterações internas ao objecto.

Linguagens e Ambientes de Programação Antonio L. Bajuelos


42

21
Programação Orientada a Objectos
„ Productividade
… É possível criar novos sistemas reutilizando colecções de classes
devidamente testadas

… Maior rapidez e, consequentemente, produtividade no


desenvolvimento de sistemas
sistemas..

… Maior qualidade no software desenvolvido, pois os objectos já


estão devidamente testados e seguros.
seguros.

Com a metodologia da POO POO,, passa a haver uma


similaridade entre as linguagens do analista e do
utilizador, já que os objectos dizem respeito a dados do
mundo real
Linguagens e Ambientes de Programação Antonio L. Bajuelos
43

22

You might also like