//Classe principal, Arquivo Principal.java class Principal { public static void main(String args[]) { int a[]=new int[4]; try { a[4]=10; //linha acima gera excecao, os indices validos sao quatro:0,1,2,3 //qualquer codigo escrito aqui (depois de a[4]=10;) //nunca sera executado System.out.println("Passou por aqui???"); } catch(Exception ae) { //refaz a pergunta do indice a acessar ao usuario //e descrobre que ele queria acessar o indice 3 e escrever 12 a[3]=12; } System.out.println(a[3]); } } public class DivisaoPorZero extends Exception { //public String info; public DivisaoPorZero(String i) { //info=i; } } // Adaptado de: // TUTORIAL:"A LINGUAGEM DE PROGRAMAÇÃO JAVA" // ORIENTAÇÃO A OBJETOS // Instituto de Computação // junho, 96 // André Augusto Cesta. [email protected] // Orientadora: Profa Dra Cecília Mary Fischer Rubira // //Classe principal Arquivo Principal.java // //TAD fracao. //Arquivo Fracao.java class Fracao { private int num,den; //numerador, denominador private int mdc(int n,int d) //metodo private maximo divisor comum //metodo de Euclides +- 300 anos AC. { if (n<0) n=-n; if (d<0) d=-d; while (d!=0){ int r=n % d; //%=MOD=Resto da divisao inteira. n=d; d=r; } return n; } public Fracao(int t,int m) //construtor comum { num=t; den=m; this.simplifica(); //chamada para o mesmo objeto. } public void simplifica() //divide num e den pelo mdc(num,den) { int commd; commd=mdc(num,den); //divisor comum num=num/commd; den=den/commd; if (den<0) { den=-den; num=-num; }; //move sinal para cima } //operacoes matematicas basicas public Fracao soma (Fracao j) { Fracao g; g=new Fracao((num*j.den)+(j.num*den),den*j.den); return g; } public Fracao multiplicacao(Fracao j) { Fracao g; g=new Fracao(num*j.num,den*j.den); return g; } public Fracao divisao(Fracao j) throws DivisaoPorZero { Fracao g; if (j.den==0) throw new DivisaoPorZero("Na classe Fracao"); //se for zero a execucao nao chega aqui g=new Fracao(num*j.den,den*j.num); return g; } //operacoes de comparacao public boolean igual(Fracao t) { return ((num*t.den)==(den*t.num)); } public boolean diferente(Fracao t) { return ((num*t.den)!=(den*t.num)); } public boolean maiorouigual(Fracao t) { return ((num*t.den)>=(t.num*den)); } //operacoes de input output public void mostra() //exibe fracao no video { System.out.println("(" + num + "/" + den + ")"); } //operacoes de conversao de tipos public double convertedbl() //converte para double { double dbl; dbl=((double)num/(double)den); return dbl; } public int converteint() //converte para int { int itng; itng=num/den; return itng; } public void altera_num(int nn) { num=nn; } public void altera_den(int nd) { den=nd; } public int retorna_num() { return num; } public int retorna_den() { return den; } } class Principal { public static void main(String args[]) { Fracao a,b,c; a=new Fracao(5,3); b=new Fracao(2,0); System.out.print("Esta e' a fracao a: "); a.mostra(); System.out.print("Esta e' a fracao b: "); b.mostra(); try { c=a.divisao(b); c.mostra(); // não executa se ocorrer a exceção!!! } catch(DivisaoPorZero minhaexcecao) { System.out.println("Nao posso dividir por zero"); } } }