Ejercicio N° 1

Crear la clase Persona con las siguientes propiedades:
● nombre
● apellido
● y edad
y siguientes métodos:
● setName, que debe permitir que la propiedad nombre represente su cadena de caracteres en minúscula.
● getName, debe mostrar la cadena de caracteres antes ingresada con la primer letra de cada palabra en mayúscula


// Definición de la clase Persona
class Persona {
private $nombre;    // Propiedades de la clase
private $apellido;
private $edad;
// Método para asignar el nombre en minúsculas
public function setName($nombre) {
$this->nombre = strtolower($nombre);
}
// Método para obtener el nombre con la primera letra en mayúsculas
public function getName() {
return ucwords($this->nombre);
}
}
// Ejemplo de uso de la clase Persona
$persona = new Persona();
$persona->setName("john doe");
echo $persona->getName();  // Debería imprimir "John Doe"


Ejercicio N° 2

Crear la clase Empleado y definir como atributos su nombre y sueldo. Como así también un método inicializar que reciba como dato el nombre y sueldo. También plantear un segundo método que imprima el nombre y un mensaje si debe o no pagar impuestos (si el sueldo supera a 45.000 paga impuestos)


// Definición de la clase Empleado que hereda de Persona
class Empleado extends Persona {
private $nombre;
private $sueldo;
// Método para inicializar los atributos de la clase
public function inicializar($nombre, $sueldo) {
$this->nombre = $nombre;
$this->sueldo = $sueldo;
}
// Método que imprime el nombre y si la persona debe o no pagar impuestos
public function imprimir() {
echo $this->nombre . ($this->sueldo > 45000 ? " debe pagar impuestos." : " no debe pagar impuestos.");
}
};
// Ejemplo de uso de la clase Empleado
$empleado = new Empleado();
$empleado->inicializar("John Doe", 50000);
$empleado->imprimir(); // Debería imprimir "John Doe debe pagar impuestos."


Ejercicio N° 3

Crear la clase CabeceraPagina que permita mostrar un título, indicarle si queremos que aparezca centrado, a derecha o izquierda, además permitir definir el color de fondo y de la fuente. Pasar los valores que cargaran los atributos mediante un constructor.


// Definiendo la clase CabeceraPagina
class CabeceraPagina {
private $titulo;
private $align;
private $colorFondo;
private $colorFuente;
// Constructor de la clase, se ejecuta al instanciar un objeto de esta clase
public function __construct($titulo, $align, $colorFondo, $colorFuente) {
$this->titulo = $titulo;
$this->align = $align;
$this->colorFondo = $colorFondo;
$this->colorFuente = $colorFuente;
}
// Método para mostrar la cabecera en HTML
public function mostrar() {
echo "<h1 style='text-align: $this->align; background-color: $this->colorFondo; color: $this->colorFuente;'>$this->titulo</h1>";
}
}
// Ejemplo de uso de la clase CabeceraPagina
$cabecera = new CabeceraPagina("Mi Página Web", "center", "#FFFFFF", "#000000");
$cabecera->mostrar(); // Mostrará el título de la página centrado, con fondo blanco y texto negro.
?>

Ejercicio N° 4

Crear un programa que permita obtener 4 notas, el nombre del alumno y calcular la nota final teniendo en cuenta los siguientes porcentajes.
Nota 1…..15%
Nota 2…..20%
Nota 3…..25%
Nota 4…..40%
La sumatoria de los porcentajes de estas notas es igual a la nota final. La clase debe estar estructurada de la siguiente manera:
Nombre de la clase: Alumno
Propiedades:
● nombreAlumno
● nota1
● nota2
● nota3
● nota4
● notaFinal
Metodos:
● calcularNotaFinal()


// Definición de la clase Alumno
class Alumno {
private $nombreAlumno;
private $nota1;
private $nota2;
private $nota3;
private $nota4;
private $notaFinal;
public function __construct($nombreAlumno, $nota1, $nota2, $nota3, $nota4) {
$this->nombreAlumno = $nombreAlumno;
$this->nota1 = $nota1;
$this->nota2 = $nota2;
$this->nota3 = $nota3;
$this->nota4 = $nota4;
}
// Método para calcular la nota final
public function calcularNotaFinal() {
$this->notaFinal = $this->nota1*0.15 + $this->nota2*0.20 + $this->nota3*0.25 + $this->nota4*0.40;
}
// Método para obtener el nombre del alumno
public function getNombreAlumno() {
return $this->nombreAlumno;
}
// Método para obtener la nota final
public function getNotaFinal() {
return $this->notaFinal;
}
}
$alumno = new Alumno("Juan", 7, 8, 9, 10);
$alumno->calcularNotaFinal();
echo "La nota final de " . $alumno->getNombreAlumno() . " es " . $alumno->getNotaFinal();

