Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Programação Orientada a 
Objetos
Parte 1
2
Gap Semântico
Gap• semântico: é a distância entre as entidades do mundo 
real e o modelo computacional que o representa.
A diminuição do • gap semântico permite o melhor 
entendimento do software.
Mundo real SoftwareGap semântico
3
Paradigma Estruturado
• É baseado em “o que o sistema faz”.
• Desvantagens:
• introduz dificuldade na evolução do sistema, pois 
não favorece reuso.
• Um software do paradigma estruturado tem uma 
grande distância semântica do modelo do mundo 
real, o que dificulta o seu entendimento.
4
Paradigma Estruturado
Problema:•
Necessidade de métodos e técnicas que 
promovam fatores como extensibilidade e 
reusabilidade.
Solução:•
Orientação por Objetos
5
Orientação a Objetos
A ideia básica da OO é: o software deve ser constituído •
por objetos que representem os objetos que 
constituem o mundo real.
O domínio do problema a ser resolvido caracteriza• -se 
por classes de objetos que possuem atributos e 
comportamentos e que se relacionam entre si.
O modelo utilizado no software orientado por objetos •
está mais próximo do mundo real do que aquele 
utilizado no paradigma estruturado 
→ redução do gap semântico.
6
Orientação a Objetos
Questões chave na construção de software orientado por objetos:•
Identificar objetos1.
• O software deve refletir os objetos do mundo real, ou seja,
os objetos estão no mundo real, basta identificá-los.
Descrever os objetos2.
A descrição dos objetos deve representar suas características •
e comportamentos. O elemento que descreve os objetos são 
as classes.
Descrever as relações entre as classes de objetos3.
O tipo de relacionamento existente entre dois objetos (por •
exemplo: é um, possui, compõe, etc.) deve ser representado 
diretamente no software.
7
Orientação a Objetos
• Os objetos encontrados são categorizados em classes.
• As classes constituem o núcleo de um programa 
orientado por objetos.
• Conclusão:
– Um software OO é constituído por classes que descrevem o 
comportamento e as características de objetos, que interagem 
entre si.
– O programa principal tem basicamente a função de criar os 
objetos principais e iniciar a computação.
Java
Linguagem de programação •
criada por uma equipe de 
programadores chefiada por 
James Gosling, da Sun, em 
1995
Java – Características Principais
• Orientada a objetos
• Independência de plataforma: seus programas não são compilados 
para um plataforma de hardware específica.
• Sem ponteiros: não permite a manipulação direta de endereços de 
memória nem exige que os objetos criados sejam explicitamente 
destruídos.
• Segurança: Java inclui mecanismos de segurança que podem evitar, 
por exemplo, qualquer operação no sistema de arquivos da 
máquina-alvo, minimizando riscos.
• Multithreaded: Java oferece suporte para criação e uso de threads.
Comentários
• São observações e explicações feitas pelo 
programador no corpo da classe.
São desconsiderados pelo compilador.•
• Há dois tipos:
Comentário de uma linha, indicado por um //–
Exemplo: • //este método calcula o saldo
Comentário de várias linhas, que começa com um /* –
e termina com um */
Exemplo: • /*esta classe contém os dados de conta corrente do 
cliente, possuindo métodos para sacar e depositar valores e para 
calcular o saldo */
Tipos de Dados
• Tipos inteiros: são números sem partes fracionárias. 
– Valores negativos são permitidos.
Tipos de Dados
Tipos de ponto flutuante: denotam números •
com partes fracionárias
Tipos de Dados
• Tipo char: utilizado para descrever caracteres 
individuais.
• Exemplo
‘A’
‘c’
‘7’
Tipos de Dados
Tipo • boolean: tipo capaz de assumir valores 
falso ou verdadeiro
false– e true
Variáveis
• Cada variável tem um tipo.
• Uma variável é declarada inserindo primeiro o 
tipo e depois o nome da variável.
double salario;
int diasFerias;
long populacaoTerra;
boolean feito;
Identificadores de Variáveis 
Um identificador deve iniciar com uma letra e •
ser uma sequência de letras e dígitos.
Não são permitidos:–
espaços em branco•
caracteres especiais (exemplos: @, #, $,ç)•
letras acentuadas•
O • java faz distinção entre letras maiúsculas e 
minúsculas
nome e Nome são identificadores diferentes (mas –
ambos válidos).
Identificadores de Variáveis 
• Não podemos usar palavras reservadas de uma 
linguagem de programação. 
Identificadores de Variáveis 
Convenção de codificação da linguagem • java:
os nomes das variáveis devem ser iniciados com letras •
minúsculas
Caso o nome seja composto de mais de uma palavra, a •
palavra inicial deve ser minúscula e as demais iniciais 
devem ser letras maiúsculas
Exemplos:
posAbsoluta
mediaAbsoluta
Inicializando Variáveis
• Nunca pode-se utilizar variáveis não inicializadas.
• Você pode declarar e inicializar uma variável na 
mesma linha.
int idade = 15;
• Você atribuir a uma variável anteriormente 
declarada, utilizando o nome da variável à 
esquerda, um sinal de igual (=) e então alguma 
expressão do Java que tem um valor apropriado à 
direita.
int idade;
idade = 15;
Declarações primitivas com atribuições
Observe o ‘f’. É preciso inseri-lo em um tipo float, 
porque o Java considera tudo que encontra com um 
ponto flutuante como um tipo double, a menos que o 
‘f’ seja usado.
Programa Java
• Tudo em um programa Java deve estar dentro de uma classe
• O Java diferencia maiúsculas de minúsculas.
Programa Java
Nome da classe:
• Deve iniciar com uma letra e, depois dela, pode ter qualquer combinação 
de letras e dígitos.
• Não pode utilizar uma palavra reservada do Java 
• Por convenção, nomes de classes são substantivos que iniciam com uma 
letra maiúscula. Se um nome consistir em múltiplas palavras, utilize uma 
letra inicial maiúscula em cada uma das palavras.
public class nomeClasse{
public static void main(String args[]){
...
}
}
public class nomeClasse{
public static void main(String args[ ]){
...
}
}
Programa Java
Método main:
• Precisa ser escrito exatamente como descrito acima.
• É necessário para que o programa escrito em uma 
classe seja executado
• Mas não precisa existir em todas as classes de um 
programa, como veremos ao longo do curso
• As classes podem possuir outros métodos, como 
também veremos ao longo do curso
Saída
System.out.printf( ... );
• Essa chamada permite exibir mensagens de 
texto, conteúdo de variáveis, etc.
• Exemplos:
System.out.printf(“Hello World %n”);
System.out.printf(“Valor %d”, 20);
System.out.printf(“VALOR %f”, num);
System.out.printf(“Dia: %d Mês %d”, d,m);
public class Saida{
public static void main(String args[]){
System.out.printf(“Hello World”);
int idade = 5;
System.out.printf(“Valor %d”, idade);
}
}
Saída
%d inteiro decimal
%f real
%c caractere
%s String
%n nova linha
%% o símbolo de %
%b boolean
Saída
System.out.println();
• Exibe mensagens de texto, conteúdo de variáveis, 
expressões, ...
System.out.println(“Olá!”);
– Olá!
int num = 20;
System.out.println(“Soma total: ” + num);
– Soma total: 20
Saída
double temp = 20;
System.out.print(“Temperatura: ” + temp);
System.out.print(“ graus ”);
Temperatura: – 20 graus
Entrada
import java.util.Scanner;
public class Teste {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
System.out.printf("Informe a idade: ");
int idade;
idade = s.nextInt();
System.out.printf(“Idade informada: %d", idade);
s.close();
}
}
Entrada
Método Exemplo
nextByte()
nextDouble() double nota = s.nextDouble()
nextFloat()float preco = s.nextFloat(); 
nextLong()
nextShort()
nextInt() int idade = s.nextInt();
next() String primeiroNome = s.next();
nextLine() String nomeCompleto = s.nextLine();
nextBoolean() boolean teste = s.nextBoolean();
import java.util.Scanner;
public class Teste {
public static void main(String args[]) {
int idade;
double nota;
Scanner s = new Scanner(System.in);
System.out.printf("Informe a idade: ");
idade = s.nextInt();
System.out.printf("Informe a nota: ");
nota = s.nextDouble();
System.out.printf("Idade: %d, Nota %f", idade, nota);
s.close();
}
}
import javax.swing.JOptionPane;
public class TesteDados {
public static void main(String[] args) {
//Leitura
String nome = JOptionPane.showInputDialog("Nome");
int idade = Integer.parseInt(JOptionPane.showInputDialog("Idade"));
double peso = Double.parseDouble(JOptionPane.showInputDialog("Peso"));
char sexo = JOptionPane.showInputDialog("Sexo M/F").charAt(0);
boolean f = Boolean.parseBoolean(JOptionPane.showInputDialog(“formando?true/false"));
//Escrita
String msg = "Nome: " + nome + "\nIdade: " + idade + " anos" + "\nPeso: " + peso + " kg" 
+"\nSexo: "+sexo+ "\nFormando: "+f;
JOptionPane.showMessageDialog(null, msg);
}
}
Operadores Aritméticos
Operador Significado Exemplo
+ Adição a + b
- Subtração a – b
* Multiplicação a * b
/ Divisão a / b
% Resto da divisão inteira a % b
- Sinal negativo (-unário) -a
+ Sinal positivo (+ unário) +b
++ Incremento unário ++a ou a++
-- Decremento unário --a ou a--
Operadores Aritméticos
num++; •
equivale a num = num + – 1;
num• --; 
equivale a num = num – – 1;
Operadores Aritméticos
Pré• -incremento:
int x = 0;
int y;
y = ++x;
Pós• -incremento:
int x = 0;
int y;
y = x++;
• x passará a valer 1
• y receberá o valor 0
• Ocorre primeiro a operação de atribuição 
e depois a operação de incremento
• x passará a valer 1
• y receberá o valor 1
• Ocorre primeiro a operação de incremento 
e depois a operação de atribuição
Operadores Aritméticos
Classe • Math: contém vários métodos de funções 
matemáticas, como por exemplo:
Math– .sqrt(x): retorna o valor da raiz quadrada do 
número colocado entre parênteses.
Math– .pow(x,y): retorna o valor do primeiro parâmetro 
elevado ao segundo parâmetro.
public class Teste {
public static void main(String args[]) {
int num = 4;
double raizQuad = Math.sqrt(num);
double potencia = Math.pow(num, 2);
System.out.printf("Raiz: %.2f", raizQuad);
System.out.printf("%nPotencia: %.2f", potencia);
}
}
Operadores relacionais
Permite comparar valores literais, variáveis ou •
o resultado de expressões
retorna um resultado lógico (falso ou verdadeiro)–
Operador Significado Exemplo
== Igual a == b
!= Diferente a != b
> Maior que a > b
>= Maior ou igual a a >= b
< Menor que a < b
<= Menor ou igual a a <= b
public class Relacional {
public static void main(String[] args) {
int a = 15, b = 12;
System.out.println("Igual: " + (a==b));
System.out.println("Diferente: " + (a!=b));
System.out.println("Maior: " + (a>b));
}
}
Saída:
Igual: false
Diferente: true
Maior: true
Operadores lógicos
• Conectam logicamente o resultado de 
diferentes expressões aritméticas ou 
relacionais.
– permite construir expressões compostas de várias 
partes.
Operador Significado Exemplo
&& E lógico (and) a && b
|| Ou lógico (or) a || b
! Negação (not) !a
Operadores lógicos
Tabela Verdade•
a b a && b a || b !a
true true true true false
true false false true false
false true false true true
false false false false true
public class Logico {
public static void main(String[] args) {
double nota, freq;
boolean result;
nota = 80;
freq = 90;
result = (nota >= 70) && (freq >= 75);
System.out.println(result);
}
}
Operadores de atribuição composta
Utilizados quando a variável que recebe o •
resultado da atribuição figura como primeiro 
termo da expressão que produz seu valor.
x = x + 15;
total = total * (valor/quant);
Operadores de atribuição composta
Operador Significado Exemplo
+= adição e atribuição a += expr
-= subtração e atribuição a -= expr
*= multiplicação e atribuição a *= expr
/= divisão e atribuição a/= expr
String
• Sequência de caracteres
• Uma string pode incluir letras, dígitos e vários 
caracteres especiais, como =,-.*./
• Os literais de string são escritos como uma 
sequência de caracteres entre aspas duplas.
• Exemplos:
String nome = “Ana Paula”;
String texto = “”; //uma string vazia
Estruturas condicionais em Java
if (condição)
comando1
Para incluir vários comandos no corpo de um • if, 
inclua as instruções dentro de chaves.
if (condição){
comandos1
}
import java.util.Scanner;
public class Numero {
public static void main(String[] args) {
int num, resto;
Scanner s = new Scanner(System.in);
System.out.println("Informe um número inteiro: ");
num = s.nextInt();
resto = num % 2;
if(resto == 0){
System.out.println("O número é par.");
}
s.close();
}
}
Estruturas condicionais em Java
if (condição)
comando1
else
comando2
if (condição){
comandos1
}else{
comandos2
}
Para incluir vários comandos no corpo de um • if ou else, inclua as 
instruções dentro de chaves.
Exemplo
• Faça um algoritmo que leia três valores 
inteiros, determine e imprima o menor deles.
import java.util.Scanner;
public class Menor {
public static void main(String[] args) {
int num1, num2, num3;
Scanner s = new Scanner(System.in);
System.out.println("Informe três números: ");
num1 = s.nextInt();
num2 = s.nextInt();
num3 = s.nextInt();
if (num1 < num2 && num1 < num3) {
System.out.println("Menor número é " + num1);
} else if (num2 < num1 && num2 < num3) {
System.out.println("Menor número é " + num2);
} else if (num3 < num1 && num3 < num2) {
System.out.println("Menor número é " + num3);
}
s.close();
}
}
Exemplo
O que será impresso na tela?
public class ExemploElse {
public static void main(String[] args) {
int x, y;
x = 6;
y = 4;
if(x > 5)
if(y > 5)
System.out.println("X e Y são maiores que 5");
else
System.out.println("X é menor ou igual a 5");
}
}
Impressão:
X é menor ou igual a 5
Exemplo
O compilador Java sempre associa um • else à instrução if
imediatamente anterior.
A menos que instruído de outro modo pela colocação de chaves–
public class ExemploElse {
public static void main(String[] args) {
int x, y;
x = 6;
y = 4;
if(x > 5)
if(y > 5)
System.out.println("X e Y são maiores que 5");
else
System.out.println("X é menor ou igual a 5"); 
}
}
Exemplo
• O compilador Java sempre associa um else à instrução if
imediatamente anterior.
– A menos que instruído de outro modo pela colocação de chaves
public class ExemploElse {
public static void main(String[] args) {
x = 6;
y = 4;
if(x > 5){
if(y > 5)
System.out.println("X e Y são maiores que 5");
}else
System.out.println("X é menor ou igual a 5");
}
}
A instrução Switch
switch(opção){
case <valor1> :
comandos1
break;
case <valor2>:
comandos2
break;
...
case <valorN>:
comandosN
break;
default:
comandos
break;
}
A instrução Switch
• Opção pode ser do tipo char, byte, short, int
ou Strings.
• Pode ter uma ou mais cláusulas case.
• Se uma cláusula é selecionada, todos os 
comandos são executados até o final do 
switch ou até que um break seja encontrado.
• A cláusula default é executada, quando 
nenhuma cláusula case é selecionada.
A cláusula default é opcional e deve ser colocada •
no final do corpo do switch.import java.util.Scanner;
public class ExemploSwitch {
public static void main(String[] args) {
int num1 = 2, num2 = 8, result = 0;
System.out.println("Informe uma opção: ");
Scanner s = new Scanner(System.in);
int op = s.nextInt();
switch (op) {
case 1:
result = num1 + num2;
break;
case 2:
result = num1 * num2;
break;
case 3:
result = num1 - num2;
break;
default:
System.out.println("Opção Inválida!");
break;
}
System.out.println("O resultado é: "+result);
s.close();
}
}
public class ExemploSwitch {
public static void main(String[] args) {
int mes;
String mesString = "Fevereiro";
switch (mesString) {
case "Janeiro": mes= 1;
break;
case "Fevereiro": mes = 2;
break;
case "Março": mes = 3;
break;
case "Abril": mes = 4;
break;
case "Maio": mes = 5;
break;
case "Junho": mes = 6;
break;
case "Julho": mes = 7;
break;
case "Agosto": mes = 8;
break;
case "Setembro": mes = 9;
break;
case "Outubro": mes = 10;
break;
case "Novembro": mes = 11;
break;
case "Dezembro": mes = 12 ;
break;
default: mes = 0;
break;
}
System.out.println(mesString + " "+mes);
}
}
Operador Ternário
• É um avaliador de condições que permite utilizar o valor de 
duas expressões diferentes:
• Sintaxe: 
<condição> ? <expressão_true> : <expressão_false> 
• Quando a condição avaliada resulta em verdadeiro, o operador 
retorna o resultado de expressão_true.
– Caso contrário, é retornado o resultado de expressão_false.
Operador Ternário
Exemplos:•
double x = 12.34, y = 56.78;
double max = x>y ? x : y;
int num = 100;
System.out.println(“Num=”+num+ (num>50 ? “é”: “não é”)+“maior que 50”);
Java - Estrutura de repetição FOR
Formato geral:•
for(nomeVariável = valorInicial; condição; incremento/decremento)
comando1;
OU
for(nomeVariável = valorInicial; condição; incremento/decremento){
comando1;
comando2;
...
comandoM
}
Imprimindo de 1 a 10 com for...
public class LoopFor{
public static void main(String[] args){
for(int i = 1; i <= 10; i++){
System.out.println(i);
}
}
}
Imprimindo de 10 a 1 com for...
public class LoopForReverso{
public static void main(String[] args){
for(int i = 10; i > 0; i--){
System.out.println(i);
} 
}
}
Java – Estrutura WHILE
Estrutura geral:•
while(condição)
comando1;
OU
while(condição){
comando1;
comando2;
...
comando
}
Imprimindo de 1 a 10 com while...
public class LoopWhile{
public static void main(String[] args){
int i = 1;
while (i <= 10){
System.out.println(i);
i++;
}
}
}
Java – Estrutura DO-WHILE
Formato geral:•
do{
comandos;
}while(condição);
Imprimindo de 1 a 10 com do while...
public class LoopDoWhile{
public static void main(String[] args){
int i = 1;
do{
System.out.println(i);
i++;
} while (i <= 10);
}
}
Vetor - Declaração
<Tipo> identificador [];
identificador = new <Tipo> [tamanho];
ou
<Tipo> identificador [] = new <Tipo> [tamanho];
Exemplos:
Vetor - Declaração
Tanto faz colocar os colchetes antes ou depois do •
identificador.
Colocar os colchetes logo depois do tipo indica que •
todos os identificadores na declaração são vetores:
int[] a, b, c; //declaração de 3 vetores
Colocar os colchetes depois de um identificador indica •
que apenas aquele identificador é um vetor:
int a[], b, c; //declaração de um vetor e dois inteiros
Vetor - Atribuição
Para atribuir valores a um vetor você faz a •
atribuição na posição desejada:
Vetor - Atribuição
• Você também pode fazer a atribuição usando 
uma lista de literais na declaração:
• Nesta situação o compilador determina o 
tamanho baseado no número de elementos 
fornecidos.
Exemplo
import java.util.Scanner;
public class Vetor {
public static void main(String[] args) {
int a[] = new int[10];
Scanner sc = new Scanner(System.in);
for(int i = 0; i < a.length; i++){
System.out.println("a[" +i+"]? ");
a[i] = sc.nextInt();
}
int soma = 0;
for(int i = 0; i < a.length; i++){
System.out.println("a[" +i+"]= " + a[i]);
soma = soma + a[i];
}
System.out.println("Soma = " + soma);
sc.close();
}
}
Vetores
Todo vetor em • java é automaticamente preenchido 
com valores nulos, ou seja, todos os seus elementos 
recebem valor 0 (zero) quando de qualquer tipo 
numérico, false quando booleano e null quando de 
tipo objeto.
public class Vetor {
public static void main(String[] args) {
int a[] = new int[10];
for(int i = 0; i < a.length; i++){
System.out.println(a[i]);
}
}
}
Matrizes (Arrays Muldimensionais)
Enquanto nos vetores os elementos são •
organizados em uma única dimensão, nas 
matrizes, eles podem ser distribuídos em 
várias dimensões distintas.
Matrizes
• Declaração e alocação:
– utiliza-se um par de colchetes para cada dimensão
<tipo> identificador [][]..[]= new <tipo> [dim_1] 
[dim_2]...[dim_n];
• Exemplos:
double m[][] = new double[3][4];
char [][]mat = new char[5][5];
int t[][][] = new int[4][10][3];
Matrizes
Matrizes
Matrizes
Declaração e inicialização•
//Matriz 2x3
int m[][] = {{6,8,2}, {9,33,20}};
//Matriz 3x2
Int m[][] = {{1,2}, {3,4}, {5,6}};
– as matrizes são automaticamente preenchidas com valores nulos, ou seja, todos os seus elementos 
recebem um valor 0 quando de qualquer tipo numérico, false quando booleano e null quando de tipo 
objeto.
Matrizes
Atribuindo valores:•
x[1][4] = 5;
Matrizes
MAT[3][2] = ‘D’;
Matrizes
y[0][3][1] = 12; 
//Atribui o valor 12 à posição identificada pelos índices 0 (linha 0), 3 (coluna 3) e 1 
(profundidade 1)
Exemplo
import javax.swing.JOptionPane;
public class Matriz{
public static void main(String args[]){
double m[][] = new double[3][4];
double num;
for(int lin = 0; lin < 3; lin++){
for(int col = 0; col < 4; col++){
num = Double.parseDouble(JOptionPane.showInputDialog("Informe um valor"));
m[lin][col] = num;
}
}
for(int lin = 0; lin < m.length; lin++){
for(int col = 0; col < m[lin].length; col++){
System.out.println(m[lin][col]);
}
}
}
}
Referências
DEITEL• , P. DEITEL, H. Java: como programar. 8 Ed. São 
Paulo: Prentice – Hall (Pearson), 2010.
JANDL Jr, Peter;• Java Guia do Programador - 3ª Edição; 
Ed. Novatec; 2015.
HORSTMANN, • Cay; CORNELL, Gary Core. Java – Volume 
I – Fundamentos. Makron Books. 
Adaptado do material do Prof. Sergio • Bonato
Adaptado do material do • Prof Moisés Pereira.
ASCENCIO et al. Fundamentos da programação de •
computadores: algoritmos, Pascal e C/C++ e Java. 3.ed. 
São Paulo: Pearson Prentice Hall, 2008

Mais conteúdos dessa disciplina