Comunidad PHPeros

Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado por: Siquillote en 10 de Mayo de 2010, 22:08:08 pm

Título: ¡No me entero de nada!
Publicado por: Siquillote en 10 de Mayo de 2010, 22:08:08 pm

Por mas que intento leerme POO y asimilarlo, no soy capaz, es que no lo entiendo para nada. Como bien dicen algunos, POO puede ser el futuro
de PHP y no quiero quedarme atras. ¿Algun consejo por donde empezar o algun video tutorial?.
Título: Re:¡No me entero de nada!
Publicado por: SoyJoaquin. en 10 de Mayo de 2010, 22:13:49 pm
Estoy igual que tu...
No lo entiendo absolutamente nada...
xDD

por eso me busque cosas como VB, c++, C#
Título: Re:¡No me entero de nada!
Publicado por: WildWolf360 en 10 de Mayo de 2010, 22:16:14 pm
Google, mejor precio y calidad

Yo no me entero casi de php como pa meterme ahora con esto... Me suena a física cuántica, esa que se da cuando quieres trabajar en una central "Nucelar" (Gran Homer!)

Por cierto, ¿Porqué dicen que es "el PHP del futuro"?

Saludos
Título: Re:¡No me entero de nada!
Publicado por: CarlosRdrz en 10 de Mayo de 2010, 22:16:34 pm
Bueno, para empezar, POO no "puede ser" el futuro de PHP, POO es el PRESENTE de PHP, nosotros somos los que vamos atrás de la actualidad. Ahora mismo el mundo programa en POO y nosotros en estructural, pero es común porque estamos empezando. Precisamente lo que queremos es pasar a POO para estar mas a la orden del día y mas actualizados, pues sin duda somos nosotros los que vamos atrasados.

Siguiendo al tema, yo estaré encantado de responderte las preguntas que sepas siempre que me preguntes algo en concreto y no como esto.
¿Cual es tu duda? Al menos dime, ¿tu problema es de concepto? ¿o de sintaxis?
Quiero decir, nosotros planteamos un problema, y podemos resolverlo con programación estructural que es la que sabemos usar, ¿pero sabrías plantearlo al menos en POO? ¿o el problema es que no entiendes la sintaxis o como se ejecuta un código orientado a objetos?

En fin, define un poco tu problema, y yo si puedo te ayudaré encantado :)

Saludos
Título: Re:¡No me entero de nada!
Publicado por: Warlox en 10 de Mayo de 2010, 22:25:06 pm
La cosa de las clases, es que como algunos dicen que es el "futuro" del PHP (lo que como dice TLX, es erróneo, las clases son el presente de la programación PHP).

A mi parecer, las clases se han puesto de "moda" no solo porque sí, lo que yo imagino, es que las clases sirven para ir ayudándole a los usuarios para otros lenguajes que se trabajan practicamente que al 90% con clases (VisualBasic, C, C++...).

Ahora, al principio a mí se me hacía un lío, pero luego me leí este tutorial que está muy bien explicado (http://www.phperos.net/foro/index.php/topic,5093.0.html). También está el tutorial de TLX, que me ayudó a "reforzar" mi conocimiento de la POO (http://www.phperos.net/foro/index.php/topic,1470.0.html).

Espero que te ayude esta información ;).
Saludos.
Título: Re:¡No me entero de nada!
Publicado por: Siquillote en 10 de Mayo de 2010, 22:27:31 pm

Pues TLX, la cosa es que ¡ no entiendo nada !. He mirado en google, en PHPeros, en pagina en ingles y nada macho. Es justamente como dice Wild,
ahora mismo parece que soy Homer en la central nuclear :L
Título: Re:¡No me entero de nada!
Publicado por: CarlosRdrz en 10 de Mayo de 2010, 23:05:16 pm
Bueno, voy a intentar ponerte un ejemplo sencillo.

Supongamos que eres el director de un colegio, y quieres una aplicación en la que tu ingresas los nombres y apellidos de un alumno, y 4 de sus notas, vamos a suponer que ingresas el nombre, el apellido y sus 4 notas mas altas en diferentes asignaturas. Luego, al ser director, y para simplificarte el trabajo, quieres que el sistema, él solo, te indique junto al nombre y apellidos de estos alumnos su nota media.

Vamos a hacerlo tanto como en programación estructural como en programación orientada a objetos, y para solo dos alumnos.

Primero en programación estructural:

<?php
$nombres = array("Federico García Lorca","Juan Ramón Jimenez");
$notas = array(array(7.5,8,8,9), array(8,8.5,9,10));

// Mostramos las notas de los estudiantes
for($i=0; $i<count($nombres); $i++) {
echo "Nombre: ".$nombres[$i];
echo " Nota: ".(($notas[$i][0]+$notas[$i][1]+$notas[$i][2]+$notas[$i][3])/4);
echo "<br />";
}
?>


Este ejemplo sería en orientado a objetos:

<?php

class Alumno {
   private $nombre;
   private $notas;

