• Nenhum resultado encontrado

Programação Orientada a Objetos

N/A
N/A
Protected

Academic year: 2021

Share "Programação Orientada a Objetos"

Copied!
8
0
0

Texto

(1)

Programação Orientada

a Objetos

Prof. André de Carvalho PAE: Humberto de Sousa

Principais Tópicos

„

Introdução

„

Abstração

„

Encapsulamento

„

Heranças

„

Polimorfismo

„

Interfaces

Introdução

„

Principal furo de linguagens imperativas

Š Variáveis globais podem ser acessadas de qualquer parte de um programa

y Grandes programas sem disciplina para acesso a variáveis globais tendem a ser impraticáveis y Nenhum módulo que acessa uma variável global pode

ser desenvolvido e entendido independentemente de outros módulos que também acessam esta variável global

Introdução

„

“O remédio é esconder informação” (David

Parnas, 1970)

Š Encapsular cada variável em um módulo, junto com um grupo de operações que sozinhas têm acesso direto à variável

Š Outros módulos podem acessar a variável apenas indiretamente

y Chamando aquelas operações

Š Módulo = objeto

Introdução

„

Por que Programação Orientada a Objetos?

Š Agrada vários níveis de usuários Š Gerentes

y Promete desenvolvimento e manutenção mais rápido e mais barato

Š Analistas e projetistas

Introdução

„

Por que Programação Orientada a Objetos?

Š Programadores

y Elegância e claridade do modelo objeto aliado ao poder das bibliotecas e ferramentas orientadas a objeto

(2)

Introdução

„

Aprendizado de uma LPOO leva mais tempo

Š Programadores estão acostumados a pensar proceduralmente

Š Processo de projetar objetos apresenta mais desafios que projeto procedural

y Principalmente se você deseja criar objetos re-utilizáveis

Š Poucos especialistas projetam os melhores objetos que são então utilizados por outros programadores

Introdução

„Programadores de LPOO

Š Criadores de classes y Criam novos tipos de dados

y Tem pôr objetivo construir uma classe que exponha ao programador cliente apenas o que ele necessita

• Mantendo todo o resto escondido

Š Programadores clientes

y Utililizam os tipos de dados em suas aplicações

y Têm por objetivo coletar um grande número de classes para desenvolver aplicações rapidamente

Introdução

„

Razões para controlar o acesso dos

programadores clentes

Š Evitar que clientes mexam onde não deveriam

y Trechos necessários para manipuações internas dos tipos de dados

y Não são partes da interface que o usuário precise

Š Permitir que o projetista da biblioteca mude o seu funcionamento interno sem se preocupar em afetar o cliente

Introdução

„

LPOO bem sucedida deve apresentar

Š Sintaxe da linguagem Š Compilador

Š Biblioteca de classes

„

Primeira tarefa de um Programador de LPOO

Š Utilizar classes existentes para resolver seu problema

Introdução

„

Conceitos chaves de LPOO

Š Abstração Š Encapsulamento Š Polimorfismo Š Herança

Abstração

„Para processar alguma coisa do mundo real em

um computador, é preciso extrair as características essenciais

Š Características dependem do que se pretende fazer Š O resto não precisa ser conhecido

(3)

Abstração

„

Ex. Imagine que diferentes usuários

pretendem desenvolver um sistema para

processar dados de automóveis

Š Detran: placa, dono atual, taxas não pagas, etc. Š Oficina: placa, problemas, trabalhos realizados,

pagamentos, dono, etc.

Š Orçamento do dono: descrição do carro, histórico de idas à oficinas, consumo, etc.

Abstração

„

Abstração

Š Processo de descartar os detalhes sem importância de um objeto

y Apenas as características apropriadas para descrevê-lo são mantidas

Š Junto com as operações sobre os dados, formam os tipos abstratos de dados

Abstração

„

Tipos Abstratos de Dados (TAD)

Š Definem um tipo em termos de seu comportamento ao invés de sua representação

Š Geralmente definidos por uma interface

y Exporta o TAD junto com uma coleção de funções que definem o seu comportamento

Š Tipos predefinidos de uma linguagem são tipos concretos de Dados, TCD

y Ex.: inteiro, caracter, vetor, registro, etc...

Abstração

„

Vantagens do uso de um TAD

Š Simplicidade:

y Por esconder a representação interna dos clientes, existem menos detalhes para o cliente entender

Š Flexibilidade

y Por ser definida pelo seu comportamento, implementador pode mudar a representação

Š Segurança

