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: /// LEER
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: // AÑADIR
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() );
}
}
}
2do. Ejemplo de archivos binarios, persistencia de objetos con agregación.
// CLASE DOMICILIO
public class Domicilio implements Serializable{
private String calle;
private int noExt;
private String colonia;
private String ciudad;
private String municipio;
private String estado;
private String pais;
public String getCalle() {
return calle;
}
public void setCalle(String calle) {
this.calle = calle;
}
public int getNoExt() {
return noExt;
}
public void setNoExt(int noExt) {
this.noExt = noExt;
}
public String getColonia() {
return colonia;
}
public void setColonia(String colonia) {
this.colonia = colonia;
}
public String getCiudad() {
return ciudad;
}
public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}
public String getMunicipio() {
return municipio;
}
public void setMunicipio(String municipio) {
this.municipio = municipio;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public String getPais() {
return pais;
}
public void setPais(String pais) {
this.pais = pais;
}
}
public class Estudiante implements Serializable {
private int numeroDeControl;
private String nombre;
private Domicilio domicilios [] = new Domicilio[2];
public Estudiante(int nc, String nombre){
this.numeroDeControl =nc;
this.nombre = nombre;
Domicilio d1 = new Domicilio();
d1.setCalle("Morelos");
d1.setNoExt(123);
d1.setColonia("Centro");
d1.setCiudad("Morelia");
d1.setMunicipio("Morelia");
d1.setEstado("Michoacán");
d1.setPais("México");
Domicilio d2 = new Domicilio();
d2.setCalle("Madero");
d2.setNoExt(321);
d2.setColonia("Vasco");
d2.setCiudad("Morelia");
d2.setMunicipio("Morelia");
d2.setEstado("Michoacán");
d2.setPais("México");
domicilios[0] = d1;
domicilios[1] = d2;
}
@Override
public String toString (){
Domicilio d1 = this.domicilios[0];
Domicilio d2 = this.domicilios[1];
return "Soy " + nombre + " con no. control "
+ numeroDeControl + "\n"
+"Domicilio1: " + d1.getCalle()+" " + d1.getNoExt() + "\n"
+"Domicilio2: " + d2.getCalle()+" " + d2.getNoExt() + "\n";
}
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;
}
public Domicilio[] getDomicilios() {
return domicilios;
}
}
//CLASE MANEJADOR DE OBJETOS
public class ManejadorObjetos {
private String archivo;
private Estudiante estudiantes[] = null;
private int cima;
public ManejadorObjetos(String archivo) {
this.archivo = archivo;
estudiantes = new Estudiante[100];
cima = 0;
}
public void agregarEstudiante(int nc, String nombre){
estudiantes[cima]=new Estudiante(nc, nombre);
cima++;
}
public void leer(){
try{
File objFile = new File(archivo);
FileInputStream in = new FileInputStream(objFile);
ObjectInputStream lectorobj = new ObjectInputStream(in);
estudiantes = (Estudiante []) lectorobj.readObject();
lectorobj.close();
for (int i=0; estudiantes[i]!=null; i++ ){
cima++;
}
}
catch (ClassNotFoundException ex) {
System.out.println("Clase no hallada");}
catch(IOException e){
System.out.println("Falla de entrada salida");
}
}
public void crear(){
estudiantes[0]=new Estudiante(1, "Nombre default");
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");
}
}
public String consultar(int numControl){
String respuesta =" No se ha encontrado ";
boolean encontrado = false;
for(int i=0;i<estudiantes.length; i++){
if(estudiantes[i]!=null) {
if(estudiantes[i].getNumeroDeControl() == numControl) {
respuesta=estudiantes[i].toString();
encontrado = true;
break;
}
}
}
return respuesta;
}
public void grabar(){
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
public class Principal {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
// TODO code application logic here
ManejadorObjetos objetos =
new ManejadorObjetos("C:\\temporal\\texto.dat");
Scanner scanner = new Scanner(System.in);
boolean continuar=true;
while(continuar==true){
System.out.println("\n1.-Crear un archivo con un registro inicial");
System.out.println("2.-Leer archivo de disco");
System.out.println("3.-Agregar Estudiante");
System.out.println("4.-Consultar Estudiante");
System.out.println("5.-Modificar Estudiante NO IMP");
System.out.println("6.-Eliminar Estudiante NO IMP");
System.out.println("7.-Grabar a disco");
System.out.println("8.-Salir");
System.out.print("Elija---> ");
int opcion = Integer.parseInt(scanner.nextLine());
opcion=opcion*1;
switch(opcion){
case 1: objetos.crear(); break;
case 2: objetos.leer(); break;
case 3:
InputStreamReader inKey=new InputStreamReader(System.in);
BufferedReader lector = new BufferedReader(inKey);
System.out.print("Teclea número de contrl:");
int noCtrl;
noCtrl = Integer.parseInt(lector.readLine());
System.out.print("Teclea nombre:");
String nombre=lector.readLine();
objetos.agregarEstudiante(noCtrl, nombre);
break;
case 4: System.out.println("No control a consultar: ");
String nc = scanner.nextLine();
int nc_a_buscar = Integer.parseInt(nc);
String resp=objetos.consultar(nc_a_buscar);
System.out.println("Respuesta: "+resp);
case 7: objetos.grabar(); break;
case 8: continuar=false; break;
}
}
}
}