Paradigma de Orientacao a Objetos

Embed Size (px)

DESCRIPTION

Paradigma de Orientacao a Objetos

Citation preview

  • O Paradigma Orientado a Objetos

    Vtor E. Silva Souza

    ([email protected]) http://www.inf.ufes.br/~ vitorsouza

    Departamento de Informtica

    Centro Tecnolgico

    Universidade Federal do Esprito Santo

  • Contexto: desenvolvimento de sistemas

    Maio 2013 O Paradigma Orientado a Objetos 2

    Descrio do problema

    Descrio da soluo

    Sistema

    Cor

    resp

    ond

    nci

    a

    Cor

    rete

    za

    Val

    ida

    o

    Ver

    ific

    ao

    Problema Gesto de servios de uma biblioteca.

    Toda solicitao de emprs- timo deve ser atendida.

    Processo de check-out de livros da biblioteca.

    Sistema de check-out de livros da biblioteca.

  • Modelagem e o gap semn=co

    Maio 2013 O Paradigma Orientado a Objetos 3

    Problema a ser resolvido

    Domnio do Problema (Mundo Real)

    Domnio da Soluo (Mundo Computacional)

    Modelo de Soluo Modelagem

    Gap Semntico

  • O que o gap semn=co? Distncia entre o problema no mundo real e o modelo

    abstrato construdo para o mundo computacional; Quanto menor, mais rpida ser a construo da

    soluo; Diminuir o gap semn=co um dos obje=vos da

    Engenharia de SoOware; O paradigma orientado a objetos busca meios de

    diminuir este gap.

    Maio 2013 O Paradigma Orientado a Objetos 4

  • Paradigmas de desenvolvimento O que um paradigma?

    Um exemplo, um modelo, um padro; Um conjunto de ideias, uma base losca.

    Um paradigma de desenvolvimento agrupa mtodos e tcnicas que seguem um mesmo conjunto de princpios;

    Dois dos mais conhecidos so: Desenvolvimento Estruturado; Orientao a Objetos (OO).

    Maio 2013 O Paradigma Orientado a Objetos 5

    Paradigma a representao de um padro a ser seguido. um pressuposto filosfico, matriz, ou seja, uma teoria, um conhecimento que origina o estudo de um campo cientfico; uma realizao cientfica com mtodos e valores que so

    concebidos como modelo; uma referncia inicial como base de modelo para estudos e pesquisas. (http://pt.wikipedia.org/wiki/Paradigma)

  • Paradigmas de desenvolvimento Estruturado:

    Modelo entrada processamento sada; Dados separados das funes; Visto na disciplina de Programao II.

    Orientado a Objetos (OO): O mundo composto por objetos; Objetos combinam dados e funes; Conceitos do problema so modelados como objetos que so associados e interagem entre si.

    Maio 2013 O Paradigma Orientado a Objetos 6

  • Paradigma OO vs. estruturado

    Maio 2013 O Paradigma Orientado a Objetos 7

    Anlise de Sistemas 7

    Sistema de Gerncia Departamento

    Funcionrio

    Nome

    Ramal

    Funcionrio

    Nome

    Ramal

    Tarefa

    Descrio

    Prazo

    funcionario gerente

    Registrar Tarefa Ver Tarefas

    Estruturado / Procedural

    Orientado a Objetos

    Mais prximo do mundo real. A lgica

    encapsulada em objetos.

  • Desvantagens do paradigma estruturado O gap semn=co maior; Frequentemente gera sistemas diaceis de serem

    man=dos: As funes tem que conhecer a estrutura dos dados; Mudanas na estrutura dos dados acarreta alterao em todas as funes relacionadas.

    Maio 2013 O Paradigma Orientado a Objetos 8

    Por estes motivos, o paradigma orientado a objetos vem tomando o espao que antes era

    dominado pelo paradigma estruturado.

  • Beneacios da orientao a objetos Capacidade de enfrentar novos domnios; Melhoria da interao analistas x especialistas; Aumento da consistncia interna da anlise; Alterabilidade, legibilidade e extensibilidade; Apoio reu=lizao.

    Maio 2013 O Paradigma Orientado a Objetos 9

    Orientao a objetos no mgica e nem a tbua de salvao do desenvolvimento. preciso aplic-la com disciplina e em conjunto com outras tcnicas da Engenharia de Software.

    O foco deste curso na programao OO. No entanto, preciso entender os conceitos por trs do paradigma e aprender a modelar solues OO. Voc tambm usar isso no futuro!

  • Filosoa O mundo composto por objetos;

    OO tenta gerenciar a complexidade dos problemas do mundo real abstraindo o conhecimento relevante e encapsulando-o em objetos.

    Maio 2013 O Paradigma Orientado a Objetos 10

    Mundo Real (Conceitos)

    Modelo de Soluo (Modelagem OO) Cdigo de Mquina (Programao OO)

    Um sistema construdo usando um mtodo orientado a objetos aquele cujos componentes so partes encapsuladas de dados e

    funes, que podem herdar atributos e comportamento de outros componentes da mesma natureza, e cujos componentes

    comunicam-se entre si por meio de mensagens.

    Eduard Yourdon

  • Princpios fundamentais Auxiliam a administrar a complexidade; Guiam toda a tarefa de modelagem.

    Maio 2013 O Paradigma Orientado a Objetos 11

    Abstrao Encapsulamento

    Modularidade Hierarquia

  • Abstrao Modelos mentais: viso simplicada do mundo

    construda por cada um em cada situao; Abstrair consiste em ignorar aspectos irrelevantes e

    concentrar nos principais.

    Maio 2013 O Paradigma Orientado a Objetos 12

  • Abstrao Abstrao de Dados:

    Um =po denido por suas operaes; Ex.: Um =po pilha denido por suas operaes empilhar e desempilhar.

    Abstrao de Procedimentos: Uma operao com efeito bem denido pode ser tratada como atmica, mesmo que ela faa uso de outras operaes de mais baixo nvel;

    calcularSalarioLiquido: denida em termos de obterSalarioBruto, calcularImposto, calcularDescontos, etc.

    Maio 2013 O Paradigma Orientado a Objetos 13

  • Encapsulamento Separar os aspectos externos (o que faz) dos aspectos

    internos (como faz): Aspectos externos = interface, contrato; Aspectos internos = implementao.

    Maio 2013 O Paradigma Orientado a Objetos 14

  • Encapsulamento Complemento da abstrao:

    Abstrao enfoca o comportamento observvel de um objeto;

    Encapsulamento enfoca a implementao que origina este comportamento.

    Promove maior estabilidade: Clientes do objeto s conhecem sua interface; Podemos alterar a implementao de uma operao sem afetar o restante do sistema.

    Maio 2013 O Paradigma Orientado a Objetos 15

  • Modularidade Decomposio do sistema em mdulos:

    Coesos (baixo acoplamento); Autnomos; De interface simples e coerente.

    Fundamental para o reuso e extenso.

    Maio 2013 O Paradigma Orientado a Objetos 16

  • Hierarquia uma forma de arrumar as abstraes e simplicar o

    entendimento do problema; Tambm promovem o reuso; Sinergia para administrar a complexidade:

    Abstrao auxilia a iden=car os conceitos relevantes do mundo real;

    Encapsulamento oculta a viso interna das abstraes iden=cadas;

    Modularidade nos d um meio de agrupar logicamente abstraes relacionadas;

    Por m, abstraes formam hierarquias.

    Maio 2013 O Paradigma Orientado a Objetos 17

  • Conceitos bsicos

    Maio 2013 O Paradigma Orientado a Objetos 18

    Classes

    Estruturao

    Mtodos

    Instncias

    Objetos

    Mensagens

    Associao

    Composio

    Herana

  • Objetos Um objeto uma en=dade que incorpora uma

    abstrao relevante no contexto de uma aplicao; Podem ser coisas abstratas (ex.: uma reserva de

    passagem area) ou concretas (ex.: um documento).

    Maio 2013 O Paradigma Orientado a Objetos 19

  • Objetos caracters=cas principais Estado (estrutura): conjunto de suas propriedades e

    seus valores correntes; Comportamento: conjunto de servios (operaes) que

    o objeto prov; Iden=dade: iden=cador nico que diferencia cada

    objeto, mesmo que tenham o mesmo estado e comportamento.

    Maio 2013 O Paradigma Orientado a Objetos 20

    15 70 45

  • Classes Uma classe descreve um conjunto de objetos com as

    mesmas propriedades, o mesmo comportamento, os mesmos relacionamentos com outros objetos e a mesma semn=ca;

    Similar ao conceito de =po.

    Maio 2013 O Paradigma Orientado a Objetos 21

    15 70 45

    Casa " Cor; " Nmero; " Abrir Porta; " Fechar Porta; " Arquiteto.

    #

  • Classes e instncias Objeto = Instncia de classe; Paradigma OO norteia o desenvolvimento por meio de

    classicao de objetos: Modelamos classes, e no objetos; Objetos so en=dades reais executam algum papel no sistema;

    Classes so abstraes capturam a estrutura e comportamento comum a um conjunto de objetos.

    Maio 2013 O Paradigma Orientado a Objetos 22

  • Mecanismos de estruturao Objetos relacionam-se uns com os outros; preciso modelar esta complexidade e estruturar as

    classes; Mecanismos propostos:

    Associao; Composio; Herana.

    Maio 2013 O Paradigma Orientado a Objetos 23

  • Ligaes e associaes Ligao: conexo entre objetos; Associao: conexo entre classes que representa a

    existncia de ligaes; Uma associao descreve um conjunto de potenciais

    ligaes da mesma maneira que uma classe descreve um conjunto de potenciais objetos [Rumbaugh].

    Maio 2013 O Paradigma Orientado a Objetos 24

    24 Classe: Pessoa Classe: Casa Classe: Cachorro

    Habitantes Co de Guarda

  • Ligaes e associaes Em UML...

    Maio 2013 O Paradigma Orientado a Objetos 25

  • Composio e agregao Formas especiais de ligao que modelam

    relacionamentos todo-parte; Objetos complexos agregam ou so compostos de

    objetos mais simples; Segundo a especicao da UML:

    Composio um =po forte de agregao; As partes devem viver e morrer como um todo; Ou o todo no existe sem as partes. Exemplo:

    Um trem e sua locomo=va a vages (comp.); Uma locomo=va e seu farol (agregao).

    Maio 2013 O Paradigma Orientado a Objetos 26

  • No h consenso sobre a semn=ca... Uma viso:

    Na agregao ou composio, as partes s podem exis=r como membros do todo;

    A composio difere da agregao por restringir que a parte s par=cipe de 1 todo.

    Outra viso: Na agregao, as partes podem exis=r sem o todo e vice-versa;

    A composio difere da agregao por restringir que o todo no vive sem as partes.

    Maio 2013 O Paradigma Orientado a Objetos 27

  • Generalizao e especializao Generalizao: quando

    classes tm semelhanas podemos denir uma classe mais geral;

    Especializao: muitas vezes um conceito pode ser renado, adicionando-se novas caracters=cas.

    Maio 2013 O Paradigma Orientado a Objetos 28

    Estudante

    Nome

    Universitario

    Matrcula

    EstudanteEnsinoMedio

    Srie

    EstudanteGraduacao

    Curso

    EstudanteMestrado

    Orientador

  • Herana Generalizao e especializao so teis para

    estruturao do sistema; So formadas hierarquias de classes:

    Filhos (ou subclasses) herdam estrutura e comportamento dos pais (ou superclasses) e demais ancestrais, de forma indireta.

    A herana possibilita: Reu=lizao; Captura explcita de caracters=cas comuns; Denio incremental de classes.

    Maio 2013 O Paradigma Orientado a Objetos 29

  • Cuidados com o uso de herana Semn=ca da herana:

    um =po de; uma instncia indireta de; Ex.: Universitrio um =po de Estudante.

    Se a subclasse precisa cancelar caracters=cas da superclasse, h algo errado;

    Herana pode se tornar um vcio!

    Maio 2013 O Paradigma Orientado a Objetos 30

  • Herana ml=pla Ateno redundncia!

    Maio 2013 O Paradigma Orientado a Objetos 31

  • Mensagens e mtodos As operaes (servios) que um objeto oferece so

    chamadas de mtodos; Para solicitar um servio um objeto (cliente) envia uma

    mensagem a outro.

    Maio 2013 O Paradigma Orientado a Objetos 32

    Objeto: Contador Objeto: Calculadora

    Calcular IR (renda, descontos)

    R$ 350,00

  • Mensagens e mtodos Encapsulamento: no permi=do acessar diretamente

    as propriedades de um objeto, preciso operar por meio de mtodos (troca de mensagens);

    Abstrao: a complexidade de um objeto escondida por trs de suas operaes;

    Toda funcionalidade do sistema realizada pela troca de mensagem entre objetos.

    Maio 2013 O Paradigma Orientado a Objetos 33

  • Conceitos avanados

    Maio 2013 O Paradigma Orientado a Objetos 34

    Ligao Dinmica

    Polimorfismo

    Operaes Abstratas

    Classes Abstratas

    Sobrescrita

    Sobrecarga Persistncia

  • Classes abstratas Classes abstratas no podem ser instanciadas;

    Usadas para organizar caracters=cas comuns a diversas subclasses;

    Desenvolvida para ser herdada. No possui instncias diretas, s indiretas.

    Maio 2013 O Paradigma Orientado a Objetos 35

    Veculo

    Andar ()

    Carro

    Andar ()

    Bicicleta

    Andar ()

    ?

  • Operaes abstratas Classes abstratas podem denir mtodos sem

    implementao, chamados abstratos; Subclasses concretas so obrigadas a implement-lo; Classes concretas no podem ter mtodos abstratos; Classes abstratas podem ter mtodos concretos.

    Interface = classe abstrata que s possui operaes abstratas.

    Maio 2013 O Paradigma Orientado a Objetos 36

  • Sobrecarga e sobrescrita Sobrecarga: operaes dis=ntas com o mesmo nome; Sobrescrita: subclasse dene nova implementao para

    operao denida na superclasse.

    Maio 2013 O Paradigma Orientado a Objetos 37

    Anlise de Sistemas 37

    Calculadora

    Calcular IR (renda)

    Calcular IR (renda, descontos) Calculadora Simplificada .

    Calcular IR (renda, descontos)

  • Polimorsmo O objeto emissor no precisa saber quem o objeto

    receptor, contanto que saiba que ele responde a uma certa mensagem; O emissor s conhece uma interface; O receptor sabe a implementao certa.

    uma forma de sobrescrita, mas todas as operaes mantm a mesma semn=ca em toda a hierarquia.

    Maio 2013 O Paradigma Orientado a Objetos 38

  • Polimorsmo Habilidade de tomar vrias formas.

    Maio 2013 O Paradigma Orientado a Objetos 39

    Forma

    desenhar ()

    desenhar ()

  • Ligao dinmica Quando chamamos uma funo, esta deve estar ligada

    ao cdigo que a implementa; Ligao est=ca = feita em tempo de compilao; Ligao dinmica ou tardia = feita em tempo de execuo.

    Necessrio por nem sempre sabermos a classe verdadeira de um objeto;

    a base para o polimorsmo.

    Maio 2013 O Paradigma Orientado a Objetos 40

  • Persistncia Capacidade do objeto de transcender o tempo e o

    espao; Armazenamento em banco de dados; Transmisso pela rede.

    Maio 2013 O Paradigma Orientado a Objetos 41

  • h"p://nemo.inf.ufes.br/

    Maio 2013 O Paradigma Orientado a Objetos 42