Objetos y Clases
1. Creando una Clase
Java es un lenguaje de programación orientado a objetos, cual significa que todo en Java está asociado con un objeto y una clase (el plano para un objeto).
Por ejemplo, la línea de código que usamos en la actividad 1 es una llamada de un método de una clase pre definida llamada System
.
System.out.println("Hello World");
System
es una clase que se usa para manejar entradas y salidas del usuario.out
es una variable en la claseSystem
de clas/tipoPrintStream
.println()
es un método pre definido en la clasePrintStream
.
Otra clase con la cual hemos interactuados en ejercicios previos es `String`. La clase `String` define un par de reglas que determinan como una lista de caracteres deberían comportarse.
Con el siguiente código, creamos un objeto String
llamado name
usando las reglas definidas en la clase String
:
String name = "Patrick";
`System`, `PrintStream`, y `String` son clases pre definidas en Java. Sin embargo, no estamos limitados a solo usar ls clases pre definidas, y podemos crear nuestros propios tipos de data creando una clase. Esto es muy útil para que programadores puedan crear objectos específicos con ciertos atributos y comportamientos. Teniendo acceso a tipos de data definidos por el usuario nos permite crear distintos programas.
Vamos a aprender sobre las distintas partes de una clase:
Clase
Una clase es un plano o prototipo de un objeto nuevo. Por lo general, una clase contiene tres partes importantesÑ (1) campos de data/variables de instancia (2) constructor (3) métodos.
campos de data/variables de instancia: Estas son las variables que un objeto de esta clase tiene acceso a. Por ejemplo: Una clase llamada
Car
puede tener variablestire
de la claseTire
.constructor: un método para crear un objeto de esa Clase.
métodos: Los métodos de un objeto dentro de una clase.
Por ejemplo:
public class SampleClass{
// (1) campos de data/variables de instancia
private String name; // ejemplo
// (2) constructor
public SampleClass(){
name = "example";
}
// (3) métodos
public sampleMethod(){}
}
2. Vamos a Intentarlo 🐥
Vamos a crea una clase Bird
para representar a Patrick 🐥 y todos sus amigos pájaros siguiendo los siguientes pasos.
Primero, empezamos definiendo el nombre de la clase usando el formato public
class
name
.
public class Bird{}
Segundo, declaremos todos los campos de data que necesitaremos para la clase Bird: species, name, hobby, age, loveMusic.
Cada campo de data esta declarado en el formato: private
data type
name
;
.
Declaramos los 5 campos como
private
en la claseBird
. Nos ayuda a asegurarnos que la data solo pueda ser accesada dentro de su misma clase.Identifiquemos un tipo de data adecuado para cada campo:
species
debería serString
que guarde por ejemplo: “duck”, “swan”, “owl”.name
debería serString
que guarde por ejemplo: “Patrick”.hobby
debería serString
que guarde por ejemplo: “play basketball”.age
debería serint
que guarde por ejemplo: 25.loveMusic
debería serboolean
que guarde el valor true o false.
Por ejemplo, para declarar species
como una clase privada Bird
, usaríamos private String species;
.
- Termina de crear los 4 campos de data de la clase Bird.
Tercero, vamos a crear el constructor de la clase Bird
.
Usualmente, un constructor es un método que inicializa el valor de todos los campos. Teine el formato public
class name
(parameter)
. Tenemos 5 campos de data en la clase, y por eso tenemos 5 parametros/entradas en el constructor.
public Bird(String speciesInput, String nameInput, String hobbyInput, int ageInput, boolean loveMusicInput){
// cuerpo del constructor
}
En el cuerpo del constructor, necesitamos inicializar todas las variables de instancia, asignandole a cada campo de data un valor inicial:
species = speciesInput;
name = nameInput;
hobby = hobbyInput;
age = ageInput;
loveMusic = loveMusicinput;
Por último, vamos a crear unos métodos para la clase Bird
.
Vamos a crear 6 métodos para esta clase.
- getSpecies(); // retorna la especie de un pájaro
- getName(); // retorna el nombre de un pájaro
- getHobby(); // retorna el pasa tiempo de un pájaro
- getAge(); // retorna la edad de un pájaro
- getLoveMusic(); // retorna si al pájaro ama la música
- toString(); // retorna la information como un string
Intente escribir los primeros 5 métodos con lo que ha aprendido en los ejercicios previos.
Luego, vamos a escribir el método `toString()` juntos.
toString()
es un método que va a retornar un objeto de tipo String
.
Vamos a retornar un String que incluye todos los campos de la clase Bird
: name, age, species, hobby, loveMusic llamando los 5 métodos que implementaste.
public String toString(){
// inicializa la variable info a un String vacío.
String info = "";
// agrega información al objetor String en el siguiente formato:
// Hi, my name is [name]. I am a [age] year old [species] who likes to [hobby].
info = info + "Hi, my name is " + getName() +
". I am a " + getAge() + " year old " + getSpecies() +
" who likes to " + getHobby() + ". ";
// si al pájaro le gusta la música, appen the Bird likes music, append the String "I also like music very much!" to info
if(getLoveMusic()){
info = info + "I also like music very much!";
}else{
info = info + "However, I do not like music!";
}
// retorna el valor de la variable info
return info;
}
Si implementaste corectamente la clase Bird
, verás el siguiente mensaje luego de hacer click en Run
:
Felicidades! Haz implementado la clase Bird de forma correcta :)
Si hay algo incompleto o incorrecto cuando oprimas Run
:
- Tal vez te salga el error
Main.java:3: error: cannot access Bird
. - O si no, el mensaje,
Something is still not quite right!
.
3. Usando la clase Bird 🐥
Felicitaciones! Haz escrito su primera clase en Java, Bird
class. Ahora vamos a escribir un programa que utilice la clase para crea objectos de tipo Bird
.
Definimos la clase Bird
para tener los siguientes atributos (variables de instancia) and y comportamientos (métodos):
Para crear un objeto nuevo de una clase en particular, llamamos al de esa clase en el siguiente formato class name
variable name
=
new
constructor call
.
Recuerda que un constructor de la clase Bird
es lo siguiente:
public Bird(String speciesInput, String nameInput, String hobbyInput, int ageInput, boolean loveMusicInput);
Por esto, podemos crear un Bird con los siguientes atributos (species - duck; name - Patrick; hobby - hangout with friends; age - 15; loveMusic - true) con esta línea de codigo.
Bird patrick = new Bird("duck", "Patrick", "hangout with friends", 15, true);
Intenta crear multiples pájaros de distintas especies usando la clase Bird 🐦🐤🐔🐧
Próximo, usaremos el método `toString()` en los objetos de tipo `Bird` para imprimir la información de nuestros amigos. Puedes hacer una de las siguientes:
- Imprimir el valor que retorna el método
toString()
. (i.e.System.out.println(patrick.toString());
) - Imprimir el objecto
Bird
quen en cambio llama el métodotoString()
(i.e.System.out.println(patrick);
).
Intenta imprimir la informacíon de todos sus amigos pájaros 🐦🐤🐔🐧