Você está na página 1de 18

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

Ferrari
veículo IDN8810
Marca
objeto1 instâncias
Placa
lerPlaca
Fiat Uno
IAS3333
classe
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

javac.exe
Compilador

Bytecode
minhaClasse.class

Interpretador java.exe
JVM

PC UNIX 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 short int long


long l=i;

long l=1; short long


byte int
int i=l;
Erro!!!

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

Você também pode gostar