Você está na página 1de 27

Introduo ao Paradigma de

Programao Orientada a Objetos

Prof. Antonio Mendes da Silva Filho


Orientao a Objetos

Introduo
Propsito da Programao OO
Caractersticas das Linguagens OO
Sugestes de leitura
Introduo a OO
POO uma das principais inovaes no
desenvolvimento de software da ltima dcada.
Complexidade: Principal problema na elaborao
de programas.
Quo maior a complexidade, maior a possibilidade de
haver erros.
Erros de software tm elevado custo de correo
Podem causar situaes de falhas operacionais;
Podem colocar vidas em perigo.
Introduo a OO (cont.)
POO compreende uma nova abordagem
de conceber e construir programas.
POO permite lidar com a complexidade.
POO facilita a manuteno.
POO possibilita a obteno de programas
mais confiveis.
Propsito da POO
POO foi desenvolvida devido s limitaes
existentes nas abordagens anteriores.
Projeto e programao estruturada.
Para programas pequenos, no h necessidade
de princpio organizacional.
medida que cresce o tamanho dos programas,
torna-se difcil compreender programas que
excedam a centenas de linhas de cdigo.
Questo da complexidade
Linguagens Procedimentais
Exemplos de linguagens procedimentais:
Fortran, Pascal e C
Um programa numa linguagem
procedimental uma lista de instrues.
O programador cria um conjunto de
instrues e o computador as executa.
Funes, em linguagens procedimentais,
servem para modularizar os programas.
Mdulos consiste de um grupo de funes.
Programao Estruturada
Diviso de um programa em funes e mdulos
constitui um dos fundamentos da programao
estruturada.
Funo: mecanismo usado para `quebrar (i.e.
dividir) o programa em unidades menores.
Tornar os programas mais compreensveis
Disciplina de programao que tem influenciado
a organizao de programas h vrios anos.
Problemas na Programao Estruturada

As linguagens procedimentais colocam


nfase na funo
Ler dados, processar, checar existncia de
erros, mostrar resultados, ...
Parte importante na soluo de problemas
computacionais: DADOS
Problemas na Programao Estruturada
Em linguagens procedimentais:
Variveis locais so usadas apenas dentro do escopo
da funo onde so declaradas.
Variveis locais no so teis para dados que devem
ser acessados por muitas e diferentes funes.
Vide slide 10.
Em outro contexto
Se muitas funes tem acesso a um conjunto de
dados, ento qualquer modificao nos dados requer
modificaes em todas as funes. Vide slide 11.
Tornar-se- difcil fazer a manuteno correta de tais
funes.
Relao entre variveis globais e locais
Relao entre funes e dados em
programas procedimentais
Problemas na Programao Estruturada

Programas em linguagens procedimentais


so mais difceis de serem projetados
Funes e estruturas de dados no modelam
o mundo real muito bem.
Mais difcil oferecer extensibilidade a
linguagem procedimental, i.e.:
Adicionar, manipular e fazer a manuteno de
novos tipos de dados.
O que necessrio?
Uma forma de restringir o acesso aos
dados
Esconder os dados de todas, exceto
algumas poucas funes `crticas
Benefcios resultantes:
Proteo aos dados
Simplificar a manuteno
Abordagem orientada a objetos
Introduo da POO
Linguagens OO combinam numa nica
entidade (objeto) dados e funes que
atuam sobre esses dados.
Funes de um objeto oferecem uma
nica forma de acesso a seus dados.
Em C++, funes membro
Em Java, mtodos
Abordagem OO (2)
Num programa OO, se voc precisar ler os dados de um
objeto, ento:
Voc chama a funo daquele objeto
A funo ler os dados e retorna os valores a voc

Os dados ficam `escondidos, i.e.:


POO oferece suporte a ocultao de dados ou data hiding;
Os dados ficam seguros de qualquer alterao `acidental;

Dados e funes ficam `encapsulados em uma nica


entidade, denominada de objeto.
Abordagem OO (3)
Para acesar os dados de um objeto, voc precisa
saber quais mtodos/funes interage com ele.
Isto simplifica escrita, depurao e manuteno de
programas.

Um programa numa linguagem OO consiste de


vrios objetos, comunicando-se entre si, i.e.:
Atravs de trocas de mensagens (Java)
Atravs da chamada de funes membro de
outro objeto (C++)
Vide slide 17.
Abordagem OO (4)
Objeto
dados

funo membro

funo membro

Objeto Objeto

dados dados

funo membro funo membro

funo membro funo membro


Caractersticas das Linguagens OO
Modelagem em termos de objetos
Exemplos de objetos
Componentes eltricos, automveis numa
simulao de fluxo de trfego
Janelas, menus, objetos grficos, ...
Pontos no plano, tempo, ...
Classes
Objetos so membros de classes
Classe ser como um padro, modelo ou
template
Classe especifica quais dados e funes
pertencero aquela classe.
Definir uma classe no cria qualquer
objeto, assim como a simples existncia
de um tipo de dado no cria quaisquer
variveis.
Classes (2)
Coleo de objetos similares
Classe de jogadores de futebol:
Pel
Ronaldinho
Romrio
Note que no existe uma pessoa chamada
`jogador de futebol
Todavia, pessoas com nomes especficos so
membros desta classe SE possuem
determinadas caractersticas.
Herana
Classes podem ser divididas em subclasses
como, por exemplo:
A classe dos animais dividida em mamferos,
anfbios, insetos, aves, ...
A classe dos veculos dividida em carros de passeio,
caminhes, nibus, motocicletas, ...
Princpio da herana
Classes derivadas compartilham caractersticas
comuns com a classe da qual ela derivada. Vide
slide 22.
Reduz o tamanho do programa e aumenta a clareza
do programa.
Noo de herana
A classe
base
B

A
A
classes
B derivadas
B D
C
E
Reusabilidade
Depois que uma classe tenha sido criada,
escrita e testada, ela pode ser distribuda
para vrios programadores e reutilizada.
Similar a forma na qual uma biblioteca de
funes numa linguagem procedimental pode
ser incorporada em diferentes programas.
Conceito de extenso de classe (reusabilidade
da classe), i.e., adicionar novas caractersticas
classe j existente.
Criao de novos tipos
Exemplo:
posio2 = posio + origem

As variveis acima representam coordenadas


Representam entidades reais de modo mais
claro e direto, i.e. suporte a
compreensibilidade.
Polimorfismo
No exemplo anterior:
posio2 = posio + origem

Os operadores = (igual) e + (soma) usados


na expresso acima no atuam de maneira
similar com os tipos predefinidos da
linguagem OO como um `int.
Usar operadores ou funes de formas
diferentes, dependente sobre o que eles esto
operando, denominado de polimorfismo.
Sugestes de leitura
Vide artigo sobre POO no site da Revista
Espao Acadmico em
www.espacoacademico.com.br/035/35amsf.htm

J. Rumbaugh et al, Modelagem e Projetos


Baseados em Objetos com UML 2, Ed.
Campus, 2002;
Sugestes de leitura (2)
K. Arnold and J. Gosling, The Java
Programming Language, Addison-Wesley,
1996.
H. M. Deitel and P. J. Deitel, Java How to
Program, Prentice Hall, 3rd Edition, 1999.
http://java.sun.com