Ejercicio N° 5

Crear una clase llamada TelefonoCelular con las siguientes propiedades: marca, color, sistema operativo, número, numerollamado, estado y haciendollamada. Los métodos van a ser: hacerLlamada, terminarLlamada, apagarCelular y encenderCelular.
Los valores de los atributos son:

marca :Cualquiera del mercado
color: Negro, Azul
sistema operativo: Android, Iphone
número: Es el número de celular
numerollamado: Es el número de celular al que en un momento dado: se está llamando. Si no se está haciendo una llamada este valor debe estar vacío.
estado: Apagado o encendido.
haciendollamada: Para saber si una llamada está en curso. Si o no.

● Crear un constructor con parámetros para inicializar los valores de los
atributos del objeto a crear. El estado inicial es encendido y
haciendollamada en No
● El método hacerllamada debe recibir el número al cual se va a llamar y asignarlo a la propiedad numeroLlamado y debe modificar la propiedad haciendoLlamada a Sí.
● El método terminarLlamada debe modificar las propiedades respectivas.
● El método apagarCelular debe modificar las propiedades respectivas.
● El método encenderCelular debe modificar las propiedades respectivas.
● Cree dos objetos tipo TelefonoCelular llamados celular1 y celular2. Imprima el estado de los dos objetos.
● Debe haber validaciones para por ejemplo no hacer una llamada si el celular está apagado. O hacer otra llamada si está haciendo una llamada.
● Simule el siguiente comportamiento con el celular 1:
❖ Apague el celular
❖ Haga una llamada
❖ Termine la llamada
❖ Encienda el celular
❖ Termine la llamada
❖ Imprima el estado del celular1
● Simule el siguiente comportamiento con el celular2
❖ Haga una llamada
❖ Imprima el estado del celular2


// Definición de la clase TelefonoCelular
class TelefonoCelular {
private $marca;
private $color;
private $sistemaOperativo;
private $numero;
private $numeroLlamado;
private $estado = 'encendido'; // Estado inicial
private $haciendoLlamada = 'no'; // Estado inicial
// Constructor de la clase
public function __construct($marca, $color, $sistemaOperativo, $numero) {
$this->marca = $marca;
$this->color = $color;
$this->sistemaOperativo = $sistemaOperativo;
$this->numero = $numero;
}
// Método para hacer una llamada
public function hacerLlamada($numero) {
if ($this->estado == 'encendido' && $this->haciendoLlamada == 'no') {
$this->numeroLlamado = $numero;
$this->haciendoLlamada = 'sí';
}
}
// Método para terminar una llamada
public function terminarLlamada() {
if ($this->estado == 'encendido') {
$this->numeroLlamado = '';
$this->haciendoLlamada = 'no';
}
}
// Método para apagar el celular
public function apagarCelular() {
$this->estado = 'apagado';
$this->numeroLlamado = '';
$this->haciendoLlamada = 'no';
}
// Método para encender el celular
public function encenderCelular() {
$this->estado = 'encendido';
$this->haciendoLlamada = 'no';
}
// Método para obtener el estado del celular
public function getEstado() {
return "Marca: $this->marca, Color: $this->color, Sistema Operativo: $this->sistemaOperativo, Número: $this->numero, Estado: $this->estado, Haciendo Llamada: $this->haciendoLlamada";
}
}
// Creación de dos objetos de la clase TelefonoCelular
$celular1 = new TelefonoCelular("Apple", "Negro", "iOS", "1234567890");
$celular2 = new TelefonoCelular("Samsung", "Azul", "Android", "0987654321");
// Secuencia de acciones con el celular1
$celular1->hacerLlamada("0987654321");
echo $celular1->getEstado() . "\n"; // Debería indicar que está haciendo una llamada
$celular1->terminarLlamada();
echo $celular1->getEstado() . "\n"; // Debería indicar que ya no está haciendo una llamada
// Secuencia de acciones con el celular2
$celular2->apagarCelular();
echo $celular2->getEstado() . "\n"; // Debería indicar que el celular está apagado
$celular2->encenderCelular();
$celular2->hacerLlamada("1234567890");
echo $celular2->getEstado(); // Debería indicar que el celular está encendido y está haciendo una llamada