Comunidad PHPeros
Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado 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?.
-
Estoy igual que tu...
No lo entiendo absolutamente nada...
xDD
por eso me busque cosas como VB, c++, C#
-
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
-
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
-
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.
-
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
-
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!
-
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.
-
¡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];
}
}
?>
-
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).
-
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.