Você está na página 1de 11

Programação Centrada em

Objectos

1. O paradigma da programação
orientada aos objectos

1. O paradigma da programação orientada aos objectos

| História
| Origens do paradigma

| Aplicações do paradigma OO

| Paradigma orientado aos procedimentos vs. Paradigma orientado


aos objectos

Programação com Objectos / Processamento de Dados I 2

1
1. O paradigma da programação orientada aos objectos

| História
Anos Desenvolvimento
60 |Dahl e Nygaard da Universidade de Oslo desenvolveram o
Simula-67, a primeira linguagem com conceitos orientados a
objectos.
70 | Smalltalk, daXerox, constitui a primeira implementação
prática de uma linguagem e ambiente OO.
80 |Strostrup
dos Bell Labs desenvolveu C++ uma extensão do
C com conceitos do Simula-67.
Simula-67
90 |Eiffel de B. Meyer e CLOS – uma extensão do LISP
popularizaram conceitos OO.

Programação com Objectos / Processamento de Dados I 3

1. O paradigma da programação orientada aos objectos

| História (continuação)
Anos Desenvolvimento
90 |Problemas do C++ levaram James Gosling,
Gosling da Sun,
Sun a
desenvolver o Java:
1. Sintaxe próxima do C.
2. Segurança reforçada (sem ponteiros e verificação em tempo real dos
índices de tabelas).
3. Programas executados numa máquina virtual (esta opção, juntamente
com a segurança, torna o Java muito lento, em cerca de 50 vezes pior
que programas equivalentes em C).
4. Interfaces ((apenas
p com os p protótipos
p dos métodos)) p permitem
implementar alternativas, cada uma com vantagens específicas.
5. Muitas bibliotecas disponibilizadas (a mais famosa é o JNI -Java Native
Interface, que permite aceder a programas desenvolvidos noutras
linguagens.
6. Código muito compacto (ambiente executado no cliente) atraiu
projectistas do WWW.

Programação com Objectos / Processamento de Dados I 4

2
1. O paradigma da programação orientada aos objectos

| História (continuação)
Anos Desenvolvimento
00 |Microsoft divulga C# (C
(C-sharp)
sharp), derivado do Java
Java, para a
plataforma .NET.

Setembro 2009
Popularidade das principais linguagens de programação, nas interrogações
normalizadas de pesquisas no Google e Yahoo! (índice TIOBE Programming
Community:

1. Java: 19.4%
2. C: 16.9%
3. PHP: 10.2%
4. C++: 9.9%
5. Visual Basic: 9.2%
Programação com Objectos / Processamento de Dados I 5

1. O paradigma da programação orientada aos objectos

; História

| Origens do paradigma
| Aplicações do paradigma OO

| Paradigma orientado aos procedimentos vs. Paradigma orientado


aos objectos

Programação com Objectos / Processamento de Dados I 6

3
1. O paradigma da programação orientada aos objectos

| Origens do paradigma
z Alguns dos conceitos fundamentais do paradigma dos objectos
surgem nos séculos V e IV A.C. com a filosofia grega, em
particular com Sócrates e Platão, a propósito da forma ideal de
realizar a catalogação ou classificação do conhecimento. Este
poderia ser dividido em ideias individuais e classes de ideias.

z Tem na sua génese o conjunto de desenvolvimentos realizados ao


longo de muitos anos em duas áreas do conhecimento bastante
distintas – a Simulação e a Engenharia de Software.

Programação com Objectos / Processamento de Dados I 7

1. O paradigma da programação orientada aos objectos

| Origens do paradigma
z Simulação
• O problema a resolver nesta área era o de encontrar formas simples
de representar (modelar) em computador entidades do mundo real
cujo comportamento se pretende analisar, sendo que tais entidades
possuem atributos definitórios, isto é, valores associados a
propriedades que representam a sua estrutura interna.
Assim, as entidades do mundo real eram consideradas modeláveis
desde que possuíssem as seguintes informações:
Æ Identidade (única);
Æ Estrutura ((via atributos,, ou seja
j as p
propriedades
p estáticas);
);
Æ Comportamento (as acções e reacções respectivas);
Æ Interacção (forma de relacionamento com outras entidades)
A estas entidades abstractas, modelos de entidades reais através de
um processo de abstracção deu-se o nome de objectos.

Programação com Objectos / Processamento de Dados I 8

4
1. O paradigma da programação orientada aos objectos

| Origens do paradigma
z Engenharia de Software
• Nos anos 60 e 70 a Engenharia de Software havia adoptado um
conjunto de princípios relativos ao processo de desenvolvimento
de aplicações e construção de linguagens designados como
análise e programação estruturadas e procedimentais.
• Este processo era designado por Análise ou Programação
Estruturada, conforme a fase de desenvolvimento. A ideia
consistia em considerar-se que os objectos da análise ou do
desenvolvimento deveriam ser inicialmente entidades pouco
definidas quer estrutural quer funcionalmente e muito abstractas
de forma a poder controlar-se a sua complexidade. Em passos
sucessivos estas eram individual e separadamente
p refinadas até
se atingir o limite do seu detalhe.
• Este processo implicava uma separação dos processos e
instruções dos dados, sendo estes considerados entidades de
segunda classe adaptados às necessidades funcionais.

Programação com Objectos / Processamento de Dados I 9

1. O paradigma da programação orientada aos objectos

| Origens do paradigma
z Engenharia de Software (continuação)
• O constante aumento da complexidade dos problemas a resolver
conduziu à necessidade de criação de mecanismos de
abstracção capazes de facilitar as tarefas quer de análise quer de
programação, ainda que sob um ponto de vista procedimental,
isto é, procurando sempre responder à questão de como
especificar a funcionalidade das aplicações de forma a que a
mesma possa ser tão clara que possa ser reutilizada.
• Estruturas de controlo de execução (for, repeat, while, case,
...)
• Mecanismos de abstracção de controlo (rotinas, funções,
procedimentos)
• Unidades de computação ou Mecanismos de Abstracção de
Dados (módulos divididos em duas camadas: interface e
implementação. Às funções e procedimentos disponibilizados
pelo módulo dá-se o nome de API , do inglês application
programmer´s interface)

Programação com Objectos / Processamento de Dados I 10

5
1. O paradigma da programação orientada aos objectos

; História

; Origens do paradigma

| Aplicações do paradigma OO
| Paradigma orientado aos procedimentos vs. Paradigma orientado
aos objectos

Programação com Objectos / Processamento de Dados I 11

1. O paradigma da programação orientada aos objectos

| Aplicações do paradigma OO
• Banca e seguros
• Robótica

• Telecomunicações

• Desenho VLSI

• Simulação

• Bases de dados

• Modelação matemática

• Controlo de tráfego aéreo

• Sistemas de janelas

Programação com Objectos / Processamento de Dados I 12

6
1. O paradigma da programação orientada aos objectos

; História

; Origens do paradigma

; Aplicações do paradigma OO

| Paradigma orientado aos procedimentos


vs.. Paradigma orientado aos objectos
vs

Programação com Objectos / Processamento de Dados I 13

1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Procedimentos

• Primeiro paradigma a surgir e suportado por linguagens que


continuam a ser muito usadas (ex: Fortran, Pascal, Basic, C).
• O desenho do programa é orientado às funcionalidades
pretendidas.
• O paradigma é centrado no conceito de procedimentos (também
chamados
h d rotinas,
ti subrotinas,
b ti métodos
ét d ou funções).
f õ )
• O programa é baseado na chamada aos procedimentos: um
procedimento pode ser chamado em qualquer ponto de
execução, por outro procedimento ou pelo mesmo.

