Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: toni_apr en 21 de Julio 2014, 22:20
-
Presento las clases de la lección de los 'packages' ejercicio CU00674B del curso básico de programación orientada a objetos de aprenderaprogramar.
Clase TestPackage. Esta clase incorpora 3 líneas 'import' con la ruta de cada package para acceder las clases allí contenidas.
package CU00674B.formas;
import CU00674B.formas.formas1dimension.*;
import CU00674B.formas.formas2dimension.*;
import CU00674B.formas.formas3dimension.*;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class TestPackage {
public static void main (String [] args) {
// Objetos formas1dimension
Recta miRecta = new Recta();
Curva miCurva = new Curva();
// Objetos formas2dimension
Triangulo miTriangulo = new Triangulo();
Cuadrilatero miCuadrilatero = new Cuadrilatero();
Elipse miElipse = new Elipse();
Parabola miParabola = new Parabola();
Hiperbola miHiperbola = new Hiperbola();
// Objetos formas3dimension
Cilindro miCilindro = new Cilindro();
Cono miCono = new Cono();
Esfera miEsfera = new Esfera();
} // fin del main
} // Fin de la clase TestPackage
Clase Recta
package CU00674B.formas.formas1dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Recta { // Atributos de la clase Recta
int x, y, largo;
float angulo;
//Constructor para objetos de la clase Recta
public Recta() { // Inicializa atributos
x = 10;
y = 20;
largo = 30;
angulo = 45.0f;
} // Fin del constructor Recta
public Recta (int x, int y, int largo, float angulo) {
this.x = x;
this.y = y;
this.largo = largo;
this.angulo= angulo;
}
// Siguen los setters para los atributos de la clase Recta
public void setX (int x) { this.x = x; }
public void setY (int y) { this.y = y; }
public void setLargo (int largo) { this.largo = largo; }
public void setAngulo (float angulo) { this.angulo= angulo; }
// Ahora los getters para los atributos de la clase Recta
public int getX () { return x; }
public int getY () { return y; }
public int getLargo () { return largo; }
public float getAngulo () { return angulo; }
// Y seguidamente, metodos varios.
} // Fin de la clase Recta
Clase Curva
package CU00674B.formas.formas1dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Curva {
public Curva() { // Inicializa atributos
} // Fin del constructor Curva
} // Fin de la clase Curva
Clase Triangulo
package CU00674B.formas.formas2dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Triangulo {
public Triangulo() { // Inicializa atributos
} // Fin del constructor Triangulo
} // Fin de la clase Triangulo
Clase Cuadrilatero
package CU00674B.formas.formas2dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Cuadrilatero {
public Cuadrilatero() { // Inicializa atributos
} // Fin del constructor Cuadrilatero
} // Fin de la clase Cuadrilatero
Clase Elipse
package CU00674B.formas.formas2dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Elipse {
public Elipse() { // Inicializa atributos
} // Fin del constructor Elipse
} // Fin de la clase Elipse
Clase Parabola
package CU00674B.formas.formas2dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Parabola {
public Parabola() { // Inicializa atributos
} // Fin del constructor Parabola
} // Fin de la clase Parabola
Clase Hiperbola
package CU00674B.formas.formas2dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Hiperbola {
public Hiperbola() { // Inicializa atributos
} // Fin del constructor Hiperbola
} // Fin de la clase Hiperbola
Clase Cilindro
package CU00674B.formas.formas3dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Cilindro {
public Cilindro() { // Inicializa atributos
} // Fin del constructor Cilindro
} // Fin de la clase Cilindro
Clase Cono
package CU00674B.formas.formas3dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Cono {
public Cono() { // Inicializa atributos
} // Fin del constructor Cono
} // Fin de la clase Cono
Clase Esfera
package CU00674B.formas.formas3dimension;
/**
* Detalles de la clase.
* @author (Toni)
* @version (0)
*/
public class Esfera {
public Esfera() { // Inicializa atributos
} // Fin del constructor Esfera
} // Fin de la clase Esfera
-
Hola Toni, todo correcto. A modo de curiosidad, para las personas que intenten compilar el código, cuando intentamos hacerlo con BlueJ se obtiene el siguiente mensaje (error package-name-invalid):
You have changed the package statement to a package which does not exist in this project. If you wish to move this class to another package you must create the destination package first. The package statement has been reverted back to its original form.
Que lo que viene a decir es que antes de incluir código declarando packages, hemos de crearlos previamente en BlueJ. Si no los creamos, BlueJ anula la declaración de packages o emite errores. A veces (sobre todo si se trata de una única clase) es irrelevante que BlueJ anule el package. En cambio, si se trata de distintos packages con clases interrelacionadas sí puede resultar relevante.
Para solucionar esto con BlueJ, hay que crear previamente la estructura de packages.
Saludos.