package com.trifulcas.oop; // La sintaxis de una clase es muy sencilla 'class' public class Alumno { // Propiedades String nombre; // 2) Para obligar a dar valor a alguna propiedad // El constructor de alumno requiere de un parámetro // de tipo String. Esto quiere decir que cuando // cree un objeto alumno le tendré que pasar un nombre Alumno(String nombre){ // ¿Qué es this? This hace referencia al propio objeto // Por qué aquí hace falta y en saludo no? // Lo uso para diferenciar entre el parámetro y la propiedad this.nombre=nombre; } // Funciones void saludo() { System.out.println(this.getSaludo() + this.nombre); // Sin this también funciona ¿Por qué? // Porque Java por defecto busca funciones y propiedades en this System.out.println(getSaludo() + nombre); } String getSaludo() { return "Hola que tal "; } }
public class Coche { String marca; int velocidad=0; public Coche(String marca) { super(); this.marca = marca; } 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; if (velocidad<0) { velocidad=0; } } }
public class Cuadrado { // Cada objeto cuadrado tendrá su lado double lado; // COnstructor: es una función especial que se llama // Cuando creamos (instanciamos) el objeto // se llama igual que la clase // ¿Para qué se usa? // 1) Para inicializar valores de mis propiedades // 2) Para obligar a dar valor a alguna propiedad Cuadrado() { lado=1; } // 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 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 Pi"); ana.saludo(); Alumno eva = new Alumno("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 Panda"); seat.acelerar(); seat.acelerar(); System.out.println(seat.velocidad); seat.frenar(); seat.frenar(); seat.frenar(); seat.frenar(); System.out.println(seat.velocidad); // Otro coche nuevo Coche citroen = new Coche("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 System.out.println("Cuadrado nuevo con constructor"); Cuadrado nuevo=new Cuadrado(); System.out.println(nuevo.lado); }