Este documento resume os principais conceitos da linguagem Java, incluindo objetos, classes, herança, pacotes e modificadores de acesso. Ele também explica operadores aritméticos, relacionais e lógicos em Java.
CONCEITOS DE PROGRAMAÇÃOORIENTADA A OBJETOS
Para programarmos em uma linguagem orientada a objetos é necessário conhecer os
seguintes conceitos:
• Objeto
• Mensagem
• Classe
• Herança
Logo após será necessário traduzir os conceitos acima em código java
3.
OBJETO
Possui comportamento ecaracterísticas/estados
cachorro – característica/estado(cor, nome, raça, fome)
– comportamento(latir, balançar rabo)
Estados e características atributos.
Comportamento métodos.
Um objeto que contenha características e comportamento específico é chamado de instância.
Ex: vira-lata é uma instância de cachorro.
// Ponto.java
class Ponto {
Ponto(int x, int y) {
System.out.println("Novo objeto ponto criado ("+x+", "+y+")");
}
public static void main(String s[]) {
Ponto p = new Ponto(2, 3);
Ponto p1 = new Ponto(3, 4);
}
}
4.
ATRIBUTO
// Ponto.java
class Ponto{
int x;
int y;
Ponto(int x, int y) {
this.x = x;
this.x = x;
System.out.println("Novo objeto ponto criado ("+this.x+", "+this.y+")");
}
public static void main(String s[]) {
Ponto p = new Ponto(2, 3);
Ponto p1 = new Ponto(3, 4);
}
}
5.
MÉTODO
class metodo {
intx, y;
metodo(int x, int y) {
this.x = x;
this.y = y;
System.out.println("Novo objeto metodo criado ("+this.x+", "+this.y+")");
}
void Move(int deslocamento) {
this.x = this.x + deslocamento; // this.x += deslocamento
}
void ExibeCoordenada() {
System.out.println("Coordenada ("+this.x+", "+this.y+")");
}
public static void main(String s[]) {
metodo p = new metodo(2, 3);
p.Move(20);
p.ExibeCoordenada();
}
}
6.
MÉTODO CONSTRUTOR
class metodo{
int x, y;
metodo(int x, int y) {
this.x = x;
this.x = x;
System.out.println("Novo objeto metodo criado ("+this.x+", "+this.y+")");
}
void Move(int deslocamento) {
this.x = this.x + deslocamento; // this.x += deslocamento
}
void ExibeCoordenada() {
System.out.println("Coordenada ("+this.x+", "+this.y+")");
}
public static void main(String s[]) {
metodo p = new metodo(2, 3);
p.Move(20);
p.ExibeCoordenada();
}
}
7.
MENSAGEM
Objetos comunicam-se atravésde mensagens.
// Ponto.java
class Ponto {
int x;
int y;
Ponto(int x, int y) {
this.x = x;
this.y = y;
}
void desloca_x(int x) {
this.x = this.x+x;
}
}
// Desenha.java
public class Desenha {
public static void main(String s[]) {
Ponto p = new Ponto(2, 3);
p.desloca_x(2);
}
}
8.
SOBRECARGA
É permitido incluirnuma classe métodos que possuem o mesmo nome e o mesmo tipo de
retorno, mas que diferem pelo número e/ou pelos tipos dos argumentos.
// Ponto.java – sobrecarga de construtor
class Ponto {
int x, y;
double a, b;
Ponto(int x, int y) {
this.x = x;
this.y = y;
System.out.println(“Construtor int”);
}
Ponto(double x, double y) {
this.a = x;
this.b = y;
System.out.println(“Construtor double”);
}
public static void main(String s[]) {
Ponto p = new Ponto(2,3);
Ponto p1 = new Ponto(2.4,5.9);
}
}
9.
CLASSE
Define atributos emétodos comuns a todos objetos de um certo tipo.
// Ponto.java
class Ponto {
Ponto(int x, int y) {
System.out.println("Novo objeto ponto criado ("+x+", "+y+")");
}
public static void main(String s[]) {
Ponto p = new Ponto(2, 3);
Ponto p1 = new Ponto(3, 4);
}
}
PACOTE
Coleção de tiposrelacionados.
|___grafico
|____ponto
|____linha
Criar pasta grafico
// ponto.java
package grafico;
public class ponto {
}
// linha.java
package grafico;
public class linha {
}
// Desenhar.java
import grafico.*; // import grafico.ponto;
public class Desenhar {
ponto p;
public static void main(String s[]) {
}
}
Somente a classetem acesso.
PRIVATE
// Ponto.java
class Ponto {
private int x, y;
Ponto (int x, int y) {
this.x=x;
this.y=y;
}
private void desloca_x(int desloc) {
x = x + desloc;
}
}
// Desenho.java
class Desenho {
public static void main(String args[]) {
Ponto p = new Ponto(2,3);
p.x=3;
p.desloca_x(4);
}
}
15.
Desenho.java:5: x hasprivate access in Ponto
p.x=3;
^
Desenho.java:6: desloca_x(int) has private access in Ponto
p.desloca_x(4);
^
2 errors
ERRO
javac Desenho.java
16.
PRIVATE
// Ponto.java
class Ponto{
private int x, y;
Ponto (int x, int y) {
this.x=x;
this.y=y;
}
private void desloca_x(int desloc) {
x = x + desloc;
}
}
// Desenho.java
class Desenho extends Ponto {
Desenho(int x, int y) {
super(x,y);
}
public static void main(String args[]) {
Desenho des = new Desenho(2,3);
System.out.println(des.x);
}
}
17.
Desenho.java:19: x hasprivate access in Ponto
System.out.println(des.x);
^
1 error
javac Desenho.java
ERRO
PROTECTED
package grafico;
// Ponto.java
classPonto {
protected int x, y;
Ponto (int x, int y) {
this.x=x;
this.y=y;
}
protected void desloca_x(int desloc) {
x = x + desloc;
}
}
import grafico.*;
// Desenho.java
class Desenho {
public static void main(String args[]) {
Ponto p = new Ponto(2,3);
System.out.println(p.x);
}
}
Somente a classe e quem herda tem acesso.
Criar a pasta grafico
Copiar Ponto.java para a pasta grafico
20.
Desenho.java:31: grafico.Ponto isnot public in grafico; cannot be accessed from
outside package
Ponto p = new Ponto(2,3);
^
Desenho.java:31: grafico.Ponto is not public in grafico; cannot be accessed from
outside package
Ponto p = new Ponto(2,3);
^
2 errors
javac Desenho.java
ERRO
21.
Exercício:
Fazer com queDesenho herde Ponto e verificar o que será necessário ou não ajustar
para que Desenho seja compilado corretamente.
22.
INTERFACE
Assim como aclasse uma interface define métodos, sendo que os métodos nunca são
implementados na interface.
Classes que implementam interface devem implementar os métodos definidos pela interface.
Uma classe pode implementar múltiplas interface.
interface cachorro {
public void latir();
}
public class vira_lata implements cachorro {
public void latir() {
}
public static void main(String s[]) {
vira_lata dog = new vira_lata();
}
}
23.
ABSTRACT
A classe representaum modelo que será instanciado.
abstract class cachorro {
public void latir(){
}
abstract void comer();
}
public class vira_lata extends cachorro {
public void latir() {
}
void comer() {
}
public static void main(String s[]) {
vira_lata dog = new vira_lata();
}
}
24.
// nome doarquivo: polimorf.java
interface Gritador {
void grita();
}
class Humano implements Gritador {
public void grita() {
System.out.println("AAAAAAHHHHH");
}
}
class Macaco implements Gritador {
public void grita() {
System.out.println("IIIIIIIIHHHHHHHI");
}
}
public class polimorf {
void facaAlgo(String especie) {
Gritador b;
if(especie.compareTo("humano")==0) {
b = new Humano();
} else {
b = new Macaco();
}
b.grita(); // chamada polimórfica
}
public static void main(String argumento[]) {
polimorf p = new polimorf();
p.facaAlgo(argumento[0]);
}
}
POLIMORFISMO
25.
// nome doarquivo: polimorf.java
interface Gritador {
void grita();
}
class Humano implements Gritador {
public void grita() {
System.out.println("AAAAAAHHHHH");
}
}
class Macaco implements Gritador {
public void grita() {
System.out.println("IIIIIIIIHHHHHHHI");
}
}
public class polimorf {
void facaAlgo(String especie) {
Gritador b;
if(especie.compareTo("humano")==0) {
b = new Humano();
} else {
b = new Macaco();
}
b.grita(); // chamada polimórfica
}
public static void main(String argumento[]) {
polimorf p = new polimorf();
p.facaAlgo(argumento[0]);
}
}
POLIMORFISMO - INTERFACE
26.
// nome doarquivo: polimorf1.java
class Gritador {
void grita() {
System.out.println("generico");
}
}
class Humano extends Gritador {
public void grita() {
System.out.println("AAAAAAHH");
}
}
class Macaco extends Gritador {
public void grita() {
System.out.println("IIIIIIIIHHHHH");
}
}
public class polimorf1 {
void facaAlgo(String especie) {
Gritador b;
if(especie.compareTo("humano")==0) {
b = new Humano();
} else {
b = new Macaco();
}
b.grita(); // chamada polimórfica
}
public static void main(String argumento[]) {
polimorf1 p = new polimorf1();
p.facaAlgo(argumento[0]);
}
}
POLIMORFISMO - HERANÇA
27.
VARIÁVEIS
Nome
Começa com letras
Podeter número ou _
Scopo (tempo de vida)
// Scopo.java
class Scopo.java {
public static void main(String s[]) {
int a=34;
if (a!=0) {
int b = 17;
}
System.out.println(“Valor b “+ b);
}
}
28.
true ou falseAvalor boleano (true or false)boolean
16-bit caracter UnicodeUm simples characterchar
Outros Tipos
64-bit IEEE 754
Dupla precisão de ponto
flutuante
double
32-bit IEEE 754
Simples precisão de ponto
flutuante
float
Números Reais
64-bit complemento de 2Inteiro longolong
32-bit complemento de 2Inteiroint
16-bit complemento de 2Inteiro curtoshort
8-bit complemento de 2Bytebyte
Inteiros
Tamanho/FormatoDescrição
Palavra
Reservada
Tipos de Dados Primitivos
29.
Sinal (1) |Expoente (8) | Mantissa (23)
Bits
IEEE 754
Para número negativo usar complemento de 2
NÚMERO EM PONTO FLUTUANTE
// Constante.java
class Constante{
final int aFinalVar = 0;
public static void main(String s[]) {
Constante c = new Constante();
c.aFinalVar=23;
System.out.println(c.aFinalVar);
}
}
CONSTANTE
public class AritimeticaDemo{
public static void main(String[] args) {
//poucos numeros
int i = 37;
int j = 42;
double x = 27.475;
double y = 7.22;
//adição
System.out.println("Adição...");
System.out.println(" i + j = " + (i + j));
//subtração
System.out.println("Subtração...");
System.out.println(" i - j = " + (i - j));
//Multiplicação
System.out.println(" i * j = " + (i * j));
//Divisão
System.out.println(" i / j = " + (i / j));
//Resto de divisão
System.out.println(" i % j = " + (i % j));
//misturando tipos
System.out.println(" i * x = " + (i * x));
}
}
34.
// Operador.java
class Operador{
public static void main(String s[]) {
int i=5;
System.out.println(“(i++/2)” + (i++/2));
System.out.println(i);
}
}
Mudar para ++i, --i, i-- e verificar os resultados
public class RelacionalDemo{
public static void main(String[] args) {
int i = 37;
int j = 42;
int k = 42;
//maior
System.out.println(" i > j = " + (i > j)); //false
//maior igual
System.out.println(" i >= j = " + (i >= j)); //false
//menor
System.out.println(" i < j = " + (i < j)); //true
//menor igual
System.out.println(" i <= j = " + (i <= j)); //true
//igual
System.out.println(" i == j = " + (i == j)); //false
//diferente
System.out.println(" i != j = " + (i != j)); //true
}
}
public class SwitchDemo{
public static void main(String[] args) {
int mes = 8;
switch (mes) {
case 1: System.out.println("Janeiro"); break;
case 2: System.out.println("Fevereiro"); break;
case 3: System.out.println("Março"); break;
case 4: System.out.println("Abril"); break;
case 5: System.out.println("Maio"); break;
case 6: System.out.println("Junho"); break;
}
}
}
44.
EXERCÍCIOS
1) Escreva umprograma em java que possua um método para exibir na tela os
números de 1 a 10. (Usando for)
2) Escreva um programa em java que possua um método para exibir na tela os
números de 1 a 10. (Usando while)
3) Escreva um programa em java que possua um método para exibir na tela os
números de 1 a 10. (Usando do while)
45.
// 1 –usando for
public class loop1 {
public static void main(String s[]) {
int i=0;
for(i=1; i<=10; i++)
System.out.print(i + " ");
i=1;
}
// 2 – usando do ...while
public class loop3 {
public static void main(String s[]) {
int i=1;
do {
System.out.print(i + " ");
i++;
} while(i<=10);
}
}
// 2 – usando while
public class loop2 {
public static void main(String s[]) {
int i=1;
while(i<=10) {
System.out.print(i + " ");
i++;
}
}
}
46.
TRATAMENTO DE EXCEÇÃO
Éum evento que ocorre durante a execução de um programa que sai do fluxo normal.
try {
comandos
} catch (TipoExceção nome) { // executado quando ocorrer exceção
comandos
} finally { // executado mesmo que não haja exceção
comandos
}
47.
// excecao.java
public classexcecao {
void divide(int numerador, int denominador) {
System.out.println(numerador/denominador);
}
public static void main(String s[]) {
excecao e = new excecao();
try {
e.divide(2,0);
} catch (Exception exc) {
System.out.println(“Erro de excecao");
} finally {
System.out.println(“Denominador deve ser diferente de zero");
}
}
}
48.
// excecao1.java
public classexcecao1 {
void divide(int numerador, int denominador) throws Exception {
if(denominador == 0)
throw new Exception();
System.out.println(numerador/denominador);
}
public static void main(String s[]) {
excecao e = new excecao();
try {
e.divide(2,0);
} catch (Exception exc) {
System.out.println("Erro");
} finally {
System.out.println("Denominador deve ser diferente de zero");
}
}
}
PACOTES
java.applet – Possuiclasses necessárias a criação de applet
java.awt – Contém classes necessárias a criação de interfaces com o usuário e para
desenhar gráficos e imagens.
java.io – Contém classes que permitem realizar operações de i/o através de streams,
serialização e arquivos.
java.lang – comtém classes fundamentais para o desenvolvimento de programas java. (este
pacote é importado por padrão)
java.net / javax.net – contém classes para implementar aplicações em rede.
java.sql – Contém classes que permitem acessar e processar dados armazenados em um
banco de dados (usualmente um banco de dados relacional).
java.util - Contém classes diversas para tratar de forma especial:coleções,vetores, strings,
números randomicos, strings entre outros.
javax.swing – melhoramento de java.awt a possibilidade de utilizar outros recursos
58.
import java.io.*;
public classteste9 {
public static void main(String s[]) {
BufferedReader d = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println(d.readLine());
}
catch (IOException ioe) {
System.out.println(ioe+"");
}
}
}