Você está na página 1de 4

Captulo 1

Panormica da Programao Orientada a Objetos

1.1. Introduo
O paradigma da programao orientada a objetos (POO) surgiu devido a limitaes nas
abordagens anteriores. Que limitaes foram essas?
Cada programa opera sobre uma quantidade de dados a fim de realizar alguma
funcionalidade e produzir uma sada. Essa tarefa pode ser facilmente realizada quando o
nmero de instrues que compem o programa pequeno. Entretanto, programas maiores
possuem mais complexidade, de modo que h uma tendncia de apresentarem erros, e os
erros de software podem ter um alto custo de correo, bem como resultar em situaes
indesejveis.
Dentro desse contexto, a POO oferece uma nova forma para tratar essa complexidade,
obtendo programas que sejam mais confiveis e de fcil manuteno.

1.2. Origem da Programao Orientada a Objetos


A POO uma abordagem de programao que serve de elo entre os problemas existentes
e as solues computacionais. Para entender melhor, precisar saber o que existia antes da
POO.
Antes desse paradigma, havia um obstculo conceitual para os programadores quando
eles tentavam adaptar as entidades reias s restries impostas pelas linguagens e tcnicas de
programao tradicionais. Os programadores eram ensinados a raciocinar sobre os problemas
em termos de blocos de cdigo (funes) ou procedimentos e sobre a forma como esses
atuavam sobre os dados.
Essa abordagem constitui um problema quando existe a necessidade de desenvolver um
sistema complexo e/ou de grande porte. Nesse sentido, A POO se mostra como um
paradigma de programao que permite aos programadores raciocinar e solucionar problemas
em termos de objetos, os quais esto diretamente associados s entidades reais.

1.3. Limitaes das Linguagens Procedimentais


Para entender as contribuies da POO, preciso entender quais eram as limitaes das
abordagens anteriores e como elas surgiram nas linguagens de programao tradicionais.
1.3.1. Linguagens Procedimentais
Cada declarao em uma linguagem procedimental diz para o computador fazer alguma
tarefa. Um programa em uma linguagem procedimental uma lista de instrues organizada
em termos de funes. Para programas pequenos nenhum princpio organizacional (ou
paradigma de programao) necessrio.

1.3.2. Diviso do Programa em Funes


medida que os programas se tornam maiores, torna-se difcil tratar adequadamente
todas as funcionalidades de um sistema em uma nica lista de instrues. Por essa razo, foi
adotada uma forma de tornar os programas mais compreensveis, dividindo-os em unidades
menores, chamadas de funes, onde cada unidade tem uma proposta claramente definida,
bem como uma interface bem definida com as outras funes do programa.
1.3.3. Programao Estruturada
medida que os programas se tornam maiores e mais complexos, a programao
estruturada demonstra problemas. Os programas maiores exigiro maior esforo de
desenvolvimento e manuteno. Quais so as razes para essas dificuldades?
1.3.4. Dados Componente Essencial na Modelagem de um Sistema
Os dados tem suma importncia na soluo de um problema. Eles constituem a essncia
do sistema. Por outro lado, em uma linguagem procedimental, o foco no est nos dados nem
nos objetos, mas em fazer coisas. Ou seja, o foco so as funes.

1.3.5. Uso de Variveis em Linguagens de Programao Estruturada


Nas linguagens desse paradigma, as variveis locais so usadas apenas dentro do escopo
da funo onde so declaradas. Alm disso, essas variveis no permitem que dados
importantes sejam acessados por muitas e diferentes funes. Em tal situao, necessrio o
uso de variveis globais. Nesse cenrio, a organizao dos dados no poder ser modificada
sem modificar todas as funes que tm acesso a eles. Se novos dados so adicionados, ser
necessrio modificar todas as funes que tm acesso a esses dados para que elas tambm
possam ter acesso aos novos dados.
1.3.6. Problemas de Programas Procedimentais
Os programas procedimentais so difceis de ser projetados. O problema com os seus
principais componentes, as funes e estruturas de dados, por eles no modelarem o mundo
real muito bem. Existem outros problemas, como a dificuldade em criar novos tipos de dados
embutidos. A habilidade de criar os dados desejados chamada de extensibilidade.

