Foros del Web » Programación para mayores de 30 ;) » Java »

Iterador

Estas en el tema de Iterador en el foro de Java en Foros del Web. Hola, Estoy haciendo un ejercicio orientado a estructuras, llevo más de dos semanas con él y no consigo ver la luz, os pido ayuda por ...
  #1 (permalink)  
Antiguo 08/05/2014, 08:18
 
Fecha de Ingreso: mayo-2014
Mensajes: 1
Antigüedad: 10 años
Puntos: 0
Iterador

Hola,

Estoy haciendo un ejercicio orientado a estructuras, llevo más de dos semanas con él y no consigo ver la luz, os pido ayuda por favor, os lo agradecería mucho.

El ejericicio consta en hacer un parking, este parking tiene plantas, secciones, zonas y plazas. Existe una clase parking que debe crea un TreeIF.

Las clases root, ParkingFloor, ParkingSection, ParkingArea y ParkingSpace deben tener un método getIterator que devuelve un iterador sobre los hijos de un nodo.

No se cómo hacer ese iterador.

Os dejo la clase parking, un de las clases que debe tener el iterador

package eped.parking;

import eped.parking.tads.IteratorIF;
import eped.parking.tads.TreeDynamic;
import eped.parking.tads.TreeIF;

public class Parking {

private ParkingState parkingState;
private final int NUM_SPACES = 288;
private TreeIF<ParkingElementIF> parkingTree;

Root root = new Root();

ParkingDispatcher pkD = new ParkingDispatcher();

IteratorIF<TreeIF<ParkingElementIF>> IT1;
IteratorIF<TreeIF<ParkingElementIF>> IT2;
IteratorIF<TreeIF<ParkingElementIF>> IT3;
IteratorIF<TreeIF<ParkingElementIF>> IT4;
IteratorIF<TreeIF<ParkingElementIF>> IT5;

public boolean hasSpace;

public Parking(){
parkingState = new ParkingState(NUM_SPACES);
makeParking();
IT1 = root.getIterator();
}

public void makeParking(){
parkingTree = new TreeDynamic<ParkingElementIF>();
for(int i = 1; i <= 6; i++){
ParkingFloor parkingFloor = new ParkingFloor(i);
for(TSection section : TSection.values()){
ParkingSection parkingSection = new ParkingSection(section);
parkingSection.setRoot(parkingFloor);
parkingFloor.addChild(parkingSection);
for(TArea area : TArea.values()){
ParkingArea parkingArea = new ParkingArea(area);
parkingArea.setRoot(parkingSection);
parkingSection.addChild(parkingArea);
for(int i2 = 1; i2 <= 6; i2++){
ParkingSpace parkingSpace = new ParkingSpace(i2);
parkingSpace.setRoot(parkingArea);
parkingArea.addChild(parkingSpace);
}
}
}
}
}

public ParkingSpace getSpace(Vehicle v) {
Ticket ticket = new Ticket(v.getType(), v.getGate());
Ticket rTicket = root.search(ticket);
System.out.println("ENTRA: " + v.getId() + " - " + v.getType() + " - " + v.getGate() + " - " + rTicket.toString());
return getSpace(rTicket);
}

private ParkingSpace getSpace(Ticket rTicket) {
ParkingSpace pkS;
pkS = root.getFloor(rTicket.getFloor()).getSection(rTick et.getSection()).getArea(rTicket.getArea()).getSpa ce(rTicket.getSpace());
return pkS;
}
}


package eped.parking;

import eped.parking.tads.IteratorIF;
import eped.parking.tads.ListDynamic;
import eped.parking.tads.ListIF;
import eped.parking.tads.TreeDynamic;
import eped.parking.tads.TreeIF;


