Usando Mais Objetos e Classes
Simples
Classe Rinoceronte
public class Rinoceronte
{
double Peso;
int idade;
boolean velho;
Rinoceronte(double p, int i)
{
Peso = p;
idade = I;
if (idade > 40)
velho = true;
}
void andar()
{
System.out.println("Rino andando: " + 1/Peso + "km/h");
}
void comer()
{
System.out.println("Rino comendo");
}
void dormir()
{
Classe Antilope
public class Antilope
{
Antilope()
{
}
void andar()
{
System.out.println("Anti correndo");
}
void comer()
{
System.out.println("Anti comendo");
}
void dormir()
{
System.out.println("Anti dormindo");
}
}
Classe Hipopotamo
public class Hipopotamo
{
Hipopotamo()
{
}
void andar()
{
System.out.println("Hipo andando");
}
void comer()
{
System.out.println("Hipo comendo");
}
void dormir()
{
System.out.println("Hipo dormindo");
}
}
Classe Coordenador
class Coordenador
{
public static void main(String[] arg)
{
Rinoceronte rino1 = new Rinoceronte(10, 1);
Rinoceronte rino2 = new Rinoceronte(12, 50);
Antilope anti = new Antilope();
Hipopotamo hipo1 = new Hipopotamo();
Hipopotamo hipo2 = new Hipopotamo();
Hipopotamo hipo3 = new Hipopotamo();
rino1.dormir();
anti.comer();
hipo1.dormir();
hipo1.andar();
hipo2.andar();
hipo3.comer();
if (! rino2.velho )
rino2.andar();
}
}
Não sabemos quem é que
está fazendo uma ação, falta
um identificador para cada
objeto
O tipo String
Em JAVA o tipo String não é primitivo
Foi construida uma classe especial para lidar com ela.
String nome;
nome = “Meu nome”;
O tipo String
s.substring(x): fornece a cadeia de caracteres iniciando no caractere de
número x de s e indo até o final de s.
s.substring(x, y): fornece a cadeia de caracteres iniciando no caractere
de número x de s e indo até o caractere de número y-1.
s.length(): fornece um valor inteiro que corresponde à quantidade de
caracteres de s.
s.toUpperCase(): fornece a cadeia de caracteres similar à cadeia s,
porém convertendo todas as letras para caixa alta.
s.toLowerCase(): fornece a cadeia de caracteres similar à cadeia s,
porém convertendo todas as letras para caixa baixa.
O tipo String
s.compareTo(t): compara as cadeias de caracteres s e t. Se elas forem
idênticas, retorna o valor zero; se s vier alfabeticamente antes de t,
retorna um inteiro menor que zero; se s vier alfabeticamente depois de t,
retorna um inteiro maior que zero.
s.indexOf(‘c’): fornece o número da primeira ocorrência do caractere ‘c’
na cadeia s.
s.indexOf(‘c’,n): fornece o número da primeira ocorrência do caractere ‘c’
na cadeia s, que seja maior que ou igual a n.
s = s1 + s2: coloca na cadeia s o resultado da concatenação das cadeias
s1 e s2. Por exemplo, se s1 = “abc” e s2 = “def”, então s = “abcdef”.
Classe Rinoceronte com nome
public class Rinoceronte
{
double Peso;
String nome;
Rinoceronte(double p, String n)
{
Peso = p;
nome = n.substring(5);
}
void andar()
{
System.out.println(nome+" vai a " + 1/Peso + "km/h");
}
void comer()
{
System.out.println(nome + " comendo");
}
void dormir()
{
System.out.println(nome + " dormindo");
}
}
Classe Coordenador
class Coordenador
{
public static void main(String[] arg)
{
Rinoceronte rino1 = new Rinoceronte(10,"Rino rino1");
Rinoceronte rino2 = new Rinoceronte(12, "Rino rino2");
Antilope anti = new Antilope("Anti anti");
Hipopotamo hipo1 = new Hipopotamo("Hipo hipo1");
Hipopotamo hipo2 = new Hipopotamo("Hipo hipo2");
Hipopotamo hipo3 = new Hipopotamo("Hipo hipo3");
rino1.dormir();
anti.comer();
hipo1.dormir();
hipo1.andar();
hipo2.andar();
hipo3.comer();
rino2.andar();
}
}
O que vai acontecer?
Exercício
Faça um programa que leia o nome de um arquivo completo, incluindo sua
extensão. Logo em seguida, deverá imprimir qual é o tipo de arquivo que se está
escolhendo, seguindo esta tabela:
.txt -> Arquivo texto
.exe -> arquivo executavel
.jpg -> arquivo imagem
.mp3 -> arquivo de áudio
Exemplo:
Entre com o nome do arquivo:
> minhasFerias.jpg
O arquivo escolhido é uma imagem
Caso o formato não seja reconhecido, o programa deverá dizer: “Formato
desconhecido...”
Leitura de Arquivos
import java.io.*;
3 etapas:
-definir a fonte de dados, com um objeto de FileInputStream
-definir um repositório de leitura, parametrizado pela fonte de dados,
como um objeto de InputStreamReader
-definir um leitor desse repositório, como um objeto de BufferedReader
Leitura de Arquivos
import java.io.*;
InputStream is = new FileInputStream("entrada.txt");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String linha = br.readLine();
Escrita de Arquivos
import java.io.*;
3 etapas:
-definir um destino para os dados, como um objeto de FileOutputStream
-definir um repositório de gravação, parametrizado pelo destino de dados,
como um objeto de OutputStreamWriter
-definir um gravador desse repositório, como um objeto de BufferedWriter
Escrita de Arquivos
import java.io.*;
OutputStream os = new FileOutputStream("saida.txt");
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
String linha = br.readLine();
bw.write("Ola " + linha);
bw.newLine();
bw.write("Ate mais tarde " + linha);
bw.close();
Classes Abstratas
public abstract class Mamifero
{
Mamifero()
{
}
void andar()
{
System.out.println("Mamifero andando");
}
void comer()
{
System.out.println("Mamifero comendo");
}
void dormir()
{
System.out.println("Mamifero dormindo");
}
}
Classes Abstratas
public class Rinoceronte extends Mamifero
{
double Peso;
Rinoceronte(double p)
{
Peso = p;
}
@Override
void andar()
{
System.out.println("Rino andando: " + 1/Peso + "km/h");
}
@Override
void comer()
{
System.out.println("Rino comendo");
}
@Override
void dormir()
{
System.out.println("Rino dormindo");
}
}
Classes, Heranças e Objetos
Classe
Uma classe é um molde (template) que define, de maneira genérica, como
serão os objetos. Uma classe é como uma receita para construir objetos.
Objetos são criados como sendo instâncias de uma classe.
Classe – Diagrama UML
Classe
Classe
Construtores
Variáveis de referencia
Operador ponto
Classe
Classe
package testeretangulo;
public class Main
{
public static void main(String[] args)
{
Retangulo r1 = new Retangulo();
// Cria retangulo r1
Retangulo r2 = new Retangulo(0,15,5,10); // Cria retangulo r2
r1.x = 15;
// altera origem de r1
r1.altura = 5; // altera altura de r1
System.out.println("Area r1= " + r1.getArea()); // imprime nova area de r1
r2.transladar(5, 0); // translada origem de 5 pixels na horizontal
r2.transladar(5, 0); // translada origem de mais 5 pixels
System.out.println("origem r2: (" + r2.x + "," + r2.y + ")");
}
}
Classes em arquivos separados
package testeretangulo;
public class Main
{
public static void main(String[] args)
{
Retangulo r1 = new Retangulo();
// Cria retangulo r1
Retangulo r2 = new Retangulo(0,15,5,10); // Cria retangulo r2
r1.x = 15;
// altera origem de r1
r1.altura = 5; // altera altura de r1
System.out.println("Area r1= " + r1.getArea()); // imprime nova area de r1
r2.transladar(5, 0); // translada origem de 5 pixels na horizontal
r2.transladar(5, 0); // translada origem de mais 5 pixels
System.out.println("origem r2: (" + r2.x + "," + r2.y + ")");
}
}
Classes em arquivos separados
package testeretangulo;
public class Main
{
public static void main(String[] args)
{
Download

Parte III