Ejercicios con arrays en Java

Última actualización: octubre 2024

En este post, os propongo algunos ejercicios con arrays en Java para practicar lo explicado en el post anterior en el que contaba como trabajar con los arrays. Como siempre digo, existen varias soluciones posibles para resolver un mismo problema, unas más eficientes que otras. Aquí podéis ver una solución posible para cada ejercicio propuesto.

Ejercicio 1: Numero veces letra en texto

Escribe un programa que pida al usuario que introduzca un texto y una letra. Después el programa tiene que calcular y presentar por pantalla, cuantas veces aparece la letra en el texto.

Sigue leyendo Ejercicios con arrays en Java

Arrays en Java

Última actualización: octubre 2024

Continuando con las notas de Java, vamos a ver cómo trabajar con los Arrays en Java. Un array o arreglo, es un grupo de varias variables del mismo tipo que se agrupan bajo un mismo nombre.

Los arrays son útiles porque permiten trabajar con muchos datos de un mismo tipo sin tener que declarar cada variable individualmente. En lugar de crear una variable para cada valor, creamos un array y accedemos a cada dato empleando un número (llamado indice) que indica la posición del dato en el array.

En los arrays, los elementos están ordenados de forma secuencial, y cada posición se identifica con un índice. Los índices del array empiezan siempre con el valor 0 que apunta a la posición 1, el indice de valor 1 apunta a la posición 2 y así sucesivamente.

Accedemos a cada elemento del array utilizando el índice. Por ejemplo, si queremos acceder al elemento del array que ocupa la posición 5, tendríamos que referenciarlo usando el valor 4 para el índice, ya que empezamos a contar desde cero.

Declarar un array

Para poder trabajar con un array, lo primero que tenemos que hacer es declararlo.

Cuando declaramos un array, definimos el tipo de las variables que almacenaremos en el array (recordad que son todas del mismo tipo). A continuación, abrimos y cerramos corchetes, y después escribimos el nombre del array. La sintaxis sería la siguiente:

<type>[] variable_name

Por ejemplo, la declaración de un array de enteros llamado misNumeros y de un array de textos llamado nombres sería:

int[ ] misNumeros
String[ ] nombres

Sin embargo, para acabar de crear el array y reservar espacio en memoria para sus valores, hay que especificar el tamaño del mismo. Es decir, cuantas variables del tipo declarado va a contener. La sintaxis es:

variable_name =  new type[size]

Para los dos arrays anteriores (misNumeros y nombres), suponiendo que el primero va a contener 7 números enteros y el segundo 5 nombres, las instrucciones para crearlos serían:

misNumeros = new int[7]
nombres = new String [5]
Sigue leyendo Arrays en Java

Herencia en Java

Última actualización: julio 24

La herencia es un proceso mediante el cual heredamos una serie de características de nuestros antecesores. La herencia en Java la podemos definir como un mecanismo para definir una clase nueva a partir de otra ya existente. La clase nueva hereda de la existente sus parámetros y métodos, que no hace falta definirlos de nuevo, sencillamente los hereda. Además, dicha clase nueva puede incluir nuevos parámetros y métodos propios, extendiendo la clase ya existente.

Se denomina clase padre o superclass a la clase existente de la que hereda la nueva clase que es conocida como clase hija.

Para entender y practicar con la herencia de clases, vamos a emplear el siguiente esquema:

Herencia en Java
Herencia en Java

En este esquema, la superclase es “Vehículo rodado”, de la que heredan dos clases: “Coche” y “Bicicleta”. Además, tenemos otras dos clases: “Descapotable” y “Sedan”, que heredan de la clase “Coche”, que para aquellas dos clases sería la superclase.

Sigue leyendo Herencia en Java

Sobrecarga de constructores en Java

Última actualización: julio 24

Antes de explicar la sobrecarga de constructores en Java, voy a recordar brevemente que son los constructores y que es la sobrecarga.

Los constructores son métodos de la clase con el mismo nombre que esta, que se emplean para instanciar objetos de la misma.

La sobrecarga de métodos consiste en tener varios métodos distintos con el mismo nombre, siempre y cuando acepten distintos tipos de parámetros. De otra forma, Java no tendría posibilidad de distinguirlos y saber a que método nos referimos cuando lo llamáramos.

Sigue leyendo Sobrecarga de constructores en Java

Modificador static

Última actualización: Julio 24

El modificador static se emplea para hacer accesible una clase, parámetro, método o bloque, sin necesidad de instanciar un objeto de la clase en la que está definido.

Para el caso de una clase static, únicamente tiene sentido para las inner class. Es decir, para clases definidas dentro de otras clases. Al declarar una inner class como static, podríamos acceder a ella sin necesidad de instanciar la clase en la que está incluida.

Un método static sería directamente accesible invocándolo, sin necesidad de generar un objeto de la clase en la que está definido. El ejemplo más obvio es el método main, que es el que busca Java para empezar la ejecución de un programa, y tiene que estar accesible sin instanciar un objeto de la clase. Por ello es declarado como public static.

