Ejercicios Files

public class Alumno {
	// El public es un modificador de acceso
	// Quiere decir que cualquiera puede acceder al valor
	public String nombre;
	// Tenemos tres sabores de protección
	// public, protected y private
	private ArrayList<Integer> notas;

	// Los parámetros que queremos poner al crear la clase
	public Alumno(String nombre) {
		// Las cosas que queremos que se ejecuten
		// cuando creamos la clase
		// this.nombre es el nombre del objeto
		// nombre es el parámetro que le pasamos
		this.nombre = nombre;
		notas = new ArrayList<Integer>();
	}

	public Alumno() {
		// Llamando a la sobrecarga del constructor
		this("anonimo");

	}

	public int ponNota(int nota) {
		// Me aseguro de que mis notas están entre 0  10
		if (nota > 0 && nota <= 10) {
			notas.add(nota);
		}
		return notas.size();
	}

	public double media() {

		double total = 0;
		// Desde dentro de la clase si que puedo acceder
		for (int nota : notas) {
			total += nota;
		}
		return total / this.notas.size();
	}
}
public static void main(String[] args) {
		ArrayList<Alumno> alumnos=importar("archivo.txt");
		System.out.println(estadoCarpeta("c:\\pepe"));
		ArrayList<String> nombres = new ArrayList<>();
		Scanner sc = new Scanner(System.in);
		for (int i = 0; i < 5; i++) {
			System.out.println("Introduce nombre " + i);
			nombres.add(sc.next());
		}

		Path path = Paths.get("nombres.txt");

		try {
			Files.write(path, nombres, StandardOpenOption.CREATE);
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
	}

	public static int estadoCarpeta(String ruta) {
		Path path = Paths.get(ruta);
		if (!Files.isDirectory(path)) {
			return -1;
		}
		try {
			List<Path> ficheros = Files.list(path).collect(Collectors.toList());
			if (ficheros.size() == 0) {
				return 0;
			}
			// TODO: Crear un método aparte
			for (Path fichero : ficheros) {
				if (Files.isDirectory(fichero)) {
					return 2;
				}
			}
			return 1;

		} catch (IOException e) {
			System.out.println(e.getMessage());
			return -1;
		}

	}

	public static ArrayList<Alumno> importar(String ruta) {
		List<String> contenido;
		// Leer fichero
		Path path = Paths.get(ruta);
		try {
			contenido = Files.readAllLines(path);
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			return null;
		}
		// Crear arraylist
		/*
		 * Nombre;nota Ana;5;6;7 Pep;3;3 Eva;5;5
		 */
		ArrayList<Alumno> alumnos= new ArrayList<Alumno>();
		for(int i=1;i<contenido.size();i++) {
			String[] elementos=contenido.get(i).split(";");
			Alumno temp=new Alumno(elementos[0]);
			for(int j=1;j<elementos.length;j++) {
				temp.ponNota(Integer.parseInt(elementos[j]));
			}
			alumnos.add(temp);
		}
		return alumnos;
	}
public class Jugador {
	private String nombre;
	private ArrayList<Carta> mano;

	public Jugador(String nombre) {
		super();
		this.nombre = nombre;
		mano = new ArrayList<>();
	}

	protected String getNombre() {
		return nombre;
	}

	protected void setNombre(String nombre) {
		this.nombre = nombre;
	}

	protected ArrayList<Carta> getMano() {
		return mano;
	}

	protected void setMano(ArrayList<Carta> mano) {
		this.mano = mano;
	}

	protected void setMano(Carta carta) {
		this.mano.add(carta);
	}

	@Override
	public String toString() {
		return "Jugador [nombre=" + nombre + ", mano=" + mano + "]";
	}

	public void logFichero(String ruta) {

		ArrayList<String> resultado = new ArrayList<>();
		// Un arraylist con los datos que quiero escribir
		resultado.add("Nombre jugador: " + this.getNombre());
		resultado.add("Cartas:");
		for (Carta carta : mano) {
			resultado.add(carta.toString());
		}
		// Escribir los datos
		try {
			Path path = Paths.get(ruta);
			if (!Files.exists(path)) {
				Files.createFile(path);
			}
			if (Files.isWritable(path)) {
				Files.write(path, resultado, StandardOpenOption.TRUNCATE_EXISTING);
			}else {
				// TODO: Lanzar excepción
				System.out.println("No se puede escribir");
			}
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
	}

}
	public static void main(String[] args) {
		Jugador ana=new Jugador("Ana Pi");
		ana.setMano(new Espanyola("oros",12));
		ana.setMano(new Espanyola("espadas",6));
		ana.setMano(new Espanyola("copas",8));
		ana.setMano(new Espanyola("oros",10));
		ana.logFichero("cartas_ana.txt");
		
	}

File, Files y Path

public static void main(String[] args) {
		File carpeta = new File("c:\\xampp");
		exploreDirectory(carpeta);
	}
	public static void exploreDirectory(File directory) {
        // Obtiene una lista de los archivos y directorios contenidos en el directorio
        File[] files = directory.listFiles();
        // Recorre cada archivo o directorio
        for (File file : files) {
            if (file.isFile()) {
                // Si es un archivo, imprime su nombre
                System.out.println(file.getName());
            } else if (file.isDirectory()) {
                // Si es un directorio, llama recursivamente al método
                exploreDirectory(file);
            }
        }
    }

	Path path = Paths.get("C:/pepe/ejemplo.jpeg");
		System.out.println(path.getFileName());
		System.out.println(path.getName(0));
		System.out.println(path.getParent());
		System.out.println(path.getRoot());
		 path = Paths.get("archivo.txt");
		 System.out.println(path.getFileName());
			System.out.println(path.getName(0));
			System.out.println(path.getParent());
			System.out.println(path.toAbsolutePath());


public static void main(String[] args) throws IOException {
		Path path = Paths.get("c:\\pepe\\archivo.txt");
		String cadena="o muy bien\n";
		Files.writeString(path, cadena,StandardOpenOption.APPEND );
		ArrayList<String> texto=new ArrayList<>(Arrays.asList("adios","hola","que tal"));
		Files.write(path, texto, StandardCharsets.ISO_8859_1,StandardOpenOption.TRUNCATE_EXISTING);
		try {

			List<String> contenido = Files.readAllLines(path);
			for(String linea:contenido)
			{
				System.out.println(linea);
			}
		} catch (IOException e) {
			System.out.println(e);
		}
	}

public static void main(String[] args) {
		Path path = Paths.get("c:\\pepe\\archivo2.txt");
			ArrayList<String> texto=new ArrayList<>(Arrays.asList("adios","hola","qué tal"));
		try {
			Files.write(path, texto, StandardCharsets.ISO_8859_1,StandardOpenOption.CREATE_NEW);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

public static void main(String[] args) {
		try {
		Path path = Paths.get("c:\\pepe\\archivo.txt");
		List<String> contenido=Files.readAllLines(path,StandardCharsets.ISO_8859_1);
		for(String linea:contenido)
		{
			System.out.println(linea);
		}
		}catch(Exception ex) {
			System.out.println(ex.getMessage());
		}
	}

Ejercicios Interfaces

package com.trifulcas.Interfaces;

public interface ISaludo {
	public String saludar();
}

package com.trifulcas.Interfaces;

public interface IDespedida {
	public String adios();
}

package com.trifulcas.Interfaces;

public class Amigo1 implements ISaludo {

	@Override
	public String saludar() {
		// TODO Auto-generated method stub
		return "Ola k ase???";
	}

}

package com.trifulcas.Interfaces;

public class Amigo2 implements IDespedida{

	@Override
	public String adios() {
		// TODO Auto-generated method stub
		return "Adios con el corazón";
	}

}

package com.trifulcas.Interfaces;

public class Amigo1 implements ISaludo {

	@Override
	public String saludar() {
		// TODO Auto-generated method stub
		return "Ola k ase???";
	}

}

package com.trifulcas.Interfaces;

public class Amigo2 implements IDespedida{

	@Override
	public String adios() {
		// TODO Auto-generated method stub
		return "Adios con el corazón";
	}

}

package com.trifulcas.Interfaces;

public class Amigo3 implements ISaludo, IDespedida {

	@Override
	public String adios() {
		// TODO Auto-generated method stub
		return "Hasta luego Lucas";
	}

	@Override
	public String saludar() {
		// TODO Auto-generated method stub
		return "Como están los máquinas?";
	}

}

package com.trifulcas.Interfaces;

public interface ITotal {
	public int total();
}

package com.trifulcas.Interfaces;

import java.util.ArrayList;

import com.trifulcas.cartas.Carta;

public class Notas implements ITotal {
	private ArrayList<Integer> notas;
	
	public Notas() {
		notas=new ArrayList<>();
	}
	
	public int addNumero(int nota) {
		notas.add(nota);
		return notas.size();
	}

	@Override
	public int total() {
		int total=0;
		for(int nota:notas) {
			total+=nota;
		}
		return total;
	}
}

package com.trifulcas.Interfaces;

import java.util.ArrayList;

public class Alumno implements ITotal, ISaludo {
	public ArrayList<String> alumnos;
	
	public Alumno() {
		alumnos=new ArrayList<>();
	}

	@Override
	public String saludar() {
		
		return "Hola "+(alumnos.size()>0?alumnos.get(0):"");
	}

	@Override
	public int total() {
		// TODO Auto-generated method stub
		return alumnos.size();
	}
}

package com.trifulcas.Interfaces;

public interface IFigura {
	public void dibujar();
}

package com.trifulcas.Interfaces;

public interface IFigura2D extends IFigura {
	public double area();
}


package com.trifulcas.Interfaces;

public interface IFigura3D extends IFigura2D{
	public double volumen();
}


package com.trifulcas.Interfaces;

public class Cuadrado implements IFigura2D {
	private double lado;
	
	protected double getLado() {
		return lado;
	}
	protected void setLado(double lado) {
		this.lado = lado;
	}
	public Cuadrado(double lado) {
		this.lado=lado;
	}
	@Override
	public double area() {
		// TODO Auto-generated method stub
		return lado*lado;
	}

	@Override
	public void dibujar() {
		System.out.println("Cuadrado");

	}

}

Cartas Java

package com.trifulcas.cartas;

public abstract class Carta {
	private String palo;

	private int numero;

	protected String getPalo() {
		return palo;
	}

	protected void setPalo(String palo) {
		this.palo = palo;
	}

	public int getNumero() {
		return numero;
	}

	protected void setNumero(int numero) {
		this.numero = numero;
	}
	
	public abstract int getValor();

	@Override
	public String toString() {
		return getNumero()+" de "+getPalo();
	}
	
}


package com.trifulcas.cartas;

public class Espanyola extends Carta {

	
	@Override
	public int getValor() {
		return getNumero()<10?getNumero():10;
	}

}

package com.trifulcas.cartas;

public class Francesa extends Carta {

	@Override
	public int getValor() {
		// TODO Auto-generated method stub
		return getNumero();
	}

}


package com.trifulcas.cartas;

import java.util.ArrayList;

public class Baraja {
	private ArrayList<Carta> baraja=new ArrayList<>();
	
	public int addCarta(Carta carta) {
		baraja.add(carta);
		return baraja.size();
	}
	public int totalValor() {
		int total=0;
		for(Carta c:baraja) {
			total+=c.getValor();
		}
		return total;
	}
}

package com.trifulcas.cartas;

public class ProbarCartas {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Francesa f= new Francesa();
		f.setPalo("Picas");
		f.setNumero(8);
		System.out.println(f);
		
		Baraja miBaraja=new Baraja();
		
		miBaraja.addCarta(f);
		Espanyola e=new Espanyola();
		e.setPalo("Oros");
		e.setNumero(12);
		miBaraja.addCarta(e);
		
		System.out.println(miBaraja.totalValor());
	}

}

Clases Figuras

package com.trifulcas.figuras;

public abstract class Figura {
	private String nombre;
	
	public abstract void dibujar();

	protected String getNombre() {
		return nombre;
	}

	protected void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	
}

package com.trifulcas.figuras;

public abstract class Figura2D extends Figura {
	public abstract double area();
}

package com.trifulcas.figuras;

public abstract class Figura3D extends Figura2D{

	public abstract double volumen();
}

package com.trifulcas.figuras;

public class Cuadrado extends Figura2D {
	private double lado;
	
	protected double getLado() {
		return lado;
	}
	protected void setLado(double lado) {
		this.lado = lado;
	}
	public Cuadrado(double lado) {
		this.lado=lado;
	}
	@Override
	public double area() {
		// TODO Auto-generated method stub
		return lado*lado;
	}

	@Override
	public void dibujar() {
		System.out.println("Cuadrado");

	}

}

package com.trifulcas.figuras;

public class Circulo extends Figura2D {
	private double radio;
	
	
	protected double getRadio() {
		return radio;
	}

	protected void setRadio(double radio) {
		this.radio = radio;
	}

	public Circulo(double radio) {
		
		this.radio = radio;
	}

	@Override
	public double area() {
		return Math.PI*radio*radio;
	}

	@Override
	public void dibujar() {
		System.out.println("Círculo");

	}

}

package com.trifulcas.figuras;

public class Cubo extends Figura3D {
	private double lado;

	protected double getLado() {
		return lado;
	}

	protected void setLado(double lado) {
		this.lado = lado;
	}

	public Cubo(double lado) {
		this.lado = lado;
	}

	@Override
	public double volumen() {
		return Math.pow(lado, 3);
	}

	@Override
	public double area() {
		// Se puede hacer más sencillo pero así también
		// Ojo que acoplamos cubo a cuadrado
		Cuadrado c=new Cuadrado(lado);
		return c.area() * 6;
	}

	@Override
	public void dibujar() {
		System.out.println("Cubo");
	}

}

package com.trifulcas.figuras;

public class Esfera extends Figura3D {
private double radio;
	
	
	protected double getRadio() {
		return radio;
	}

	protected void setRadio(double radio) {
		this.radio = radio;
	}

	public Esfera(double radio) {
		
		this.radio = radio;
	}

	@Override
	public double volumen() {
		return 4/3*Math.PI*Math.pow(radio, 3);
	}

	@Override
	public double area() {
		return 4*Math.PI*Math.pow(radio, 2);
	}

	@Override
	public void dibujar() {
		// TODO Auto-generated method stub

	}

}
Cuadrado c=new Cuadrado(2);
		System.out.println(c.area());
		
		Circulo ci=new Circulo(1);
		System.out.println(ci.area());
		
		Cubo cu=new Cubo(2);
		System.out.println(cu.area());
		System.out.println(cu.volumen());
		
		Esfera e=new Esfera(1);
		System.out.println(e.area());
		System.out.println(e.volumen());


 

Y más ejemplos interfaces


public interface IGirar {
	public void izquierda();
	public void derecha();
}

public interface IAvanzar {
	public void adelante();
	public void atras();
}

public interface IVertical {
	public void arriba();
	public void abajo();
}

public class Tren implements IAvanzar {

	@Override
	public void adelante() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void atras() {
		// TODO Auto-generated method stub
		
	}

}


public class Coche implements IAvanzar, IGirar {

	@Override
	public void izquierda() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void derecha() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void adelante() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void atras() {
		// TODO Auto-generated method stub
		
	}

}

public class Torreta implements IGirar {

	@Override
	public void izquierda() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void derecha() {
		// TODO Auto-generated method stub
		
	}

}

public class Helicoptero implements IAvanzar, IGirar, IVertical {

	@Override
	public void arriba() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void abajo() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void izquierda() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void derecha() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void adelante() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void atras() {
		// TODO Auto-generated method stub
		
	}

}

Ejemplos Interfaces

public interface IVolar {
	public void volar();
}

public interface INadar {
	public void nadar();
}

public interface ICorrer {
	public void correr();
}

public interface IActivo {
	public boolean esActivo();
}

public interface ISaludo {
	public void hola();
	public void adios();
}

public class Delfin implements INadar, IActivo{

	@Override
	public void nadar() {
		System.out.println("Soy un delfín nadando en el inmenso mar");
		
	}

	@Override
	public boolean esActivo() {
		// TODO Auto-generated method stub
		return true;
	}

}

public class Pato implements IVolar, ICorrer, INadar, IActivo{

	@Override
	public void nadar() {
		System.out.println("Pato Nadando");
		
	}

	@Override
	public void correr() {
		System.out.println("Corriendo");
		
	}

	@Override
	public void volar() {
		System.out.println("Volando");
		
	}

	@Override
	public boolean esActivo() {
		// TODO Auto-generated method stub
		return true;
	}

}

public class Submarino implements INadar, IActivo {

	@Override
	public void nadar() {
		System.out.println("Inmersión!!");
	}

	@Override
	public boolean esActivo() {
		// TODO Auto-generated method stub
		return false;
	}

}


	public static void main(String[] args) {
		// El mismo polimorfismo que teniamos con la herencia
		// Lo tenemos con los interfaces

		ArrayList<INadar> cosas = new ArrayList<>();
		comprobar(new Delfin());
		comprobar(new Pato());
		comprobar(new Submarino());

		List<String> alumnos = new ArrayList<String>();

		Saludos pepe=new Saludos();
		pepe.hola();
		ISaludo ana=new Saludos();
		ana.adios();
	}

	public static void comprobar(IActivo elemento) {
		if (elemento.esActivo()) {
			System.out.println("A tope con la actividad");
		}
	}

Ejemplo Abstracta

public abstract class FiguraGeometrica {

	private int lados;

	public int getLados() {
		return lados;
	}

	public void setLados(int lados) {
		this.lados = lados;
	}
	
	public void yuju() {
		for(int i=0;i<10;i++) {
			System.out.println("¡YUJU!!");
		}
	}
	// Como un contrato en el que las clases derivadas
	// Se comprometen a implementarlos
	public abstract double perimetro();
	public abstract double area();
	
}

public class Cuadrado extends FiguraGeometrica {

	@Override
	public double perimetro() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double area() {
		// TODO Auto-generated method stub
		return 0;
	}

	

}


public class Rectangulo extends FiguraGeometrica {
	private double ancho;
	private double alto;

	public Rectangulo(double ancho, double alto) {
		this.ancho = ancho;
		this.alto = alto;
	}

	public Rectangulo(double ancho) {
		this(ancho,1);
	}

	public Rectangulo() {
		this(1);
	}

	public double getAncho() {
		return ancho;
	}

	public void setAncho(double ancho) {
		this.ancho = ancho;
	}

	public double getAlto() {
		return alto;
	}

	public void setAlto(double alto) {
		this.alto = alto;
	}

	public double perimetro() {
		return ancho * 2 + alto * 2;
	}

	public double area() {
		return ancho * alto;
	}

	public boolean oblongo() {
		return ancho > alto;
	}

}

Ejemplos polimorfismo


public class Empleado {
	private String nombre;
	protected int sueldo;
	
	// getters y setters
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public void setSueldo(int sueldo) {
		if (sueldo>900 && sueldo <10000) {
			this.sueldo = sueldo;
		}
		
	}
	public double sueldoNeto() {
		return sueldo*.87;
	}
	
	@Override
	public String toString() {
		return "Empleado [nombre=" + nombre + ", sueldo=" + sueldo + "]";
	}
	
}


public class Comercial extends Empleado {
	private double comision;
	private int ventas;
	
	public double getComision() {
		return comision;
	}
	public void setComision(double comision) {
		this.comision = comision;
	}
	public int getVentas() {
		return ventas;
	}
	public void setVentas(int ventas) {
		this.ventas = ventas;
	}
	@Override
	public double sueldoNeto() {
		return super.sueldoNeto()+ventas*comision;
	}
	
	
	
}


public class Directivo extends Empleado {
	@Override
	public double sueldoNeto() {
		return super.sueldoNeto()*2;
	}
}

	ArrayList<Vehiculo> tropa=new ArrayList<>();
		
		tropa.add(new Coche()); // Un coche es un vehículo
		tropa.add(new Bicicleta()); // Esto también
		tropa.add(new Coche());
		tropa.add(new Tanque()); // Y eso también lo es
		
		for(Vehiculo v:tropa) {
			v.acelerar(); // al acelerar estoy llamando al método de cada objeto
			v.derecha();
			System.out.println(v);
		}
		
		Empleado pepe=new Empleado();
		pepe.setSueldo(1000);
		Comercial ana=new Comercial();
		ana.setSueldo(1000);
		ana.setComision(.05);
		ana.setVentas(20000);
		Directivo antonio=new Directivo();
		antonio.setSueldo(5000);
		
		ArrayList<Empleado> empresa=new ArrayList<>();
		empresa.add(pepe);
		empresa.add(ana);
		empresa.add(antonio);
		int total=0;
		for(Empleado e:empresa) {
			total+=e.sueldoNeto();
			System.out.println(e.sueldoNeto());
		}
		System.out.println(total);
		
	}

Ejercicio Vehículo


public class Vehiculo {
	private int velocidad;
	private int direccion;
	protected int velocidadMaxima;
	protected int velocidadIncremento;
	protected int direccionIncremento;
	public Vehiculo() {
		// Me está diciendo como se comporta mi clase
		velocidadMaxima=200;
		velocidadIncremento=10;
		direccionIncremento=10;
	}
	public void acelerar() {
		velocidad+=velocidadIncremento;
		if (velocidad>velocidadMaxima) {
			velocidad=velocidadMaxima;
		}
	}
	public void frenar() {
		velocidad-=velocidadIncremento;
		if (velocidad<0) {
			velocidad=0;
		}
	}
	
	public void izquierda() {
		direccion+=direccionIncremento;
		if (direccion>=360) {
			direccion-=360;
		}
	}
	public void derecha() {
		direccion-=direccionIncremento;
		if (direccion<0) {
			direccion+=360;
		}
	}
	@Override
	public String toString() {
		return "Vehiculo [velocidad=" + velocidad + ", direccion=" + direccion + "]";
	}
	
	
	
}


public class Coche extends Vehiculo {
	public Coche() {
		velocidadMaxima=150;
	}
}


public class Bicicleta extends Vehiculo {

	public Bicicleta() {
		velocidadIncremento=3;
	}
}


public class Tanque extends Vehiculo {
	public Tanque() {
		direccionIncremento=90;
	}
}

Vehiculo v=new Vehiculo();
		v.acelerar();
		v.acelerar();
		v.derecha();
		v.derecha();
		System.out.println(v);
		for(int i=0;i<50;i++) {
			v.acelerar();
			v.derecha();
			System.out.println(v);
		}
		
		Coche c= new Coche();
		for(int i=0;i<50;i++) {
			c.acelerar();
			
			System.out.println(c);
		}
		
		Bicicleta b= new Bicicleta();
		for(int i=0;i<50;i++) {
			b.acelerar();
			
			System.out.println(b);
		}
		
		Tanque t=new Tanque();
		for(int i=0;i<5;i++) {
			t.derecha();
			
			System.out.println(t);
		}