Programação com Objectos / Processamento de Dados I 14

7
1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Procedimentos

• Estado do sistema (valor de variáveis) conhecido.


• Programas manipulam directamente o estado do sistema.
• Tipos de dados tabela/ponteiro permitem acesso livre a quaisquer
zonas de memória.

Programação com Objectos / Processamento de Dados I 15

1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Procedimentos


• Vantagens:
• Simplicidade e eficiência na execução.
• Próximo do processador.

• Desvantagens:
• Programadores obrigados a trabalhar na estrutura da
arquitectura (dados e operações) e não na estrutura do
problema
problema.
• Duplicação de funções com mesmos objectivos, mas que
trabalham sobre dados distintos.
• Extensão de sistemas, com novos dados, pode obrigar a
grande número de alterações.
• Acesso livre a memória tem consequências desastrosas
(buffer overflow, core dump, …).
Programação com Objectos / Processamento de Dados I 16

8
1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Objectos

• O desenho do programa é orientado aos objectos do problema.


• O programa é baseado num conjunto de objectos, interagindo
entre si por métodos.
• Cada objecto contém atributos.
• As operações são definidas na classe, que constitui o padrão
dos objectos. Cada objecto é uma instância de uma classe.

Programação com Objectos / Processamento de Dados I 17

1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Objectos


• Vantagens:
• Aproximação do mundo real.
• Encapsulamento da informação.
• Extensível, sendo mais fácil alterar e/ou acomodar novos
requisitos.
• Reutilização, por herança de classes mais gerais.

• Desvantagens:
• Abordagem nova, com conceitos mais complexos.
• Desempenho inferior.

Programação com Objectos / Processamento de Dados I 18

9
1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Objectos

• Encapsulamento:
• Agrupamento de ideias relacionadas numa unidade, que
pode então ser referenciada apenas por um nome (e.g.
subrotinas são encapsulamento de instruções).
• Em OO, refere
refere-se
se ao agrupamento de atributos e operações,
representativos do estado de um objecto, de tal forma que o
estado é acessível e modificável via a interface
disponibilizada pelo encapsulamento (encapsulamento de
estado conjuntamente com os mecanismos para aceder e
modificar o estado).

Programação com Objectos / Processamento de Dados I 19

1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Objectos

• Herança:
• Herança da classe B para classe A é o mecanismo que
permite à classe B ter implicitamente definidos os atributos e
métodos definidos em A. A é denominada superclasse. B é
denominada subclasse.
• A herança permite que um objecto seja simultaneamente
uma instância de mais do que uma classe.
• Herança simples (uma classe tem apenas superclasse
directa) versus herança múltipla (uma classe pode ter várias
superclasses directas).

Programação com Objectos / Processamento de Dados I 20

10
1. O paradigma da programação orientada aos objectos

| Paradigma orientado aos procedimentos vs.


vs. Paradigma
orientado aos objectos

z Paradigma Orientado aos Objectos

• Polimorfismo:

• Múltipla definição de um método com o mesmo identificador


em classes distintas, podendo este ter diferentes
implementações
p ç em cada uma destas classes.

• Em OO, o polimorfismo é normalmente implementado


através de ligação dinâmica, i.e., o método a ser executado
é determinada apenas em tempo de execução (e não em
tempo de compilação).
Programação com Objectos / Processamento de Dados I 21

1. O paradigma da programação orientada aos objectos

; História

; Origens do paradigma

; Aplicações do paradigma OO

; Paradigma orientado aos procedimentos vs. Paradigma orientado


aos objectos

Programação com Objectos / Processamento de Dados I 22

11

Avaliar