  function __construct ($name) {
    $this->nombre = $name;
  }
  public function setNotas($a, $b, $c, $d) {
    $this->notas = array($a, $b, $c, $d);
  }
  public function getNombre() { return $this->nombre; }
  public function media() {
    return (($this->notas[0]+$this->notas[1]+$this->notas[2]+$this->notas[3])/4);
  }
}

// Vamos a crear un array de objetos Alumno
$alumnos = array();
$alumnos[0] = new Alumno("Federico Garcia Lorca");
$alumnos[0]->setNotas(7.5, 8, 8, 9);

$alumnos[1] = new Alumno("Juan Ramon Jimenez");
$alumnos[1]->setNotas(8, 8.5, 9, 10);

// Mostramos ahora todos los alumnos
for($i=0; $i<count($alumnos); $i++) {
echo "Nombre: ".$alumnos[$i]->getNombre()." Nota: ".$alumnos[$i]->media();
echo "<br />";
}
?>


Espero que puedas captar las diferencias del código y que hace cada cosa.
Puede parecer que el de programación estructurada es mejor, pero no es así, aunque si que es mas corto.

Imagina que luego quieres implementar mas acciones, solo debes modificar un poco tu clase, por ejemplo para agregar su edad, y luego hacer las pocas llamadas que hacen falta en el resto del código. Recuerda tambien que con clases el código es reutilizable, así que puedes usar la clase en todos los códigos que necesites.

En fin, te recomiendo ver algo de teoría sobre POO, que seguro que te resuelve muchas dudas.

Si no, ya sabes, avisa en que dudas tienes y te intento ayudar,
Saludos!
Título: Re:¡No me entero de nada!
Publicado por: Physlet en 10 de Mayo de 2010, 23:26:39 pm
Lo que yo te recomiendo es buscar el aspecto teórico del POO, entender sus elementos y conceptos fundamentales para luego aplicarlos en un lenguaje de programación (en este caso, PHP). Yo aún no sé aplicarlo bien, pero ando estudiando teoría de POO en la universidad.
Título: Re:¡No me entero de nada!
Publicado por: Siquillote en 11 de Mayo de 2010, 12:43:09 pm

¡Vale vale! Creo que entre el ejemplo de TLX y un tema expuesto por Kevin he llegado a la concluson de saber lo mas basico solo con leermelo un par de veces (¿50? ¿60?) y creo que mas o menos entiendo la básico. Os pongo aqui que es lo que creo que he aprendido y me decis si estoy equivocado o no ¿vale?:


<?php
class usuario # Inicio de una nueva clase... Pueden haber miles.
{
# Estas dos variables indican que van a ser privadas y que vamos a trabajr con ellas. ¿Noes así?
private $consulta;
private $fetch;

# Se declara una funcion pero.. ¿Las dos barras (__) para que son?
function __construct($xIdusuario)
{
                # creo que la estructura $this->usuario = "siquillote"; quiere decir : Que para esta variable, usuario, se le asigne el valor siquillote
$this->consulta = mysql_query("SELECT * FROM usuarios WHERE id = '".$xIdusuario."'");
$this->fetch = mysql_fetch_array($this->consulta); # Lo mismo que lo de arriba...
}

# Esto ya no lo entiendo ....
function mostrar($xDato)
{
return $this->fetch[$xDato];
}
}
?>



Título: Re:¡No me entero de nada!
Publicado por: westwest en 11 de Mayo de 2010, 15:39:38 pm
La función __construct es una función especial, que se ejecuta al llamar a la clase, es decir, al hacer:
$var = new usuario(1);
estamos llamando a la función __construct, enviando el parametro (1).
Título: Re:¡No me entero de nada!
Publicado por: Warlox en 11 de Mayo de 2010, 19:44:31 pm
A ver, vamos por partes:

function __construct($xIdusuario)
{
# creo que la estructura $this->usuario = "siquillote"; quiere decir : Que para esta variable, usuario, se le asigne el valor siquillote
$this->consulta = mysql_query("SELECT * FROM usuarios WHERE id = '".$xIdusuario."'");
$this->fetch = mysql_fetch_array($this->consulta); # Lo mismo que lo de arriba...

}

El __construct, es una función "especial" la cual toma los parámetros enviados en la clase (vamos, es como una simple función más).

# Esto ya no lo entiendo ....
function mostrar($xDato)
{
return $this->fetch[$xDato];
}

Eso no es escencial en todas las funciones, solo lo es en esta clase que hice. Lo que hace es que al llamar a la función "mostrar()" de la clase, lo toma como un mysql_fetch_array, es decir:


$sql = mysql_query("SELECT FROM usuarios WHERE id = '1'");
$row = mysql_fetch_array($sql);
echo $row["nombre"]

# Es lo mismo que llamarlo desde la clase...

$usuario = new usuario("1");
echo $usuario->mostrar("nombre");

Espero hayas  entendido mejor, cualquier cosa, me dices.