Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Clase cuenta Ejercicio 1

Estas en el tema de Clase cuenta Ejercicio 1 en el foro de PHP en Foros del Web. Buenas comunidad, estoy practicando programación orientado a objetos y me gustaria que me den una orientación con este problema. Cita: Crea una clase Cuenta (bancaria) ...
  #1 (permalink)  
Antiguo 01/11/2015, 18:39
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Pregunta Clase cuenta Ejercicio 1

Buenas comunidad, estoy practicando programación orientado a objetos y me gustaria que me den una orientación con este problema.

Cita:
Crea una clase Cuenta (bancaria) con atributos para el número de cuenta (un entero
largo), el DNI del cliente (otro entero largo), el saldo actual y el interés anual que se
aplica a la cuenta (porcentaje). Define en la clase los siguientes métodos:
  1. Constructor por defecto y constructor con DNI, saldo e interés
  2. Accedentes y mutadores. Para el número de cuenta no habrá mutador.
  3. actualizarSaldo() : actualizará el saldo de la cuenta aplicándole el interés diario (interés anual dividido entre 365 aplicado al saldo actual).
  4. ingresar(double) : permitirá ingresar una cantidad en la cuenta.
  5. retirar(double) : permitirá sacar una cantidad de la cuenta (si hay saldo).
  6. Método que nos permita mostrar todos los datos de la cuenta.

El número de cuenta se asignará de forma correlativa a partir de 100001, asignando
el siguiente número al último asignado.
Código:
<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

class Cuenta {
    private static $cuenta = 1001;
    private $dni;
    private $saldo;
    private $interesAnual;
    private $interesDiario;
    
    public function __construct($dni, $sal, $intA) {
        self::$cuenta++;
        $this->dni = $dni;
        $this->saldo = $sal;
        $this->interesAnual = $intA;
    }
    
    public function actualizarSaldo() {
        $this->interesDiario = ($this->saldo * $this->interesAnual * 360) / 1200;
    }
    
    public function ingresar($deposito) {
        $this->saldo += $deposito;
    }
    
    public function retiro($retiro) {
        if($retiro > $this->saldo) {
            echo 'No tienes esa cantidad de dinero....';
        }
        else {
            $this->saldo -= $retiro;
        }
    }
    
    public function imprimir() {
        echo 'Cuenta: '.self::$cuenta.'<br />';
        echo 'D.N.I: '.$this->dni.'<br />';
        echo 'Saldo: $'.$this->saldo.'<br />';
        echo 'Interes: '.$this->interesDiario.'<br />';
    }
    
}

$persona = new Cuenta(38206856, 1000, 3);
$persona->ingresar(200);
$persona->retiro(500);
$persona->actualizarSaldo();
$persona->imprimir();

?>
No se si estaria bien realizada la clase, saludos y espero sus respuestas.

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 01/11/2015, 19:39
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Clase cuenta Ejercicio 1

Como respuesta para el ejercicio esta bien tu clase, claro que la puedes mejorar pero eso depende de los temas que conozcas.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 01/11/2015, 21:35
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Clase cuenta Ejercicio 1

Cita:
Iniciado por hhs Ver Mensaje
Como respuesta para el ejercicio esta bien tu clase, claro que la puedes mejorar pero eso depende de los temas que conozcas.
Hola hhs gracias por responder y que conceptos tendria que aprender para poder optimizar este problema??

¡Saludos y gracias!
  #4 (permalink)  
Antiguo 01/11/2015, 21:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Clase cuenta Ejercicio 1

Cita:
[...] que conceptos tendria que aprender para poder optimizar este problema??
Para poder optimizar primero hay que entender bien el problema, ¿la clase que tienes te da problemas o no?

Yo te sugiero no "optimizar" sólo por el hecho de hacerlo, ¿optimizar en qué sentido?

¿Hay algo que podría hacerse mejor que no sea en términos de código?

Es decir, se supone que escribimos programas para resolver problemas, si tu código ya resuelve el problema ¿entonces qué buscas optimizar?

¿Buscas optimizar tal vez la velocidad de los cálculos?

No tiene sentido, es aritmética simple.

¿Entonces para qué optimizar?

No lo entiendo.

Cita:
No se si estaria bien realizada la clase, saludos y espero sus respuestas.
Sí, está bien realizada: hace su trabajo.

¿Quieres mejorar su calidad?

Escribe pruebas.

¿Cómo sabes si funcionará para el 100% de los casos?

¿Y si en lugar de un valor numérico en algún método paso un objeto que pasaría?

¿Y si al utilizas tu clase no le paso los valores exactamente del tipo que espera cada método que sucede?

Puedes mejorar en muchos aspectos más la calidad de tu código, pero el término "optimizar" está muy lejos de eso, no corresponde.

Optimizar se entiende en hacer "mejor" las cosas pero la calidad es hacerlas "bien", primero has bien las cosas y después, si es necesario: optimiza lo que puedas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 01/11/2015, 22:04
Avatar de gonzaherrera77  
Fecha de Ingreso: noviembre-2015
Mensajes: 60
Antigüedad: 8 años, 5 meses
Puntos: 7
Respuesta: Clase cuenta Ejercicio 1

Sabias palabras, entonces la clase esta bien plantiada por asi decirlo. Habria que validar los datos y sanitizarlos si es que vienen de un formulario por ejemplo.

¡Saludos!

Etiquetas: clase, poo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:32.