public class Root implements ParkingElementIF {

TreeDynamic<ParkingElementIF> rootTree = new TreeDynamic<ParkingElementIF>();

Ticket ticket;

ParkingFloor pkF;

public boolean fullParking;

public Root(){
}

public boolean fullParking(){
if(pkF1.fullFloor() && pkF2.fullFloor() && pkF3.fullFloor() && pkF4.fullFloor() && pkF5.fullFloor() && pkF6.fullFloor()) fullParking = true;
else fullParking = false;
return fullParking;
}

@Override
public IteratorIF<TreeIF<ParkingElementIF>> getIterator() {
return rootTree.getChildren().getIterator();
}

public ParkingFloor getFloor(int floor){
ParkingFloor pkF;
ParkingFloor rPKF = null;
for(IT = getIterator(); IT.hasNext();){
pkF = (ParkingFloor) IT.getNext();
if(pkF.getFloor() == floor){
rPKF = pkF;
}
}

return rPKF;
}

@Override
public Ticket search(Ticket ticket) {
int distance = 642;
Ticket cTicket;
Ticket rTicket = null;
IteratorIF<TreeIF<ParkingElementIF>> IT;

for(IT = getIterator();IT.hasNext();){
pkF = (ParkingFloor) IT.getNext();
cTicket = pkF.search(ticket);

if(cTicket.distance() < distance){
cTicket.setFloor(pkF.getFloor());
distance = cTicket.distance();
rTicket = cTicket;
}
}

return rTicket;
}

}



Además dejo la clase TreeDynamic:

package eped.parking.tads;

public class TreeDynamic<T> implements TreeIF<T> {
private T element;
private QueueIF<TreeIF <T>> children;
public TreeDynamic ()
{
this.element = null;
this.children = new QueueDynamic <TreeIF <T>> ();
}
public TreeDynamic (T element)
{
this.element = element;
this.children = new QueueDynamic <TreeIF <T>> ();
}
public TreeDynamic (TreeIF<T> tree)
{
this.element = tree.getRoot ();
this.children = new QueueDynamic <TreeIF <T>> ();
ListIF <TreeIF <T>> tChildren = tree.getChildren ();
while (!tChildren.isEmpty ()) {
TreeIF <T> aChild = tChildren.getFirst ();
TreeIF <T> cChild = new TreeDynamic <T> (aChild);
children.add (cChild);
tChildren = tChildren.getTail ();
}
}
@Override
public T getRoot ()
{
return element;
}

@Override
public ListIF <TreeIF <T>> getChildren (){
ListIF <TreeIF <T>> lChildren = new ListDynamic <TreeIF <T>> ();;
StackIF <TreeIF <T>> sChildren = new StackDynamic <TreeIF <T>> ();
IteratorIF<TreeIF<T>> childrenIt = children.getIterator ();
while (childrenIt.hasNext ()) {
TreeIF<T> aChild = childrenIt.getNext ();
sChildren.push (aChild);
}
while (!sChildren.isEmpty ()) {
TreeIF<T> aChild = sChildren.getTop ();
lChildren.insert (aChild);
sChildren.pop ();
}
return lChildren;
}

@Override
public void setRoot (T element)
{
this.element = element;
}
@Override
public void addChild (TreeIF<T> child)
{
children.add (child);
}
@Override
public void removeChild (int index)
{
QueueIF <TreeIF<T>> aux = new QueueDynamic <TreeIF<T>> ();
for (int i = 0; i < children.getLength (); i++) {
TreeIF <T> aChild = children.getFirst ();
if (i != index) aux.add (aChild);
children.remove ();
}
children = aux;
}
@Override
public boolean isLeaf ()
{
return children.isEmpty ();
}
@Override
public boolean isEmpty ()
{
return element == null &&
children.isEmpty ();
}
@Override
public boolean contains (T element)
{
if (this.element.equals (element)) return true;
else {
IteratorIF <TreeIF <T>> childrenIt = children.getIterator ();
boolean found = false;
while (!found && childrenIt.hasNext ()) {
TreeIF <T> aChild = childrenIt.getNext ();
found = aChild.contains (element);
}
return found;
}
}
@Override
public IteratorIF<T> getIterator (int type)
{
TreeIF<T> handler = new TreeDynamic<T> (this);
return new TreeIterator<T> (handler, type);
}
@Override
public int hashCode () {
return 0;}
@Override
public boolean equals () {
return false;}
@Override
public String toString () {
return null;}
}



Estoy desesperado, ya no se como hacer el parking y me echan encima los exámenes, por favor, ayudadme. Pedidme todas las clases que necesiteis si quereis echarme una mano.

Muchas gracias

Última edición por Weaxyz1; 08/05/2014 a las 08:28

Etiquetas: clase, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:50.