La programación orientada a objetos (OOP) es un paradigma de programación que se basa en el concepto de "clases" y "objetos". Java es un lenguaje de programación que sigue de cerca los principios de la OOP. Aquí hay algunos conceptos clave:
Para poder seguir los siguientes ejemplos es necesario seguir esta guía y tener todo listo para comenzar a programar con Java 🫡
Antes de comenazar con la POO se debe repasar y entener los conceptós básicos de java. Crea la primera clase del proyecto que contenga el método main. Puedes agregar un comando que muestre "¡Hola mundo!", en la consola. Así podrás verificar si tus configuraciones son correctas. Además, puedes estudiar conceptos del lenguaje como:
- ¿Qué son las clases y cómo construirlas?
- ¿Qué son los métodos y cómo utilizarlos?
- ¿Qué tipos de datos existen en el lenguaje? (Recuerda los que más usaste en JavaScript y trata de buscar tipos similares).
- ¿Cómo crear un array usando Java?
- ¿Qué son los modificadores de acceso como:
public
,private
,protected
? - ¿Qué son los métodos constructores? ¿Cómo hacerlos?
- ¿Qué es el encapsulamiento? ¿Cómo hacerlo?
- ¿Qué es la herencia? ¿Cómo crearla en Java?
Recuerda también utilizar contenidos prácticos para comprender estos conceptos. ¡No pases mucho tiempo solo leyendo o viendo videos! ¡Crea códigos! Inténtalo, equivócate, inténtalo de nuevo, etc.
- Learn the Basics of Java Programming
- Programación Orientada a Objetos com Java
- Java Basic Syntax
- Java Data Types And Variables – Explained for Beginners
- Learn Java
- Java Classes and Objects
- Java Methods
En Java, todo se implementa a través de clases y objetos. Una clase es un plano o modelo a partir del cual se crean objetos. Un objeto es una instancia de una clase.
public class Person {
public String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.getName;
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person();
}
}
El encapsulamiento en Java se logra declarando atributos de clase como privados y proporcionando métodos públicos (getters y setters) para acceder y modificar esos atributos.
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.getName;
}
}
Java admite la herencia, que permite que una clase herede atributos y métodos de otra clase. La herencia se logra mediante la palabra clave extends.
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
// Método getter y setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void makeSound() {
System.out.println("🎶🎶🎶🎶🎶🎶🎶");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(getNombre() + " 🐶🐶🐶🐶 ¡Guau Guau!");
}
}
public class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(getNombre() + " 🐱🐱🐱🐱 ¡Miau Miau!");
}
}
Java permite el polimorfismo, lo que significa que un objeto puede tomar muchas formas. Esto se logra mediante la sobrecarga de métodos y la implementación de interfaces.
public interface MusicalInstrument {
void play();
}
public class Guitar implements MusicalInstrument {
@Override
public void play() {
System.out.println("🎸🎸🎸🎸🎸🎸");
}
}
public class Piano implements MusicalInstrument {
@Override
public void play() {
System.out.println("🎹🎹🎹🎹🎹🎹");
}
}
public class Main {
public static void main(String[] args) {
MusicalInstrument guitar = new Guitar();
MusicalInstrument piano = new Piano();
guitar.play();
piano.play();
}
}
Java permite la abstracción, que implica simplificar y modelar conceptos del mundo real en clases y objetos. La abstracción se logra mediante la declaración de clases abstractas e interfaces.
public abstract class Shape {
public abstract double calculateArea();
public void display() {
System.out.println("This is a shape.");
}
}
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
public void displayInfo() {
System.out.println("This is a circle with radius " + radius);
}
}
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
public double calculateArea() {
return length * width;
}
public void displayInfo() {
System.out.println("This is a rectangle with length " + length + " and width " + width);
}
}
public class Main {
public static void main(String[] args) {
Circle myCircle = new Circle(5.0);
Rectangle myRectangle = new Rectangle(4.0, 6.0);
myCircle.displayInfo();
System.out.println("Area of the circle: " + myCircle.calculateArea());
myRectangle.displayInfo();
System.out.println("Area of the rectangle: " + myRectangle.calculateArea());
}
}
Los conceptos de OOP se pueden aprender de varias fuentes. Aquí hay algunos enlaces útiles: