programação orientada a objetos

8
PROGRAMAÇÃO ORIENTADA A OBJETOS: INTRODUÇÃO E CONCEITOS. Janaina Scal Duia Castello Programação Orientada a Objetos Disciplina Seminário Departamento de Engenharia Elétrica Universidade Federal do Espírito Santo Vitória ES BRASIL [email protected] Resumo Neste artigo descreve alguns conceitos de programação a fim de que se possa definir o que é Programação Orientada a Objetos. Também se discute vantagens deste tipo de programação em comparação com o tipo mais usado na indústria de software, bem como os motivos e a historia de seu surgimento. Além disso, espera-se que pessoas com pouco conhecimento em programação consigam compreender este conceito e possam iniciar um estudo mais aprofundado futuramente. I INTRODUÇÃO Nos últimos anos, a indústria do software vem investindo numa nova filosofia de programação, a Programação Orientada a Objeto. Este filosofia consiste em aproximar a metodologia de programa- ção da metodologia do raciocínio humano, ou seja, na discrição do mundo por conjunto de objetos, os quais possuem seus componentes e suas ações bem definidas. No capitulo II será descritos alguns conceitos básicos para facilitar a com- preensão do texto. A seguir, o capitulo III, mostram a evolução das linguagens de programação até a Programação Orientada a Objeto, bem como principais motivos destas mudanças. O capitulo IV conceitua o que significa Programar Orientado a objetos e descreve as principais carac- terísticas deste tipo de programação. Por fim, o capitulo V discorre sobre as vanta- gens e desvantagens desta metodologia e comenta as conclusões sobre tal. II CONCEITOS BÁSICOS 1. Paradigmas de Linguagens de Programação É um conjunto de características que servem para caracterizar um conjunto de linguagens[1]. De um modo mais simplificado, os paradigmas indicam a forma como o programador visualiza como o programa será escrito e executado. Por exemplo, ele

Upload: janaina-scal-duia-castello

Post on 04-Jul-2015

995 views

Category:

Education


6 download

DESCRIPTION

Relatório sobre Programação Orientada a Objetos (POO) para a matéria Seminários do Curso de Eng. Elétrica da UFES. Tem uma apresentação baseada nele. A POO tem outras características interessantes, então pesquise mais ^^

TRANSCRIPT

Page 1: Programação Orientada a Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS: INTRODUÇÃO E CONCEITOS.

Janaina Scal Duia Castello

Programação Orientada a Objetos

Disciplina Seminário Departamento de Engenharia Elétrica – Universidade Federal do Espírito Santo

Vitória – ES – BRASIL [email protected]

Resumo – Neste artigo descreve

alguns conceitos de programação a fim de

que se possa definir o que é Programação

Orientada a Objetos. Também se discute

vantagens deste tipo de programação em

comparação com o tipo mais usado na

indústria de software, bem como os

motivos e a historia de seu surgimento.

Além disso, espera-se que pessoas com

pouco conhecimento em programação

consigam compreender este conceito e

possam iniciar um estudo mais

aprofundado futuramente.

I – INTRODUÇÃO

Nos últimos anos, a indústria do

software vem investindo numa nova

filosofia de programação, a Programação

Orientada a Objeto. Este filosofia consiste

em aproximar a metodologia de programa-

ção da metodologia do raciocínio humano,

ou seja, na discrição do mundo por

conjunto de objetos, os quais possuem seus

componentes e suas ações bem definidas.

No capitulo II será descritos alguns

conceitos básicos para facilitar a com-

preensão do texto. A seguir, o capitulo III,

mostram a evolução das linguagens de

programação até a Programação Orientada

a Objeto, bem como principais motivos

destas mudanças. O capitulo IV conceitua

o que significa Programar Orientado a

objetos e descreve as principais carac-

terísticas deste tipo de programação. Por

fim, o capitulo V discorre sobre as vanta-

gens e desvantagens desta metodologia e

comenta as conclusões sobre tal.

II – CONCEITOS BÁSICOS

1. Paradigmas de Linguagens de

Programação

“É um conjunto de características

que servem para caracterizar um conjunto

de linguagens” [1].

De um modo mais simplificado, os

paradigmas indicam a forma como o

programador visualiza como o programa

será escrito e executado. Por exemplo, ele

Page 2: Programação Orientada a Objetos

pode considerar como uma serie de

comandos executados em sequência

(Estruturação) ou como objetos que

interagem entre si (orientação a objetos).

2. Programação Estruturada

“É uma forma de programação de

computadores que preconiza que todos os

programas possíveis podem ser reduzidos