1.4. Caractersticas das Linguagens Orientadas a Objetos


1.4.1. A Abordagem de Orientao a Objetos
A ideia por trs das linguagens de programao orientada a objetos combinar em uma
nica entidade tanto os dados quanto as funes que operam sobre esses dados. Tal entidade
denominada objeto.
As funes de um objeto, chamadas funes-membro me C++, tipicamente oferecem uma
nica forma de acesso aos dados. Se for necessrio ler dados de um objeto, chame a funo-
membro desse objeto. Essa funo ler os dados e retornar o valor. importante observar
que no se pode acessar os dados diretamente. Isso ocorre porque os dados ficam escondidos
(hidden). Como consequncia, eles ficam mais seguros.
1.4.2. Encapsulamento de Dados
Em linguagens de POO, os dados e funes so encapsulados em uma nica entidade o
objeto. O encapsulamento de dados e a ocultao de dados (ou data hiding) so aspectos
importantes na descrio de linguagens orientada a objetos. Para modificar dados de um
objeto, preciso saber exatamente quais funes interagem com esse objeto (isto , as
funes-membros do objeto), enquanto outras funes no podem ter acesso aos dados.
1.4.3. Raciocnio em Termos de Objeto
O programa dividido em objetos, e no mais em funes. Pensar em termos de objeto
tem um efeito positivo sobre o quo facilmente os programas podem ser projetados. Isso
resultado da relao existente entre os objetos no sentido de programao e objetos no mundo
real. Em POO, diz-se que objetos so membros de classes.

1.4.4. Classe
possvel definir muitos objetos pertencentes mesma classe. Uma classe serve como
um padro, modelo ou template. Ela especifica quais dados e funes sero includas nos
objetos daquela classe. Uma classe , portanto, uma coleo de objetos similares.
1.4.5. Herana
O princpio de herana considera a diviso de uma classe em subclasses que
compartilham caractersticas comuns com a classe da qual ela derivada. Adicionalmente
isso, cada subclasse tambm possui suas prprias caractersticas. Em C++, a classe original
denominada classe base ou superclasse. Outras classes podem ser definidas compartilhando
caractersticas da classe base, porm tambm adicionando caractersticas prprias. Estas so
denominadas classes derivadas.
Os objetos possuem caractersticas exatas de suas classes, as quais servem de modelo. As
classes derivadas herdam algumas caractersticas de sua classe base, porm adicionam novas
caractersticas tambm. Assim como as funes em um programa procedimental, a herana
reduz o tamanho do programa OO e torna mais clara a relao entre os elementos do
programa.
1.4.6. Reusabilidade
Uma vez que uma classe tenha sido criada, escrita e depurada, ela pode ser distribuda
para outros programadores para que eles a usem em seus programas. Isso chamado de
reusabilidade. Todavia, em POO, o conceito de herana oferece uma importante extenso
ideia de reusabilidade. Um programador pode pegar uma classe existente e, sem modific-la,
adicionar novas caractersticas a ela.

1.4.7. Criao de Novos Tipos de Dados


Um dos benefcios dos objetos que eles oferecem ao programador uma forma
conveniente de construir novos tipos de dados. Diversos aspectos de C++ tm o objetivo de
facilitar a criao de novos tipos de dados.
1.4.8. Polimorfismo e Overloading (sobrecarga)
Usar operadores ou funes de formas diferentes, dependentes do que esto operando,
denominado polimorfismo (isto , uma coisa com vrias formas distintas). Quando um
operador existente, como = ou +, tem a capacidade de ser usado em novos tipos de dados,
diz-se que ele est sobrecarregado (overloading). Overloading um tipo de polimorfismo.

Questes
1. Quais as principais caractersticas do paradigma da programao estruturada?
2. Quais as principais caractersticas do paradigma da POO?
3. Quais as limitaes da programao estruturada?
4. O que encapsulamento de dados?
5. Qual a diferena entre classes e objetos?

Exerccios
1. Em que situaes essencial utilizar herana em um programa? Por qu?
2. O que o reuso de (artefatos de) software proporciona? Apresente exemplos.

Você também pode gostar