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
1
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
2
Mundo Real
ESPAÇO DE
PROBLEMAS
Mundo Computacional
Gap Semântico
ESPAÇO DE
SOLUÇÕES
Identificação dos aspectos mais importantes
do mundo real para fins de representação
no computador
3
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
4
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
5
Objetivo do
Paradigma de Orientação a Objetos
DIMINUIR O GAP SEMÂNTICO
ESPAÇO DE
PROBLEMAS
ESPAÇO DE
SOLUÇÕES
6
Mundo Real
Mundo Computacional
ESPAÇO DE
SOLUÇÕES
ESPAÇO DE
PROBLEMAS
Mapeamento
Processo de Identificação
de 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
7
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
8
Modelagem Conceitual
Operação mental
para observar um
domínio e capturar
sua estrutura
Uso de convenções
de representação
REPRESENTAÇÃO
ABSTRAÇÃO
Entidade
Observada
Entidade
Representada
Notação gráfica, Avião
linguagem de
programação
9
Abstração
Podem ser feitas diferentes abstrações a partir
de um mesmo objeto do mundo real
I, II, III
Maça
peso
cor da casca
formato
Cardinalidade
do conjunto
3
Receita
ATRIBUTO
CATEGORIA
AÇÃO
10
Abstração
Pontos
de vista
distintos
cor
aparência
Correr
Brincar
peso
tamanho
Criar
Comer
11
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
12
13
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.)
14
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
15
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
16
Substituindo por sinônimos…
Entidades por Objetos
Categorias por Classes
Características por Atributos
Funcionalidades por Métodos
17
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
18
Segundo o dicionário Aurélio Século XXI
http://www2.uol.com.br/aurelio
os significados dos termos
Classe
Objeto
Atributo
Método
são...
19
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
20
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
21
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
22
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
23
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
24
Classes
• Representação simples em UML
Nome da Classe
Definição dos Atributos
Definição das
funcionalidades ou
Métodos
• 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
25
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
26
Objetos
Objeto é 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
27
Exemplos: Objetos e Classes
Objetos
um livro
uma página de um livro
uma viagem
uma determinada data
um endereço de alguém
uma pessoa
uma determinada festa
uma música
uma conexão de rede
uma nota fiscal
uma determinada porta
Classes
Livro
Página de livro
Viagem
Data
Endereço
Pessoa
Festa
Música
Conexão de rede
Nota fiscal
Porta
28
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 Porta
Atributos
cor
altura
largura
fechadura
Funcionalidades abrir-se
fechar-se
29
Exemplos
• Seja o objeto resultante de uma abstração da
porta de uma sala, ou seja, um objeto uma
porta
Objeto uma porta
Atributos
cor = azul
altura = 2,10 m
largura = 0,90 m
fechadura = “objeto da classe das
fechaduras”
Funcionalidades abrir-se
fechar-se
30
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 Aluno
Atributos
nome do aluno
matrícula
nota prova
Funcionalidades estudar
assistir aula
realizar prova
31
Exemplos
• Seja a definição de um objeto um aluno da
classe Aluno definida anteriormente
Objeto um aluno
Atributos
nome do aluno = Maria
matrícula = 12345678
nota prova = 9,0
Funcionalidades
estudar
assistir aula
realizar prova
32
Exemplos
Objeto meu relógio
Atributos Formato
Cor
Peso
A Pulseira
Os Ponteiros
A Pilha
Métodos
arredondado
amarela
30 gramas
outro objeto
outro objeto
outro objeto
Iniciar marcação de horas
Informar horas
Corrigir horas
Trocar pilha
33
Exemplos
Objeto meu relógio
Atributos Formato
Cor
Peso
A Pulseira
Os Ponteiros
A Pilha
Métodos
arredondado
amarela
30 gramas
outro objeto
outro objeto
outro objeto
Iniciar marcação de horas
Informar horas
Características de
Corrigir horas
qualquer objeto da
Trocar pilha
Classe Relógio
34
Exemplos
Objeto meu relógio
Atributos Formato
Cor
Peso
A Pulseira
Os Ponteirosoutro
A Pilha
arredondado
amarela
30 gramas
outro objeto
objeto
outro objeto
Características do
Métodos Iniciar marcação de horas
meu Informar
relógio em
horas
particular
Corrigir horas
Trocar pilha
35
Exemplos
Objeto meu relógio
Funcionalidade de
arredondado
qualquer
amarelaobjeto da
Classe
Relógio
30 gramas
Atributos Formato
Cor
Peso
A Pulseira
outro objeto
Os Ponteirosoutro objeto
A Pilha
outro objeto
Métodos
Iniciar marcação de horas
Informar horas
Corrigir horas
Trocar pilha
36
Exemplos
Objeto meu relógio
Atributos Formato
Cor
Peso
A Pulseira
Os Ponteirosoutro
A Pilha
Métodos
arredondado
amarela
30 gramas
outro objeto
objeto
outro objeto
Iniciar marcação de horas
Informar horas
Corrigir horas
Outros objetos
Trocar pilha
que
ajudam a compor um
objeto da Classe Relógio
37
Objetos – Representação Visual
meu relógio
Objeto com
outros objetos
agregados
Representação simples
meu relógio
os ponteiros
a pulseira
Objeto
composto
a pilha
38
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
39
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
40
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
41
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
42
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
43
Representação da Classe
Nome da Classe
Relogio
-String
-String
-String
-Pulseira
-Ponteiro
-Pilha
formato
cor
peso
apulseira
osponteiros
apilha
+ iniciarMarcacaoDeHoras
+ informarHoras
+ corrigirHoras
+ trocarPilhas
Atributos
Atributos que correspondem a
objetos de outras classes
Métodos
44
Representação da Classe
Relogio
-String
-String
-String
-Pulseira
-Ponteiro
-Pilha
formato
cor
peso
apulseira
osponteiros
apilha
+iniciarMarcacaoDeHoras
+informarHoras
+corrigirHoras
+trocarPilhas
Nessa
disciplina
daremos
especial
atenção a
Construção de
Métodos
45
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
46
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
47
A Linguagem Java
– Simples
– Orientada a Objetos
– Distribuída
– Portável
– Robusta
– Segura
– Interpretada
– Independente de arquitetura
– Alta performance
– Dinâmica
48
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
49
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
50
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
51
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
52
O Processo de Compilação
Programa
Fonte
Compilação
Há erros?
Não
Sim
Programa
Objeto
indicação dos erros
a serem
corrigidos
53
O Processo de Execução
• O programa objeto é que será executado pelo
computador para gerar os resultados
esperados
Programa
Objeto
Execução
Resultados
54
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
55
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
56
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
57
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
58
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)
59
Download

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