Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - atika

Páginas: [1]
1

Hola, espero que estén bien los codigos

interface Asignatura
Código: [Seleccionar]
public interface Asignatura extends Comparable<Asignatura>{
String getNombre();
String getCodigo();
Double getCreditos();
Integer getCurso();
Departamento getDepartamento();
void setDepartamento(Departamento nuevoDepartamento);
}


interface Profesor
Código: [Seleccionar]
public interface Profesor extends Comparable<Profesor>{
Categoria getCategoria();
void setCategoria(Categoria categoria);

Departamento getDepartamento();
List<Asignatura> getAsignaturas();
List<Double> getCreditos();
void imparteAsignatura(Asignatura asig,Double dedicacion);
Double dedicacionAsignatura(Asignatura asig);
void eliminaAsignatura(Asignatura asig);
}


interface Departamento
Código: [Seleccionar]
public interface Departamento extends Comparable<Departamento> {
String getNombre();
 Set<Profesor> getProfesores();
Set<Asignatura> getAsignaturas();
Boolean existeProfesorAsignado(Asignatura a);
}

2
Clase AsignaturaImpl

Código: [Seleccionar]

public class AsignaturaImpl implements Asignatura {

private String nombre;
private String codigo;
private Double creditos;
private Integer curso;
private Departamento departamento;


public AsignaturaImpl (String nom,String cod,Double cred,Integer curso,Departamento dpto){
checkCodigo(codigo);
checkCreditos(creditos);
checkCurso(curso);

nombre = nom;
codigo = cod;
creditos = cred;
this.curso = curso;
departamento = dpto;
}


    private void checkCodigo(String codigo) {

    if (!(codigo.length() == 7))
    throw new ExcepcionAsignaturaNoValida("El codigo no tiene 7 caracteres");
   
    if (!(Character.isDigit(codigo.charAt(0)) &&
        Character.isDigit(codigo.charAt(1)) &&
    Character.isDigit(codigo.charAt(2)) &&
    Character.isDigit(codigo.charAt(3)) &&
    Character.isDigit(codigo.charAt(4)) &&
    Character.isDigit(codigo.charAt(5)) &&
    Character.isDigit(codigo.charAt(6))))
    throw new ExcepcionAsignaturaNoValida("El codigo tiene caracteres que no son digitos");
   
}
   
    private void checkCurso(Integer curso) {
if (!(curso >= 1 && curso <= 4))
throw new ExcepcionAsignaturaNoValida("El curso no esta entre 1 y 4");
}

private void checkCreditos(Double creditos){
    if( creditos <= 0.0) //if( !(creditos >0.0))
    throw new ExcepcionAsignaturaNoValida("Los creditos no son positivos");
    }


public String getNombre() { return nombre;}

public String getCodigo() { return codigo; }

public Double getCreditos() { return creditos; }

public Integer getCurso() { return curso; }

public Departamento getDepartamento(){ return departamento; }

public void setDepartamento(Departamento nuevoDpto){
if(nuevoDpto!=departamento){
Departamento old = departamento;
departamento = nuevoDpto;
    if(old!=null){  old.eliminaAsignatura(this);    }
    if(nuevoDpto!=null){    nuevoDpto.nuevaAsignatura(this);   }
}
}

public String toString(){ return "("+getCodigo()+")"+getNombre(); }


public boolean equals(Object o){
boolean res = false;

if(o instanceof Asignatura){ Asignatura a = (Asignatura) o;
res = this.getCodigo().equals(a.getCodigo());
}
return res;
}


public int hashCode(){ return this.getCodigo().hashCode(); }


public int compareTo(Asignatura a){
int cmp = this.getCodigo().compareTo(a.getCodigo());
return cmp;
}

