Las clases es lo fundamental para decir si un
lenguaje es orientado a objetos o no.
Porque las clases son fundamentales para crear un objeto.
Un objeto se crea apartir de una clase.
Se van instanaciando objetos a como a sido declarada esa clase.
Cada objeto tiene sus propias variables y metodos que fueron
definidas en la programacion de la clase.
La programacion orientada objetos permite tener varios objetos que
cada uno cumpla una funcion en comun para que el conjunto de estos
objeto den el resultado final que se deseaba.
-------------------------------------------------------------------------
EN PHP
La clase se define
class_persona.php
telefono; //El this para indicar que es de esa clase.
}
}
main.php
include("clases/class_persona.php");
$luis=new Persona();
$luis->telefono= "4444-4444"
$luis->telefonof();
?>
La herencia permite compartir las funciones o propiedades
de una clase con otra.
Ejemplo:
class Caja_tematica extends Caja{
var $tema;
function define_tema($nuevo_tema){
$this->tema = $nuevo_tema;
}
}
------------------
class A {
var $atributo = 'valor inicial'
function operación() {
echo 'Clase A:
';
echo 'El valor de \$atributo es $this->atributo
';
}
}
Queremos crear una subclase B y alterar el valor de atributo y la funcionalidad de operación de la clase A, entonces escribimos:
Class B extends A {
var $atributo = 'valor cambiado';
function operación() {
echo 'Clase B:
';
echo 'El valor de \$atributo ahora es $this->atributo
';
}
}
Herencia Multiple
---------------
Algunos lenguajes OO soportan herencia múltiple, esto significa que una subclase puede heredar de varias clases padres.
Polimorfismo
------------
Cualquier lenguaje de programación orientado a objetos debe soportar el polimorfismo, esto significa que clases diferentes tendrán un comportamiento distinto para la misma operación. Esto lo veremos más claro con el siguiente ejemplo.
Supongamos que tenemos dos clases distintas coche y ciclomotor. Ambas tienen sus propios métodos de movimiento, éstos tienen diferentes comportamientos, pero su nombre es el mismo
class coche {
function avanza() {
}
function para() {
}
function girar_derecha() {
}
}
class ciclomotor {
function avanza() {
}
function para() {
}
function girar_derecha() {
}
}
Como podemos observar, ambas clases tienen los mismos métodos, supongamos ahora que tenemos otra clase que controla el movimiento de todos los vehículos, es aquí donde entra en juego el polimorfismo, que dependiendo del objeto que tratemos actuará de una forma u otra el método al que llamamos.
class movimiento {
function mover_adelante($obj) {
$obj->avanza();
}
}
Supongamos que queremos mover cualquier vehículo hacia adelante entonces haríamos:
$obj_coche = new coche();
$obj_ciclomotor = new ciclomotor();
$obj_movimiento = new movimiento();
// con esta sentencia el coche avanzaria hacia adelante.
$obj_movimiento->mover_adelante($obj_coche);
// con esta sentencia el ciclomotor avanzaría hacia adelante.
$obj_movimiento->mover_adelante($obj_ciclomotor);
Sobrecarga de funciones
----------------------
class Polimorfismo {
function metodo ($integer,$string){
//Cogigo
}
function metodo ($string){
//Cogigo
}
}
Mismos nombres para las funciones pero se van a ejecutar diferente por
los diferentes parametros que tienen.
Constructores
class construir {
function construir($string,$int) {
echo $string ;
echo $int ;
}
function construir($string) {
$int = 222;
echo $string ;
echo $int ;
}
}
Destructores lo mismo pero con un bitwise en la funcion.
Sobrecarga de operadores
De modo análogo a la sobrecarga de funciones, la sobrecarga de operadores permite al programador dar nuevos significados a los símbolos de los operadores existentes en C++.
C++ permite a los programadores sobrecargar a los operadores para tipos abstractos de datos.
Operadores que se pueden sobrecargar: