Saudações a todos! Como um novo GUJnauta estou precisando ter uma visão panorâmica. Logo, venho solicitar uma explicação passo-a-passo (linha a linha) do que estes três códigos fazem. Se for possível citar um pouco da teoria aplica em cada passo… valeu!!! Seguem os três códigos:
[color=red]-----------------------------MEMÓRIA------------------------------
abstract class MemoriaS{
public static final int BYTE=1;
public static final int KB=2;
public static final int MB=3;
public static final int GB=4;
protected double total;
protected double utilizadoKB;
protected int unidade;
public MemoriaS(int newTotal,int newUnidade){
	this.total = newTotal;
	this.utilizadoKB = 0;
	this.unidade = newUnidade;
}
public MemoriaS(int newTotal){
	this(newTotal,KB);
	}
            public abstract double getEspacoDisponivelRealKB();
public abstract double getPerda();
   	
protected double getEspacoDisponivelKB(){
	return this.getConverteKB(this.total) - this.utilizadoKB;
}
public boolean GravaKB(int newTamanho){
	if ( (newTamanho<=this.getEspacoDisponivelRealKB()) ){
	 	this.utilizadoKB = this.utilizadoKB + newTamanho;
		 	return true;
	 }else{
	 	return false;
	 }
}
protected double getConverteKB(double valor){
	double tempValor=0;
		switch (unidade){
			 case MemoriaS.BYTE:
			        tempValor = valor/1204;
			        break;
			 case MemoriaS.KB:
			        tempValor = valor;
			        break;  
			 case MemoriaS.MB:
			        tempValor = valor*1024;
			        break;
			 case MemoriaS.GB:
			        tempValor = valor*1024*1024;       
		    	        break;			      
			 } 
		     return tempValor;
	}	
	public String getUnidade(){
		switch (unidade){
			 case BYTE:
			      return "BYTE";
			 case KB:
			      return "KB";  
			 case MB:
			      return "MB";  
			 case GB:
			      return "GB"; 
			} 
		return "";
	}
	
   public double getPercentualDisponivel(){
   	    return this.getEspacoDisponivelRealKB()/this.getConverteKB(this.total)*100;
	   }
   
   public String toString(){
   	      return " Percentual Disponivel " + this.getPercentualDisponivel() +
   	      "% Espaço Total " + this.getConverteKB(this.total) +
   	       "KB Espaço Disponivel Real " +this.getEspacoDisponivelRealKB()+
   	       "KB Perda "+this.getPerda() + "%"; 	
   }
   		
   public static void main(String args[ ]){
   	      MemoriaS hd = new HD("46327",10,MemoriaS.MB);
   	      System.out.println("Número  de Serie "+((HD)hd).getNumeroSerie()+ "Percentual de Perda"+ hd.getPerda());
   	   
   	      hd.GravaKB(10000);
   	      System.out.println(hd);
   	      
   	      MemoriaS cd = new CD(650,MemoriaS.MB);
   	      System.out.println(" Estado CD "+((CD)cd).getEstado());
   	      cd.GravaKB(10240);
   	      System.out.println(cd);
   	      
   	      cd.GravaKB(10240);
   	      System.out.println(cd);
	} 
}[/color]
[color=blue]---------------------------------HD-------------------------------
public class HD extends MemoriaS {
private String numeroSerie;
public HD (String newNumeroSerie,int newTotal,int newUnidade){
super(newTotal,newUnidade);
this.numeroSerie = newNumeroSerie;
}
public double getPerda(){
	return ((super.getConverteKB(super.total)/10240)/100);
}
public double getEspacoDisponivelRealKB(){
 	return super.getEspacoDisponivelKB()*(1-this.getPerda());
}
public String getNumeroSerie(){
	return this.numeroSerie;
}
public String toString(){
	return "HD Número de Serie " +this.numeroSerie+" " + super.toString(); 
}
}[/color]
[color=green]----------------------------------CD----------------------------------
public class CD extends MemoriaS {
public static final int ABERTO=1;
public static final int FECHADO=2;
public static final double PERCENTUALPERDA=0.98;
private int estado;
public CD (int newTotal,int newUnidade){
	super(newTotal,newUnidade);
	this.estado = CD.ABERTO;
}
public double getPerda(){
	return PERCENTUALPERDA;
}
public double getEspacoDisponivelRealKB(){
 		return super.getEspacoDisponivelKB()*this.getPerda();
}
public boolean GravaKB(int newTamanho){
		if ( (this.estado == this.ABERTO) && (super.GravaKB(newTamanho)) ){
		 	this.estado = this.FECHADO;
		 	return true;
		 }else{
		 	return false;
		 }
}
}[/color]