       ************************************************************
Clase ProfesorImpl

Código: [Seleccionar]
public class ProfesorImpl implements Profesor {

private Categoria categoria;
private List<Asignatura> asignaturas;
private List<Double> creditos;
private Departamento departamento;

public ProfesorImpl(Categoria categoria,Departamento depart){
this.categoria = categoria;
asignaturas = new LinkedList<Asignatura>();
creditos = new LinkedList<Double>();
departamento = depart;
}

   

public Categoria getCategoria() { return categoria; }

public List<Asignatura> getAsignaturas(){
return new LinkedList<Asignatura>(asignaturas);
}

public List<Double> getCreditos(){ return new LinkedList<Double>(creditos);}

public Departamento getDepartamento(){ return departamento; }

public void setCategoria(Categoria categoria) {this.categoria = categoria;}


public String toString(){ return  "("+getCategoria()+")";}

public void imparteAsignatura(Asignatura asig,Double dedicacion){

int pos = asignaturas.indexOf(asig);
if(pos>=0){creditos.set(pos, dedicacion);}
asignaturas.add(asig);
creditos.add(dedicacion);
}


public Double dedicacionAsignatura(Asignatura asig){
Double res = 0.0;
int pos = asignaturas.indexOf(asig);
if(pos>=0){res = creditos.get(pos);}
return res;
}

public void eliminaAsignatura(Asignatura asig){
int pos = asignaturas.indexOf(asig);
if(pos>=0){
             asignaturas.remove(pos);
            creditos.remove(pos);
}
}
}

        **************************************************************
Clase DepartamentoImpl

Código: [Seleccionar]
public class DepartamentoImpl implements Departamento {

private String nombre;
private Set<Asignatura> asignaturas;
private Set<Profesor> profesores;

public DepartamentoImpl(String nombre){
this.nombre = nombre;
asignaturas = new HashSet<Asignatura>();
profesores = new HashSet<Profesor>();
}

   
public String getNombre() {return nombre;}

public Set<Asignatura> getAsignaturas() {return new HashSet<Asignatura>(asignaturas); }

public Set<Profesor> getProfesores(){ return new HashSet<Profesor>(profesores); }


public String toString(){ return getNombre();}


public boolean equals (Object o){
boolean res = false;
if(o instanceof Departamento){
Departamento d = (Departamento) o;
res = this.getNombre().equals(d.getNombre());
}
return res;
}


public int hashCode(){ return getNombre().hashCode();}


public int compareTo(Departamento d){
int cmp = getNombre().compareTo(d.getNombre());
return cmp;
}

}


3
Hola de nuevo,muchas gracias por la atención Alex Rodríguez, en lo que me has respondido pongo una aclaración: La clase DepartamentoImpl tiene como atributos profesores y asignaturas y los dos son de tipo Set<Profesor> y Set<Asignatura>, y otra cosa es lo del iterator que no lo usamos hasta el segundo cuatrimestre.Sólo nos piden para implementar el código el uso de tratamientos secuenciales(for clasico y/o extendido).En lo referente al código de las tres clases citadas,he puesto sólo los métodos que se necesitan para resolver este problema.

Esto es lo que he intentado hacer para resolverlo pero no lo consigo:
Código: [Seleccionar]

/ **public Boolean existeProfesorAsignado(Asignatura a). Devuelve true si existe al menos un profesor asignado a la asignatura a, es decir, que imparte algún crédito en ella, y false en caso contrario*/

public Boolean existeProfesorAsignado(Asignatura a){
Boolean res = false;
for(Profesor p: getProfesores()){
if(getProfesores().contains(p) && imparteCred(p,a))
res = true;
break;
   
}
return res;
}

private Boolean imparteCred(Profesor p,Asignatura a) {
Boolean res = false;
for(int i = 0; i<p.getAsignaturas().size(); i++){
Integer pos = p.getAsignaturas().indexOf(a);
    res = res || p.getCreditos().get(i).equals(p.getCreditos().get(pos));
}
return res;
}

4
Hola buenas, soy nuevo en el foro, y mi duda es acerca de como implementar con el for(extendido y clásico) un metodo de tipo Boolean que recibe como parametro un objeto de tipo Asignatura (este metodo se encuentra en la clase DepartamentoImpl).

El enunciado es :

El metodo devuelve true si existe al menos un profesor asignado a la asignatura a, es decir, que imparte algún crédito en ella, y false en caso contrario.

Teniendo en cuenta las siguientes INFORMACIONES:

Una clase AsignaturaImpl(su interfaz tipo Asignatura) que tiene un metodo getCreditos() de tipo Double y consultable,

una clase ProfesorImpl(su interfaz es el tipo Profesor) que tiene los atributos creditos y asignaturas,los dos son listas y consultables,

y una clase DepartamentoImpl que tiene los atributos profesores y asignaturas,los dos son conjuntos y consultables.

Todas las propiedades son básicas.

Si logran ayudarme estaría muy agradecido


Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".