SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
1
ProgramaProgramaçção IIão II
Profº Alcides Xavier Benicasa
alcides@ufs.br

Universidade Federal de Sergipe
Departamento de Sistemas de Informação / Itabaiana
Página inicial do grupo: http://groups.google.com.br/group/ufs-nsi-progii
Endereço de e-mail do grupo: ufs-nsi-progii@googlegroups.com
Página do Professor: https://sites.google.com/site/ufsprofalcidesbenicasa
UFS – Programação II / 2 de 53
Unidades de Ensino
Introdução à Programação Orientada a Objetos
Unidades de Ensino
Introdução à Programação Orientada a Objetos
 I - Introdução
Conceitos Fundamentais de Programação
Orientada a Objetos
Modelos
Classes
Objetos
Estrutura de uma Classe
2
UFS – Programação II / 3 de 53
Roteiro
Conceitos Fundamentais de Programação Orientada a Objetos
Roteiro
Conceitos Fundamentais de Programação Orientada a Objetos
Modelos
Classes
Objetos
Estrutura de uma Classe
• Campos / Construtores
• Métodos
• Campos / Parâmetros / Variáveis Locais
Modelos
“Eu não aceitaria participar de
nenhum clube que me aceitasse
como membro”.
Groucho Marx,
The Groucho Letter
apud Savitch.
ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
3
UFS – Programação II / 5 de 53
O que são Modelos?O que são Modelos?
Modelos são representações simplificadas de:
Objetos
Pessoas
Itens
Tarefas
Processos
Conceitos
idéias, etc.
Usados comumente por pessoas no seu dia-a-dia,
independentemente de uso de computadores
UFS – Programação II / 6 de 53
Modelo - Restaurante Caseiro HipotéticoModelo - Restaurante Caseiro Hipotético
Mesa 1
Cerveja
Refrig. Lata
Refrig. 600ml
Refrig. 2lt.
Sobremesa
Kg refeição
Mesa 2
Cerveja
Refrig. Lata
Refrig. 600ml
Refrig. 2lt.
Sobremesa
Kg refeição
Mesa 3
Cerveja
Refrig. Lata
Refrig. 600ml
Refrig. 2lt.
Sobremesa
Kg refeição
Mesa 4
Cerveja
Refrig. Lata
Refrig. 600ml
Refrig. 2lt.
Sobremesa
Kg refeição
Mesa 5
Cerveja
Refrig. Lata
Refrig. 600ml
Refrig. 2lt.
Sobremesa
Kg refeição
Mesa 6
Cerveja
Refrig. Lata
Refrig. 600ml
Refrig. 2lt.
Sobremesa
Kg refeição
Dados, informações relevantes
Operações ou procedimentos
4
UFS – Programação II / 7 de 53
Modelo - Restaurante Caseiro HipotéticoModelo - Restaurante Caseiro Hipotético
Modelo
Restaurante Caseiro
Dados
quantidadeDoItem, etc.
Operações
adicionaItem
apresentaConta
UFS – Programação II / 8 de 53
Modelo: PessoaModelo: Pessoa
Pessoa como Empregado de Empresa
DADOS: nome, cargo, salário e horasTrabalhadas.
OP: calculaSalário e aumentaSalario.
Pessoa como Paciente de uma Clínica Médica
DADOS: nome, sexo, idade, altura, peso e
historicoConsulta.
OP: verificaObesidade e adicionaInformaçãoHistórico.
Pessoa como Contato Comercial
DADOS: nome, telefone, cargo e empresa.
OP: mostraTelefone e trabalhaEmEmpresa.
5
Classes
ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
UFS – Programação II / 10 de 53
Programação Orientada a ObjetosProgramação Orientada a Objetos
 Paradigma de programação de computadores onde se usam
classes e objetos, criados a partir dos modelos descritos
anteriormente, para representar e processar dados usando
programas de computadores.
Dados
• Representados por tipos de dados característicos da linguagem de
programação, podendo também ser representados por outros
modelos.
Operações
• Representadas pelo processamento dos dados.
6
UFS – Programação II / 11 de 53
Programação Orientada a ObjetosProgramação Orientada a Objetos
 Um programa orientado a objetos é estruturado como uma
comunidade de objetos que interagem entre si.
 Cada objeto tem um papel a cumprir.
 Cada objeto oferece um serviço ou realiza uma ação que é