Sigue leyendo Modificador static

Métodos getter y setter

Última actualización: Julio 24

Los métodos getter y setter se emplean para acceder a los parámetros de una clase a través de funciones, lo que nos proporciona mayor seguridad y control sobre el acceso y modificación de los mismos.

Acceso a los parámetros

La manera de acceder a los parámetros que hemos visto hasta ahora, requiere que estos estén definidos como públicos, que es el valor que toma por defecto sino utilizamos ningún modificador.

En el caso de la clase Coche, si por ejemplo tomamos el parámetro añoFabricación, este está definido como:

int añoFabricacion

lo que es equivalente a:

public int añoFabricacion
Sigue leyendo Métodos getter y setter

Objetos en Java

Última actualización: Julio 24

Un objeto es la pieza básica de la programación orientada a objetos y pretende representar una entidad del mundo real. Un programa java típico, creará varios objetos invocando constructores de la clase que corresponda.

Un objeto concreto viene representado por su:

  • Estado: representado por los atributos del objeto que almacenamos en los parámetros del mismo.
  • Comportamiento: representado por los métodos del objeto.
  • Identidad: el nombre que damos al objeto le proporciona una identidad única que le permite interactuar con otros objetos.

Instanciar un objeto

Por instanciar un objeto en Java, entendemos crear un objeto con el comando new, llamando a un constructor de la clase asociada. Decimos que hemos creado una instancia de la clase, un objeto concreto con valores concretos para sus parámetros.

Todas las instancias de objetos de una clase, comparten los mismos parámetros y métodos, como no podía ser de otra forma, ya que todos están creados con el mismo molde definido en la clase.

Para entenderlo bien, vamos a continuar con una actividad, practicando con estos conceptos.

Sigue leyendo Objetos en Java

Clases en Java

Última actualización: julio 24

En esta ocasión vamos a ver que son las Clases en Java. Introduciré el concepto de programación orientada a objetos y explicaré como declarar las Clases: definirlas para poder luego crear objetos con ellas.

La programación orientada a objetos

Las clases y los objetos, son dos conceptos básicos de la programación orientada a objetos, que tenemos que entender muy bien.

Una Clase es un molde definido por el usuario que empleamos para crear objetos. Este molde incluye una serie de propiedades y métodos que son comunes a todos los objetos creados con una clase.

La clase puede ser vista como un molde y el objeto como una implementación concreta sacada de ese molde. Por lo que con una clase podemos generar muchos objetos que tendrán las mismas características.

La programación orientada a objetos basa toda la codificación en objetos, que intentaran similar objetos reales o conceptos.  Dicho así puede sonar un poco abstracto, pero cuando practiquemos programando nos quedará claro este concepto.

Declaración de una Clase

La declaración de una clase incluye los siguientes componentes:

  • Modificadores: debe ser public para asegurar el acceso desde otras clase o tener el acceso por defecto.
  • Nombre: Para identificar a la clase. Debe de empezar con una letra mayúscula.
  • Superclase (si existe): Es el nombre de la clase padre si la tuviera. Hablaré de la clase padre cuando introduzcamos el concepto de herencia. En la declaración de la clase, el nombre de la superclase aparecerá precedido por la palabra clave extends.
  • Interfaces (si hay): Una lista de interfaces implementados por la clase, separados por comas, precedidos por la palabra clave implements. Una clase implementa uno o más interfaces.
  • Cuerpo: Bloque de instrucciones de la clase, entre corchetes { }.

Declaración de una clase:

class MiClase extends MiSuperClass implements UnInterface {
    < parámetros, construtores y métodos >
}

Este ejemplo de declaración de clase nos indica que la clase MiClase es hija de la superclase MiSuperClass y que además implementa el interface UnInterface.

Una clase tiene que ser programada en un fichero java con el nombre de la clase. Por ejemplo, la clase Coche debería estar programada en un fichero llamado Coche.java

Una clase contiene constructores que son métodos empleados para crear objetos a partir del molde de la clase. Cuando en nuestro programa, queramos crear un objeto de una clase, invocaremos a un constructor de dicha clase.

 Los constructores se declaran como métodos, con la particularidad de que tienen que tener el mismo nombre que la clase y que no devuelven ningún valor.

Parámetros, constructores y métodos

Las clases representan atributos y comportamientos. Los atributos son definidos por los parámetros que son variables que definimos en la clase. Y los comportamientos están definidos por los métodos de la clase.

En la siguiente actividad, practicamos con estos dos conceptos:

