1 Introdução a Programação Orientada a Objetos Introdução –Noções básicas –Outras...

Post on 07-Apr-2016

219 views 2 download

Transcript of 1 Introdução a Programação Orientada a Objetos Introdução –Noções básicas –Outras...

1

Introdução a Programação Orientada a Objetos

• Introdução– Noções básicas– Outras disciplinas complementarão

• Programação– Como elaborar programas

• Orientada a Objetos – Paradigma de modelagem conceitual

2

Paradigma de Orientação a Objetos

• Surgiu na tentativa de solucionar problemas existentes no desenvolvimento de softwares complexos com confiabilidade e baixo custo de desenvolvimento e manutenção

• Representar objetos em um software é mais natural e permanente do que representar a sua funcionalidade –decomposição funcional –, pois essa é mutável

3

ESPAÇO DEPROBLEMAS

ESPAÇO DESOLUÇÕES

Gap Semântico

Mundo Real Mundo Computacional

Identificação dos aspectos mais importantes do mundo real para fins de representaçãono computador

4

Sobre o Gap Semântico• Diferenças entre

– Espaço de Problemas– Espaço de Soluções

• Software– Modelo para a solução de um problema

do mundo real– Mapeamento de objetos pertencentes

ao espaço de problemas para o espaço de soluções

– Operações sobre objetos abstratos correspondam a operações do mundo real

5

Sobre o Gap Semântico• Projetista de Software

– Cria algoritmos que, quando executados no computador, produzirão resultados que podem ser mapeados fisicamente para alguma ação do mundo real ou examinados/interpretados por pessoas

• Assim...– Quanto mais próximo, conceitualmente,

estiver o espaço de soluções do espaço de problemas, mais fácil será o desenvolvimento de uma aplicação, assegurando sua compreensão, confiabilidade e manutenção

6

Objetivo do Paradigma de Orientação a Objetos

DIMINUIR O GAP SEMÂNTICO

ESPAÇO DEPROBLEMAS

ESPAÇO DESOLUÇÕES

7

ESPAÇO DEPROBLEMAS

ESPAÇO DESOLUÇÕES

Mapeamento

Mundo RealMundo Computacional

Processo de Identificaçãode Abstrações

Se essas abstrações não tiverem uma expressão direta, ou próxima, do mundo computacional, a complexidade da solução será aumentada

8

Modelagem Conceitual• Tarefa mais importante do processo de

desenvolvimento de um software– Realiza-se a análise do domínio da aplicação e

a modelagem das entidades e fenômenos desse domínio que o projetista considera importante, independentemente da implementação

• A tarefa de modelagem conceitual envolve dois mecanismos– Abstração– Representação

9

Modelagem Conceitual

EntidadeObservada

Entidade Representada

Avião

ABSTRAÇÃO

Operação mentalpara observar umdomínio e capturarsua estrutura

Uso de convenções de representação

Notação gráfica,linguagem de programação

REPRESENTAÇÃO

10

AbstraçãoPodem ser feitas diferentes abstrações a partir

de um mesmo objeto do mundo real

Maçapesocor da cascaformato

CATEGORIA

Receita

AÇÃO

3I, II, III

Cardinalidadedo conjunto

ATRIBUTO

11

Abstraçãocoraparência

CorrerBrincar

pesotamanho

CriarComer

Pontos de vista distintos

12

Abstração• Mecanismo utilizado na análise de um

domínio• Indivíduo observa a realidade e dela

abstrai entidades e ações consideradas essenciais para uma aplicação, excluindo todos os aspectos julgados irrelevantes

• Exercício: analisar os objetos apresentados a seguir e distinguir características e ações que estes objetos podem executar

13

14

Abstração• Ato de abstrair(-se)• Ato de separar mentalmente um ou

mais elementos de uma totalidade complexa (coisa, representação, fato), os quais só mentalmente podem subsistir fora dessa totalidade

• O resultado de abstrações (termo, conceito, idéia, elemento de classe, etc.)

15

Operações de Abstração As Operações de Abstração relevantes para

a Modelagem Conceitual são:– Classificação– Instanciação– Generalização– Especialização– Agregação– Decomposição– Associação

Esses conceitos serão abordados mais tarde durante a disciplina

16

Conceitos Básicos de OO• Mundo real é formado por Entidades

que interagem entre si• Entidades podem ser classificadas em

Categorias• A categoria de uma entidade define

suas – Características, ou particularidades– Funcionalidades, ou atividades que as

entidades de uma categoria podem executar

17

Substituindo por sinônimos…

