// La sintaxis de una clase es muy sencilla 'class'
public class Alumno {
// Propiedades
String nombre;
// Funciones
void saludo() {
System.out.println("Hola " + nombre);
}
}
public class Coche {
String marca;
int velocidad=0;
void acelerar() {
System.out.println("brum brum");
// Lo interesante de las clases es que sus funciones
// Pueden acceder y modificar las propiedades
velocidad+=10;
}
void frenar() {
System.out.println("Ñññic");
velocidad-=10;
}
}
package com.trifulcas.oop;
public class Cuadrado {
// Cada objeto cuadrado tendrá su lado
double lado;
// Todas las funciones devuelven el valor en función
// de la propiedad de la clase, no como un parámetro
double area() {
return lado*lado;
}
double perimetro() {
return lado*4;
}
double diagonal() {
return Math.sqrt(lado*lado*2);
}
}
public class Introduccion {
public static void main(String[] args) {
// String es la plantilla y cadena es un objeto
// Cada cadena es una instancia de la clase String
String cadena="Hola que tal";
String otracadena="Hola que tal";
String yotracadena="Hola que tal";
// Como cada objeto es instancia de la clase String
// Todos comparten las mismas propiedades y funciones
System.out.println(cadena.length());
System.out.println(otracadena.length());
System.out.println(yotracadena.length());
// Yo tengo la clase Alumno
// La clase alumno es una plantilla para crear alumnos
// La palabra clave new es la que me crea el objeto
Alumno ana = new Alumno();
ana.nombre="Ana Pi";
ana.saludo();
Alumno eva=new Alumno();
eva.nombre="Eva Pérez";
eva.saludo();
// juan está declarado pero no he creado ningún objeto
// Es como si no existiera. No puedo poner juan.nombre="sss"
Alumno juan;
Coche seat=new Coche();
seat.marca="Seat Panda";
seat.acelerar();
seat.acelerar();
System.out.println(seat.velocidad);
seat.frenar();
System.out.println(seat.velocidad);
// Otro coche nuevo
Coche citroen=new Coche();
citroen.marca="Citroen";
for(int i=0;i<10;i++) {
citroen.acelerar();
}
System.out.println(citroen.velocidad);
// Esto no tiene sentido:
// Coche.marca="Seat";
// Las propiedades se ponen en los objetos, no en la clase
// Porque la clase es la plantilla
// Nosotros no usamos el plano de una casa para colgar un cuadro
// Cada objeto que creamos de la clase cuadrado
// Encapsula las funciones que nos dan información de su propia
// clase. No tenemos que pasar esos valores como parámetro
Cuadrado c1 = new Cuadrado();
c1.lado = 2;
System.out.println(c1.area());
System.out.println(c1.perimetro());
System.out.println(c1.diagonal());
System.out.println(cadena.toUpperCase());
// Yo puedo crear un ArrayList con la clase Cuadrado
// Igual que lo hacía de string o de cualquier otra cosa
ArrayList<Cuadrado> lista =new ArrayList<>();
for(int i=1;i<=10;i++) {
// Creo un objeto
Cuadrado c=new Cuadrado();
c.lado=i;
// Añado a la lista
lista.add(c);
}
// Recorrer esa lista
for(Cuadrado c:lista) {
// Imprimir el área
System.out.println(c.area());
}
Cuadrado a=new Cuadrado();
Cuadrado b=new Cuadrado();
a.lado=1;
b.lado=1;
System.out.println(a==b); // false porque no son el mismo objeto
}
}