Você está na página 1de 34

Orientao a Objetos

Orientao a Objetos

Orientao a Objetos
Daniel Destro do Carmo Softech Network Informtica daniel@danieldestro.com.br

Orientao a Objetos
Histrico A orientao a objetos (OO) foi concebida na dcada de 70. Origem na linguagem SIMULA-67 (dcada de 60 - Noruega), que j implementava alguns conceitos da OO. SIMULA-68 foi a primeira linguagem a suportar os conceitos da OO. Smaltalk, criada pela Xerox, popularizou e incentivou a OO. Outras linguagens OO: C++, Object Pascal (Delphi), C#, Java ... Java, de fato, popularizou a Orientao a Objetos.

Orientao a Objetos

O que OO ?

Orientao a Objetos
Orientao a Objetos Tcnicas de programao tradicionais As tcnicas de programao tradicionais, como por exemplo a decomposio funcional, leva o desenvolvedor a decompor o sistema em partes menores (funes), criando um emaranhado de inmeras funes que chamam umas s outras. Geralmente no h separao de conceitos e responsabilidades, causando dependncias enormes no sistema, dificultando futuras manutenes no cdigo do programa. No existe muito reaproveitamento de cdigo, ao contrrio, muitas vezes se tem muito cdigo duplicado.

Orientao a Objetos
Orientao a Objetos Tcnicas de programao tradicionais a famosa programao espaguete...

e pode causar uma grande indigesto.

Orientao a Objetos
Orientao a Objetos O paradigma da Orientao a Objetos, ou Programao Orientada a Objetos (POO ou OOP), eleva a programao e o desenvolvimento de sistemas para um novo patamar. A OO um mecanismo moderno que ajuda a definir a estrutura de programas baseada nos conceitos do mundo real, sejam eles reais ou abstratos. A OO permite criar programas componentizados, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre s, por meio de mensagens. Essas partes do sistemas so chamadas de OBJETOS.

Orientao a Objetos
Orientao a Objetos A OO mais intuitiva e fcil de aprender do que as tcnicas tradicionais, pois foca o problema em conceitos do mundo real. Dentre as vantagens que a OO proporciona, podemos destacar: aumento de produtividade reuso de cdigo reduo das linhas de cdigo programadas separao de responsabilidades componentizao maior flexibilidade do sistema escalabilidade facilidade na manuteno, dentre outras vantagens.

Orientao a Objetos
Orientao a Objetos A OO introduz e enfatiza os seguintes conceitos: Objeto Mensagem Classe Abstrao Encapsulamento Herana Polimorfismo

Orientao a Objetos
Objeto Objetos so a chave para se compreender a tecnologia orientada a objetos. Voc olha ao seu redor e tudo o que v so objetos: carro, mesa, janela, livro, pessoa, etc. Os objetos do mundo real tm duas carectersticas em comum: ESTADO e COMPORTAMENTO. Estado O estado de um objeto revela seus dados importantes. Por exemplo, uma pessoa tem: idade, peso, altura, cor de cabelo, cor da pele. Comportamento O comportamento so as aes que aquele objeto pode exercer ou executar. Por exemplo, uma pessoa pode: andar, falar, ouvir, pular.

Orientao a Objetos
Objeto Esses objetos podem ser tanto objetos concretos (carro, livro, nota fiscal), quanto conceitos abstratos (conta corrente, venda, pessoa jurdica). Na Orientao a Objetos, os objetos do mundo real so modelados e representados no mundo computacional, ou seja, dentro do sistema, por meio de objetos de sotware. Cada objeto deve ser conhecido, bem definido e ter seu limite e um significado dentro do sistema. Os objetos de software, assim como os objetos do mundo real, tambm possuem estado e comportamento.

Orientao a Objetos
Objeto Um objeto de software mantm seu estado em uma ou mais de suas variveis. Ele implementa seu comportamento atravs de seus mtodos. Mtodo o mesmo que funo ou procedimento. Por definio: Um objeto um pedao de software que possui variveis (estado) e mtodos (comportamento).

Mtodos (comportamento)

Variveis (estado)

Objeto

Orientao a Objetos
Objeto Um sistema pode conter um ou inmeros objetos ativos. Cada objeto ativo no sistema em particular tambm chamado de instncia. As diferentes instncias possuem seu prprio estado. O exemplo abaixo mostra vrias intncias de pessoas.
35 anos andar 20 anos andar falar pular 1,68 m 58 Kg Joo falar pular falar pular 1,75 m 80 Kg andar 42 anos 1,80 m 78 Kg

Maria

Jos

Orientao a Objetos
Objeto Cada instncia de pessoa possui um estado diferente em particular, como visto na ltima figura. Porm, cada instncia, alm do estado, tambm possui seus mtodos (comportamento) que operam sobre o prprio estado. Em outras palavras, para pular, cada pessoa vai fazer uma determinada fora dependendo da sua idade, altura e peso, por exemplo. A idia que cada objeto seja responsvel por seus dados (estado) e seja capaz de realizar as prprias operaes que lhe foram atribudas (comportamento).
20 anos andar falar pular 1,68 m 58 Kg

