POO

Aquí se publicarán algunos ejemplos de POO



Ejemplo de Herencia simple y sin clases abstractas

//////////CLASE RECTANGULO
package poo_herencia1;
public class Rectangulo {
    private double largo;
    private double ancho;
    public Rectangulo(double largo, double ancho){
      this.largo = largo; 
      this.ancho = ancho;
    }
    public double area(){
        double res = ancho * largo;
        return res;
    }
    public String soy(){
        return "Soy de la clase RECTANGULO";
    }
}

/////CLASE TERRENO
package poo_herencia1;
public class Terreno extends Rectangulo{
    private double pm2;
    public Terreno(double largo, double ancho, double pm2){
       super(largo,ancho); 
       this.pm2 = pm2;
    }
    public double costoTerreno(){
        return super.area() * pm2;
    }
 
    @Override
     public String soy(){
        return "Soy de la clase TERRENO";
    }
 
}

////CLASE PRINCIPAL
package poo_herencia1;
public class Principal {
    public static void main(String[] args) {
     Terreno t = new Terreno(20, 10, 2000);
     System.out.println("Precio:" + t.costoTerreno()     );
     System.out.println("Area: "  + t.area()  );
   
     // ARREGLO DE LA CLASE PADRE   
     Rectangulo arr[] = new Rectangulo[3];
   
     arr[0] = new Rectangulo(20,15);
     arr[1] = new Terreno(15, 5, 100);
     arr[2] = new Rectangulo(10,5);           
     ////POLIMORFISMO
       for (int i=0; i<3; i++){
          System.out.println("..."+arr[i].soy() );
       }
    }
}

Ejemplo de herencia con clase abstracta

//// CLASE ABSTRACTA FIGURA
package poo_herenciaabstractatics;
public abstract class Figura {
    public abstract double area();
    public abstract String soy();
}

/// CLASE CIRCULO
package poo_herenciaabstractatics;
public class Circulo extends Figura{
    private double radio;
    public Circulo(double ra){
        this.radio = ra;
    }
 
    @Override
    public double area(){
        return Math.PI * radio * radio;
    }

    @Override
    public String soy() {
        return "Soy un Círculo...";
    }
}

///CLASE ROMBO
package poo_herenciaabstractatics;
public class Rombo extends Figura {
    private double dMenor;
    private double dMayor;
    public Rombo(double diagMenor, double diagMayor){
        this.dMenor = diagMenor;
        this.dMayor = diagMayor;
    }

    @Override
    public double area() {
        return (dMayor * dMenor)/2;
    }

    @Override
    public String soy() {
        return "Soy rombo...";
    }
}

///CLASE PRINCIPAL
package poo_herenciaabstractatics;
public class Principal {

   public static void main(String[] args) {

      Circulo c = new Circulo(5.5);
      Rombo   r = new Rombo(10,5);
   
      Figura arreglo[]= new Figura[2];
      arreglo[0] = c;
      arreglo[1] = r;
               ///POLIMORFISMO
      for(int i=0; i<2;i++){
        System.out.println("Soy:"+ arreglo[i].soy() );       
        System.out.println("Area:"+arreglo[i].area() );
      }
    }

}


Ejemplo de archivos de texto sin buffer

///CLASE MANEJADOR ARCHIVO
package poo_archivostexto;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class ManejadorArchivo {
    private String archivo;
    public ManejadorArchivo(String archivo) {
        this.archivo = archivo;
    }
    public void añadir(String frase ){
       File objFile  = new File(archivo);
       try {                            // true es para añadir
          FileWriter escritor = new FileWriter(objFile,true);
            for(int i = 0; i<frase.length(); i++){
                   escritor.write(frase.charAt(i));
            }
            escritor.write('\n');
            escritor.close();
        } catch (FileNotFoundException ex) {
            System.out.println("Archivo no se pudo crear");
        } catch (IOException ioe){
            System.out.println("Error de escritura");
        }
    }
 
    public void leer(){
      File objFile  = new File(archivo);
      try {
            FileReader lector = new FileReader(objFile);
            int numcar = lector.read();
            while(numcar!=-1){
                   char car = (char) numcar;
                   System.out.print(car);
                   numcar = lector.read();
            }
            lector.close();
        } catch (FileNotFoundException ex) {
            System.out.println("Archivo inexistente");
        } catch (IOException ioe){
            System.out.println("Error de lectura");
        }
    }
}


////CLASE PRINCIPAL

package poo_archivostexto;

public class POO_archivosTexto {
    public static void main(String[] args) {
        ManejadorArchivo m =
                new ManejadorArchivo("C:\\temporal\\texto.txt");
     //LECTURA
        m.leer();
     //AÑADIR LINEAS 
        System.out.println("Añadiendo");
        m.añadir("se acerca el fin de semestre");
    }
}

Ejemplo de archivos de texto CON BUFFER

