Post on 07-Apr-2016
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
)