a apenas três estruturas: sequência,

decisão e interação” [2].

Este orienta os programadores para

a criação de estruturas simples em seus

programas, usando as sub-rotinas e

funções. Além de incentivar os comen-

tários (trecos de texto que não são

executáveis) para facilitar a compreensão

do programa, seja para ajudar a relembrar

o programador, seja para que outros

programadores possam entendê-lo.

3. Modularização

É a idéia de dividir um programa

em etapas a fim facilitar o entendimento do

programa. Além disso, também se pode

escrever um trecho de código uma única

vez e utilizá-lo repetidas vezes no código,

apenas chamando-o (escrevendo o nome

especificado no módulo).

4. Abstração de Dados

É o conceito de separar a

manipulação dos dados (programa) de

como os dados e as funções de

manipulação destes são implementadas.

Simplificando, é o mesmo que manipular

dados através de uma biblioteca.

5. Orientação a Objetos

É o conceito de programar de uma

forma mais parecida de como os humanos

compreendem o mundo e utilizando a

abstração de dados. A idéia é representar

os dados como um conjunto de atributos,

por exemplo: representa uma pessoa como

um nome, uma idade, uma nacionalidade,

etc.

III – HISTORIA

A máquina analítica criada por

Charles Babbage, em 1837, é considerado

o projeto do primeiro computador de uso

geral. Ela não chegou a ser construída,

apesar de se acreditar que seja um projeto

viável para época. Neste mesmo projeto já

existia uma programadora, Ada Lovelace,

que escreveu um algoritmo capaz de

computar valores de uma função

matemática. Contudo este projeto não

chegou a ser construído, e o primeiro

computador de uso geral só foi criado 100

anos mais tarde. [3]

Page 3: Programação Orientada a Objetos

Os primeiros programas tinham de

ser escritos em linguagem de máquina e

exigiam que os programadores conhe-

cessem a arquitetura, entre outras informa-

ções, da máquina que iriam programar.

Para facilitar a programação foram criadas

as Linguagens de Programação (LP), um

conjunto de instrução que a maquina deve

seguir. As LP abstraem os códigos da

linguagem de maquina para códigos mais

compreensivos para o homem.

As primeiras LP foram

desenvolvidas com o intuito de maximizar

a eficiência computacional das maquina,

pois seus recursos, como a memória e o

processador, eram escassos. Nesse contex-

to surgiu a linguagem FORTRAN (For-

mula Translator). [1]

Apesar dos computadores terem se

desenvolvido com o passar dos anos, a

programação ainda era um ato demorado, o

que atrapalhava o mercado de compu-

tadores, uma fez que ainda era muito

trabalhoso escrever programas. Por este

motivo, nos anos 60, o enfoque das LP

passou a ser a melhoria da eficiência dos

programadores, então elas passaram a usar

o paradigma Estruturado. Pascal e C são

linguagens desta geração.

Com o aumento da complexidade

computacional tornou-se difícil compre-

ender um código único. Daí apareceu o

conceito de abstração de dados, e com o de

modularização, o de bibliotecas. As biblio-

tecas permitem que se escrevam as funções

em arquivos separados e apenas utilize a

função, sem ter que escrevê-la no código.

A modularização subdivide o código em

módulos (blocos de códigos) o que facilita

a visualização do mesmo. ADA (em

homenagem a Ada Lovelace) e MODULA-

2 agregam esses conceitos. [1]

Nos anos 80 e 90 os computadores

pessoais passaram a ser um bem de

consumo, desenvolvendo da indústria de

software. Isso demandou programas

melhores em um período de desen-

volvimento menor. Para isso surgiu o

conceito de reutilização de códigos e as

linguagens baseadas em orientação a

objetos. O SMALTALK foi a primeira LP

totalmente orientada a objetos. JAVA e

C++ também utilizam. [1]

IV – PROGRAMAÇÃO ORIENTADA

A OBJETOS.

Programação Orientada a Objetos

(POO) visa descrever o mundo real

baseado na forma que os humanos a

compreendem: como objetos com atributos

e atitudes. Por exemplo, podemos definir

um cachorro descrevendo-o através dos

atributos: cor do pêlo, idade, brinquedo

favorito, nome, dono, etc.; e das atitudes:

morder, lamber, andar, brincar, e etc.

Baseado nisso o POO evita um dos

problemas da forma tradicional de

Page 4: Programação Orientada a Objetos

programação (estruturada): a não

reutilização de códigos. Muitas vezes

deseja-se reutilizar pedaços de outro

programa, porém isso acarretaria em

mudanças substancias no código original

que na pratica mais dificultam que ajudam.