usada por outros membros da comunidade.
 Ex.: um computador e seus componentes (teclado, mouse,
vídeo, cpu, etc.)
UFS – Programação II / 12 de 53
Programação Orientação a ObjetosProgramação Orientação a Objetos
ClasseClasse
ObjetoObjeto
Mensagem
instância ou exemplarinstância ou exemplar
tipo ou moldetipo ou molde
comunicacomunicaçção entre objetosão entre objetos
7
UFS – Programação II / 13 de 53
Programação Orientação a ObjetosProgramação Orientação a Objetos
Mundo realMundoMundo realreal
ModeloModeloModelo
CasaCasaCasa
ElenElenElen
AutomóvelAutomAutomóóvelvel
MaçãsMaMaççãsãs
CasaCasaCasa
ElenElenElen
AutomóvelAutomAutomóóvelvel
MaçãsMaMaççãsãs
mora namoramora nana
dirigedirigedirige
comecomecome
UFS – Programação II / 14 de 53
Programação Orientação a ObjetosProgramação Orientação a Objetos
operaoperaççõesões
estrutura de dadosestrutura de dados
objetoobjeto
8
UFS – Programação II / 15 de 53
Programação Orientação a ObjetosProgramação Orientação a Objetos
Pessoas Livro Automóvel
Tangíveis
Incidente
Competição
Transação
Interação
Projeto Conserto
Saque Venda
UFS – Programação II / 16 de 53
ClassesClasses
Uma classe é uma “fôrmafôrma” para produzir
objetos.
Determina um conjunto de objetos com:
propriedades semelhantes
comportamentos semelhantes
relacionamentos comuns com outrosrelacionamentos comuns com outros
objetosobjetos..
9
UFS – Programação II / 17 de 53
ClassesClasses
Veículos
PassageirosEsporte PasseioUtilitário
EspecializaçãoGeneralização
Objetos
ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
10
UFS – Programação II / 19 de 53
Classe e ObjetoClasse e Objeto
 Um objeto pode ser descrito por um
conjunto de atributos e comportamentos
 Um objeto pode ser descrito por um
conjunto de atributos e comportamentos
ATRIBUTOSATRIBUTOS
Motor
Cor
Potência
Rodas
COMPORTAMENTOSCOMPORTAMENTOS
Avançar
Retroceder
Parar
Abastecer
UFS – Programação II / 20 de 53
Objeto: exemploObjeto: exemplo
 Um carro possui características (motor,
cor,etc.) e comportamento (avançando,
retrocedendo, etc.).
 Um carro possui características (motor,
cor,etc.) e comportamento (avançando,
retrocedendo, etc.).
ATRIBUTOSATRIBUTOS
5.1
Vermelha
COMPORTAMENTOSCOMPORTAMENTOS
Abastecendo
11
UFS – Programação II / 21 de 53
Estrutura de uma Classe em JAVAEstrutura de uma Classe em JAVA
CIRCULO
Raio
X
y
public class Circulo
{
public float raio;
public float x;
public float y;
}
UFS – Programação II / 22 de 53
Tempo de ExecuçãoTempo de Execução
CLASSE = “Molde de Objetos”CLASSE = “Molde de Objetos”
Tempo de
Compilaç
ão
CLASSE
CIRCULO
Tempo de
Compilaç
ão
CLASSE
CIRCULO
12
UFS – Programação II / 23 de 53
CRIAÇÃO DE OBJETOS (instanciação)CRIAÇÃO DE OBJETOS (instanciação)
 Um objeto de uma classe é criado
utilizando-se a palavra new.
 Um objeto de uma classe é criado
utilizando-se a palavra new.
UFS – Programação II / 24 de 53
Dois objetos circleDois objetos circle
é instância de...
é instância de...
13
Estrutura de uma Classe / Campos / Construtores
ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
UFS – Programação II / 26 de 53
Estrutura de uma classe básicaEstrutura de uma classe básica
public class NomeDaClasse
{
Campos
Construtores
Métodos
}
O conteúdo de uma classe
14
UFS – Programação II / 27 de 53
CamposCampos
 Campos armazenam
valores para um objeto.
 Eles também são
conhecidos como
variáveis de instâncias.
 Campos definem o
estado de um objeto.
 São definidos fora dos
métodos
public class Lampada
{
private String estado;
private int nVidaUtil;
//construtor e métodos omitidos
}
private String estado;;
Nome da
variável
Modificador de
Visibilidade
Tipo
UFS – Programação II / 28 de 53
AtribuiçãoAtribuição
Valores são armazenados em campos (e outras
variáveis) via instruções de atribuição:
variável = expressão;
•estado = NovoEstado;
•nVidaUtil++;
Uma variável armazena um único valor,
portanto, qualquer valor anterior é perdido.
15
UFS – Programação II / 29 de 53
ConstrutoresConstrutores
 Construtores inicializam
um objeto.
 Eles têm o mesmo
nome das suas classes.
 Eles armazenam
valores iniciais nos
campos.
 Eles freqüentemente
recebem valores de
parâmetros externos
nesses campos.
public class Lampada
{
private String estado;
private int nVidaUtil;
public Lampada()
{
estado = "desligada";
}
public Lampada(String NovoEstado)
{
estado = NovoEstado;
}
//métodos omitidos
}
UFS – Programação II / 30 de 53
Transmitindo dados via parâmetrosTransmitindo dados via parâmetros
CONSTRUTOR
public Lampada(String NovoEstado)
{
estado = NovoEstado;
}
Lampada lampada1 = new Lampada(“ligada”);
16
Métodos
ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
UFS – Programação II / 32 de 53
Métodos de AcessoMétodos de Acesso
 Métodos implementam o comportamento dos objetos.
 Métodos de acesso fornecem informações sobre um objeto.
 Métodos têm uma estrutura que consiste em um cabeçalho e um