y Fronteira da interface age como uma parede, protegendo a implementação do cliente e vice-versa

Encapsulamento

„Além de abstrair os dados, é importante

também abstrair as operações executadas sobre eles

„Encapsulamento procura associar dados e

operações sobre eles e tratá-los como

uma

única unidade de organização

Encapsulamento

„

Linguagens não-OO suportam encapsulamento

apenas para tipos pré-definidos

Š Não suportam para tipos definidos pelo usuário

y Não garante integridade destes tipos

(4)

Encapsulamento

„

Tipo de dados + suas operações forma uma

classe

„

Variável de algum tipo classe é chamado de

objeto

Š Semelhante às variáveis convencionais Š Diferença: cada classe define as funções que

podem manipular seus dados

Encapsulamento

„

Funções membro

Š Equivalente às funções das linguagens de programação convencionais

Š Podem chamar outras funções Š Podem ser recursivas

Š Execução de um programa C++ começa em uma função com o nome especial main ()

Encapsulamento

„

Classes

Š Uma classe é uma especificação que define as variáveis e funções comuns a todos os objetos de um certo tipo

Š Um objeto é uma instância de uma classe

Encapsulamento

„

Cada objeto é formado por:

Š Interface

y Estabelece o que o cliente pode solicitar ao objeto y Cada solicitação é associada a uma função

Š Implementação

y Indica como os atendimantos às solicitações são implementados

y Contém os dados escondidos

„

Características de uma LPOO pura

Š Tudo é um objeto

Š Um programa é formado por um grupo de objetos que dizem a cada um o que fazer através de mensagens

Š Cada objeto tem sua própria memória

y Pode ser formada por outros objetos

Š Todo objeto tem uma classe (tipo)

Š Todos os objetos de uma mesma classe podem receber as mesmas mensagens

Objetos

Objetos

„

Objetos

Š Conjunto de abstrações e métodos utilizados para modelar objetos do mundo real (e imaginário)

Š Cada objeto tem um tipo ou classe

Š Um objeto é caracterizado pelo seu estado e pelo seu comportamento

(5)

Objetos

„

Exemplo de objeto

Š Lâmpada y Estados • ligada/desligada y Comportamentos

• mudar de ligada para desligada • mudar de desligada para ligada

Herança

„

Conceito chave em POO

Š Mecanismo poderoso e natural para organização e estruturação de objetos

Š Capacidade de organizar classes de objetos em uma hierarquia de classes derivadas e classes bases

y Uma classe derivada herda estados e comportamentos de sua classe base

y Operações de uma classe base são aplicáveis a objetos de uma classe derivada

y Em outras linguagens: superclasse e subclasse

Herança

„

O mesmo código que usa um objeto da

classe base, pode usar um objeto das classes

derivadas

„

Novos códigos podem ser escritos para as

classes derivadas utilizando as mesmas

interfaces da classe base

Herança

„Classes podem ser definidas em termos de outras

classes

Š Mountain bikes, bicicletas de corrida e bicicletas com mais de uma assento são diferentes tipos de bicicletas

y São classes derivadas da classe bicicletas

y Bicicletas é a classe base das classes Mountain bikes, bicicletas de corrida e bicicletas com mais de uma assento

Herança

Classe Base

Herança

„Cada subclasse

Š Herda estado (declarações de variáveis) da classe base y Mountain bikes, bicicletas de corrida e bicicletas com mais

de uma assento compartilham alguns estados (cadência, velocidade, etc.)

Š Herda comportamentos (funções) da classe base y Mountain bikes, bicicletas de corrida e bicicletas com mais

(6)

Herança

„Classes derivadas não estão limitadas ao estado e

comportamentos de sua classe base

Š Podem adicionar variáveis e funções àquelas herdados da classe base

y Ex. Mountain bikes têm outro conjunto de marcha Š Podem sobrepor funções herdadas

y Fornecer implementações especializadas para estas funções

y Ex. Implementação da função de mudança de marchas pode ser alterado para as Mountain bikes

Herança

„Podem ser utilizadas várias camadas de herança Š Árvore de herança, ou hierarquia de classes, pode ser

tão profunda quanto necessário

y Funções e variáveis são herdados através dos níveis y Quanto mais baixa no hierarquia, mais especializada a classe

Polimorfismo

„

Capacidade de um objeto de responder a

uma mensagem de uma maneira peculiar a

ele mesmo

„

Permite a redefinição do funcionamento de

uma função herdada de uma classe base

„

Pode ocorrer de duas formas

