Ejercicios de Programación Orientada a Objetos en Java: Estudiantes, Libros y Vectores
Clasificado en Informática
Escrito el en español con un tamaño de 8,55 KB
Ejercicio 1: Clase Estudiante Universitario en Java
Se solicita implementar en Java la clase EstudianteUniversitario
, la cual permitirá gestionar las notas de los estudiantes.
Funcionalidades Requeridas:
- Un constructor para cargar el nombre, número de matrícula e inicializar el array de las asignaturas como NO evaluadas.
- Métodos para consultar el DNI y el número de matrícula.
- Un método para consultar la nota de una asignatura a partir de su código.
- Un método para actualizar la nota de una asignatura.
- Un método para consultar si una asignatura está o no evaluada a partir de su código.
Implementación de un Método main
Implemente un método main
que haga uso de la clase EstudianteUniversitario
, solicitando al usuario el DNI y la matrícula para crear un nuevo estudiante.
Código de la Clase EstudianteUniversitario
public class EstudianteUniversitario {
private int DNI;
private int matricula;
private double[] notas;
private static final double NOEVALUADO = -1.0;
public EstudianteUniversitario(int d, int m) {
DNI = d;
matricula = m;
notas = new double[50];
for (int i = 0; i < notas.length; i++)
notas[i] = NOEVALUADO;
}
public int getDNI() {
return DNI;
}
public int getMatricula() {
return matricula;
}
public double nota(int codigo) {
if (codigo < 0 || codigo >= 50)
return -1.0;
else
return notas[codigo];
}
public void nota(int codigo, double nota) {
if (nota < 0.0 || nota > 10.0)
return;
else
notas[codigo] = nota;
}
public boolean evaluado(int codigo) {
if (codigo < 0 || codigo >= 50) {
System.out.println("Asignatura desconocida");
return false;
} else
return notas[codigo] != NOEVALUADO;
}
// Ejemplo de main
public static void main(String[] arg) {
int valorDNI = Teclado.readInt();
int valorMatricula = Teclado.readInt();
EstudianteUniversitario nuevoEstudiante =
new EstudianteUniversitario(valorDNI, valorMatricula);
double n = 5.0;
for (int i = 0; i < 10; i++) {
nuevoEstudiante.nota(i, n);
n++;
}
boolean evaluadoCalculo = nuevoEstudiante.evaluado(7);
System.out.println(evaluadoCalculo);
}
}
Ejercicio 2: Clases Libro y Librería en Java
Considerando la interfaz IArticulo
y la clase CodigoBarras
definidas en el mismo paquete, se desarrollarán las clases Libro
y Libreria
.
Clase Libro
Un libro está modelado por su precio (de tipo double
), un código de barras (objeto de la clase CodigoBarras
), un título, un autor y su ISBN.
Métodos:
- Un constructor sin argumentos que crea un libro con precio de 0 euros.
- Un constructor que toma como argumento el precio, código de barras, autor y título.
- Métodos para establecer y consultar su ISBN.
- Un método que devuelva el título del libro y el autor separados por una coma.
Clase Librería
Una librería está modelada por un array bidimensional de objetos de la clase Libro
.
Código de la Clase Libro
class Libro implements IArticulo {
private double precio;
private CodigoBarras codigo;
private String titulo, autor;
private int[] isbn;
public Libro() {
precio = 0;
codigo = new CodigoBarras(0);
isbn = new int[10];
for (int i = 0; i < isbn.length; i++) {
isbn[i] = 0;
}
}
public Libro(double precio, CodigoBarras codigo, String autor,
String titulo) {
if (precio >= 0) {
this.precio = precio;
}
if (codigo != null) {
this.codigo = codigo;
}
if (autor != null) {
this.autor = autor;
}
if (titulo != null) {
this.titulo = titulo;
}
isbn = new int[10];
for (int i = 0; i < isbn.length; i++) {
isbn[i] = 0;
}
}
public double getPrecio() {
return precio;
}
public void setPrecio(double p) {
if (p > 0)
precio = p;
}
public CodigoBarras getCodigoBarras() {
return codigo;
}
public int[] getISBN() {
return isbn;
}
public void setISBN(int[] is) {
if (is == null || is.length != 10)
return;
for (int i = 0; i < is.length; i++) {
if (is[i] < 0 || is[i] >= 10) {
return;
}
}
isbn = is;
}
public String tituloYAutor() {
return titulo + ", " + autor;
}
}
Código de la Clase Libreria
class Libreria {
Libro[][] l;
public Libreria(int numeroEstanterias, int tamanio) {
l = new Libro[numeroEstanterias][tamanio];
for (int i = 0; i < l.length; i++)
for (int j = 0; j < l[i].length; j++)
l[i][j] = null;
}
public void colocar(Libro ejemplar) {
for (int j = 0; j < l[0].length; j++) {
if (l[ejemplar.getCodigoBarras().getCodigo()][j] == null) {
l[ejemplar.getCodigoBarras().getCodigo()][j] = ejemplar;
}
}
}
public Libro prestar(int[] is, CodigoBarras cod) {
for (int j = 0; j < l[0].length; j++) {
if (is == l[cod.getCodigo()][j].getISBN()) {
Libro copia = l[cod.getCodigo()][j];
l[cod.getCodigo()][j] = null;
return copia;
}
}
return null;
}
}
Ejercicio 3: Clase Vector para Operaciones de Álgebra Vectorial en Java
Para realizar operaciones de álgebra vectorial, se modelan los vectores de tres dimensiones mediante la clase Vector
.
Código de la Clase Vector
public class Vector {
// Variable de ejemplar
private double[] coordenadas = new double[3];
// Creación de un vector a partir de tres coordenadas del extremo
public Vector(double x, double y, double z) {
coordenadas[0] = x;
coordenadas[1] = y;
coordenadas[2] = z;
}
// Método para calcular el módulo del vector
public double modulo() {
double modulo = 0.0;
for (int i = 0; i < coordenadas.length; i++)
modulo += coordenadas[i] * coordenadas[i];
return (Math.sqrt(modulo));
}
// Devuelve la coordenada en la dirección x
public double get_coordenada_x() {
return coordenadas[0];
}
// Devuelve la coordenada en la dirección y
public double get_coordenada_y() {
return coordenadas[1];
}
// Devuelve la coordenada en la dirección z
public double get_coordenada_z() {
return coordenadas[2];
}
// Devuelve un escalar, producto de él mismo con otro vector
public double ProductoEscalar(Vector n) {
return (coordenadas[0] * n.get_coordenada_x() +
coordenadas[1] * n.get_coordenada_y() +
coordenadas[2] * n.get_coordenada_z());
}
public static void main(String[] args) {
Vector vector1 = new Vector(1, 1, 1);
Vector vector2 = new Vector(2, 2, 2);
System.out.println("Módulo 1:" + vector1.modulo());
System.out.println("Módulo 2:" + vector2.modulo());
System.out.println("Producto escalar: " +
vector1.ProductoEscalar(vector2));
}
}
Ejercicio 4: Herencia e Interfaces con Animales en Java
Se presenta una estructura de clases e interfaces donde las clases Ave
y Mamifero
implementan la interfaz Animal
.
Ejemplo de Uso en un Método main
public static void main(String[] args) {
Animal[] a = new Animal[10];
for (int i = 0; i < 10; i++) {
if (Math.random() > 0.5) {
a[i] = new Ave();
} else {
a[i] = new Mamifero();
}
a[i].nacer();
if (a[i] instanceof Ave) {
((Ave) a[i]).empollar();
}
if (a[i] instanceof Mamifero) {
((Mamifero) a[i]).amamantar();
}
}
}