Open tecestela2022 opened 1 month ago
Sistema de gestion empleados
El objetio es crear un sistema que permita la gestion de empleados . Aplicando los conceptos de encapsulamiento, herencia y polimorfismo en php .
-Encapsulamiento: Es un principio de la programacion orientada a objero que cpnsiste en ocultar el estado interno de un objeto y restringir el acceso a sus propiedades y métodos. Se logra mediante la declaración de propiedades y métodos como públicos, privados o protegidos.adeades y métodos.
Polimorfismo: Es un concepto de la programacion orientada en objeto e diferentes clases responder de manera distinta a un mismo mensaje o método. En PHP, el polimorfismo se logra mediante la implementación de interfaces y la definición de métodos abstractos que deben ser implementados por las clases que las heredan. En el contexto de PHP, el polimorfismo permite que diferentes objetos puedan ser tratados de manera uniforme a través de una interfaz común, lo que facilita la reutilización de código y la creación de estructuras más flexibles y escalables.
Herencia: Es un mecanismo en el que una clase (subclase) puede heredar propiedades de otra clase (superclase) . Permite la reutilizacion del codigo y la creacion de una jerarquia de clases.
Requerimientos
Encapsulamiento: Creamos una clase Empleado con propiedades privadas y métodos públicos. Herencia: Creamos clases hijas Desarrollador y Diseniador que heredan de Empleado.
Polimorfismo: Implementamos un método en la clase Empleado que será sobrescrito en las clases hijas.
Calcular Salario: agregar un metodo a la clase Empleado, que calcula el salario neto aplicando un descuento fijo del 10% al sueldo.
Salida esperada:
El empleado esta trabando salario neto de juan $1800 El desarrollador ana está escribiendo código en php salario neto ana $ 1800 El diseñador lunes esta diseñando usando Photoshop salario neto de Luis $1700
Encapsulamiento <?php
class Empleado { private $nombre; private $sueldo;
public function __construct($nombre, $sueldo) {
$this->nombre = $nombre;
$this->sueldo = $sueldo;
}
public function getNombre() {
return $this->nombre;
}
public function getSueldo() {
return $this->sueldo;
}
public function getActividad() {
return "La persona está trabajando";
}
En esta porcion del codigo se aplico encapsulamiento dado que:
herenciaclass Diseñador extends Empleado { private $trabajo;
public function __construct($nombre, $sueldo, $trabajo) {
parent::__construct($nombre, $sueldo);
$this->trabajo = $trabajo;
}
public function getTrabajo() {
return $this->trabajo;
}
public function actividad() {
return "El diseñador " . $this->getNombre() . " está trabajando en: " . $this->trabajo;
}
public function calcularSalario() {
return $this->getSueldo() * 0.90; // Aplicamos un descuento del 10% al sueldo
}
} en esta parte del codigpo se aplica herencia dado que: La clase Diseñador extiende la clase Empleado, lo que significa que la clase Diseñador hereda todas las propiedades y métodos de la clase Empleado.
En el constructor de la clase Diseñador, se llama al constructor de la clase padre Empleado utilizando parent::__construct($nombre, $sueldo), lo que permite inicializar las propiedades $nombre y $sueldo heredadas de la clase Empleado.
Además, la clase Diseñador agrega una nueva propiedad $trabajo y métodos específicos como getTrabajo(), actividad() y calcularSalario(). Estos métodos son propios de la clase Diseñador y no existen en la clase Empleado.
La clase Diseñador hereda las propiedades y métodos de la clase Empleado y también tiene sus propias propiedades y métodos adicionales.
Con respecto al polimorfosmo:
Se puede ver en la imlementacion de los metodos: calcularSalario(), en las clases Empleado, Diseñador y Desarrollador. Cada una de estas clases pertenece al metodo calcularsalario() y puede ser adaptada a las necesidades de cada empleado.
En la clase empleados podemos verlo en:
public funtion calcularsalario() { retum $this $this->sueldo * 0.90; // con esto se aplica el descuento del 10% }
En la clase disenador:
public function calcularSalario() { return $this->getSueldo() * 0.90; // como en el caso anterior se aplica el 10 % de descuento }
En la clase desarrollador:
public function calcularSalario() { return $this->getSueldo() * 0.90; //como en el caso anterior se aplica el 10 % de descuento }
Esto permite que al llamar al método calcularSalario() en un objeto de tipo Empleado.
// El codigo debe ; Aplicar los conceptos de encapsulamiento, herencia y polimorfismo, Debe dar Como salida un descuento del 10%
<?php
class Empleado { private $nombre; private $sueldo;
}
class Diseñador extends Empleado { private $trabajo;
}
class Desarrollador extends Empleado { private $trabajo;
}
// Ejemplo de uso $juan = new Empleado("Juan", 2000); echo "El empleado está trabajando." . PHP_EOL; echo "El salario neto de Juan es de $" . $juan->calcularSalario() . PHP_EOL;
$ana = new Desarrollador("Ana", 2000, "escribiendo un código PHP"); echo $ana->actividad() . PHP_EOL; echo "El salario neto de Ana es $" . $ana->calcularSalario() . PHP_EOL;
$luis = new Diseñador("Luis", 1900, "diseñando usando Photoshop"); echo $luis->actividad() . PHP_EOL; echo "El salario neto de Luis es $" . $luis->calcularSalario() . PHP_EOL; ?>