corpo.
 O cabeçalho define a assinatura do método.
public String getEstado()
 O corpo engloba as instruções do método.
17
UFS – Programação II / 33 de 53
Métodos de AcessoMétodos de Acesso
public String getEstado()
{
return estado;
}
Tipo de Retorno
Nome do Método Lista de
Parâmetros
(vazia)
Início e Fim do corpo do Método (bloco)
Instrução de
Retorno
Modificador de
Visibilidade
UFS – Programação II / 34 de 53
Métodos ModificadoresMétodos Modificadores
Eles têm uma estrutura de método semelhante:
cabeçalho e corpo.
Muito utilizado para modificar o estado de um objeto.
Alcançados por meio da modificação do valor de um
ou mais campos.
Geralmente contêm instruções de atribuição.
Geralmente recebem parâmetros.
18
UFS – Programação II / 35 de 53
Métodos ModificadoresMétodos Modificadores
public void setEstado(String nEstado){
{
estado = nEstado;
}
Tipo de Retorno
(void)
Nome do Método
Parâmetro(s)
Campo sendo
Alterado
Modificador de
Visibilidade
UFS – Programação II / 36 de 53
MétodosMétodos
 Nome do Método
é um Identificador válido da linguagem;
 Parâmetros
lista de argumentos que serão passados como parâmetros para o método. A
sintaxe dos argumentos é a de declaração de variáveis;
 Tipo de Retorno
indica o tipo do valor retornado pelo método;
 return
palavra reservada que indica o valor que será devolvido para o programa;
 Modificadores
elementos que caracterizam o método quanto à visibilidade (escopo)
19
UFS – Programação II / 37 de 53
Chamadas de métodoChamadas de método
Chamadas de método interno
Os métodos podem chamar outros métodos da
mesma classe como parte de sua implementação.
Isso é denominado chamada de método interno.
public void economizaEnergia(){
Apagar();
}
public void Apagar(){
estado = "desligada";
}
UFS – Programação II / 38 de 53
Chamadas de métodoChamadas de método
Chamadas de método externo
Os métodos podem chamar métodos de outros objetos
utilizando a notação de ponto. Isso é denominado chamada de
método externo.
A sintaxe de uma chamada de método externo é
• objeto.nomeDoMétodo(listadeparâmetros)
class Lampada_Principal
{
public static void main(String args[])
{
Lampada L1 = new Lampada("ligada");
System.out.print("nLampada 1 Estado ("+ L1.getEstado() +")");
L1.economizaEnergia();
System.out.print("nLampada 1 Estado ("+ L1.getEstado() +")");
}
}
20
Campos / Parâmetros / Variáveis Locais
ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
UFS – Programação II / 40 de 53
VariáveisVariáveis
Campos são um tipo de variável
armazenam valores por toda a vida de um objeto; e
são acessíveis por meio da classe.
porém são definidos fora dos métodos
Métodos podem incluir variáveis de vida mais curta
existem apenas enquanto o método está em execução
são acessíveis de dentro do método
São definidas dentro de um método
public class Lampada
{
private String estado;
private int nVidaUtil;
//construtor e métodos omitidos
}
21
UFS – Programação II / 41 de 53
Variáveis LocaisVariáveis Locais
Variável declarada e utilizada dentro de um único
método.
Seu tempo de vida está limitado ao método.
public int ReiniciaVidaUtil()
{
int nVidaUtilUtilizada = nVidaUtil;
nVidaUtil = 0;
return nVidaUtilUtilizada;
}
UFS – Programação II / 42 de 53
Campos / Parâmetros e Variáveis Locais
Considerações
Campos / Parâmetros e Variáveis Locais
Considerações
Todos os três tipo são capazes de
armazenas um valor que é apropriado para
seu tipo definido.
22
UFS – Programação II / 43 de 53
Campos / Parâmetros e Variáveis Locais
Considerações
Campos / Parâmetros e Variáveis Locais
Considerações
Campos
São definidos fora dos construtores e métodos.
Utilizados para armazenar dados que persistem por toda a vida
de um objeto.
Têm escopo de classe: sua acessibilidade se estende por toda
a classe e podem ser utilizadas em quaisquer dos construtores
ou métodos da classe em que eles estão definidos.
Enquanto forem definidos como private, não podem ser
acessados de fora de sua classe definidora.
UFS – Programação II / 44 de 53
Campos / Parâmetros e Variáveis Locais
Considerações
Campos / Parâmetros e Variáveis Locais
Considerações
Parâmetros
Persistem somente durante o período em que um construtor ou
método executa.
Atuam como posições temporárias, em vez de permanentes, da
memória.
São definidos no cabeçalho de um construtor ou método.
Recebem seus valores fora, sendo inicializados pelos valores
reais de parâmetros.
Escopo é limitado a seu construtor ou ao seu método definidor.
23
UFS – Programação II / 45 de 53
Campos / Parâmetros e Variáveis Locais
Considerações
Campos / Parâmetros e Variáveis Locais
Considerações
Variáveis Locais
Definidas dentro do corpo de um construtor ou método.
Podem ser inicializadas e utilizadas somente dentro do corpo
de seu construtor ou método definidor.
Devem ser inicializadas antes de serem utilizadas em um
expressão – elas não recebem um valor-padrão.
Têm escopo que é limitado no bloco em que elas são definidas.
Não são acessíveis em nenhum lugar fora desse bloco.
Outro Exemplo...
24
UFS – Programação II / 47 de 53
EXEMPLO – Circulo.javaEXEMPLO – Circulo.java
public class Circulo {
public float raio; //atributo raio do círculo
public float x; //posições em coordenadas cartesianas
public float y;
}
UFS – Programação II / 48 de 53
EXEMPLO – Principal.javaEXEMPLO – Principal.java
public class Principal {
public static void main(String args[]) {
Circulo umcirc;
umcirc= new Circulo(); //alocação dessa variável
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
umcirc.x=umcirc.x+17;
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
}
}
public class Principal {
public static void main(String args[]) {
Circulo umcirc;
umcirc= new Circulo(); //alocação dessa variável
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
umcirc.x=umcirc.x+17;
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
}
}
25
UFS – Programação II / 49 de 53
EXEMPLO – Principal.javaEXEMPLO – Principal.java
class Circulo {
public float raio; //atributo raio do círculo
public float x; //posições em coordenadas cartesianas
public float y;
}
public class Principal {
public static void main(String args[]) {
Circulo umcirc;
umcirc= new Circulo(); //alocação dessa variável
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
umcirc.x=umcirc.x+17;
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
}
}
class Circulo {
public float raio; //atributo raio do círculo
public float x; //posições em coordenadas cartesianas
public float y;
}
public class Principal {
public static void main(String args[]) {
Circulo umcirc;
umcirc= new Circulo(); //alocação dessa variável
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
umcirc.x=umcirc.x+17;
System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") ");
}
}
UFS – Programação II / 50 de 53
EXERCÍCIOSEXERCÍCIOS
1. Repita o mesmo exemplo só que agora mova o círculo alterando as
componentes x e y. Coloque o círculo na posição (1.0,1.0), através de
atribuições do tipo acirc.x=1.0; . Acompanhe todas as modificações do
objeto imprimindo seus atributos na tela.
2. Simplifique o programa anterior retirando o atributo raio. Você pode
dar o nome de Ponto ou Ponto_geometrico para esta classe. Não se
esqueça de compilar, use o compilador como ferramenta para verificar
se você aprendeu corretamente a sintaxe da linguagem.
3. Reescreva a classe Circulo para trabalhar com atributos do tipo int.
1. Repita o mesmo exemplo só que agora mova o círculo alterando as
componentes x e y. Coloque o círculo na posição (1.0,1.0), através de
atribuições do tipo acirc.x=1.0; . Acompanhe todas as modificações do
objeto imprimindo seus atributos na tela.
2. Simplifique o programa anterior retirando o atributo raio. Você pode
dar o nome de Ponto ou Ponto_geometrico para esta classe. Não se
esqueça de compilar, use o compilador como ferramenta para verificar
se você aprendeu corretamente a sintaxe da linguagem.
3. Reescreva a classe Circulo para trabalhar com atributos do tipo int.
26
UFS – Programação II / 51 de 53
EXERCÍCIOSEXERCÍCIOS
4. Seguindo a abstração de que as pessoas possuem as características
nome, endereço, telefone e idade, defina em Java a classe e
atributos necessários para a instanciação de duas pessoas.
4. Seguindo a abstração de que as pessoas possuem as características
nome, endereço, telefone e idade, defina em Java a classe e
atributos necessários para a instanciação de duas pessoas.
UFS – Programação II / 52 de 53
Bibliografia BásicaBibliografia Básica
DEITEL E DEITEL. Java: como programar. Makron
Books. 2ª. Edição.
27
UFS – Programação II / 53 de 53
Bibliografia ComplementarBibliografia Complementar
BARNES, D.J.; KÖLLING, M. Programação orientada a
objetos com Java: Uma Introdução Prática Utilizando o
Blue J. São Paulo: Editora Pearson, 2004.
PUGA, Sandra; RISSETI, Gerson. Lógica de
Programação e Estrutura de Dados, com aplicações
Java. São Paulo: Pearson Prentice Hall, 2003.
SANTOS, Rafael. Introdução à Programação Orientada
a Objetos usando Java. Rio de Janeiro: Elsevier, 2003.

