241
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re: Ejercicio diagramas de clases e interfaces
« en: 05 de Marzo 2022, 23:38 »
OK, a ver, para meternos en contexto.
Esta podría ser la clase Empleado
Estas serían sus clases hijas. Nótese que sus métodos toString() se combinan con el toString() de la clase madre para mostrar la información adaptada a cada subclase.
Desarrollador
GestorProyectos
Admin
Esta sería la clase Empresa, a la cuál además de los atributos mencionados en el enunciado, le he añadido un ArrayList para guardar los Empleados que trabajarán para la Empresa.
Es necesario relacionar un empleado con una empresa y creo que la mejor forma es que cada empresa creada, tenga su propio ArrayList donde guardar los empleados que trabajan para ella.
Y su clase hija EmpresaDesarrollo
Hasta aquí tenemos digamos la "parte fácil".
Haremos un programa donde crear empresas, crear empleados que trabajarán en esas empresas y poder hacer algunas operaciones con estas entidades.
Bien, esas operaciones nos dicen que se han de hacer mediante otras dos clases, las cuáles han de implementar sendas interfaces en las que se declararán los métodos que realizarán esas operaciones.
Lo vemos en el próximo mensaje..
Esta podría ser la clase Empleado
Código: [Seleccionar]
public abstract class Empleado {
private String documento;
private String nombre;
private double sueldoHora;
public Empleado() {
documento = "";
nombre = "";
sueldoHora = 0d;
}
public Empleado(String documento, String nombre, double sueldoHora) {
this.documento = documento;
this.nombre = nombre;
this.sueldoHora = sueldoHora;
}
public String getDocumento() {
return documento;
}
public void setDocumento(String documento) {
this.documento = documento;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getSueldoHora() {
return sueldoHora;
}
public void setSueldoHora(double sueldoHora) {
this.sueldoHora = sueldoHora;
}
@Override
public String toString() {
return String.format("documento=%s, nombre=%s, sueldoHora=%s", documento, nombre, sueldoHora);
}
}
Estas serían sus clases hijas. Nótese que sus métodos toString() se combinan con el toString() de la clase madre para mostrar la información adaptada a cada subclase.
Desarrollador
Código: [Seleccionar]
public class Desarrollador extends Empleado {
public Desarrollador() {
super();
}
public Desarrollador(String documento, String nombre, double sueldoHora) {
super(documento, nombre, sueldoHora);
}
@Override
public String toString() {
return String.format("Desarrollador [%s]", super.toString());
}
}
GestorProyectos
Código: [Seleccionar]
public class GestorProyectos extends Empleado {
private String area;
public GestorProyectos() {
super();
area = "";
}
public GestorProyectos(String documento, String nombre, double sueldoHora, String area) {
super(documento, nombre, sueldoHora);
this.area = area;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
@Override
public String toString() {
return String.format("GestorProyectos [%s, area=%s]", super.toString(), area);
}
}
Admin
Código: [Seleccionar]
public class Admin extends Empleado {
public Admin() {
super();
}
public Admin(String documento, String nombre, double sueldoHora) {
super(documento, nombre, sueldoHora);
}
@Override
public String toString() {
return String.format("Admin [%s]", super.toString());
}
}
Esta sería la clase Empresa, a la cuál además de los atributos mencionados en el enunciado, le he añadido un ArrayList para guardar los Empleados que trabajarán para la Empresa.
Es necesario relacionar un empleado con una empresa y creo que la mejor forma es que cada empresa creada, tenga su propio ArrayList donde guardar los empleados que trabajan para ella.
Código: [Seleccionar]
import java.util.ArrayList;
public abstract class Empresa {
private String nit;
private String nombre;
private String direccion;
private String ciudad;
private ArrayList<Empleado> empleados;
public Empresa() {
nit = "";
nombre = "";
direccion = "";
ciudad = "";
empleados = new ArrayList<Empleado>();
}
public Empresa(String nit, String nombre, String direccion, String ciudad) {
this.nit = nit;
this.nombre = nombre;
this.direccion = direccion;
this.ciudad = ciudad;
empleados = new ArrayList<Empleado>();
}
public String getNit() {
return nit;
}
public void setNit(String nit) {
this.nit = nit;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDireccion() {
return direccion;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public String getCiudad() {
return ciudad;
}
public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}
public void asignarEmpleado(Empleado emp) {
empleados.add(emp);
}
public int contarEmpleados() {
return empleados.size();
}
@Override
public String toString() {
return String.format("nit=%s, nombre=%s, direccion=%s, ciudad=%s", nit, nombre, direccion, ciudad);
}
}
Y su clase hija EmpresaDesarrollo
Código: [Seleccionar]
public class EmpresaDesarrollo extends Empresa {
public EmpresaDesarrollo() {
super();
}
public EmpresaDesarrollo(String nit, String nombre, String direccion, String ciudad) {
super(nit, nombre, direccion, ciudad);
}
@Override
public String toString() {
return String.format("EmpresaDesarrollo [%s]", super.toString());
}
}
Hasta aquí tenemos digamos la "parte fácil".
Haremos un programa donde crear empresas, crear empleados que trabajarán en esas empresas y poder hacer algunas operaciones con estas entidades.
Bien, esas operaciones nos dicen que se han de hacer mediante otras dos clases, las cuáles han de implementar sendas interfaces en las que se declararán los métodos que realizarán esas operaciones.
Lo vemos en el próximo mensaje..