Ejercicio básico de programación orientada a objetos en Java
Crea una clase llamada Contador
que contenga un único atributo entero llamado cont.
La clase tendrá los siguientes
constructores:
Constructor por defecto
Constructor con parámetros para inicializar
el contador con un valor no negativo. Si el valor inicial que se recibe es
negativo el contador tomará el valor cero como valor inicial.
Constructor copia.
Además de los métodos getter y setter, la
clase contendrá los métodos:
incrementar: incrementa el contador en una
unidad.
decrementar: decrementa el contador en una
unidad. El contador nunca podrá tener un valor negativo. Si al decrementar se
alcanza un valor negativo el contador toma el valor cero.
Una vez creada la clase, escribe un método
main para probar la clase.
Solución:
//Ejercicio Básico Programación Orientada a Objetos Java
//Clase Contador
public class Contador {
private int cont;
//constructor por defecto
public Contador() {
}
//constructor con parámetros
public Contador(int cont) {
if (cont < 0) {
this.cont = 0;
} else {
this.cont = cont;
}
}
//constructor copia
public Contador(final Contador c) {
cont = c.cont;
}
//getter
public int getCont() {
return cont;
}
//setter
public void setCont(int cont) {
if (cont < 0) {
this.cont = 0;
} else {
this.cont = cont;
}
}
//método incrementar contador
public void incrementar() {
cont++;
}
//método decrementar contador
public void decrementar() {
cont--;
if (cont < 0) {
cont = 0;
}
}
}//Fin de la clase Contador
Un método
main para probar la clase puede ser este:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//Utilizar el constructor por defecto
Contador contador1 = new Contador();
int n;
System.out.println("Introduce valor para inicializar el contador: ");
n = sc.nextInt();
//asignar un valor al contador
contador1.setCont(n);
//incrementar el contador
contador1.incrementar();
//mostrar el valor actual
System.out.println(contador1.getCont());
contador1.incrementar();
contador1.incrementar();
//mostrar el valor actual
System.out.println(contador1.getCont());
//restar 1 al valor del contador
contador1.decrementar();
//mostrar el valor actual
System.out.println(contador1.getCont());
//crear un nuevo objeto Contador con valor inicial 10
Contador contador2 = new Contador(10);
//incrementar y decrementar el contador2 y mostrar su valor
contador2.incrementar();
System.out.println(contador2.getCont());
contador2.decrementar();
System.out.println(contador2.getCont());
//crear un objeto Contador utilizando el constructor copia
//se crea el objeto contador3 como copia de contador2
Contador contador3 = new Contador(contador2);
//mostrar el valor de contador3
System.out.println(contador3.getCont());
}//Ejercicio básico POO Java. Clase principal
Hola, actualmente me encuentro estudiando los ejercicios de java que propones, pero no entiendo por qué pides una copia del constructor y en el programa no muestras como funciona, la verdad no soy experta en ello pero me gustaría que me explicaras como funciona esta copia.
ResponderEliminarGracias por la atención prestada quedo atenta a cualquier indicación.
x2 no entiendo el funcionamiento del constrcutor copia
Eliminarimaginate que para instanciar un nuevo contador puedes hacer esto: Contador cont1 = new Contador(3);
EliminarAsí inicias tu contador con 3.
Ahora imagínate que por alguna razón quieres hacer otro contador que inicie con 3.
Ahí es donde entra el constructor copia.
Contador con2 = new Contador(con1)
Aquí el parámetro del constructor es otro contador que ya hemos creado.
Podrá parecer que es lo mismo pero no, en uno el parámetro es un entero y en el otro el parámetro es un objeto
Hola me retracto del comentario anterior, si usas el constructor copia.
ResponderEliminarMUCHAS GRACIAAAAS!!!!! Están geniales tus ejemplos y me están ayudando muchísimo.
ResponderEliminarbuenas.amigo para que es el constructor copia y el por defecto?
ResponderEliminarEl consstructor por defecto, como su nombre lo dice es el que llama por defecto un objeto cuando es creado sin argumentos.
Eliminarhola
ResponderEliminary en python saben como seria?
ResponderEliminarjava te crea un constructor por defecto sin parametros de todos modos si tu creas un constructor por defecto el primer objeto que crees en el main llamara al constructor por defecto el constructor por defecto java nos lo da si no hay otro constructor en este caso lo hemos creado porque va a haber otro constructor y se desea usar
ResponderEliminary el constructor copia,copia la informacion del constructor por defecto y en este caso este usa un atributo de tipo contador donde almacena esa informacion y se le pone la palabra reservada final para que el atributo contador no se pueda modificar esa es la funciona de final que un atributo no se pueda modificar.
ResponderEliminarGracias por responder mis dudas
ResponderEliminarCOMO PUEDO RESOLVER ESTE EJERCICIO
ResponderEliminarUna empresa del sector tecnológico desea tener un sistema de información para administrar toda la información de su personal. Se conoce la siguiente información de cada empleado: número de identificación, nombres, apellidos, fecha de ingreso, sueldo básico mensual, porcentaje promedio de cumplimiento en los proyectos que participa y número de proyectos en los que participa. Desde el punto de vista de la contratación, se tienen empleados con contrato a término fijo, con contrato indefinido y por prestación de servicios. Para determinar el sueldo mensual de cada empleado, se tiene en cuenta:
Si el contrato es a término indefinido y el porcentaje de cumplimiento en proyectos es superior al 90%, se incrementará el 10% al sueldo básico mensual.
Si el contrato es a término fijo y el porcentaje de cumplimiento en proyectos es superior al 90%, se incrementará el 8 % al sueldo básico mensual.
Si el contrato es por prestación de servicios y le porcentaje de cumplimiento en proyectos es superior al 90%, se incrementará el 2% por cada proyecto en el que participe.
escribeme ya lo resolvi
Eliminarbrandon.ayalaflores@gmail.com
ya te escribi
EliminarObjetivo de la tarea
ResponderEliminarComprender la forma de derivar una subclase.
Para esta actividad se tendrá que elaborar un programa en java utilizando herencia y diagrama UML; el ejercicio indica lo siguiente:
Descripción de la Actividad:
Implemente una superclase Factura. A continuación, construya las clases FacturaCredito y FacturaContado heredadas de la clase Factura. Una Factura tiene un número consecutivo y una fecha de creación. Una FacturaCredito tiene un plazo máximo para realizar su pago, y una FacturaContado tiene dos medios de pago: efectivo o tarjeta débito.
Construya las clases correspondientes, sus constructores y los métodos toString para cada una de las clases. Finalmente construya una nueva clase que permita hacer uso de las clases creadas inicialmente.
Ademas construya el respectivo diagrama UML cumpliendo los siguientes objetivos
Modelar el caso de uso
Modelar el diagrama de clase
me ayudan con este ejercicio porfa
Que pasaría si en un problema pidieran hacer un formulario y contabilizar cuantos hombres, mujeres, sean mujeres trabajadores, hombres trabajadoras, etc. Debería de hacer el mismo procedimiento? por q si fuese así debería de crear las variables tanto como en la clase y en el main, aparte de eso debería usar los métodos de acceso por cada variable. en ese caso q haría?
ResponderEliminarpublic class OcupacionDeMemoria {
ResponderEliminarstatic Runtime rm = Runtime.getRuntime();
private static void Memoria(){
int dataSize = 1024 * 1024;
System.out.println("Memoria máxima: "+rm.maxMemory()/ dataSize+ " MB");
System.out.println("Memoria total: "+rm.totalMemory()/ dataSize+ " MB");
System.out.println("Memoria libre: "+rm.freeMemory()/ dataSize+ " MB");
}
static int[] n = new int[100];
private static void conElementos(){
for(int i =0;i l = new ArrayList();
private static void variosElemento(){
for(int i=0;i<20 ;i++){
l.add(i);
}
Memoria();
}
private static void muchosElementos(){
for(int i=0;i<10000000 ;i++){
l.add(i);
}
Memoria();
}
public static void main(String[] args) {
System.out.println("Memoria Previa: ");
System.out.println("-----------------------------");
Memoria();
System.out.println("-----------------------------");
System.out.println("Memoria con array de 100 elementos creado: ");
System.out.println("-----------------------------");
conElementos();
System.out.println("-----------------------------");
System.out.println("Memoria con ArrayList y varios elementos: ");
System.out.println("-----------------------------");
variosElemento();
System.out.println("-----------------------------");
System.out.println("Memoria con ArrayList y gran cantidad de elementos: ");
System.out.println("-----------------------------");
muchosElementos();
System.out.println("-----------------------------");
}
}
public class Datos implements Serializable {
ResponderEliminarprivate String Nombre;
private String Apellido;
private static final long serialVersionUID = 65765L;
public Datos() {
}
public Datos(String Nombre, String Apellido) {
this.Nombre = Nombre;
this.Apellido = Apellido;
}
public String getNombre() {
return Nombre;
}
public void setNombre(String Nombre) {
this.Nombre = Nombre;
}
public String getApellido() {
return Apellido;
}
public void setApellido(String Apellido) {
this.Apellido = Apellido;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
@Override
public String toString() {
return "Datos{" + "Nombre=" + Nombre + ", Apellido=" + Apellido + ", UID" + serialVersionUID + '}';
}
public static void main(String[] args) throws IOException, ClassNotFoundException {
//objetos
Datos datos = new Datos();
Datos datos2 = datos;
//modificar ambas variables
datos.setNombre("daniel");
datos.setApellido("lauroba");
//verficacion
System.out.println(datos);
System.out.println(datos2);
System.out.println("---------------------\n");
//Clonacion
ByteArrayOutputStream byt = new ByteArrayOutputStream();
ObjectOutputStream out = null;
byte[] Datos = null;
try {
out = new ObjectOutputStream(byt);
out.writeObject(datos);
out.flush();
Datos = byt.toByteArray();
} finally {
try {
byt.close();
} catch (Exception e) {
}
}
Datos datos3 = null;
ByteArrayInputStream bis = new ByteArrayInputStream(Datos);
ObjectInputStream in = null;
try {
in = new ObjectInputStream(bis);
datos3 = (Datos) in.readObject();
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e) {
}
}
datos3.setNombre("frffff");
datos3.setApellido("ffffttttf");
System.out.println(datos);
System.out.println(datos3);
}
}
public class Contador {
ResponderEliminarArrayList elementos = new ArrayList();
ArrayList contador = new ArrayList<>();
/**
* Añadimos el elemento incremetando el contador
* @param value
*/
public void Count(T value) {
if (!elementos.contains(value)) {
elementos.add(value);
contador.add(1);
}else{
int index = elementos.indexOf(value);
contador.set(index, contador.get(index)+1);
}
}
/**
* Eliminamos el elemento decrementando el contador
* @param value
*/
public void discount(T value) {
if (elementos.contains(value)) {
int index = elementos.indexOf(value);
if(contador.get(index)==1){
elementos.remove(index);
contador.remove(index);
}else{
contador.set(index, contador.get(index)-1);
}
}
}
public void delete(T value) {
for (int i = 0; i < elementos.size(); i++) {
if(elementos.get(i).equals(value)){
elementos.remove(i);
}
}
for (int i = 0; i < elementos.size(); i++) {
System.out.println(elementos.get(i));
}
}
@Override
public String toString() {
for(int i=0;i contador1 = new Contador();
System.out.println("Metodo count: ");
contador1.Count(1);
contador1.Count(2);
contador1.Count(1);
contador1.Count(3);
contador1.Count(1);
contador1.Count(2);
contador1.Count(1);
contador1.Count(3);
System.out.println(contador1.toString());
System.out.println("-------------------\n");
System.out.println("Metodo discount: \n");
contador1.discount(2);
contador1.discount(1);
System.out.println(contador1.toString());
System.out.println("-------------------\n");
System.out.println("Metodo delete: \n");
contador1.delete(3);
}
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarpublic class NodeList {
ResponderEliminar//El propio elemento
private T elem;
//La referencia al siguiente elemento
private NodeList next = null;
//La referencia al anterior elemento
private NodeList prev = null;
public NodeList(T elemento) {
this.elem = elemento;
}
//Getters
public T getElem() {
return elem;
}
public NodeList getNext() {
return next;
}
public NodeList getPrev() {
return prev;
}
//setter
public void setElem(T elem) {
this.elem = elem;
}
public void setNext(NodeList next) {
this.next = next;
}
public void setPrev(NodeList prev) {
this.prev = prev;
}
}
public class Lista {
ResponderEliminar//El primer elemento de la lista
private NodeList first = null;
//El tamaño de la lista
private int length = 0;
public int size() {
return this.length;
}
public void add(int elem) {
NodeList act = new NodeList(elem); //Creamos el nuevo elemento
if (this.first != null) //Si la lista no está vacía
{
NodeList last = this.first;
//Busca el que no tenga siguiente, es decir, el último.
while (last.getNext() != null) {
last = last.getNext();
}
last.setNext(act);
act.setPrev(last);
} else {
this.first = act;
}
this.length++;
}
private NodeList search(int index) {
NodeList act = this.first;
for (int i = 0; i < index; i++) {
act = act.getNext();
}
return act;
}
public int get(int index) throws IndexOutOfBoundsException {
//Si el índice está dentro de los parámetros.
if (index >= 0 && index < this.length) {
NodeList elem = (NodeList) search(index);
return (int) elem.getElem();
}
throw new IndexOutOfBoundsException();
//return -1; //O cualquier convención, o incluso lanzamos una excepción.
}
public void set(int index, int elem) throws IndexOutOfBoundsException {
//Si el índice está dentro de los parámetros.
if (index >= 0 && index < this.length) {
NodeList act = (NodeList) search(index);
act.setElem(elem);
}else{
throw new IndexOutOfBoundsException();
}
//return -1; //O cualquier convención, o incluso lanzamos una excepción.
}
public void delete(int index) {
if (index >= 0 && index < this.length && this.first != null) {
if (this.length == 1) {
this.first = null;
} else {
if (index == 0) {
this.first = this.first.getNext();
this.first.setPrev(null);
} else {
NodeList act = (NodeList) search(index);
act.getPrev().setNext(act.getNext());
if (act.getNext() != null) {
act.getNext().setPrev(act.getPrev());
}
}
}
this.length--;
}
}
public String toString() {
if (this.length > 0) {
NodeList act = this.first;
String list = "[" + act.getElem();
for (int i = 1; i < this.length; i++) {
act = act.getNext();
list += "," + act.getElem();
}
return list + "]";
} else {
return "Lista vacía";
}
}
public static void main(String[] args) {
System.out.println("creamos array de lista");
Lista lista = new Lista<>();
System.out.println("añadimos elemencontos con (lista.add) ");
lista.add(1);
lista.add(2);
lista.add(3);
System.out.println(lista.toString());
System.out.println("--------------------------------");
System.out.println("buscamos la posicion del elemento: " + lista.get(2));
System.out.println("cambiamos el elemento de la poscion dada:");
lista.set(1, 7);
System.out.println("buscamos la posicion del elemento: " + lista.get(1));
System.out.println("--------------------------------");
System.out.println("borramos elemento");
lista.delete(2);
System.out.println(lista.toString());
System.out.println("--------------------------------");
System.out.println("Mostramos el tamaño: "+lista.size());
}
}
public class ListaArbolBinario {
ResponderEliminarprivate NodeTree raiz = null;
public void add(int _dato) {
NodeTree nuevo = new NodeTree(_dato);
if (raiz == null) {
raiz = nuevo;
} else {
NodeTree padre = raiz;
NodeTree act = raiz;
while (act != null) {
padre = act;
if (_dato < act.getDato()) {
act = act.getIzquierda();
} else {
act = act.getDerecha();
}
if (_dato < padre.getDato()) {
padre.setIzquierda(nuevo);
} else {
padre.setDerecha(nuevo);
}
}
}
}
public boolean existe(int _dato) {
NodeTree padre = raiz;
while (padre != null) {
if (_dato < padre.getDato()) {
padre = padre.getIzquierda();
} else {
if (_dato > padre.getDato()) {
padre = padre.getDerecha();
} else {
return true;
}
}
}
return false;
}
public boolean delete(int _dato) {
NodeTree padre = raiz;
NodeTree act = raiz;
//encontrar el hijo derecho o izquierdo para eliminarlo
while (padre.getDato() != _dato) {
act = padre;
}
return false;
}
public int Deep(int _dato) {
NodeTree padre = raiz;
int produndidad =0;
while(padre !=null){
if (_dato == padre.getDato()) {
return produndidad++;
}else{
if (_dato < padre.getDato()) {
padre = padre.getIzquierda();
}else{
padre = padre.getDerecha();
}
}
}
return -1;
}
public void Preorden(NodeTree n) {
if (n != null) {
System.out.println(n.getDato());
Preorden(n.getIzquierda());
Preorden(n.getDerecha());
}
}
public void inoder(NodeTree n) {
if (n != null) {
inoder(n.getIzquierda());
System.out.println(n.getDato());
inoder(n.getDerecha());
}
}
public void posorden(NodeTree n) {
if (n != null) {
inoder(n.getIzquierda());
inoder(n.getDerecha());
System.out.println(n.getDato());
}
}
public int min() {
NodeTree padre = raiz;
NodeTree last = null;
while (padre != null) {
last = padre;
padre = padre.getIzquierda();
}
System.out.println(last.getDato());
return last.getDato();
}
public int max() {
NodeTree padre = raiz;
NodeTree last = null;
while (padre != null) {
last = padre;
padre = padre.getDerecha();
}
System.out.println(last.getDato());
return last.getDato();
}
public int altura( NodeTree n) {
if(n == null){
return 0 ;
}else{
return 1+ Math.max(altura(n.getIzquierda()),altura(n.getDerecha()));
}
}
public static void main(String[] args) {
ListaArbolBinario arbol = new ListaArbolBinario();
arbol.add(3);
arbol.add(1);
arbol.add(6);
arbol.add(4);
arbol.add(7);
arbol.add(2);
arbol.add(8);
System.out.println("Existe: "+ arbol.existe(8));
System.out.println(arbol.Deep(8));
arbol.Preorden(arbol.raiz);
arbol.inoder(arbol.raiz);
arbol.posorden(arbol.raiz);
arbol.min();
arbol.max();
System.out.println(arbol.altura(arbol.raiz));
}
}
public class NodeTree {
ResponderEliminarprivate NodeTree derecha;
private NodeTree izquierda;
private int dato;
public NodeTree(int dato) {
this.dato = dato;
}
public NodeTree(NodeTree derecha, NodeTree izquierda, int dato) {
this.derecha = derecha;
this.izquierda = izquierda;
this.dato = dato;
}
public NodeTree getDerecha() {
return derecha;
}
public void setDerecha(NodeTree derecha) {
this.derecha = derecha;
}
public NodeTree getIzquierda() {
return izquierda;
}
public void setIzquierda(NodeTree izquierda) {
this.izquierda = izquierda;
}
public int getDato() {
return dato;
}
public void setDato(int dato) {
this.dato = dato;
}
}
public class Lista {
ResponderEliminarprivate NodeList inicio = null;
private int length = 0;
//muestra el tamaño
public int size() {
return this.length;
}
//mostrar si esta vacio o no
public boolean esVacio() {
return length == 0;
}
//añadir nuevo elemento al principio de la lista
public void add(int elem) {
if (inicio == null) {
inicio = new NodeList(elem);
} else {
NodeList act = new NodeList(elem);
NodeList pos = inicio;
for (int i = 1; i < length; i++) {
pos = pos.getSiguiente();
}
pos.setSiguiente(act);
act.setAnterior(pos);
length++;
}
}
//Obtener el elemento de una posición dada
public int get(int index) {
NodeList pos = inicio;
if (index >= 0 && index < this.length) {
for (int i = 1; i < length; i++) {
pos = pos.getSiguiente();
}
return pos.getElem();
}
return -1;
}
//modificar elemento de una posicion dada
public int set(int index) {
NodeList pos = inicio;
if (index >= 0 && index < this.length) {
for (int i = 1; i < length; i++) {
pos = pos.getSiguiente();
}
pos.setElem(index);
}
return 0;
}
//borrar
public void delete(int index) {
NodeList pos = inicio;
if (index >= 0 && index < this.length) {
for (int i = 1; i < length; i++) {
pos = pos.getSiguiente();
}
}
if (length == 1) {
inicio = null;
} else if (index == 0) {
pos.getSiguiente().setAnterior(null);
inicio = pos.getSiguiente();
} else if (index == length - 1) {
pos.getAnterior().setSiguiente(null);
} else {
pos.getAnterior().setSiguiente(pos.getSiguiente());
pos.getSiguiente().setAnterior(pos.getAnterior());
length--;
}
}
//mostrar lista
public void show() {
NodeList pos = inicio;
//recorrer lista
if (!esVacio()) {
for (int i = 0; i < this.length; i++) {
System.out.println("i: " + i +" " +pos.getElem());
pos = pos.getSiguiente();
}
}
}
public static void main(String[] args) {
Lista lista = new Lista();
System.out.println("añadir elementos:");
lista.add(1);
lista.add(2);
lista.add(3);
lista.add(4);
lista.add(5);
lista.add(6);
System.out.println("Mostramos lista de elementos");
lista.show();
System.out.println("obtener elemento de una posicion dada: "+lista.get(3));
System.out.println("modificar elemento de una posicion dada: "+lista.set(4));
lista.delete(4);
}
}
public class NodeList {
ResponderEliminar//atributos
private int elem;
private NodeList siguiente = null;
private NodeList anterior = null;
//constructor
public NodeList(int elemento){
this.elem=elemento;
}
public NodeList(int elemento, NodeList siguiente, NodeList anterior) {
this.elem = elemento;
this.siguiente = siguiente;
this.anterior = anterior;
}
//get y set
public int getElem() {
return elem;
}
public void setElem(int elem) {
this.elem = elem;
}
public NodeList getSiguiente() {
return siguiente;
}
public void setSiguiente(NodeList siguiente) {
this.siguiente = siguiente;
}
public NodeList getAnterior() {
return anterior;
}
public void setAnterior(NodeList anterior) {
this.anterior = anterior;
}
}
Este comentario ha sido eliminado por el autor.
ResponderEliminarpublic class Memoria{
ResponderEliminarstatic Runtime rm = Runtime.getRuntime();
private static void Memoria(){
int dataSize = 1024 * 1024;
System.out.println("Memoria máxima: "+rm.maxMemory()/ dataSize+ " MB");
System.out.println("Memoria total: "+rm.totalMemory()/ dataSize+ " MB");
System.out.println("Memoria libre: "+rm.freeMemory()/ dataSize+ " MB");
}
static int[] n = new int[100];
private static void conElementos(){
for(int i =0;i l = new ArrayList();
private static void variosElemento(){
for(int i=0;i<20 ;i++){
l.add(i);
}
Memoria();
}
private static void muchosElementos(){
for(int i=0;i<10000000 ;i++){
l.add(i);
}
Memoria();
}
public static void main(String[] args) {
System.out.println("Memoria Previa: ");
System.out.println("-----------------------------");
Memoria();
System.out.println("-----------------------------");
System.out.println("Memoria con array de 100 elementos creado: ");
System.out.println("-----------------------------");
conElementos();
System.out.println("-----------------------------");
System.out.println("Memoria con ArrayList y varios elementos: ");
System.out.println("-----------------------------");
variosElemento();
System.out.println("-----------------------------");
System.out.println("Memoria con ArrayList y gran cantidad de elementos: ");
System.out.println("-----------------------------");
muchosElementos();
System.out.println("-----------------------------");
}
}
public class Lista {
ResponderEliminar//El primer elemento de la lista
private NodeList first = null;
//El tamaño de la lista
private int length = 0;
/**
* Devuelve el tamaño.
*/
public int size() {
return this.length;
}
/**
* Añade un elemento al final de lista
*
* @param elem: El valor del elemento a añadir.
*/
public void add(T elem) {
NodeList act = new NodeList(elem); //Creamos el nuevo elemento
if (this.first != null) //Si la lista no está vacía
{
NodeList last = this.first;
//Busca el que no tenga siguiente, es decir, el último.
while (last.getNext() != null) {
last = last.getNext();
}
last.setNext(act);
act.setPrev(last);
} else {
this.first = act;
}
this.length++;
}
/**
* Busca un elemento dado un índice y lo devuelve.
*
* @param index: El índice del elemento a buscar empezando en 0
*/
private NodeList search(int index) {
NodeList act = this.first;
for (int i = 0; i < index; i++) {
act = act.getNext();
}
return act;
}
/**
* Devuelve el valor del elemento en una posición dada.
*
* @param index: La posición del elemento a buscar empezando en 0.
*/
public T get(int index) throws IndexOutOfBoundsException {
//Si el índice está dentro de los parámetros.
if (index >= 0 && index < this.length) {
NodeList elem = search(index);
return (T) elem.getElem();
}
throw new IndexOutOfBoundsException();
//return -1; //O cualquier convención, o incluso lanzamos una excepción.
}
/**
* Cambia el valor del elemento en una posición dada.
*
* @param index: La posición del elemento a cambiar empezando en 0.
* @param elem: El valor a establecer
*/
public void set(int index, T elem) throws IndexOutOfBoundsException {
//Si el índice está dentro de los parámetros.
if (index >= 0 && index < this.length) {
NodeList act = search(index);
act.setElem(elem);
} else {
throw new IndexOutOfBoundsException();
//return -1; //O cualquier convención, o incluso lanzamos una excepción.
}
}
/**
* Elimina el elemento en una posición dada.
*
* @param index: La posición del elemento a borrar empezando en 0.
*/
public void delete(int index) {
if (index >= 0 && index < this.length && this.first != null) {
if (this.length == 1) {
this.first = null;
} else {
if (index == 0) {
this.first = this.first.getNext();
this.first.setPrev(null);
} else {
NodeList act = search(index);
act.getPrev().setNext(act.getNext());
if (act.getNext() != null) {
act.getNext().setPrev(act.getPrev());
}
}
}
this.length--;
}
}
/**
* Muestra por pantalla el valor de todos los elementos de la lista.
*/
public String toString() {
if (this.length > 0) {
NodeList act = this.first;
String list = "[" + act.getElem();
for (int i = 1; i < this.length; i++) {
act = act.getNext();
list += "," + act.getElem();
}
return list + "]";
} else {
return "Lista vacía";
}
}
}
public class Ejecutable {
ResponderEliminarpublic static void main(String[] args) {
Lista prueba = new Lista();
//size
System.out.println("Tamaño sin nada: ");
System.out.println(prueba.size());
//add
System.out.println("Elementos añadidos");
prueba.add("Elemento1");
prueba.add("Elemento2");
prueba.add("Elemento3");
prueba.add("Elemento4");
//size
System.out.println("Muestra el tamaño: ");
System.out.println(prueba.size());
//get
System.out.println("Obtenemos el tercer elemento: ");
System.out.println(prueba.get(3));
//toString
System.out.println("Recorremos la lista de inicio a fin: ");
System.out.println(prueba.toString());
//set
System.out.println("Modificamos el valor del 4º elemento: ");
prueba.set(3, "ElementoModificado");
//toString
System.out.println("Volvemos a Mostrar los elementos: ");
System.out.println(prueba.toString());
//delete
System.out.println("Eliminamos el 2 elemento");
prueba.delete(1);
//toString
System.out.println("Listamos todo de nuevo");
System.out.println(prueba.toString());
}
}
¿Es necesario hacer un constructor por defecto?
ResponderEliminar