Actividad: Declarando Clases

  1. Abre un proyecto nuevo en el IDE que estes empleando.
  1. Lo primero que vamos a hacer es crear un nuevo fichero donde programaremos nuestra clase. La Clase la llamaremos Coche y por tanto el fichero será Coche.java
  2. Para crear el fichero nuevo, empleamos la opción de “New File” disponible en todos los IDEs:
  1. Empezamos definiendo los parámetros de la clase, que son las variables que definirán cada uno de los objetos que generemos con la clase. Para nuestro ejemplo de un coche, definiremos los siguientes parámetros:
  • CV: La potencia del motor del coche expresado en CV
  • numeroPuertas: El número de puertas que tiene el coche.
  • propietario: el dueño del coche.
  • color: color del coche.
  • combustible: el tipo de combustible que consume el coche
  • encendido: variable booleana para indicar si el coche está o no encendido
  • porcentajeTanqueLleno: porcentaje del tanque de combustible que está lleno
  1. Todos estos parámetros serían variables que programamos al principio de la clase. Para ello, introducimos el siguiente código en el fichero Coche.java que acabamos de crear.
public class Coche{
    int CV;
    int numeroPuertas;
    int añoFabricacion;
    String propietario;
    String color;
    String combustible;
    boolean encendido;
}
  1. Lo siguiente sería crear un constructor de la Clase. El constructor es un método que tiene el nombre de la Clase y que emplearemos para crear un objeto de la clase. Tiene que ser declarado como public, para que sea accesible desde fuera de la Clase. Un ejemplo sería el siguiente código en el que sólo empleamos dos parámetros en el constructor: el número de puertas y el propietario.
public Coche(int np, String pro){
   this.numeroPuertas = np;
   this.propietario=pro;
}
  1. El constructor recibe dos parámetros: np y pro, que se pasaran al constructor cuando se emplee este para crear un objeto. Dichos valores se almacenaran en los parámetros numeroPuertas y propietario, respectivamente. La palabra reservada this hace referencia al objeto que se este creando con el constructor, por lo que los valores pasados al constructor se almacenaran en los parámetros correspondientes del objeto.
  2. Además, creamos tres métodos: arranque, parado y llenadoTanque. El código de estos métodos sería:
public void arranque(){
    if (porcentajeTanqueLleno>5){
        encendido = true;
    }
}
public void parado(){
    encendido = false;
}
public int llenadoTanque(){
    if (porcentajeTanqueLleno<80){
        porcentajeTanqueLleno = 100;
    }
    return porcentajeTanqueLleno;
}
  1. El método arranque simula el arranque del coche, poniendo el parámetro encendido a verdadero. Aunque antes comprueba que al menos tengamos un 5% del tanque de combustible lleno.
  2. El método parado, sencillamente apaga el coche haciendo la variable encendido falsa
  3. Y el método llenadoTanque, simula el llenado del tanque de combustible poniendo a 100 el parámetro porcentajeTanqueLleno, siempre y cuando no lo tuviéramos más lleno del 80%, en cuyo caso lo deja como está.
  4. Con todo ello, el código completo de la Clase Coche quedaría:
public class Coche{
    int CV;
    int numeroPuertas;
    int añoFabricacion;
    String propietario;
    String color;
    String combustible;
    boolean encendido;
    int porcentajeTanqueLleno;
    public Coche(int np, String pro){
        this.numeroPuertas = np;
        this.propietario=pro;
    }
    public void arranque(){
        if (porcentajeTanqueLleno>5){
            encendido = true;
        }
    }
    public void parado(){
        encendido = false;
    }
    public int llenadoTanque(){
        if (porcentajeTanqueLleno<80){
            porcentajeTanqueLleno = 100;
        }
        return porcentajeTanqueLleno;
    }
}

De momento, no hemos usado la clase, sencillamente la hemos programado y explicado su código. En las próximos posts continuaremos desarrollando la clase y comenzaremos a utilizarla.

NOTA:

Este post es parte de la colección “Java”. Puedes ver el índice de esta colección aquí.

Ejercicios con métodos en Java

En este post dejo algunos ejercicios con métodos en Java para practicar lo explicado en el post anterior en el que contaba como trabajar con métodos.

Como siempre os digo, existen varias soluciones posibles para resolver un mismo problema, unas más eficientes que otras. Aquí podéis ver una solución posible para cada ejercicio propuesto.

Ejercicio 1

Codifica el método «operacion» que falta en el siguiente programa.

public class UnMetodo {
    public static void main(String args[]) {
       double x =7, y = 9, resultado = 0;
       for (int i=1; i<5; i++){
          operacion (x,y,i);
       }
    }
}
Sigue leyendo Ejercicios con métodos en Java

Métodos en Java

Última actualización: julio 24

En este post voy a explicar como trabajar con los métodos en Java. Todos los lenguajes de programación tienen métodos, aunque pueden referirse a ellos como funciones o procedimientos.

Un método es una colección de sentencias que realizan una tarea específica. Puede retornar un valor que podemos utilizar en nuestro programa o no retornar ninguno, esto es opcional. Empleando métodos ahorramos tiempo al no tener que reescribir un conjunto de sentencias varias veces. Sencillamente, cuando tengamos que ejecutar la tarea que realiza el método, llamaremos al mismo sin tener que teclear de nuevo todas las sentencias de la tarea.

Declaración

En la siguiente figura, se puede observar la sintaxis de declaración de un método:

Estructura de un método en Java
Estructura de un método en Java
Sigue leyendo Métodos en Java