Está en la página 1de 4

TRABAJO DE PROGRAMACIÓN ORIENTADO A OBJETOS

N° Orden: 4

Grupo: 1

Alumno: Córdova Manrique, Jorge Eleo

Sección: O

CONCEPTOS PREVIOS:

 Clase abstracta: Es una clase que no se puede instanciar directamente, lo que significa
que no puedes crear objetos directamente a partir de una clase abstracta. En su lugar,
se utiliza como una plantilla o base para otras clases que heredan de ella. Las clases
abstractas se utilizan para definir un conjunto común de métodos y propiedades que
las clases derivadas deben implementar. Estos métodos y propiedades se conocen
como métodos y propiedades abstractas. Las clases abstractas son útiles cuando
deseas crear una estructura jerárquica de clases y quieres garantizar que ciertos
comportamientos estén disponibles en todas las clases derivadas.
 Clase Interface: Una interfaz (también conocida como "interface" en inglés) es un
concepto en programación orientada a objetos que permite definir un conjunto de
métodos que deben ser implementados por cualquier clase que la utilice. Las
interfaces proporcionan un mecanismo para definir contratos o acuerdos en términos
de métodos que una clase debe proporcionar, sin especificar la implementación
concreta de esos métodos. Las interfaces se utilizan comúnmente en lenguajes de
programación como Java, C#, y otros para lograr la abstracción y la definición de
comportamiento en una aplicación.
 Array.sort: En Java, que se utiliza para ordenar elementos en un array en Java. En Java,
el método Arrays.sort() se utiliza para ordenar un array de elementos en orden
ascendente, y se basa en algoritmos de ordenación eficientes.
 GregorianCalender: Es una clase en Java que forma parte del paquete java.util y se
utiliza para trabajar con calendarios gregorianos. El calendario gregoriano es el
calendario utilizado internacionalmente para fines civiles, y es el calendario que se
utiliza comúnmente en la mayoría de los países. La clase GregorianCalendar se utiliza
para representar y manipular fechas en el calendario gregoriano.

DIAGRAMA DE CLASE:
CODIFICACIÓN:

package javaapplication23;
import java.util.Arrays;
import java.util.GregorianCalendar;

//Creo mi clase abstracta llamada Alumno


abstract class Alumno{
protected String nombre; //Nombre del alumno
protected String apellido; //Apellido del alumno
//Metodo constructor, las clases abstractas pueden tener
constructores, pero SOLAMENTE para ser usados desde los
constructores de las clases hijas,
//no puedes usarlos directamente por definicion de clase
abstracta
public Alumno(String nombre,String apellido){
this.nombre=nombre;
this.apellido=apellido;
}

//Metodo abstracto que sera implementado por las clase hija Nota
public abstract void imprimirlistado();
}

//Clase interface para garantizar la existencia del método


imprimirlistado de la clase abstracta Alumno
interface Imprimible{
void imprimirlistado();
}
//Clase hija Nota
class Nota extends Alumno implements
Imprimible,Comparable<Nota>{ //Extends Alumno: Es hija de la clase
abstracta Alumno, implements Imprimible: Vinculo con la clase
interfaza Imprimible,

// implements Comparable<Nota>: para comparar la nota de la lista de


alumnos.
private int nota; //Nota del alumno
private GregorianCalendar fechaEntrega; //Fecha de entrega del
examen revisado para reclamos

//Metodo constructor
public Nota(String nombre,String apellido, int nota, int año,
int mes,int dia){
super(nombre,apellido);
this.nota = nota;
this.fechaEntrega = new GregorianCalendar(año, mes-1, dia);
//mes - 1 ya que en GregorianCalander enero es 0
}

//El Override es utilizado para indicar que un metodo en una


clase hija esta destinado a anular un metodo heredado de una
superclase

//Metodo de la clase abstracta Alumno


@Override
public void imprimirlistado(){
System.out.println("Nombre y apellido: "+nombre+"
"+apellido+", nota: "+nota+", Fecha de Entrega de Examenes para
reclamo: "+fechaEntrega.get(GregorianCalendar.YEAR)+"-"+
(fechaEntrega.get(GregorianCalendar.MONTH)
+1)+"-"+fechaEntrega.get(GregorianCalendar.DAY_OF_MONTH));
}
//Metodo compareTo
@Override
public int compareTo(Nota notita) {
return notita.nota - this.nota;
}
}

//Clase principal (main)


public class JavaApplication23 {

public static void main(String[] args) {


//Creando el array de la lista de los alumnos
Imprimible[] listaAlumnos = new Imprimible[6];

//Agregando alumnos a la lista


Nota alumno1 = new Nota("Jorge","Cordova",19,2023,10,15);
Nota alumno2 = new Nota("Diego","Castillo",13,2023,10,16);
Nota alumno3 = new Nota("Arturo","Manrique",15,2023,10,17);
Nota alumno4 = new Nota("Pedro","Cruz",16,2023,10,18);
Nota alumno5 = new Nota("Vitor","Torres",9,2023,10,19);
Nota alumno6 = new Nota("Alex","Sanchez",10,2023,10,20);

listaAlumnos[0] = alumno1;
listaAlumnos[1] = alumno2;
listaAlumnos[2] = alumno3;
listaAlumnos[3] = alumno4;
listaAlumnos[4] = alumno5;
listaAlumnos[5] = alumno6;

//Imprimimos el array
System.out.println("\nListado de Alumnos antes del
ordenamiento:");
for (Imprimible estudiante : listaAlumnos) {
estudiante.imprimirlistado();
}

Arrays.sort(listaAlumnos);

//Imprimimos de nuevo el array de alumnos por nota de mayor


a menor
System.out.println("\nListado de Alumnos después del
ordenamiento:");
for (Imprimible estudiante : listaAlumnos) {
estudiante.imprimirlistado();
}

RESULTADO:

También podría gustarte