Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ruxcbe

#1
Hola buenas, desde hace unos días que estoy pensando en como implementar una básica gestión de usuarios con una arquitectura orientada a objetos. Mis dudas van más bien relacionadas en buenas prácticas y como deberia estructurarlo, más que la implementación en sí.

El ejemplo es muy sencillo. Básicamente el objetivo es comunicarse con la base de datos de una forma correcta y mantenible para insertar, modifcar, borrar y seleccionar usuarios. (No estoy muy familiarizado con el php, aunque la duda sea más genérica).

Lo que he pensado es en tener una classe Usuario, que sea la definición de usuario. Sólo se encarga de definir que es un usuario. Es decir:


class Usuario {

private $id;
private $username;
private $password;

//Getters & Setters
}


Ahora bien, voy a tener que hacer operaciones con la base de datos, así que he creado un DAO

class UsuarioDAO{

private $db;
private $pdo;

public function __construct()
{
    $db = new Database;
    $pdo = $db->getPDO();
}

public function createUser($user)
{
    $sql = 'INSERT INTO users (`username`,`password`) VALUES(:username, :password)';
    $pdo->prepare($sql);
    $pdo->bindValue(':username', $user->getUsername(), PDO::PARAM_STR);
    $pdo->bindValue(':password', $user->getPassword(), PDO::PARAM_STR);
    return $pdo->execute();       
}
//resto de operciones con la bd
}


Y por último, la clase Databse, que es simplemente la conexión al repositorio.

class Database {

private $pdo;

public function __construct()
{
    $pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
}

public function getPdo() {
    return $this->pdo;
}
}


Entonces si quisiera insertar un usuario haría:


$userdao = new UsuarioDAO;
$user = new Usuario;
$user->setUsername('juan');
$user->setPassword('1234');
$userdao->createUser($user);


Soy consciente que no existe una solución correcta, y que existen varios diseós y patrones para solventar esto, y me gustaría saber si esta está bien implementada, si quizás alguna otra se adaptaría mejor a mis necesidades.

Perdón por hacerme pesado con un post tan largo!
Muchas gracias!
#2
Java / Encontrar camino con DFS de origen a destino
14 Noviembre 2014, 19:12 PM
Hola, estoy intentado implementar este algoritmo para encontrar un camino de un vertice origen a uno destino. Guardando en un vector la id del vertice siguiente, la funcion debe retornar la capacidad del camino. (Es para el algoritmo de ford fulkerson).
Me he quedado trabado y tengo lo siguiente:

protected  int trobacami(Graf G, int[] Path)
    {
        int vertex_inici = G.getInici();
        int vertex_final = G.getFi();
        Stack<Integer> s = new Stack();
        int numV = G.getDimensioGraf();
        inicialitzar(Path, numV);
       
        Path[vertex_final] = -2;
        int capacitat = Integer.MAX_VALUE;
       
        s.push(vertex_inici);
       
        while (!s.empty())
        {
            int top = s.peek();
            for (int aresta : G.arestesAdjacents(top))
            {
                int segA = G.getIdFiAresta(aresta);
                if (G.getCapAresta(aresta) - G.getFluxeAresta(aresta) > 0 && Path[segA] == -1)
                {
                    Path[segA] = top;
                    int cap = G.getCapAresta(aresta) - G.getFluxeAresta(aresta);
                    capacitat = min(cap, capacitat);
                    if (segA != vertex_final) s.push(segA);
                    else return capacitat;
                }
            }
        }
        return 0;
    }