Como na POO a funções que

manipulam os dados (atitudes) são

definidas na descrição dos mesmos, a

reutilização do mesmo não é um problema.

Ou seja, a POO tem um melhor

desempenho nos desenvolvimento de

programas e um menor custo de

manutenção. Esta ultima vantagem deve-se

ao fato de que caso seja necessário uma

mudança no código ela será local, só na

definição da função no objeto, e se

propagará por todo o código.

A implementação da POO baseia-se

nos conceitos: Classe (e subclasse),

herança, polimorfismo e encapsulamento.

1. Classe

Estrutura modular que descreve um

conjunto de dados estruturados e as fun-

ções capazes de manipulá-los. É carac-

terizada por nome, superclasse, variáveis

internas e métodos (funções associadas).

Por exemplo, a classe resistor pertence à

superclasse ElementoPassivo, possui a

variável resistência e potência máxima, e

possui o método paralelo, que calcula o

valor de dois resistores ligados em

paralelo.

Os objetos são instancias de

classes, ou seja, é um elemento que

pertence a uma classe. Só um objeto de

uma classe pode acessar os métodos dessa

mesma classe. Por exemplo, R80P1 é o

objeto cuja resistência é 80 ohms e agüenta

no máximo 1W, é uma instancia de

resistor, enquanto L120mH1W é um objeto

da classe indutor, o qual não consegue

acessar o método paralelo da classe

resistor.

Os métodos são declarados dentro

das classes. Por isso a reutilização de

códigos é tão disseminada na POO. Um

programa que utiliza uma classe

automaticamente pode reutilizar todos os

seus métodos.

Ao se chamar um método de um

objeto diz-se que se esta passando uma

mensagem ao objeto. Por exemplo, ao

escrever “R80P1.paralelo(„parâmetros‟)”

esta se passando a mensagem paralelo ao

objeto R80P1.

2. Polimorfismo

“Polimorfismo é a propriedade de

uma ou mais classes responderem a

mesma mensagem cada uma de uma forma

diferente” [4].

Essa propriedade é uma

característica da Linguagem, ou seja, se a

Page 5: Programação Orientada a Objetos

linguagem não a possuir o programador

não consegue sintetizá-la.

Ela permite que várias classes

possuam as mesmas características, atri-

butos e métodos, de outras classes. Além

disso, também permite a flexibilidade

dessas características serem idênticas ou

serem redefinidas. Ou seja, duas classes

podem possuir o mesmo método (e estes

realizarem comandos diferentes) e os

mesmos atributos com tipos diferentes (um

inteiro e outro carácter). A LP consegue

definir qual das funções será executada

através do tipo de objeto que recebe as

mensagens, sendo essa decisão é tomada

em tempo de execução. Isto quer dizer que

o programa só sabe qual função será

chamada no momento em que for chamá-

la.

3. Encapsulamento

“A capacidade de ocultar dados

dentro de modelos, permitindo que

somente operações especializadas ou

dedicadas manipulem estes dados ocultos

chama-se encapsulamento” [5]

Modelos são representações

simplificadas de itens, pessoas, processos,

conceitos, etc. Ou seja, modelos são os

objetos da POO e encapsulamento a

filosofia de proteger os atributos do objeto

de uma determinada classe ao garantir que

apenas os métodos dessa classe possam

manipulá-los.

Faz-se necessário explicar o

conceito de métodos privados e públicos.

Um método privado é uma função em que

apenas os objetos da classe podem acessá-

los, enquanto que outras classes não. No

mesmo conceito, um método público

qualquer classe tem acesso.

Caso os atributos de uma classe

sejam declarados como privados, eles só

poderão ser modificados pelo próprio

objeto através de seus métodos. Caso

contrário, qualquer objeto terá acesso a

este, o que pode causar uma série de erros

se o programador não tomar muito

cuidado. Com os atributos privados

evitam-se erros, protegendo o estado do

objeto, isto é, os seus dados.

A filosofia do encapsulamento

também consiste na abstração de como os

métodos são implementados nas classes, de

forma que para passar uma mensagem a

um objeto não é necessário saber como ela

será executada, apenas qual é o seu tipo de

resposta. Por exemplo, se falar consiste em

escrever na tela uma string, então não é

necessário saber se o método escreve letra

por letra ou toda a mensagem de uma vez,

apenas que irá aparecer uma mensagem na

tela. Isto permite que se consiga pensar no

programa principal de uma forma mais

abstrata, alto nível.

Page 6: Programação Orientada a Objetos

Com as abstrações dos métodos,

eles passam a funcionar como uma caixa

