Comunidad PHPeros

Lenguajes => PHP => (POO) Programación Orientada a Objetos => Mensaje iniciado por: Physlet en 07 de Abril de 2010, 02:31:56 am

Título: ¿Diferencias?
Publicado por: Physlet en 07 de Abril de 2010, 02:31:56 am
En mi carrera tengo que estudiar la denominada Programación Orientada a Objetos...
Nos mandaron a hacer como práctica una aplicación que dado los 2 catetos te calcule la hipotenusa...

Yo la puedo hacer fácilmente sin usar clases, objetos, métodos, etc... Entonces yo me pregunto, cuál es la diferencia entre la POO y la programación en PHP común...?
Título: Re:¿Diferencias?
Publicado por: Focux en 07 de Abril de 2010, 02:35:56 am
Con la POO es más profesional,  porque los códigos son reusables y tiene mucha más organización...
Título: Re:¿Diferencias?
Publicado por: marco811 en 07 de Abril de 2010, 02:41:22 am
La ventaja es que todo esta en un entorno privado que no afecta a ninguna variable ni funcion global.
Un saludo!
Título: Re:¿Diferencias?
Publicado por: Warlox en 07 de Abril de 2010, 03:24:36 am
La diferencia es que una clase la podés usar varias veces, con solo escribirla una vez. Son muy útiles más que todo a la hora de sacar datos de MySQL. Por ejemplo, yo en mi web, utilizo una clase para usuarios, de la que saco la clave, el nick y demás, lo que me ha resultado sumamente útil :P.

Espero haberte ayudado.
Saludos.
Título: Re:¿Diferencias?
Publicado por: Physlet en 07 de Abril de 2010, 04:55:27 am
Bueno a mí me gustaría que alguien me hiciera lo del cálculo de la hipotenusa en PHP usando clases, para tener una guía de como se maneja esto...

No es que me la hayan asignado de tarea ni nada, es más, en estos momentos no estamos dando lenguajes de programación, sino solo algoritmos... Y cuandp estudiemos lenguajes solo será Java... Pero yo quiero aprenderlo en PHP =P

Sin POO en PHP yo lo hice de esta manera:

<?PHP
$cat1 = $_GET['cat1'];
$cat2 = $_GET['cat2'];

$oper = pow($cat1,2) + pow($cat2,2);
$hip = sqrt($oper);
?>

Alguien me haría el gran favor de aplicarlo usando POO?
Título: Re:¿Diferencias?
Publicado por: naveda en 07 de Abril de 2010, 12:24:59 pm
<?
class Triangulo {
var $cateto1;
var $cateto2;

public function setCatetos($cat1,$cat2) {
$this->cateto1 = $cat1;
$this->cateto2 = $cat2;
}

public function getHipotenusa()
{
return sqrt(pow($cat1,2) + pow($cat2,2));
}
}

$triangulo = new Triangulo();
$triangulo->setCatetos($cat1,$cat2);
$triangulo->getHipotenusa();
?>

Este sería un método de hacerlo con POO.
Título: Re:¿Diferencias?
Publicado por: Physlet en 07 de Abril de 2010, 21:19:59 pm
Gracias naveda, antes de buscar la relación y demás, quisiera saber de qué forma el usuario puede introducir los valores de los catetos?
Título: Re:¿Diferencias?
Publicado por: westwest en 07 de Abril de 2010, 22:58:02 pm
Gracias naveda, antes de buscar la relación y demás, quisiera saber de qué forma el usuario puede introducir los valores de los catetos?
A través de un formulario se puede...


<?php
// Codigo class

if($_POST) { // si envió el form
$triangulo = new Triangulo();
$triangulo->setCatetos($_POST['cat1'], $_POST['cat2']);
echo 'Hipotenusa: '.$triangulo->getHipotenusa();
} else {
...


Luego sería montar el form nada más
Título: Re:¿Diferencias?
Publicado por: Physlet en 10 de Abril de 2010, 20:53:58 pm
A través de un formulario se puede...


<?php
// Codigo class

if($_POST) { // si envió el form
$triangulo = new Triangulo();
$triangulo->setCatetos($_POST['cat1'], $_POST['cat2']);
echo 'Hipotenusa: '.$triangulo->getHipotenusa();
} else {
...


Luego sería montar el form nada más

Que va.. No lo comprendo. No hay una manera más básica de establecer las variables de cat1 y cat2?
Es que mmm veo que repites la línea "$triangulo = new Triangulo();" que ya está dentro de la clase...

Por cierto, a qué se refiere esto:

$triangulo->getHipotenusa()

O sea, el " -> "

Disculpen mis preguntas de principiantes, es que realmente lo soy en el tema de PHP.
Título: Re:¿Diferencias?
Publicado por: Warlox en 10 de Abril de 2010, 23:00:54 pm
$triangulo->getHipotenusa()

La variable $triangulo especifica el llamado a la clase "triángulo". Luego, el "->" indica que se va a hacer llamado a algún método de la clase (ya sea una variable, una función, etc). Así que al poner getHipotenusa(), significa que está llamando a la función getHipotenusa  de la clase triángulo.

Saludos.
PD: Te recomiendo pasarte por éste (http://www.phperos.net/foro/index.php/topic,5093.0.html) post ;).