Contenu connexe

Similaire à Progii na02

Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-conceptsjorge600
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoMarconi Rodrigues
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Jhonefj
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – IIGabriel Faustino
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosGeorge Mendonça
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetosSliedesharessbarbosa
 

Similaire à Progii na02 (20)

Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
3 oo-concepts
3 oo-concepts3 oo-concepts
3 oo-concepts
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Aula poo x pe
Aula poo x peAula poo x pe
Aula poo x pe
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
 
Sld 4
Sld 4Sld 4
Sld 4
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e Objetos
 
Ehdm
EhdmEhdm
Ehdm
 
Apresentacao
ApresentacaoApresentacao
Apresentacao
 
Sistema acadêmico
Sistema acadêmicoSistema acadêmico
Sistema acadêmico
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetos
 

Progii na02

  • 1. 1 ProgramaProgramaçção IIão II Profº Alcides Xavier Benicasa alcides@ufs.br  Universidade Federal de Sergipe Departamento de Sistemas de Informação / Itabaiana Página inicial do grupo: http://groups.google.com.br/group/ufs-nsi-progii Endereço de e-mail do grupo: ufs-nsi-progii@googlegroups.com Página do Professor: https://sites.google.com/site/ufsprofalcidesbenicasa UFS – Programação II / 2 de 53 Unidades de Ensino Introdução à Programação Orientada a Objetos Unidades de Ensino Introdução à Programação Orientada a Objetos  I - Introdução Conceitos Fundamentais de Programação Orientada a Objetos Modelos Classes Objetos Estrutura de uma Classe
  • 2. 2 UFS – Programação II / 3 de 53 Roteiro Conceitos Fundamentais de Programação Orientada a Objetos Roteiro Conceitos Fundamentais de Programação Orientada a Objetos Modelos Classes Objetos Estrutura de uma Classe • Campos / Construtores • Métodos • Campos / Parâmetros / Variáveis Locais Modelos “Eu não aceitaria participar de nenhum clube que me aceitasse como membro”. Groucho Marx, The Groucho Letter apud Savitch. ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
  • 3. 3 UFS – Programação II / 5 de 53 O que são Modelos?O que são Modelos? Modelos são representações simplificadas de: Objetos Pessoas Itens Tarefas Processos Conceitos idéias, etc. Usados comumente por pessoas no seu dia-a-dia, independentemente de uso de computadores UFS – Programação II / 6 de 53 Modelo - Restaurante Caseiro HipotéticoModelo - Restaurante Caseiro Hipotético Mesa 1 Cerveja Refrig. Lata Refrig. 600ml Refrig. 2lt. Sobremesa Kg refeição Mesa 2 Cerveja Refrig. Lata Refrig. 600ml Refrig. 2lt. Sobremesa Kg refeição Mesa 3 Cerveja Refrig. Lata Refrig. 600ml Refrig. 2lt. Sobremesa Kg refeição Mesa 4 Cerveja Refrig. Lata Refrig. 600ml Refrig. 2lt. Sobremesa Kg refeição Mesa 5 Cerveja Refrig. Lata Refrig. 600ml Refrig. 2lt. Sobremesa Kg refeição Mesa 6 Cerveja Refrig. Lata Refrig. 600ml Refrig. 2lt. Sobremesa Kg refeição Dados, informações relevantes Operações ou procedimentos
  • 4. 4 UFS – Programação II / 7 de 53 Modelo - Restaurante Caseiro HipotéticoModelo - Restaurante Caseiro Hipotético Modelo Restaurante Caseiro Dados quantidadeDoItem, etc. Operações adicionaItem apresentaConta UFS – Programação II / 8 de 53 Modelo: PessoaModelo: Pessoa Pessoa como Empregado de Empresa DADOS: nome, cargo, salário e horasTrabalhadas. OP: calculaSalário e aumentaSalario. Pessoa como Paciente de uma Clínica Médica DADOS: nome, sexo, idade, altura, peso e historicoConsulta. OP: verificaObesidade e adicionaInformaçãoHistórico. Pessoa como Contato Comercial DADOS: nome, telefone, cargo e empresa. OP: mostraTelefone e trabalhaEmEmpresa.
  • 5. 5 Classes ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos UFS – Programação II / 10 de 53 Programação Orientada a ObjetosProgramação Orientada a Objetos  Paradigma de programação de computadores onde se usam classes e objetos, criados a partir dos modelos descritos anteriormente, para representar e processar dados usando programas de computadores. Dados • Representados por tipos de dados característicos da linguagem de programação, podendo também ser representados por outros modelos. Operações • Representadas pelo processamento dos dados.
  • 6. 6 UFS – Programação II / 11 de 53 Programação Orientada a ObjetosProgramação Orientada a Objetos  Um programa orientado a objetos é estruturado como uma comunidade de objetos que interagem entre si.  Cada objeto tem um papel a cumprir.  Cada objeto oferece um serviço ou realiza uma ação que é usada por outros membros da comunidade.  Ex.: um computador e seus componentes (teclado, mouse, vídeo, cpu, etc.) UFS – Programação II / 12 de 53 Programação Orientação a ObjetosProgramação Orientação a Objetos ClasseClasse ObjetoObjeto Mensagem instância ou exemplarinstância ou exemplar tipo ou moldetipo ou molde comunicacomunicaçção entre objetosão entre objetos
  • 7. 7 UFS – Programação II / 13 de 53 Programação Orientação a ObjetosProgramação Orientação a Objetos Mundo realMundoMundo realreal ModeloModeloModelo CasaCasaCasa ElenElenElen AutomóvelAutomAutomóóvelvel MaçãsMaMaççãsãs CasaCasaCasa ElenElenElen AutomóvelAutomAutomóóvelvel MaçãsMaMaççãsãs mora namoramora nana dirigedirigedirige comecomecome UFS – Programação II / 14 de 53 Programação Orientação a ObjetosProgramação Orientação a Objetos operaoperaççõesões estrutura de dadosestrutura de dados objetoobjeto
  • 8. 8 UFS – Programação II / 15 de 53 Programação Orientação a ObjetosProgramação Orientação a Objetos Pessoas Livro Automóvel Tangíveis Incidente Competição Transação Interação Projeto Conserto Saque Venda UFS – Programação II / 16 de 53 ClassesClasses Uma classe é uma “fôrmafôrma” para produzir objetos. Determina um conjunto de objetos com: propriedades semelhantes comportamentos semelhantes relacionamentos comuns com outrosrelacionamentos comuns com outros objetosobjetos..
  • 9. 9 UFS – Programação II / 17 de 53 ClassesClasses Veículos PassageirosEsporte PasseioUtilitário EspecializaçãoGeneralização Objetos ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos
  • 10. 10 UFS – Programação II / 19 de 53 Classe e ObjetoClasse e Objeto  Um objeto pode ser descrito por um conjunto de atributos e comportamentos  Um objeto pode ser descrito por um conjunto de atributos e comportamentos ATRIBUTOSATRIBUTOS Motor Cor Potência Rodas COMPORTAMENTOSCOMPORTAMENTOS Avançar Retroceder Parar Abastecer UFS – Programação II / 20 de 53 Objeto: exemploObjeto: exemplo  Um carro possui características (motor, cor,etc.) e comportamento (avançando, retrocedendo, etc.).  Um carro possui características (motor, cor,etc.) e comportamento (avançando, retrocedendo, etc.). ATRIBUTOSATRIBUTOS 5.1 Vermelha COMPORTAMENTOSCOMPORTAMENTOS Abastecendo
  • 11. 11 UFS – Programação II / 21 de 53 Estrutura de uma Classe em JAVAEstrutura de uma Classe em JAVA CIRCULO Raio X y public class Circulo { public float raio; public float x; public float y; } UFS – Programação II / 22 de 53 Tempo de ExecuçãoTempo de Execução CLASSE = “Molde de Objetos”CLASSE = “Molde de Objetos” Tempo de Compilaç ão CLASSE CIRCULO Tempo de Compilaç ão CLASSE CIRCULO
  • 12. 12 UFS – Programação II / 23 de 53 CRIAÇÃO DE OBJETOS (instanciação)CRIAÇÃO DE OBJETOS (instanciação)  Um objeto de uma classe é criado utilizando-se a palavra new.  Um objeto de uma classe é criado utilizando-se a palavra new. UFS – Programação II / 24 de 53 Dois objetos circleDois objetos circle é instância de... é instância de...
  • 13. 13 Estrutura de uma Classe / Campos / Construtores ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos UFS – Programação II / 26 de 53 Estrutura de uma classe básicaEstrutura de uma classe básica public class NomeDaClasse { Campos Construtores Métodos } O conteúdo de uma classe
  • 14. 14 UFS – Programação II / 27 de 53 CamposCampos  Campos armazenam valores para um objeto.  Eles também são conhecidos como variáveis de instâncias.  Campos definem o estado de um objeto.  São definidos fora dos métodos public class Lampada { private String estado; private int nVidaUtil; //construtor e métodos omitidos } private String estado;; Nome da variável Modificador de Visibilidade Tipo UFS – Programação II / 28 de 53 AtribuiçãoAtribuição Valores são armazenados em campos (e outras variáveis) via instruções de atribuição: variável = expressão; •estado = NovoEstado; •nVidaUtil++; Uma variável armazena um único valor, portanto, qualquer valor anterior é perdido.
  • 15. 15 UFS – Programação II / 29 de 53 ConstrutoresConstrutores  Construtores inicializam um objeto.  Eles têm o mesmo nome das suas classes.  Eles armazenam valores iniciais nos campos.  Eles freqüentemente recebem valores de parâmetros externos nesses campos. public class Lampada { private String estado; private int nVidaUtil; public Lampada() { estado = "desligada"; } public Lampada(String NovoEstado) { estado = NovoEstado; } //métodos omitidos } UFS – Programação II / 30 de 53 Transmitindo dados via parâmetrosTransmitindo dados via parâmetros CONSTRUTOR public Lampada(String NovoEstado) { estado = NovoEstado; } Lampada lampada1 = new Lampada(“ligada”);
  • 16. 16 Métodos ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos UFS – Programação II / 32 de 53 Métodos de AcessoMétodos de Acesso  Métodos implementam o comportamento dos objetos.  Métodos de acesso fornecem informações sobre um objeto.  Métodos têm uma estrutura que consiste em um cabeçalho e um corpo.  O cabeçalho define a assinatura do método. public String getEstado()  O corpo engloba as instruções do método.
  • 17. 17 UFS – Programação II / 33 de 53 Métodos de AcessoMétodos de Acesso public String getEstado() { return estado; } Tipo de Retorno Nome do Método Lista de Parâmetros (vazia) Início e Fim do corpo do Método (bloco) Instrução de Retorno Modificador de Visibilidade UFS – Programação II / 34 de 53 Métodos ModificadoresMétodos Modificadores Eles têm uma estrutura de método semelhante: cabeçalho e corpo. Muito utilizado para modificar o estado de um objeto. Alcançados por meio da modificação do valor de um ou mais campos. Geralmente contêm instruções de atribuição. Geralmente recebem parâmetros.
  • 18. 18 UFS – Programação II / 35 de 53 Métodos ModificadoresMétodos Modificadores public void setEstado(String nEstado){ { estado = nEstado; } Tipo de Retorno (void) Nome do Método Parâmetro(s) Campo sendo Alterado Modificador de Visibilidade UFS – Programação II / 36 de 53 MétodosMétodos  Nome do Método é um Identificador válido da linguagem;  Parâmetros lista de argumentos que serão passados como parâmetros para o método. A sintaxe dos argumentos é a de declaração de variáveis;  Tipo de Retorno indica o tipo do valor retornado pelo método;  return palavra reservada que indica o valor que será devolvido para o programa;  Modificadores elementos que caracterizam o método quanto à visibilidade (escopo)
  • 19. 19 UFS – Programação II / 37 de 53 Chamadas de métodoChamadas de método Chamadas de método interno Os métodos podem chamar outros métodos da mesma classe como parte de sua implementação. Isso é denominado chamada de método interno. public void economizaEnergia(){ Apagar(); } public void Apagar(){ estado = "desligada"; } UFS – Programação II / 38 de 53 Chamadas de métodoChamadas de método Chamadas de método externo Os métodos podem chamar métodos de outros objetos utilizando a notação de ponto. Isso é denominado chamada de método externo. A sintaxe de uma chamada de método externo é • objeto.nomeDoMétodo(listadeparâmetros) class Lampada_Principal { public static void main(String args[]) { Lampada L1 = new Lampada("ligada"); System.out.print("nLampada 1 Estado ("+ L1.getEstado() +")"); L1.economizaEnergia(); System.out.print("nLampada 1 Estado ("+ L1.getEstado() +")"); } }
  • 20. 20 Campos / Parâmetros / Variáveis Locais ProgramaProgramaçção Orientada a Objetosão Orientada a Objetos UFS – Programação II / 40 de 53 VariáveisVariáveis Campos são um tipo de variável armazenam valores por toda a vida de um objeto; e são acessíveis por meio da classe. porém são definidos fora dos métodos Métodos podem incluir variáveis de vida mais curta existem apenas enquanto o método está em execução são acessíveis de dentro do método São definidas dentro de um método public class Lampada { private String estado; private int nVidaUtil; //construtor e métodos omitidos }
  • 21. 21 UFS – Programação II / 41 de 53 Variáveis LocaisVariáveis Locais Variável declarada e utilizada dentro de um único método. Seu tempo de vida está limitado ao método. public int ReiniciaVidaUtil() { int nVidaUtilUtilizada = nVidaUtil; nVidaUtil = 0; return nVidaUtilUtilizada; } UFS – Programação II / 42 de 53 Campos / Parâmetros e Variáveis Locais Considerações Campos / Parâmetros e Variáveis Locais Considerações Todos os três tipo são capazes de armazenas um valor que é apropriado para seu tipo definido.
  • 22. 22 UFS – Programação II / 43 de 53 Campos / Parâmetros e Variáveis Locais Considerações Campos / Parâmetros e Variáveis Locais Considerações Campos São definidos fora dos construtores e métodos. Utilizados para armazenar dados que persistem por toda a vida de um objeto. Têm escopo de classe: sua acessibilidade se estende por toda a classe e podem ser utilizadas em quaisquer dos construtores ou métodos da classe em que eles estão definidos. Enquanto forem definidos como private, não podem ser acessados de fora de sua classe definidora. UFS – Programação II / 44 de 53 Campos / Parâmetros e Variáveis Locais Considerações Campos / Parâmetros e Variáveis Locais Considerações Parâmetros Persistem somente durante o período em que um construtor ou método executa. Atuam como posições temporárias, em vez de permanentes, da memória. São definidos no cabeçalho de um construtor ou método. Recebem seus valores fora, sendo inicializados pelos valores reais de parâmetros. Escopo é limitado a seu construtor ou ao seu método definidor.
  • 23. 23 UFS – Programação II / 45 de 53 Campos / Parâmetros e Variáveis Locais Considerações Campos / Parâmetros e Variáveis Locais Considerações Variáveis Locais Definidas dentro do corpo de um construtor ou método. Podem ser inicializadas e utilizadas somente dentro do corpo de seu construtor ou método definidor. Devem ser inicializadas antes de serem utilizadas em um expressão – elas não recebem um valor-padrão. Têm escopo que é limitado no bloco em que elas são definidas. Não são acessíveis em nenhum lugar fora desse bloco. Outro Exemplo...
  • 24. 24 UFS – Programação II / 47 de 53 EXEMPLO – Circulo.javaEXEMPLO – Circulo.java public class Circulo { public float raio; //atributo raio do círculo public float x; //posições em coordenadas cartesianas public float y; } UFS – Programação II / 48 de 53 EXEMPLO – Principal.javaEXEMPLO – Principal.java public class Principal { public static void main(String args[]) { Circulo umcirc; umcirc= new Circulo(); //alocação dessa variável System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); umcirc.x=umcirc.x+17; System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); } } public class Principal { public static void main(String args[]) { Circulo umcirc; umcirc= new Circulo(); //alocação dessa variável System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); umcirc.x=umcirc.x+17; System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); } }
  • 25. 25 UFS – Programação II / 49 de 53 EXEMPLO – Principal.javaEXEMPLO – Principal.java class Circulo { public float raio; //atributo raio do círculo public float x; //posições em coordenadas cartesianas public float y; } public class Principal { public static void main(String args[]) { Circulo umcirc; umcirc= new Circulo(); //alocação dessa variável System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); umcirc.x=umcirc.x+17; System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); } } class Circulo { public float raio; //atributo raio do círculo public float x; //posições em coordenadas cartesianas public float y; } public class Principal { public static void main(String args[]) { Circulo umcirc; umcirc= new Circulo(); //alocação dessa variável System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); umcirc.x=umcirc.x+17; System.out.println( "("+ umcirc.x +","+ umcirc.y +","+ umcirc.raio +") "); } } UFS – Programação II / 50 de 53 EXERCÍCIOSEXERCÍCIOS 1. Repita o mesmo exemplo só que agora mova o círculo alterando as componentes x e y. Coloque o círculo na posição (1.0,1.0), através de atribuições do tipo acirc.x=1.0; . Acompanhe todas as modificações do objeto imprimindo seus atributos na tela. 2. Simplifique o programa anterior retirando o atributo raio. Você pode dar o nome de Ponto ou Ponto_geometrico para esta classe. Não se esqueça de compilar, use o compilador como ferramenta para verificar se você aprendeu corretamente a sintaxe da linguagem. 3. Reescreva a classe Circulo para trabalhar com atributos do tipo int. 1. Repita o mesmo exemplo só que agora mova o círculo alterando as componentes x e y. Coloque o círculo na posição (1.0,1.0), através de atribuições do tipo acirc.x=1.0; . Acompanhe todas as modificações do objeto imprimindo seus atributos na tela. 2. Simplifique o programa anterior retirando o atributo raio. Você pode dar o nome de Ponto ou Ponto_geometrico para esta classe. Não se esqueça de compilar, use o compilador como ferramenta para verificar se você aprendeu corretamente a sintaxe da linguagem. 3. Reescreva a classe Circulo para trabalhar com atributos do tipo int.
  • 26. 26 UFS – Programação II / 51 de 53 EXERCÍCIOSEXERCÍCIOS 4. Seguindo a abstração de que as pessoas possuem as características nome, endereço, telefone e idade, defina em Java a classe e atributos necessários para a instanciação de duas pessoas. 4. Seguindo a abstração de que as pessoas possuem as características nome, endereço, telefone e idade, defina em Java a classe e atributos necessários para a instanciação de duas pessoas. UFS – Programação II / 52 de 53 Bibliografia BásicaBibliografia Básica DEITEL E DEITEL. Java: como programar. Makron Books. 2ª. Edição.
  • 27. 27 UFS – Programação II / 53 de 53 Bibliografia ComplementarBibliografia Complementar BARNES, D.J.; KÖLLING, M. Programação orientada a objetos com Java: Uma Introdução Prática Utilizando o Blue J. São Paulo: Editora Pearson, 2004. PUGA, Sandra; RISSETI, Gerson. Lógica de Programação e Estrutura de Dados, com aplicações Java. São Paulo: Pearson Prentice Hall, 2003. SANTOS, Rafael. Introdução à Programação Orientada a Objetos usando Java. Rio de Janeiro: Elsevier, 2003.