///CLASE MANEJADORA
package poo_archivostextobuffered;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Manejador {
     private String archivo;
    public Manejador(String archivo) {
        this.archivo = archivo;
    }
    public void añadir(String frase ){
       File objFile  = new File(archivo);
       try {                    // true es para añadir
          FileWriter escritor = new FileWriter(objFile,true);
          BufferedWriter escritorRapido =
                   new BufferedWriter(escritor);
          escritorRapido.write(frase);
          escritorRapido.newLine();
          escritorRapido.flush();
          escritorRapido.close();
        } catch (FileNotFoundException ex) {
            System.out.println("Archivo no se pudo crear");
        } catch (IOException ioe){
            System.out.println("Error de escritura");
        }
    }
 
    public void crear(String frase ){
       File objFile  = new File(archivo);
       try {                     
          FileWriter escritor = new FileWriter(objFile);
          BufferedWriter escritorRapido =
                  new BufferedWriter(escritor);
          escritorRapido.write(frase);
          escritorRapido.newLine();
          escritorRapido.flush();
          escritorRapido.close();
        } catch (FileNotFoundException ex) {
            System.out.println("Archivo no se pudo crear");
        } catch (IOException ioe){
            System.out.println("Error de escritura");
        }
    }
 
    public String leer(){
      File objFile  = new File(archivo);
      String respuesta="";
      try {
            FileReader lector = new FileReader(objFile);
            BufferedReader lectorRapido = new BufferedReader(lector);
             String linea=lectorRapido.readLine();
            while(  linea!=null ){
                   respuesta+=linea+"\n";
                   linea=lectorRapido.readLine();
            }
            lectorRapido.close();
        } catch (FileNotFoundException ex) {
            System.out.println("Archivo inexistente");
        } catch (IOException ioe){
            System.out.println("Error de lectura");
        }
      return respuesta;
    }
   
}


/// CLASE PRINCIPAL, se incluye uso de StringTokenizer para manipular campos de registro

package poo_archivostextobuffered;

import static java.lang.System.exit;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Principal {

    public static void main(String[] args) {
        Manejador manager = new Manejador("C:\\temporal\\texto.txt");
        Scanner scanner = new Scanner(System.in);
     
        for(;;){
            System.out.println("\n1.-Crear archivo");
            System.out.println("2.-Leer archivo");
            System.out.println("3.-Añadir al archivo");
            System.out.println("4.-Salir");
            System.out.print("Elija---> ");
            int opcion = Integer.parseInt(scanner.nextLine());
            if(opcion>=1 && opcion<=3){
           
                switch(opcion){
                    case 1:  ///CREAR
                           System.out.println("Teclea nombre: ");
                           String nombrec = scanner.nextLine();
                         
                           System.out.println("Teclea NoControl: ");
                           String ncc = scanner.nextLine();
                         
                           System.out.println("Teclea Edad: ");
                           String edadc = scanner.nextLine();
                     
                           manager.crear(nombrec+"|"+ncc+"|"+edadc ); break;
                    case 2: ///AÑADIR
                            String r=manager.leer();
                            StringTokenizer str = new StringTokenizer(r, "\n");
                            while( str.hasMoreTokens()==true )  {
                               String f=str.nextToken();

                               StringTokenizer str2 = new StringTokenizer(f, "|");
                             
                               String campoNombre= str2.nextToken();
                               String campoNc    = str2.nextToken();
                               String campoEdad  = str2.nextToken();
                             
                               System.out.println("Nombre:" +campoNombre );
                               System.out.println("NC    :" +campoNc );
                               System.out.println("Edad  :" +campoEdad );
                            }
                            break;
                    case 3: //LEER
                          System.out.println("Teclea nombre: ");
                           String nombre = scanner.nextLine();
                         
                           System.out.println("Teclea NoControl: ");
                           String nc = scanner.nextLine();
                         
                           System.out.println("Teclea Edad: ");
                           String edad = scanner.nextLine();
                     
                     
                           manager.añadir(nombre+"|"+nc+"|"+edad ); break;
                }
            }
            else
                exit(0);
        }
    }
 
}

Ejemplo de archivos binarios para SERIALIZAR OBJETOS

////CLASE ESTUDIANTES serializable

package poo_archivosobjetos;
import java.io.Serializable;
public class Estudiante implements Serializable {
    private int numeroDeControl;
    private String nombre;
    public Estudiante(int nc, String nombre){
        this.numeroDeControl =nc;
        this.nombre = nombre;
    }
    @Override
    public String toString (){
        return "soy " + nombre + " con número de control "
                + numeroDeControl;
    }
    public int getNumeroDeControl() {
        return numeroDeControl;
    }
    public void setNumeroDeControl(int numeroDeControl) {
        this.numeroDeControl = numeroDeControl;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 }

//// CLASE MANEJADOR
package poo_archivosobjetos;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;


public class ManejadorObjetos {
    private String archivo;
    public ManejadorObjetos(String archivo) {
        this.archivo = archivo;
    }
    public Estudiante [] leer(){
       Estudiante estudiantes[]=null ;
       try{
         File objFile  = new File(archivo);
         FileInputStream in = new FileInputStream(objFile);
         ObjectInputStream lectorobj = new ObjectInputStream(in);
         estudiantes = (Estudiante []) lectorobj.readObject();
         lectorobj.close();
       }               
        catch (ClassNotFoundException ex) {
            System.out.println("Clase no hallada");}
         catch(IOException e){   
             System.out.println("Falla de entrada salida");
        }
       return estudiantes;
    }
   
     public void escribir(){
        Estudiante estudiantes[] = { new Estudiante(123,"juan"),
                                    new Estudiante(124,"nacho"), 
                                    new Estudiante(123,"ana"),
                                    new Estudiante(888,"Gualo"),
                                    };
      try{
          File objFile  = new File(archivo);
          FileOutputStream ou = new FileOutputStream(objFile);
          ObjectOutputStream escritorobj =
                        new ObjectOutputStream(ou);
          escritorobj.writeObject(estudiantes);
          escritorobj.flush();
          escritorobj.close();
        }
         catch(IOException e){   
             System.out.println("Falla de entrada salida");
        }
     }
}


////CLASE PRINCIPAL

package poo_archivosobjetos;

public class Principal {
    public static void main(String[] args) {
        ManejadorObjetos objetos =
              new ManejadorObjetos("C:\\temporal\\texto.dat");
       objetos.escribir();
        Estudiante arr []= objetos.leer();
        for(int i=0;i<arr.length; i++){
            System.out.println( arr[i].toString()   );
        }
    }
}