Foros del Web » Programando para Internet » PHP »

No entiendo qué son las interfaces

Estas en el tema de No entiendo qué son las interfaces en el foro de PHP en Foros del Web. Quisiera saber qué son, para qué sirven y cómo se usan las interfaces en general, no las interfaces de usuario. No estoy trabajando con Java ...
  #1 (permalink)  
Antiguo 01/02/2004, 19:14
 
Fecha de Ingreso: septiembre-2003
Ubicación: La Paz, Bolivia
Mensajes: 6
Antigüedad: 21 años, 2 meses
Puntos: 0
No entiendo qué son las interfaces

Quisiera saber qué son, para qué sirven y cómo se usan las interfaces en general, no las interfaces de usuario.
No estoy trabajando con Java y quisiera saber si se puede utilizar las interfaces con otros programas como php por ejemplo.

Gracias de antemano.....
  #2 (permalink)  
Antiguo 01/02/2004, 21:26
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 20 años, 9 meses
Puntos: 0
Supongo que no tenes mucha experiencia en el trabajo con objetos, por lo que voy a intentar explicarlo de la manera mas sencilla posible:

Una interfaz define una serie de metodos sin implementarlos. Tambien puede declarar constantes.

Esto que quiere decir:
Una clase esta compuesta por metodos y atributos. Podes pensar en los metodos como las funciones y los atributos como las variables.
La interfaz define los metodos (funciones) pero no los implementa, es decir, es como un prototipo.

La funcionalidad es principalmente definir como uno quiere que se comporte 1 o mas clases.
Por ejemplo:
si la interfaz fuera un vehiculo (tipico ejemplo), algunos de los metodos podrian ser:
acelerar
frenar
arrancar
etc..

Despues las clases que la utilizan, como ser un auto, deben implementar esos metodos.

Es bastante util cuando uno quiere estandarizar ciertas cosas y/o hay un grupo grande de trabajo (ya que ellos deberan implementar estos comportamientos). Ej JAVA se usa mucho porque no permite la herencia multiple.

Con respecto a PHP, hasta lo que yo se no se pueden utilizar interfaces. Acordate que PHP es una lenguaje procedural y no Orientado a Objetos, aunque se pueden implementar clases.

Con respecto a otros lenguajes, la mayoria de los lenguajes orientados a objetos permiten la implementacion de interfaces.

Espero haberte podido aclarar un poco el panorama.
Saludos
__________________
Orlando F. Brea
SmartSol - Soluciones Inteligentes


Diseño y Desarrollo de Soluciones Web

Última edición por orlandob; 01/02/2004 a las 21:27
  #3 (permalink)  
Antiguo 01/02/2004, 23:02
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Solo como extensión del comentario de orlandob, te comento que PHP, si bien puede ser utilizado como lenguaje Procedural, también podés programar tranquilamente orientado a objetos, si sos metódico y no mezclás los dos tipos de programación, aparte de que PHP5, entre otras mejoras, va a incorporar el uso de Interfases.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #4 (permalink)  
Antiguo 06/02/2004, 00:55
 
Fecha de Ingreso: septiembre-2003
Ubicación: La Paz, Bolivia
Mensajes: 6
Antigüedad: 21 años, 2 meses
Puntos: 0
lo que ocurre es que estoy desarrollando un proyecto con el proceso unificado, y en la parte de diseño debo desarrollar las interfaces, como comunicacion entre clases o entre paquetes y no se como hacerlo. Debido a que uso php y no java.
Era por esa razon la pregunta. de todos modos gracias!!!
  #5 (permalink)  
Antiguo 06/02/2004, 11:53
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 21 años, 4 meses
Puntos: 7
alguien sabe donde se puede encontrar informacion general al respecto?
es decir el uso en general de interfaces, clases etc
Chaop!
  #6 (permalink)  
Antiguo 06/02/2004, 13:09
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
rene_luis, no es necesario programar en Java para saber lo que es una interfase y como utilizarla. Una interfase es como un "contrato" que firma una Clase, al decir que implementa TAL interfase. Entonces, esa clase, está comprometida a implementar los métodos que define la Interfase. Esto seria algo asi:

Código PHP:
interfase Iterador {
function 
siguiente();
function 
reiniciar();
function 
hayMas();
}

class 
ArrayIterador implements Iterador
{
/* Aqui dentro es necesario definir los metodos
* siguiente, reiniciar y hayMas sino el Engine
* dará error, ya que la clase sinó, no estaría
* implementando la Interfase Iterador */

__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #7 (permalink)  
Antiguo 08/02/2004, 19:39
 
Fecha de Ingreso: septiembre-2003
Ubicación: La Paz, Bolivia
Mensajes: 6
Antigüedad: 21 años, 2 meses
Puntos: 0
Insisto en PHP no existe la instruccion:
class ArrayIterador implements Iterador
es decir la palabra "implements"
por esa razon no se como implementar las interfaces
si no es mucha molestia, quisiera que me expliquen un poquito mas...
gracias amigos...son mi unica esperanzaza.....
  #8 (permalink)  
Antiguo 08/02/2004, 22:15
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
REne-Luis, como te expliqué en mi primer mensaje, solo PHP5 ( en estado Beta ) tiene soporte para multiples interfases, más PHP4 aún no. Solo podrías Simular el uso de una interfaz por clase, utilizando una clase abstracta que genere un error ante un método no re-declarado.

Obviamente, esto te sirve para implementar 1 sola interfase por objeto, pero quizás te sirva :

Código PHP:
<?php
class Iterador
{
function 
siguiente(
    die(
"Se debe redefinir el metodo Iterador::siguiente");
);

function 
reiniciar(
    die(
"Se debe redefinir el metodo Iterador::reiniciar");
);

function 
hayMas(
    die(
"Se debe redefinir el metodo Iterador::hayMas");
);
}



class 
ArrayIterador extends Iterador
{
/* Aqui dentro es necesario definir los metodos
* siguiente, reiniciar y hayMas sino el Engine
* dará error, ya que la clase sinó, no estaría
* implementando la Interfase Iterador */
}
?>
Así como te lo presento, puedes simular una interfase en PHP, y si no redefines los métodos correspondientes, el Script dará error y morirá.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #9 (permalink)  
Antiguo 09/02/2004, 01:53
 
Fecha de Ingreso: noviembre-2003
Ubicación: Monterrey, MEXICO
Mensajes: 16
Antigüedad: 21 años
Puntos: 0
Cita:
Mensaje Original por rene-luis
Insisto en PHP no existe la instruccion:
class ArrayIterador implements Iterador
es decir la palabra "implements"
por esa razon no se como implementar las interfaces
si no es mucha molestia, quisiera que me expliquen un poquito mas...
gracias amigos...son mi unica esperanzaza.....
No necesitas que existan la palabra interfase.En PHP no existen variables privadas, públicas etc y nosotros simulamos eso poniéndole un "_" inicial a la variables privadas. Logras el mismo efecto, pero el "compilador" no te prohibe accesarlas, lo que si haría java o c++.

Es el mismo caso con las interfases. Define una interfase en tu pizarrón o libreta. Supon que tu interfas tiene 3 funciones. Pues todas las clases de PHP que quieras que usen esa interfas, pues le agregas esas tres funciones. Como PHP no tiene "soporte" para interfases, entonces TU tendrás que tener cuidado de no llamar a un clase que no tenga declaradas esas funciones (o lo que es lo mismo, que no "soporte esa interfas").

No te compliques la vida, es algo muy sencillo. Puedes vivir sin ellas.
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 12:59.