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();
}
}
}