Upload
hoangcong
View
218
Download
0
Embed Size (px)
Citation preview
Linguagem de Programação IV / J2ME – Introdução
Linguagem de Programação IV
Introdução
Prof. Alessandro Borges
Linguagem de Programação IV / J2ME – Introdução
Tópicos
Orientação a objetos
Classe
Objeto
Abstração
Encapsulamento
Herança
Polimorfismo
Plataforma Java
2
Linguagem de Programação IV / J2ME – Introdução
Orientação a Objetos3
Linguagem de Programação IV / J2ME – Introdução
Orientação a Objetos
“POO é um paradigma de programação de computadores onde se usam classes e objetos, criados a partir de modelos concretos e abstratos do mundo real para representar e processar dados.”
4
Linguagem de Programação IV / J2ME – Introdução
Orientação a Objetos
Classe
Trata-se de um molde, uma
estrutura das linguagens de
programação para definir
um modelo do mundo real,
na qual são representadas as
propriedades,
comportamentos e
relacionamentos
Objeto (ou instância)
É a materialização de uma
classe. É quem representa
realmente as propriedades e
executa as operações. São
dependentes das classes,
que definem o seu tipo
modelo Lampada // representa uma lâmpada em usoinício do modelo
dado estadoDaLampada; // indica se ligada ou não
operação acente() // acente a lâmpadainicio
estadoDaLampada = acesa;fim
operação apaga() // apaga a lâmpadainicio
estadoDaLampada = apagado;fim
operação mostraEstado() // mostra estado da lâmpadainicio
se (estadoDaLampada == aceso)imprime “A lâmpada está acesa”;
senãoimprime “A lâmpada está apagada”;
fimFim do modelo
5
Linguagem de Programação IV / J2ME – Introdução
Orientação a Objetos
Mesmo em uma linguagem orientada a objetos é possível
programar de forma estruturada. Para evitar este erro é essencial
que se conheça alguns princípios que promovem a orientação a objetos.
ENCAPS
ULAMENTO
A
B
S
T
R
A
Ç
Ã
O
H
E
R
A
N
Ç
A
P
O
L
I
M
O
R
F
I
S
M
O
6
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosAbstração
Capacidade de analistas e programadores de compreender o
mundo real e mapeá-lo no mundo computacional.
Fundamental para o raciocínio e a resolução de problemas
Devemos nos importar com os aspectos relevantes do problema em
questão.
Na orientação a objetos, buscar sempre programas bem
modularizados, onde cada módulo é responsável por determinada
tarefa/atividade.
Antes de programar buscar entender o problema, o domínio da
aplicação e definir possíveis classes, atributos e métodos
7
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosAbstração
Imagine esse problema• Uma universidade oferece cursos.
• Cada curso possui várias disciplinas.
• Uma disciplina é ofertada em turmas.
• Um aluno é alguém matriculado em
determinado curso.
• Um professor é alguém que leciona
determinada disciplina para
determinadas turmas.
• Por fim, a turma é uma oferta
específica de uma disciplina
compreendendo data, hora e
alunos.
8
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosEncapsulamento
Consiste em “esconder” o funcionamento de mecanismos internos possibilitando a utilização de recursos através de uma interface pública
Em um objeto, consiste em impedir o acesso irrestrito aos atributos (dados) e esconder os detalhes internos de funcionamento do objeto.
Sua utilização só é possível através de alguns métodos de acesso ou interface pública
Para isso os atributos são declarados como não visíveis (privados) sendo o acesso a eles feito através de métodos de acesso (getter's e setter's).
9
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosEncapsulamento
O encapsulamento básico em Java consiste em declarar todos os
atributos como privados e criar métodos de acesso (getter's e
setter's) para cada um deles.
10
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosHerança
Um mecanismo de OO para criar
classes e subclasses que
compartilham atributos e métodos.
Utilizado quando classes apresentam
descrição e comportamentos
similares.
É usada para criar objetos que tem
"tudo que outro objeto tem, mas
também possui alguns detalhes
próprios".
Permite pegar uma classe e utilizar ou
alterar suas propriedades e métodos,
incluindo propriedades e métodos.
11
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosHerança
Imagine a classe “FiguraGeometrica”
como a classe base para o desenho
de outras formas geométricas Como a classe “Círculo” e “Poligono”.
Note que em termos de código basta
utilizar o extends
Public abstract class FormaGeometrica {public Ponto centro;public Double raio;public abstract double CalcularArea();public abstract double CalcularPerimetro();public abstract void Redesenhar();public void moverPara(Ponto novoCentro) {
centro = novoCentro;Redesenhar();
}}
Class Circulo extends FormaGeometrica {Circulo(Ponto c, double r) {
centro = c;reio = r;
}public double CalcularArea() {
return (Math.PI * Math.pow(raio, 2));}public double CalcularPerimetro() {
return (2 * Math.PI * raio)}public void Redesenhar() {
// não implementadaSystem.out.println(“Figura redesenhada”);
}}
Class Poligono extends FormaGeometrica {public int numLados;public double tamLado;public double angRotacao = 0;Poligono (int n, double tam, Ponto c, double r) {
numLados = n;tamLado = tam;centro = c;raio – r;
}public double CalculaPerimetro() {
return (numLados * tamLado);}public double CalcularArea() {
return (raio * CalcularPerimetro() / 2);}public double Rotacionar(double incremento) {
angRotacao = Math.IEEEremainder(angRotacao+incremento, 360.0);return angRotacao;
}}
12
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosPolimorfismo
Significa que um objeto pode ser tratado como se fosse
um tipo diferente de objeto. (???)
Isso está muito relacionado com o conceito de herança.
Como o mecanismo de herança permite criar classes a
partir de outras pre-existentes, é possível criar relações
“é um tipo de”.
Assim, é possível possuir classes genericas e classes
especializadas
Ex: “funcionário é um tipo de pessoa”, “carro é um tipo de veículo”.
É esta relação (é um tipo de) que permite a existência
do polimorfismo.
13
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosPolimorfismo
Em determinadas situações é
necessário trabalhar com uma lista
de mamíferos, sem um tipo definido,
então é possível que uma referência
do tipo "Mamífero" aponte para
objetos do tipo “Homem”, “Cão” ou
“Gato”.
Assim, qualquer tipo de objeto
poderá ser tratado da mesma
forma.
14
Voltando ao nosso esquema da herança, temos as classes
“Homem”, “Cão” e “Gato” herdando da classe “Mamífero”.
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosPolimorfismo
Existem 2 tipos de polimorfismo para os
métodos:
Sobrecarga de métodos
Reescrita ou override
15
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosPolimorfismo
Sobrecarga de métodos:
São métodos com mesmo nome, mas com assinaturas diferentes
(lista de argumentos diferentes).
A sobrecarga pode ocorrer numa
mesma classe ou entre subclasses
e classe pai.
Em Java, se dois métodos tiverem
mesmo nome e mesmos
argumentos diferindo apenas no
valor de retorno ocorre um erro de
compilação.
public class Somador {public int somar(int a, int b) {
return (a+b);}public int somar(float a, float b) {
return (a+b);}
public class AoQuadrado {public float elevarQuadrado(float a) {
return (a*a).}public double elevarQuadrado(float a) {
return (double)(a*a);}
}
OK!
ERRO!
16
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosPolimorfismo
Reescrita ou override.
Quando um método de uma classe base (pai) é
reescrito na classe
derivada.
O método reescrito tem
a mesma assinatura
(mesmo nome, mesma
lista de argumentos e
mesmo valor retornado)
que o método da classe
pai.
public class Cliente {
protected double desconto = 0.1; // 10%
public double calcularDesconto(double valor) {
if (valor > 500)
return (valor * desconto);
else return 0.0;
}
class ClienteEspecial extends Cliente {
ClienteEspecial (double desc) {
desconto = desc;
}
// Sobreposicao do método calcularDesconto da classe base Cliente
public double calcularDesconto (double valor) {
return (valor * desconto);
}
}
public static void main(String args[]) {
Cliente cli[] = (new Cliente(), // cli[0]
new ClienteEspecial[] // cli[1]
for (int i = 0; i < 2; i++)
System.out.println(cli[i].calcularDesconto(100);
}
}
17
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosPolimorfismo
Restrições: alguns métodos não podem ser sobreescritos
(override) em função dos modificadores que recebem:
final: um método final nunca muda, todas as classes derivadas
utilizam a mesma implementação. As chamadas aos métodos
finais são resolvidas em tempo de compilação (estática)
static: é implicitamente um método final
private: são implicitamente finais, porque não podem ser sobrescritos nas classes derivadas (embora seja possível escrever
um método com mesma assinatura numa classe derivada).
18
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosImportante
Visibilidade de métodos e atributos:
public (+): público, visivel a todas as classes.
private (-): privada, somente membros da classe podem acessá-lo.
protected (#): protegido, membros da classe e das classes
derivadas podem acessá-lo.
default ou package (~): pacote, membros de classes presentes no
mesmo pacote podem acessá-lo.
19
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosImportante
Importância dos construtores:
Métodos especiais que servem para criar uma
instância de uma classe, invocados
automaticamente quando se cria um objeto (new).
Pode haver vários métodos construtores variando-se
os argumentos (polimorfismo por sobrecarga).
20
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosImportante
Herança múltipla:
Não há herança múltipla em Java, mas é possível simulá-la implementando interfaces.
Interface:
Define um contrato que deve ser seguido pelas classes que a
implementam.
Uma interface é uma classe abstrata onde todos os métodos
são implicitamente abstratos e públicos e todos os atributos são
implicitamente públicos, estáticos e finais.
A classe que a implementar é obrigada a implementar os seus
métodos.
21
Linguagem de Programação IV / J2ME – Introdução
Orientação a ObjetosImportante
Tratamento de exceções:
Fundamental para garantir a robustez, confiabilidade e usabilidade da aplicação.
Evita que o usuário seja surpreendido por mensagens indecifravéis.
Java possui um mecanismo completo para o tratamento de exceções, use-o sempre.
22
Linguagem de Programação IV / J2ME – Introdução
Plataforma Java23
Linguagem de Programação IV / J2ME – Introdução
Plataforma Java
Java não se restringe à linguagem de programação.
Java é uma plataforma que engloba, basicamente, 3
elementos:
A linguagem Java.
A máquina virtual Java (JVM).
Conjunto de API’s (bibliotecas).
Java foi construída para trabalhar em diversos tipos de
hardwares: de smart cards a servidores.
24
Linguagem de Programação IV / J2ME – Introdução
Plataforma Java25
Linguagem de Programação IV / J2ME – Introdução
Plataforma Java
Java 2 Standard Edition (J2SE)
Uma versão desenvolvida para desktops.
O núcleo básico é este, as demais versões se baseiam nesta.
Java 2 Enterprise Edition (J2EE):
Plataforma para aplicações do tipo multiusuário corporativas.
Baseada em J2SE, com APIs para computação do lado do servidor.
Java 2 Micro Edition (J2ME):
Conjunto de tecnologias desenvolvidas para dispositivos pequenos,
como pagers, celulares, smartphones, etc.
Usa subconjuntos de componentes J2SE, como máquinas virtuais
“menores” (KVM), e APIs mais “enxutas” de componentes.
26
Linguagem de Programação IV / J2ME – Introdução
Plataforma Java27
Linguagem de Programação IV / J2ME – Introdução
Linguagem de Programação IV
Introdução
Prof. Alessandro Borges