Maria

Orientao a Objetos
Mensagem Um objeto por si s no significa muito em um sistema. Para ter algum sentido e valor esses objetos precisam interagir e comunicar-se entre si. Os objetos se comunicam por meio de mensagens.
Qual o seu nome? mensagem

Maria

Jos

Quando um objeto A quer se comunicar com um objeto B enviada uma mensagem de A para B.

Orientao a Objetos
Mensagem Enviar uma mensagem significa executar um mtodo. Ento, se A envia uma mensagem para B, podemos entender como o objeto A executando um mtodo do objeto B. As mensagens so compostas por trs partes: Objeto a quem a mensagem endereada Nome do mtodo a ser chamado Parmetros que o mtodo recebe
ligar

Controle Remoto

TV

Orientao a Objetos
Classe No mundo real freqentemente percebemos vrios objetos de um mesmo tipo. Por exemplo: seu carro um dos muitos carros existentes no mundo. Usando a terminologia OO, dizemos que um carro em particular uma instncia da classe de objetos conhecida como carros. Os carros, em geral, possuem estado (cor, potncia do motor, combutvel) e comportamento (ligar, acelerar, brecar, mudar marcha) em comum. O estado de cada carro independente e pode ser diferente do estado dos outros carros. Cada carro pode ter uma cor diferentes, por exemplo. A partir dessas semelhanas, os fabricantes de veculos tiram vantagem disso para padronizar a construo de carros de um mesmo tipo, definindo um modelo nico com caractersticas iguais para todos os carros a serem produzidos.

Orientao a Objetos
Classe Na Orientao a Objetos tambm possvel ter vrios objetos do mesmo tipo, que compartilham caracterscas em comum. Tirando vantagem dessa semelhana entre alguns objetos, tambm possvel criar modelos para esses objetos. Esse modelo chamado de CLASSE. As classes so tipos que podem ser criados. Por definio: Uma classe um modelo (prottipo) que define as variveis (estado) e os mtodos (comportamento) comuns a todos os objetos do mesmo tipo.

Classe

Objeto

Orientao a Objetos
Classe Na classe so definidas as variveis e implementados os mtodos. Os objetos so criados a partir de suas classes. A cada objeto criado o sistema aloca memria para o novo objeto e suas variveis.
placa cor combustvel ligar API pblica (mtodos) potncia do motor

brecar acelerar Carro

Comumente fazem confuso entre classes e objetos. Lembre-se que classe define as caractersticas comuns e os objetos so instncias dessas classes, com estado prprio.

Orientao a Objetos
Abstrao Abstrao a habilidade e a capacidade de se modelar conceitos, entidades, elementos, problemas e caractersticas do mundo real, de um domnio do problema em questo, levando-se em conta apenas os detalhes importantes para a resoluo do problema e desprezando coisas que no tm importncia no contexto. Se pensarmos no conceito de conta corrente bancria e abstrarmos este conceito, podemos identificar detalhes comuns, como o nmero da conta, nmero da agncia e saldo; e operaes como dbito em conta, depsito e extrato da conta. Basicamente essas so as caractersticas de conta corrente para todos os bancos, apesar de um ou outro banco ter uma poltica de descontos de taxas etc.

Orientao a Objetos
Encapsulamento Na OO, encapsulamento o mecanismo utilizado para disponibilizar mtodos que operam sobre os dados e que protegem o acesso direto indevido aos atributos de uma instncia fora da classe onde estes foram declarados. Esta proteo consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe e fornecendo mtodos que alteram os valores destes atributos de alguma forma. O encapsulamento ajuda a prevenir o problema de interferncia externa indevida sobre os dados de um objeto, como objetos que possam alterar os dados de outros objetos indevidamente.

Orientao a Objetos
Encapsulamento Um exemplo deste problema pode ser o saldo da conta bancria. O saldo certamente no pode ser alterado ou manipulado diretamente, mas sim atravs de mtodos adequados para isso, como mtodos que fazem lanamentos de dbitos e crditos. A alterao direta do saldo causaria um problema de clculos e inconsistncia de dados. Justamente por isso devemos criar classes bem encapsuladas, que fornencem mtodos adequados para operar sobre os dados dos objetos daquela classe.
extrato saldo

debitar

creditar

O uso de encapsulamento tambm evita que Conta Corrente um programa torne-se to interdependente que uma pequena mudana tenha grandes efeitos colaterais.

Orientao a Objetos
Herana Herana um mecanismo da OO que permite criar novas classes a partir de classes j existentes, aproveitando-se das caractersticas existentes na classe a ser extendida. Este mecanismo muito interessante pois promove um grande reuso e reaproveitamento de cdigo existente. Com a herana possvel criar classes derivadas (subclasses) a partir de classes bases (superclasses). As subclasses so mais especializadas do que as suas superclasses, mais genricas. As suclasses herdam todas as caractersticas de suas superclasses, como suas variveis e mtodos.