Š Sobrecarga (Overloading) Š Sobrescrita (Overriding)

Polimorfismo

„

Sobrecarga

Š Tipo mais simples de polimorfismo

Š Resolvido pelo compilador em tempo de compilação Š Qualquer classe pode usar o mesmo nome para funções

(operadores) diferentes (de preferência relacionados) y Devem ter assinatura diferente para que o compilador possa

dizer qual dos sinônimos é indicado

• Assinatura: número, tipo e ordem dos parâmetros y Compilador escolhe a função comparando os tipos de

argumentos

Polimorfismo

„Exemplo de sobrecarga

Š Em Pascal o operador ‘-’ denota simultaneamente cinco operações distintas:

y negação de inteiro (Inteiro → Inteiro) y negação de real (Real → Real)

y subtração de inteiro (Inteiro × Inteiro → Inteiro) y subtração de real (Real × Real → Real) y diferença de conjuntos (Conjunto × Conjunto →

Conjunto)

Polimorfismo

„Exemplo de sobrecarga (cont.)

Š Não existe ambiguidade

y Em operações como ‘-y’ e ‘x-y’, o número de parâmetros e os seus tipos determinam unicamente qual a operação utilizada

(7)

Polimorfismo

„Sobrescrita

Š Tipo mais complicado de polimorfismo Š Resolvido dinamicamente em tempo de execução Š Ocorre quando uma classe derivada tem uma

função com a mesma assinatura da classe base y Função na classe derivada sobrepõe o método na

classe base

Mensagens

„ Utilizadas para fazer a comunicação entre os

objetos

Š Chamada de função membro

Š Cada objeto entende um conjunto de mensagens que podem mudar seu estado atual

Š Quando existe a necessidade de maiores informações, as mensagens podem conter parâmetros

Interfaces

„

Definições importantes

Š Clientes: programas que usam bibliotecas Š Interface: fronteira entre a implementação de

uma biblioteca e seus clientes

y Procura fornecer a cada cliente a informação necessária para usar a biblioteca, sem revelar os detalhes de sua implementação

y Reduz a complexidade do processo de programação y Centrais para o tratamento moderno de bibliotecas

Interfaces

„Processo de programação

Š O uso de computadores para resolver problemas cada vez mais sofisticados

y Processo de programação também deve se tornar mais sofisticado

Š Complexidade do processo de programação deve ser reduzida

y Funções reduzem a complexidade de um programa dividindo-o em pedaçdividindo-os mais simples

y Interfaces reduzem a complexidade da programação, fornecendo ao cliente um conjunto de funções

Interfaces

„Uma boa interface deve ser:

Š Unificada: deve conter um conjunto consistente de funções

Š Simples: deve esconder a complexidade da implementação das funções

Š Suficiente: deve conter as funções que o cliente precisa

Interfaces

„

Projetista de interfaces deve ser muito

cuidadoso

Š Quanto mais clientes dependem de uma interface, maior o custo de modificá-la Š Algumas interfaces nunca podem ser mudadas,

(8)

Comentários finais

„

Principais conceitos de linguagens de

programação orientadas a objetos

Š Abstração Š Objetos Š Herança Š Polimorfismo Š Mensagens Š Interfaces

Referências

Documentos relacionados

Na associação, objetos específicos de uma classe se associam entre si ou com objetos específicos de outras classes. Herança

A partir da década de 80 foram realizados os primeiros trabalhos científicos para estabelecer as bases para a compreensão dos mecanismos moleculares associados

Em todas estas discussões predominam o desconhecimento ou um conhecimento difuso sobre o cotidiano dessas crianças e adolescentes com deficiência e/ou transtorno mental,

A abertura de vagas de estágios nas empresas do setor eletro-eletrônico, instaladas na Zona Franca de Manaus-AM, que passaram a responder pela maior parte dos estágios na área

Ao final do curso o aluno será capaz de: (i) analisar problemas computacionais e propor soluções utilizando conceitos de programação orientada a objetos, como classes, objetos,

• heran¸ca ´ e uma t´ ecnica para construir novas classes, chamadas de classes derivadas, a partir das j´ a existentes, ditas classes base • heran¸ca permite o re´ uso

• Apresentação do Painel de controlo fácil • Apresentação do ecrã de controlo de CD/MP3/WMA/Carregador de discos • Apresentação do ecrã de menu de CD/MP3/WMA/Carregador

Neste contexto, está à agricultura orgânica, que é um sistema de produção alternativo seguro e sustentável, baseado na interação dinâmica entre o solo, as plantas,