Algoritmos e Programação 2 Introdução à Programação Orientada a

Propaganda
Algoritmos e Programação 2
Baseado no material do Prof. Júlio Pereira Machado
Introdução à Programação
Orientada a Objetos
O que é um paradigma de
programação?
– É um padrão conceitual que orienta
soluções de projeto e implementação.
– Paradigmas explicam como os elementos
que compõem um programa são
organizados e como interagem entre si.
• Exs.: procedural, funcional, orientado a objetos
Orientação a Objetos
É baseada na modelagem de objetos
do mundo real.
O que é um objeto?
– Uma abstração de um objeto do mundo
real.
– Uma estrutura composta de dados e
operações.
1
Objetos
Cada objeto possui características
(dados) e comportamento (operações).
– Ex.: lâmpada
• características: ligada (sim/não), potência,
voltagem, etc.
• comportamento: ligar, desligar, queimar, etc.
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.
Encapsulamento
É um dos conceitos básicos de OO.
A idéia de uma “caixa preta”:
– não é necessário saber os detalhes de
funcionamento interno, mas sim como
utilizar.
Encapsular é esconder como as coisas
funcionam por trás de uma interface
externa.
– Ex.: caixa automático
• Como ele é implementado internamente?
• Utilizamos através de operações bem
conhecidas
2
Operações (Métodos)
•Interface pública declara
as operações permitidas
•Público
Dados (Atributos)
objeto
•Acesso aos dados é feito
através da chamada de um
método
•Privado
Mensagens
Objetos interagem entre si através do
envio de mensagens.
Um objeto chama um método de outro
objeto.
– O objeto emissor requisita a execução de
um determinado método ao objeto
receptor.
obj1
MENSAGEM
•Identificar o objeto receptor
•Identificar o método que o objeto
deverá executar
•Passar os argumentos necessários
obj2
3
Classes
Uma classe é uma “fôrma” para
produzir objetos.
Determina um conjunto de objetos com:
– propriedades semelhantes
– comportamentos semelhantes
– relacionamentos comuns com outros
objetos
Instanciar objetos significa gerar novos
exemplares a partir de uma descrição
abstrata de um objeto genérico.
– Objetos são instâncias de uma classe.
Lâmpada
Classificação
Instanciação
Lâmpada1 Lâmpada2
Classes X Instâncias X Objetos
Objetos são gerados a partir de
classes.
Uma classe define as propriedades e o
comportamento dos objetos gerados
por ela.
Todo objeto é uma instância de uma
classe.
4
veículos
veículo
Marca
Placa
Ferrari
IDN8810
objeto1
lerPlaca
classe
instâncias
Fiat Uno
IAS3333
objeto2
Exemplo Java
public class Veiculo {
private String marca;
private String placa;
Atributos
...
public String lerPlaca(){
return placa;
}
Método
}
Resumo Conceitos OO
Objeto
– unidade básica de orientação a objetos. Um
objeto é uma entidade que tem atributos,
comportamento e identidade. Objetos são
membros de uma classe e os atributos e o
comportamento (métodos) de um objeto são
definidos pela definição da classe.
Classe
– uma classe é uma descrição de um conjunto de
objetos. Este conjunto de objetos compartilha
atributos e comportamento em comum. Uma
definição de classe descreve todos os atributos
dos objetos membros da classe, bem como os
métodos que implementam o comportamento
destes membros.
5
Orientação a objetos
– um método de desenvolvimento de software que
usa abstração com objetos, classes encapsuladas
e comunicação por mensagens, hierarquia de
classes e polimorfismo.
Abstração
– um modelo de um conceito ou objeto do mundo
real.
Encapsulamento
– processo de esconder os detalhes internos de um
objeto do mundo externo.
Atributo
– usado para armazenar o estado de um objeto.
Pode ser simples como uma variável escalar (int,
char, double, ou boolean) ou pode ser uma
estrutura complexa tal como outro objeto.
Comportamento
– atividade de um objeto que é vista do ponto de
vista do mundo externo. Inclui como um objeto
responde a mensagens alterando seu estado
interno ou retornando informação sobre seu
estado interno.
Método
– uma operação ou serviço executado sobre o
objeto, declarado como parte da estrutura da
classe. Métodos são usados para implementar o
comportamento do objeto.
Estado
– reflete os valores correntes de todos os atributos
de um objeto e são o resultado do comportamento
do objeto ao longo do tempo.
Introdução Java
Histórico da linguagem
– 1991
• Patrick Naughton, Mike Sheridan e James
Gosling criaram a linguagem em 1991, no
GreenProject da Sun
• O objetivo do era desenvolver software para
controlar eletrodomésticos (TVs interativas,
torradeiras interativas, etc.)
6
• Idéia inicial era utilizar C++
• Objetivos: linguagem pequena, eficiente e
facilmente portável
• A linguagem deveria permitir a construção de
programas que pudessem executar em
diferentes arquiteturas sem a necessidade de
se re-escrever código.
• Foi criada a linguagem Oak, que com o
crescimento da Internet deu origem a Java
– Potencial de criar páginas na Web com conteúdo
dinâmico.
– 1994
• Criado o navegador HotJava que permitia
executar applets Java
– 1995
• Em maio, John Gage, diretor da Sun
Microsystems e Marc Andreessen, da
Netscape, anunciaram que a linguagem já era
realidade e seria incorporada ao Navigator
• Em novembro, a linguagem Java foi
disponibilizada pela 1ª vez no JDK 1.0
– 1997
• JDK 1.1 traz novas APIs para tratamento de
eventos, acesso a banco de dados, interfaces
gráficas, etc
– 1999
• JDK 1.2 ou Java 2
• Correção de bugs, otimização e sedimentação
dos conceitos
Observação:
– A partir da versão 1.2, o JDK (Java
Development Kit) recebeu a denominação
de SDK (System Development Kit).
7
Plataforma Java
J2SE (Java 2 Platform, Standard Edition)
– Desenvolvimento e execução de applets,
aplicações stand-alone ou aplicações cliente
J2EE (Java 2 Platform, Enterprise Edition)
– Reúne um conjunto de tecnologias em uma
arquitetura voltada para o desenvolvimento de
aplicações servidoras
J2ME (Java 2 Platform, Micro Edition)
– Fornece um ambiente de execução otimizado e
permite escrever programas cliente que são
executados em pequenos dispositivos sem-fio
(smart cards, telefones celulares, pagers, ...)
Características
– Java é tanto uma linguagem de
programação de alto nível quanto uma
plataforma de desenvolvimento de
sistemas.
– Existem basicamente 3 tipos de programas
em Java:
• Aplicações (programas normais ordinários)
– De console: suportam saída em modo texto
– De janela: cria e gerencia múltiplas janelas, usa
mecanismos de GUI (Graphical User Interface) para
programação em janelas
• Applets (programas em web pages)
– pequenos programas embutidos em páginas HTML
– executa no cliente dentro de um navegador
• Servlets (aplicações cliente-servidor)
– executa no servidor (ao contrário dos applets)
– estende a funcionalidade de um servidor
8
Ambiente Java
Java é tanto compilada quanto
interpretada.
– O compilador transforma o programa em
bytecodes.
– Bytecodes são instruções de máquina
compreendidas pela Java Virtual Machine.
– A Java Virtual Machine é um interpretador
que transforma as instruções bytecodes
em linguagem de máquina.
Programa Java
minhaClasse.java
Compilador
javac.exe
Bytecode
minhaClasse.class
Interpretador
JVM
PC
UNIX
java.exe
MAC
9
C X Java
C X Java
Ambientes de programação
– BlueJ
• Ambiente voltado para o ensino de Java e
Orientação a Objetos
• Disponibilizado gratuitamente na Internet
• http://www.bluej.org
• Necessita do SDK instalado para funcionar
– Eclipse
• Ambiente integrado para o desenvolvimento
profissional de software
• Disponibilizado gratuitamente na Internet
http://www.eclipse.org
• Necessita do SDK instalado para funcionar
10
Ambiente de Execução
– J2SE deve ser utilizado por
desenvolvedores
– Para apenas executar programas em Java,
a Sun disponibiliza o JRE (Java Runtime
Environment)
Estrutura de um programa
Um programa Java é um conjunto composto
por uma ou mais classes.
Tipicamente, cada classe é implementada
em um arquivo fonte separado, sendo que o
arquivo deve ter o mesmo nome da classe.
– Ex.: a classe Veiculo deve estar definida no
arquivo Veiculo.java
Em geral, os arquivos que compõem um
programa java devem estar no mesmo
diretório.
Biblioteca de classes (API)
Application Programming Interface
É uma coleção de classes, normalmente
provendo uma série de facilidades que
podem ser usadas em programas.
Classes são agrupadas em conjuntos
chamados packages. Exs:
– java.lang: inclui classes básicas, manipulação de arrays e
strings. Este pacote é carregado automaticamente pelo
programa
– java.io: operações de input e output
– java.awt: suportam aplicativos em janelas (windowed)
– java.util: classes diversas para manipulação de dados
11
Ambiente de Programação
Sun disponibiliza gratuitamente
– http://java.sun.com
J2SE
– Disponível para vários sistemas
operacionais
– Contém: compilador, depurador, biblioteca
de classes e a máquina virtual
– Não oferece editor ou ambiente visual
integrado
Tipos de Dados Básicos
Tipos de dados primitivos
– inteiros: byte (8 bits), short (16), int (32),
long (64)
• 1 (decimal) , 07 (octal), 0xff (hexadecimal)
– reais: float (32), double (64)
• 3.0F, 4.02E23, 3.0
– caractere: char (16)
• ‘a’, ‘\141’, ‘\u0061’, ‘\n’
– booleano: boolean (8)
• true, false
Em Java, tem-se dois tipos de
conversão de valores:
– conversão para um tipo maior
• automática
– conversão para um tipo menor (chamada
de casting)
• não é automática
int i=1; byte
long l=i;
short
int
long
long l=1;
byte
int i=l;
Erro!!!
short
int
long
12
Para converter de um tipo para um tipo
menor, precisamos referenciar de forma
explícita.
– (tipo Java) expressão;
– Ex.:
• long l = 1;
int i = (int) l;
• byte b1=1, b2=2, b3;
b3 = (byte)(b1 + b2);
– Cuidado! Ao somar dois valores byte
iguais a 100, o resultado é o int 200. Ao
realizar o cast para byte, o resultado é
convertido para -56, o equivalente ao
padrão de bits armazenados.
Operadores
Operadores básicos:
– aritméticos: +, -, *, /, % (resto da divisão)
– relacionais: >, >=, <, <=
– igualdade: ==, !=
– lógicos: &&, & (and), ||, | (or), ^ (xor), ! (not)
– atribuição: =, +=, -=, *=, /=, %=
– incremento, decremento: ++, --
Funções matemáticas (classe Math):
– sqrt(x): cálculo da raiz quadrada de x (x é do tipo
double)
– abs(x): valor absoluto de x (x pode ser float, int,
long)
– ceil(x): arredonda x para o menor inteiro não
menor que x (ceil(9.2)=10.0, ceil(-9.8)=-9.0)
– cos(x): coseno trigonométrico de x (x em
radianos)
– exp(x): método exponencial ex
– pow(x,y): x elevado a potência y (xy)
Exemplo:
double raio;
raio = Math.sqrt(area/Math.PI);
13
Cuidado:
– O resultado da operação de divisão em Java
depende do tipo dos operandos.
• Tipo inteiro: o resultado é a divisão inteira
int resultado = 10/4 //igual a 2
• Tipo ponto flutuante: o resultado é a divisão
“normal”
float resultado = 10f/4f //igual a 2,5
Comandos
Declaração
– Variáveis:
• int valor1, valor2 = 123;
• double taxa, percentual;
– Constantes:
• final double PI = 3.1415;
if
– Condicionais são escritos da seguinte
forma:
• if (condição) {
comandos;
}
• if (condição) {
comandos;
} else {
comandos;
}
• if (condição) {
comandos;
} else if (condição) {
comandos;
} else {
comandos;
}
14
if (i % 2 == 0) {
System.out.println(“Par”);
} else {
System.out.println(“Ímpar”);
}
if (vel >= 25) {
if (vel > 65) {
System.out.println(“maior 65”);
} else {
System.out.println(“maior 25”);
}
} else {
System.out.println(“menor 25”);
}
switch...case
– Utilizado para cobrir múltiplas escolhas
sobre valores alternativos de variáveis int,
byte, short, long ou char.
– Escreve-se da seguinte forma:
• switch (expressão) {
case constante1:
comandos;
break;
...
default:
comandos;
}
switch (menuItem){
case 0:
System.out.println(“zero”);
break;
case 1:
System.out.println(“um”);
break;
default:
System.out.println(“inválido”);
}
switch (nota){
case ‘A’:
case ‘B’:
case ‘C’:
System.out.println(“Passou”);
break;
default:
System.out.println(“Reprovou”);
}
15
for
– Tem a seguinte forma:
• for (inicialização; condição; alteração) {
comandos;
}
– Ex.:
int soma = 0;
for (int i=1; i<=3; i++) {
sum += i;
}
System.out.println(“Soma “+soma);
while
– Tem a seguinte forma:
• while (condição) {
comandos;
}
– Ex.:
int i = 0;
while (i<10) {
System.out.println(“i= “
i++;
}
+ i);
do...while
– Tem a seguinte forma:
• do {
comandos;
} while (condição);
– Ex.:
int i = 0;
do {
System.out.println(“i= “+i);
i++;
} while (i<10);
16
Classe String
String
– É uma classe e não tipo primitivo.
– Representa um grupo de caracteres.
– Declarados entre aspas duplas
• String nome = "Júlio";
• String nome = new String(“Júlio”);
Conversão
– Java converte outros tipos para strings
• int idade = 25;
String nomeIdade = nome + " " + idade;
Operadores
– concatenação: +
• String nomeCompleto = nome + " " +
"Machado”;
– comparação: equals
• String str1 = "texto";
String str2 = "txt";
if(str1.equals(str2)){} //compara conteúdo
Métodos úteis
– Tamanho:
• Método length()
• String texto1 = "Início";
System.out.println(texto1.length())
;
--> 6
– Caractere em uma posição:
• Método charAt(posição)
• char c = texto1.charAt(1);
--> n
17
– Substrings:
• Método substring(início,fim)
• String texto1 = "Início";
String sub = texto1.substring(1,3)
--> ní
– Conversão:
• Métodos parseXXX de cada classe do tipo
original
• int i = Integer.parseInt("123");
• double d = Double.parseDouble("1.3");
18
Download