Orientao a Objetos
Herana Imagine que dentro de uma organizao empresarial, o sistema de RH tenha que trabalhar com os diferentes nveis hierrquicos da empresa, desde o funcionrio de baixo escalo at o seu presidente. Todos so funcionrios da empresa, porm cada um com um cargo diferente. Mesmo a secretria, o pessoal da limpeza, o diretor e o presidente possuem um nmero de identificao, alm de salrio e outras caractersticas em comum. Essas caractersticas em comum podem ser reunidas em um tipo de classe em comum, e cada nvel da hierarquia ser tratado como um novo tipo, mas aproveitando-se dos tipos j criados, atravs da herana.

Orientao a Objetos
Herana
salrio nome

Funcionrio

Gerente

Diretor

Presidente

Diretor de RH

Diretor de TI

Orientao a Objetos
Herana Os subtipos, alm de herdarem todas as caractersticas de seus supertipos, tambm podem adicionar mais caractersticas, seja na forma de variveis e/ou mtodos adicionais, bem como reescrever mtodos j existentes na superclasse (polimorfismo). A herana permite vrios nveis na hierarquia de classes, podendo criar tantos subtipos quanto necessrio, at se chegar no nvel de especializao desejado. Podemos tratar subtipos como se fossem seus supertipos, por exemplo o sistema de RH pode tratar uma instncia de Presidente como se fosse um objeto do tipo Funcionrio, em determinada funcionalidade. Porm no possvel tratar um supertipo como se fosse um subtipo, a no ser que o objeto em questo seja realmente do subtipo desejado e a linguagem suporte este tipo de tratamento, seja por meio de converso de tipos ou outro mecanismo.

Orientao a Objetos
Herana Algumas linguagens de programao permitem herana mltipla, ou seja, uma classe pode estender caractersticas de vrias classes ao mesmo tempo. o caso do C++. Outras linguagens no permitem herana mltipla, por se tratar de algo perigo se no usada corretamente. o caso do Java. Na Orientao a Objetos as palavras classe base, supertipo, superclasse, classe pai e classe me so sinnimos, bem como as palavras classe derivada, subtipo, subclasse e classe filha tambm so sinnimos.

Orientao a Objetos
Polimorfismo Formalmente polimorfismo quer dizer vrias formas. No caso da OO, polimorfismo denota uma situao na qual um objeto pode se comportar de maneiras diferentes ao receber uma mensagem, dependendo do seu tipo de criao. O poliformismo alcanado com auxlio do uso de herana nas classes e a reescrita (overriding) de mtodos das superclasses nas suas subclasses. Duas subclasses de uma mesma classe podem ter implementaes completamente diferentes de um mesmo mtodo, o que leva os objetos a se comportarem de forma diferente, dependendo do seu tipo (classe).

Orientao a Objetos
Polimorfismo Exemplificando: Podemos imaginar um programa que faa a impresso de um relatrio, por meio de uma classe chamada Impressora, que uma interface de acesso s funcionalidades da impressora usada, por meio de um driver fornecido pelo fabricante. Uma impressora a laser tem um mecanismo de impresso totalmente diferente de uma impressora a jato de tinta, mas isso no importa para o programa. Ele manda uma simples mensagem de imprimir para a impressora, e o modo como a impressora imprime no papel varia de acordo com o tipo de impressora usada, ou seja, a impresso se d de formas diferentes para a mesma mensagem de imprimir.

Orientao a Objetos
Polimorfismo

imprimir

Relatrio

Impressora

Impressora Laser

Impressora Jato de Tinta

Orientao a Objetos
Polimorfismo Alguns linguagens promovem o polimorfismo principalmente atravs do uso de classes abstratas e interfaces, como o caso da tecnologia Java. Classes abstratas so classes que no podem gerar instncias de objetos e que possuem um ou mais mtodos sem implementao, deixando para suas subclasses a tarefa de implementar estes mtodos abstratos. Interfaces so um tipo de contrato que algumas classes tm de seguir, ou seja, as interfaces apenas definem mtodos abstratos que as classes que implementam esta interface tm de implementar.

Orientao a Objetos
Concluso O paradgma da Orientao a Objetos traz um ganho significativo na qualidade da produo de software, porm grandes benefcios so alcanados quando as tcnicas de programao OO so colocadas em prtica com o uso de uma tecnologia que nos permita usar todas as caractersticas da OO; alm de agregar programao o uso de boas prticas de programao e padres de projeto (design patterns). Esse um dos motivos do sucesso da tecnologia Java, que suporta a OO completamente e tambm fornece mecanismos para se usar os design patterns conhecidos. Alm do conhecimento da Orientao a Objetos, o conhecimento da UML (Unified Modelling Language) ajuda muito no desenho e planejamento de sistemas na sua concepo.

Orientao a Objetos
Perguntas e Respostas

Orientao a Objetos
Fim

Obrigado!

Você também pode gostar