preta, o que significa que é possível

modificar a sua implementação sem afetar

o programa principal, desde que a forma de

chamar e o tipo de resposta seja mantido.

Isto permite que a manutenção do sistema

seja mais simplificada, afinal caso se

descubra um erro em um método, ou se

decida que é melhor implementá-lo de

forma diferente, não será necessário

modificar todas as suas chamadas ou o

programa principal, só a descrição do

método na classe.

4. Herança

“Herança é a propriedade dos

objetos que permite a criação de uma

hierarquia entre eles, onde os descen-

dentes herdam o acesso ao código e estru-

turas de dados dos seus ancestrais.” [4]

Toda classe pode ter subclasses

associadas as quais herdam suas

características, assim como um filho herda

as características de seus pais, a cor do

olho por exemplo. Se uma classe não

possuir todas as características de outra

classe, essa nova classe não é uma

subclasse da classe original.

Devido ao conceito de

polimorfismo e de hierarquia, é possível

redefinir (mas não excluir) os métodos

herdados nas subclasses sem afetar os

métodos das superclasses. Por exemplo,

defini-se a classe primata e sua subclasse

humano. Ambas possuem o método fala,

porém redefini-se na subclasse humano. A

classe humano e suas subclasses (ex.:

homem e mulher) irão executar a função

descrita na classe humano, enquanto a

classes primata, e suas outras subclasses

(ex.: chimpanzé), irão executar a descrita

em primata.

Necessita-se lembrar que apenas os

métodos públicos são herdados enquanto

os métodos privados são exclusivos da

classe que os possui.

V – APLICAÇÕES

A Programação Orientada a

Objetos aplica-se ao desenvolvimento de

qualquer tipo de software. Como qualquer

paradigma de programação, a população

não compreende que está utilizando, mas

quase todos os aplicativos de internet já

utilizam este artifício.

Quem utilizaria diretamente são os

programadores de software e os

gerenciadores de Banco de Dados.

Contudo, as Linguagens de Programação

são, na sua maioria, softwares livres, então

qualquer pessoa está apta a utilizar os

conceitos de POO.

Page 7: Programação Orientada a Objetos

VI – CONCLUSÕES

Como discutido durante o artigo, a

POO foca em resolver as duas maiores

preocupações da indústria de softwares

atualmente: a reusabilidade dos códigos e a

manutenção dos softwares. Com a

abstração, possibilita que várias pessoas

possam trabalhar no mesmo sistema e

facilita o gerenciamento do projeto, uma

vez que é mais bem definida qual a função

de cada departamento. Ela também

proporciona uma metodologia de

programação mais próxima de como os

seres humanos pensam, além de reduzir os

erros por mudança indesejada dos dados.

Em contrapartida a POO nunca será

tão eficiente quanto à execução do

programa. Mas no quadro em que a

computação se encontra, com

processadores de alto desempenho e

memória que chegam a 1TB (um terabyte),

e considerando que a diferença de

desempenho não é tão alarmante e nem

proporcional a complexidade do programa,

esta desvantagem não é preocupante.

Outra desvantagem seria a

complexidade maior em aprender a POO

em relação aos paradigmas procedurais.

Mas, novamente, isto não é preocupante,

uma vez que ainda necessita-se programar

proceduralmente para descrever alguns dos

métodos básicos. Logicamente o pré-

requisito da POO é a programação

procedural, afinal é a forma como a

máquina executa os programas. Então o

código final da POO será um código

procedural, o que significa que em algum

momento houve uma conversão do

“método de programação”.

VII – REFERENCIAS

[1] VAREJÃO, Flávio M. Linguagens de

Programação: Conceitos e Técnicas.

Editora Campus. Disponível em:

<www.inf.ufes.br/~fvarejao/livroLP.html>.

Acesso em: 19 set. 2011.

[2] JACKSON, Michael A. Principles of

Program Design. Academic Press,

London, 1975.

[3] MENABREA, L. F. Sketch of The

Analytical Engine Invented by Charles

Babbage. Fourmilab Switzerland.

Disponível em:

<http://www.fourmilab.ch/babbage/sketch.

html>. Acessado em: 19 set. 2011.

[4] Programação Orientada a Objetos.

Jackson Laskoski, Jack.eti.br. Disponível

em:

<http://www.jack.eti.br/www/arquivos/apo

stilas/java/poo.pdf>. Acessado em: 19 set.

2011.

Page 8: Programação Orientada a Objetos

[5] Santos, R., Introdução à Programação

Oriendada a Objetos Usando Java.Rio de

Janeiro: Campus, 2003.