guia poo

17
SERGIO BARRANCO ZARCO JULIO CESAR SALAS López iTIC-91

Upload: sergio-barbar

Post on 20-Jul-2015

69 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Guia poo

SERGIO BARRANCO ZARCO

JULIO CESAR SALAS López

iTIC-91

Page 2: Guia poo

Elementos Que Conforman Una Clase

La programación orientada a objetos se basa en la programación de clases;

a diferencia de la programación estructurada, que está centrada en las funciones.

Una clase es un molde del que luego se pueden crear múltiples objetos, con similares características.

Un poco más abajo se define una clase Persona y luego se crean dos objetos de dicha clase.

Una clase es una plantilla (molde), que define atributos (lo que conocemos como variables)

y métodos (lo que conocemos como funciones).

La clase define los atributos y métodos comunes a los objetos de ese tipo, pero luego, cada objeto

tendrá sus propios valores y compartirán las mismas funciones.

La sintaxis básica para declarar una clase es:

class [Nombre de la Clase] {

[atributos]

[métodos]

}

Page 3: Guia poo

Atributos

Los atributos son las características, cualidades, propiedades distintivas de cada clase.

Contienen información sobre el objeto. Determinan la apariencia, estado y demás

particularidades de la clase. Varios objetos de una misma clase tendrán los mismos

atributos pero con valores diferentes. Cuando creamos un objeto de una clase determinada,

los atributos declarados por la clase son localizadas en memoria y pueden ser modificados

mediante los métodos.

Podemos ver normalmente los atributos de la clase se definen inmediatamente después que

declaramos la clase:

class Menu {

private $enlaces=array();

private $titulos=array();

Page 4: Guia poo

MétodosLos métodos son como las funciones en los lenguajes estructurados, pero están definidos dentro de una clase y operan

sobre los atributos de dicha clase.

Los métodos también son llamados las responsabilidades de la clase. Para encontrar las responsabilidades de una clase hay

que preguntarse qué puede hacer la clase.

El objetivo de un método es ejecutar las actividades que tiene encomendada la clase a la cual pertenece.

Los atributos de un objeto se modifican mediante llamadas a sus métodos.

public function inicializar($tit,$ubi

)

{

$this->titulo=$tit;

$this->ubicación=$ubi;

}

Page 5: Guia poo

Referencia $this

Es utilizado en programación orientada a objetos y se define $this dentro de un objeto como un puntero al objeto en

que está contenido.

La palabra this está disponible para hacer referencia al objeto en el que se encuentra y puede ser utilizada en

cualquier objeto

<?php

class xero{

var $nick;

function escribe($nombre){

echo "Tu anterior nick es:",$this->nick;

$this->nick=$nombre;

echo "<br>Tu actual nick es:",$this->nick,"<br>";

} }

$variable=new xero();

$variable->escribe("Xero");

$variable->escribe("Nixo");

?>

Page 6: Guia poo

Diferentes formas para el paso de argumentos a un metodo

Los parámetros se pasan por valor

En PHP generalmente los parámetros se pasan por valor. Cuando se pasa un parámetro por valor a una función,

los cambios que se hagan sobre esta variable solo tendrán efecto en el ámbito de la función, por lo que no se

actualiza la variable que se pasó a la función.

<?php

function porValor($param)

{

$param = "hola";

echo "<BR>" . $param; //imprime "hola"

}

$var = "no cambia";

porValor($var);

echo "<BR>" . $var; //imprime "no cambia"

?>

Como se ve en el ejemplo, cuando invocamos la función por valor pasando $parametro1 como parámetro, a pesar

de que cambiemos el valor del parámetro dentro de la función, la variable original no se ve afectada por ese

cambio.

Page 7: Guia poo

Paso de parámetros por referencia

Los parámetros pasados por referencia se comportan en contraposición al paso de parámetros por valor. En

este caso, el cambio del valor de un parámetro dentro de una función sí afecta al valor de la variable original.

Podemos pasar los parámetros por referencia si, en la declaración de la función, colocamos un "&" antes del

parámetro.

<?php

function porReferencia(&$cadena)

{

$cadena = 'Si cambia';

}

$var = 'Esto es una cadena';

porReferencia ($var);

echo $var; // Imprime 'Si cambia'

?>

Page 8: Guia poo

Parámetros por defecto

Cuando se le define un valor a un parámetro al momento de declarar una función, este parámetro tomará ese valor

por defecto mientras no se envíe otro al momento de invocar la función. Los valores por defecto sirven para que los

parámetros contengan un dato predefinido. Se definen asignando un dato al parámetro al declararlo en la función.

Para la definición de la función anterior, $parametro1 tiene como valor por defecto "pepe", mientras que

$parametro2 tiene 3 como valor por defecto.

Para la definición de la función anterior, $parametro1 tiene como valor por defecto "pepe", mientras que

$parametro2 tiene 3 como valor por defecto.

Si llamamos a la función sin indicar valores a los parámetros, éstos tomarán los valores asignados por defecto:

• pordefecto () // $parametro1 vale "pepe" y $parametro2 vale 3

Si llamamos a la función indicando un valor, éste será tenido en cuenta para el primer parámetro.

• pordefecto ("hola") // $parametro1 vale "hola" y $parametro2 vale 3

Atención, estamos obligados a declarar todos los parámetros con valores por defecto al final.

Page 9: Guia poo

Devolver desde un método

Los valores son devueltos usando la sentencia opcional return. Se puede devolver cualquier tipo, incluidos

arrays y objetos. Esto causa que la función finalice su ejecución inmediatamente y pase el control de nuevo a la

línea desde la que fue llamada. Véase return para más información.

Ejemplo #1 Uso de return

<?php

function cuadrado($núm)

{

return $núm * $núm;

}

echo cuadrado(4); // imprime '16'.

?>

Page 10: Guia poo

Constructor

void __construct ([ mixed $args [, $... ]] )

PHP 5 permite a los desarrolladores declarar métodos constructores para las clases. Aquellas que tengan un

método constructor lo invocarán en cada nuevo objeto creado, lo que lo hace idóneo para cualquier

inicialización que el objeto pueda necesitar antes de ser usado.

Nota: Constructores parent no son llamados implícitamente si la clase child define un constructor. Para ejecutar

un constructor parent, se requiere invocar a parent::__construct() desde el constructor child. Si el child no define

un constructor, entonces se puede heredar de la clase padre como un método de clase normal (si no fue

declarada como privada).

<?php

function cuadrado($núm)

{

return $núm * $núm;

}

echo cuadrado(4); // imprime '16'.

?>

Page 11: Guia poo

Herencia de Objetos

La herencia es un principio de programación bien establecido y

PHP hace uso de él en su modelado de objetos. Este principio

afectará la manera en que muchas clases y objetos se

relacionan unas con otras.

Por ejemplo, cuando se extiende una clase, la subclase hereda

todos los métodos públicos y protegidos de la clase padre. A

menos que una clase sobrescriba esos métodos, mantendrán su

funcionalidad original.

Esto es útil para la definición y abstracción de la funcionalidad y

permite la implementación de funcionalidad adicional en objetos

similares sin la necesidad de reimplementar toda la

funcionalidad compartida.

Page 12: Guia poo

Polimorfismo

El polimorfismo implica que, teniendo varias clases con métodos con el mismo nombre, otra función podrá definir

según el objeto pasado como parámetro qué método de qué clase se utilizará. Nada mejor que un ejemplo para

entenderlo:

Pongamos que tenemos 2 clases (perro y persona) que implementan la función andar

Page 13: Guia poo

Public

Los elementos declarados como Public son accesibles

tanto desde fuera como desde dentro de la clase.

<?php

class Vehiculo

{

public $marca;

function __construct($marca)

{

$this->marca=$marca;

}

}

$micoche = new Vehiculo("Toyota");

echo $micoche->marca;

?>

El atributo marca es público y por lo tanto es visible desde

fuera de la clase.

Page 14: Guia poo

Private

Los elementos declarados como Private son accesibles sólo

desde la misma clase donde fueron definidos.

<?php

class Vehiculo

{

private $marca;

function __construct($marca)

{

$this->marca=$marca;

}

}

$micoche = new Vehiculo("Toyota");

echo $micoche->marca;

?>

Si ejecutamos el código obtendremos el siguiente error:

Fatal error: Cannot access private property Vehiculo::$marca

El atributo marca no es visible fuera de la clase en la que se

definió.

Page 15: Guia poo

Protected

Los elementos declarados como Protected son accesibles desde la misma clase donde fueron definidos y en sus

subclases.

<?php

class Vehiculo

{

protected $marca;

function __construct($marca)

{

$this->marca=$marca;

}

}

class Coche extends Vehiculo

{

function __construct($marca)

{

$this->marca=$marca;

}

}

$micoche = new coche("Toyota");

echo $micoche->marca;

?>

Si ejecutamos el código obtendremos el siguiente error

Fatal error: Cannot access protected property Coche

Producido por la línea que contiene este código:

echo $micoche->marca;

Este error sucede por utilizar el atributo marca fuera de la

clase Vehículo y quedar así fuera de su visibilidad. En

cambio el uso de este atributo en la clase Coche y

Vehículo es correcto.

Los métodos o atributos sin ninguna de las declaraciones

(public, private o protected) por defecto serán public.

Page 16: Guia poo

Abstracción de clases

PHP 5 introduce clases y métodos abstractos. Las clases definidas como abstract no se pueden instanciar y

cualquier clase que contiene al menos un método abstracto debe ser definida como abstract. Los métodos definidos

como abstractos simplemente declaran la estructura del método, pero no pueden definir la implementación.

Cuando se hereda de una clase abstracta, todos los métodos definidos como abstract en la definición de la clase

parent deben ser redefinidos en la clase child; adicionalmente, estos métodos deben ser definidos con la misma

visibilidad (o con una menos restrictiva). Por ejemplo, si el método abstracto está definido como protected, la

implementación de la función puede ser redefinida como protected o public, pero nunca como private. Por otra

parte, las estructuras de los métodos tienen que coincidir; es decir, la implicación de tipos y el número de

argumentos requeridos deben ser los mismos. Por ejemplo, si la clase derivada define un parámetro opcional,

mientras que el método abstracto no, no habría conflicto con la estructura del método. Esto también aplica a los

constructores de PHP 5.4. Antes de PHP 5.4 las estructuras del constructor podían ser diferentes.

Page 17: Guia poo

Interfaces de objetos

Las interfaces de objetos permiten crear código con el cual especificamos qué métodos deben ser

implementados por una clase, sin tener que definir cómo estos métodos son manipulados.

Las interfaces son definidas utilizando la palabra clave interface, de la misma forma que con clases

estándar, pero sin métodos que tengan su contenido definido.

Todos los métodos declarados en una interfaz deben ser public, ya que ésta es la naturaleza de una

interfaz.

Interfaces con constantes

<?php

interface a

{

const b = 'Interface constant';

}

// Imprime: Interface constant

echo a::b;

// Sin embargo ésto no funcionará ya que no está permitido

// sobrescribir constantes

class b implements a

{

const b = 'Class constant';

}

?>