Entidades por Objetos

Categorias por Classes

Características por Atributos

Funcionalidades por Métodos

18

Em outras palavras…• Mundo real é formado por Objetos

que interagem entre si• Objetos podem ser classificados em

Classes• A classe de um objeto define seus

– Atributos, ou particularidades– Métodos, ou as atividades que os

objetos de uma classe podem executar

19

Segundo o dicionário Aurélio Século XXI http://www2.uol.com.br/aurelio

os significados dos termos ClasseObjeto

AtributoMétodo

são...

20

Classe• Categoria, ordem • Numa série ou num conjunto, grupo ou

divisão que apresenta características semelhantes

• Informática: Em programação ou modelagem orientada a objetos, categoria descritiva geral, que abrange o conjunto de objetos que compartilham uma ou mais características quanto a seus itens de dados e procedimentos associados

21

Objeto• Tudo que é manipulável e/ou

manufaturável• Tudo que é perceptível por qualquer dos

sentidos• Informática: Em programação orientada a

objetos, qualquer módulo que contém rotinas e estruturas de dados e é capaz de interagir com outros módulos similares, trocando mensagens

22

Atributo• Aquilo que é próprio de um ser• Informática: Na modelagem conceitual,

cada uma das propriedades que definem um objeto ou entidade

Método• Caminho pelo qual se atinge um objetivo• Informática: Programa que regula

previamente uma série de operações que devem ser realizadas, apontando erros evitáveis, em vista de um resultado determinado

23

Classes• Todos os objetos do mundo real podem

ser divididos em categorias ou classes se eles possuírem as mesmas características, ou atributos, e mesmas funcionalidades, ou métodos

• Muito importante é compreender a diferença entre – Atributo – Valor de atributo

24

Classes• Todos os objetos da mesma classe

possuem os mesmos atributos• Uma classe

– Define as características de um grupo de objetos, ou seja, define como serão as instâncias pertencentes a ela

– Define também quais serviços, ou operações, qualquer objeto da classe poderá executar, ou seja, seu comportamento

25

Classes

• Como todo objeto é uma instância de alguma classe, isto é, todo objeto pertence a uma classe, então a classe pode ser considerada como o tipo do objeto

Nome da Classe

Definição dos Atributos

Definição das funcionalidades ou

Métodos

• Representação simples em UML

26

UML• Acrônimo de Unified Modeling Language –

Linguagem de Modelagem Unificada• Pode ser usada com qualquer processo de

desenvolvimento• Padronizada pelo OMG – Object

Management Group – e já sofreu atualizações

• Versão atual: UML 2.0• Mais informações em

– pt.wikipedia.org/wiki/UML– www.uml.org

27

ObjetosObjeto é qualquer coisa que tenha algum

significado dentro do contexto de um problema, seja ela concreta ou abstrata, ou seja, qualquer coisa que apresente

alguma utilidade ou sirva para um propósito

• Para programação, um objeto é a abstração de uma entidade do mundo real que apresenta sua própria existência, identificação, características de composição e que pode executar determinados serviços quando solicitado

28

Exemplos: Objetos e Classes

Objetosum livrouma página de um livrouma viagemuma determinada dataum endereço de alguémuma pessoauma determinada festauma músicauma conexão de redeuma nota fiscaluma determinada porta

ClassesLivroPágina de livroViagemDataEndereçoPessoaFestaMúsicaConexão de redeNota fiscalPorta

29

Exemplos• Seja a definição de uma classe Porta, que deve

representar as características e funcionalidades consideradas relevantes para todos os objetos que compõem esta classe

Classe PortaAtributos cor

alturalargurafechadura

Funcionalidades abrir-sefechar-se

30

Exemplos• Seja o objeto resultante de uma abstração da

porta de uma sala, ou seja, um objeto uma porta

Objeto uma portaAtributos cor = azulaltura = 2,10 mlargura = 0,90 mfechadura = “objeto da classe das fechaduras”

Funcionalidades abrir-sefechar-se

31

Exemplos• Seja a definição abstrata de uma classe Aluno de

uma determinada disciplina• Considerando que o sistema de avaliação em

uma disciplina seja por uma prova escrita, os atributos e serviços deste objeto seriam

Classe AlunoAtributos nome do aluno

matrículanota prova

Funcionalidades estudarassistir aularealizar prova

32

Exemplos• Seja a definição de um objeto um aluno da

classe Aluno definida anteriormente

Objeto um alunoAtributos nome do aluno = Maria

matrícula = 12345678nota prova = 9,0

Funcionalidades estudarassistir aularealizar prova

33

ExemplosObjeto meu relógio

Atributos Formato arredondadoCor amarelaPeso 30 gramasA Pulseira outro objetoOs Ponteiros outro objetoA Pilha outro objeto

Métodos Iniciar marcação de horasInformar horasCorrigir horasTrocar pilha

34

ExemplosObjeto meu relógio

Atributos Formato arredondadoCor amarelaPeso 30 gramasA Pulseira outro objetoOs Ponteiros outro objetoA Pilha outro objeto

Métodos Iniciar marcação de horasInformar horasCorrigir horasTrocar pilha

Características de qualquer objeto da

Classe Relógio

35

ExemplosObjeto meu relógio

Atributos Formato arredondadoCor amarelaPeso 30 gramasA Pulseira outro objetoOs Ponteiros outro objetoA Pilha outro objeto

Métodos Iniciar marcação de horasInformar horasCorrigir horasTrocar pilha

Características do meu relógio em

particular

36

ExemplosObjeto meu relógio

Atributos Formato arredondadoCor amarelaPeso 30 gramasA Pulseira outro objetoOs Ponteiros outro objetoA Pilha outro objeto

Métodos Iniciar marcação de horasInformar horasCorrigir horasTrocar pilha

Funcionalidade de qualquer objeto da

Classe Relógio

37

ExemplosObjeto meu relógio

Atributos Formato arredondadoCor amarelaPeso 30 gramasA Pulseira outro objetoOs Ponteiros outro objetoA Pilha outro objeto

Métodos Iniciar marcação de horasInformar horasCorrigir horasTrocar pilhaOutros objetos que

ajudam a compor um objeto da Classe Relógio

38

Objetos – Representação Visual

meu relógio Representação simples

meu relógio

a pulseiraos ponteiros

a pilha

Objeto comoutros objetos agregados

Objeto composto

39

Objetos• Um objeto é um elemento do programa que,

após ser criado através da execução de determinados comandos pelo computador, passa a ocupar um espaço na memória

• Todo objeto deve ter uma identificação (nome)• Os atributos são as características de

composição de um objeto e definem sua estrutura

• Atributos– valores simples ou outros objetos– podem mudar durante a vida do objeto

40

Objetos• As ações, serviços realizados ou

comportamento dos objetos, serão chamados de métodos

• Devemos imaginar que um objeto é algo que tem vida própria e que tenha capacidade de realização de ações mesmo quando este objeto tratar-se da abstração de algo inanimado ou abstrato

41

Sobre Objetos e suas Classes• Objetos de uma certa classe têm atributos

– Uma conta tem um número, um saldo, um histórico de transações

– Um cliente tem um nome, um endereço– Um cheque tem um valor

• Objetos de uma mesma classe têm um mesmo comportamento– Clientes entram numa agência– Clientes fazem depósitos e saques– Clientes emitem cheques

42

Classes• Há simplificações no comportamento dos

objetos em relação ao mundo real– Por vezes não é interessante modelar todo o

comportamento dos objetos• Exemplo: clientes tomam café no mundo real mas

provavelmente não na classe Cliente– Os comportamentos freqüentemente são

assumidos por objetos diferentes• Exemplo: no mundo real, quem faz um depósito

numa conta? Um cliente• Nos programas, qual classe assumiria a

responsabilidade de fazer um depósito? A classe conta

43

Classes• Alguns objetos não têm comportamento

– Contas não são vivas: não "fazem" nada• Objetos podem estar relacionados

– Um cliente pode possuir várias contas• Objetos podem pertencer a mais de uma

classe– João, que pertence a classe Cliente, pode

pertencer também a classe Estudante• Para ler mais sobre o assunto

– www.inf.ufsc.br/poo/conceitos

44

Representação da Classe

Relogio-String formato-String cor-String peso-Pulseira apulseira-Ponteiro osponteiros-Pilha apilha+ iniciarMarcacaoDeHoras+ informarHoras+ corrigirHoras+ trocarPilhas

Nome da Classe

Atributos

Atributos que correspondem a objetos de outras classes

Métodos

45

Representação da Classe

Relogio-String formato-String cor-String peso-Pulseira apulseira-Ponteiro osponteiros-Pilha apilha+iniciarMarcacaoDeHoras+informarHoras+corrigirHoras+trocarPilhas

Nessa disciplina daremos especial

atenção a Construção de

Métodos

46

Métodos• Um Objeto presta um serviço executando

algum Método especificado em sua classe• Um mesmo serviço poderá ser executado

de várias formas, mas por enquanto assumiremos que cada Serviço corresponderá a um Método

• Denominação:– Serviço para a ação do objeto– Método para a forma como a ação será executada

• Inicialmente veremos a construção de um método como a construção de um programa

47

A Plataforma Java• Uma plataforma é o ambiente de

hardware e software onde um programa é executado

• A Plataforma Java é definida por:– APIs Java– Máquina Virtual Java

48

A Linguagem Java– Simples– Orientada a Objetos– Distribuída– Portável– Robusta– Segura– Interpretada– Independente de arquitetura– Alta performance– Dinâmica

49

Linguagens de Programação• Linguagens de máquina

– Instruções para comandar a execução de operações primitivas

– Exemplos • somar dois números• comparar dois números• transferir dados entre a memória e os registradores

do processador ou entre a memória e os dispositivos de E/S

– Primeiras linguagens• instruções escritas de forma primitiva• cada instrução era formada por uma dezena de bits• trabalhosa e muito sujeita a erros

50

Linguagens de Programação• Linguagens de montagem

– Programadores passaram a usar nomes para as operações e dados

– Exemplos• MOV R1,X• ADD R1, R2

– Programas eram escritos desta forma e “traduzidos” manualmente para linguagem de máquina para ser carregado e executado

– Transferido para o computador a tarefa de “montar” o programa em linguagem de máquina

– Programa montador traduz da linguagem de montagem para a linguagem de máquina

51

Linguagens de Programação• Linguagens de máquina e linguagens de

montagem: linguagens de baixo nível• Linguagem de programação de alto nível

– conjunto rico de instruções sintáticas, adequadas para expressar algoritmos usados para a solução de problemas

• Para que um programa em linguagem de alto nível possa ser executado pelo computador ele precisa ser traduzido para um programa em linguagem de máquina

• Esta tradução é denominada “compilação” e o programa que faz esta tarefa é o compilador

52

O Processo de Compilação• Um programa escrito segundo uma

linguagem de programação é chamado de programa fonte ou código fonte

• Para que este programa fonte possa ser executado por um computador ele deve ser traduzido para outra linguagem compreendida pelo computador – atividade realizada por um compilador

• O resultado do processo de compilação é denominado programa objeto ou código objeto

53

O Processo de Compilação

Programa Fonte Compilação

ProgramaObjeto

Há erros?

Sim

Não

indicação dos erros a serem

corrigidos

54

O Processo de Execução

Programa Objeto Execução Resultados

• O programa objeto é que será executado pelo computador para gerar os resultados esperados

55

O Processo de Interpretação• Processo diferente da compilação/ execução:

interpretação de programas fonte• Interpretador interpreta diretamente cada

comando de um programa fonte, simulando sua execução sobre os dados fornecidos para o interpretador

• Interpretação de programas escritos em uma determinada linguagem define uma “máquina virtual” na qual é realizada a execução de instruções desta linguagem

• Processo pode ser centenas de vezes mais lento do que a execução de um código objeto

56

O Processo de Interpretação• Vantagem: mais fácil construir um

interpretador do que um compilador• Aspecto que foi explorado pelos

projetistas da linguagem Java no desenvolvimento de ambientes para programação e execução de programas

• Estes ambientes são baseados em uma combinação de processos de compilação e interpretação

57

A Linguagem Java• Um ambiente de programação Java é

constituído de um compilador Java que gera um código de mais baixo nível denominado bytecode

• O bytecode é então interpretado • Um interpretador de bytecodes interpreta

as instruções da chamada “Máquina Virtual Java” (JVM)

• Este esquema, além de outras vantagens, contribuí para facilitar a implementação da linguagem em um grande número de computadores diferentes

58

Ambientes de Programação• Além de compiladores e interpretadores um

ambiente de programação de uma linguagem de alto nível oferece, em geral, um conjunto de bibliotecas de componentes ou módulos de programas usados no desenvolvimento de programas

• Além disso incluem ferramentas para uso e desenvolvimento de programas como editores de texto e depuradores de programas

• Em um ambiente de programação integrado todos estes componentes são oferecidos no mesmo programa

59

IDEs• IDE é a sigla de Integrated Development

Environment, ou Ambiente Integrado de Desenvolvimento

• Usaremos JCreator • Outras IDEs que podem ser utilizadas

• Eclipse (www.eclipse.org)• NetBeans (www.netbeans.org)• Gel (www.gexperts.com)• JEdit (www.jedit.org)• OptimalJ (www.compuware.com/products/optimalj

)