Poo 1
Poo 1
¿QUÉ ES?
La P.O.O (también conocida como O.O.P en inglés) es una forma de crear software. Su característica fundamental es que
intenta llevar al mundo del código lo mismo que encontramos en el “mundo real”.
Al mirar a nuestro alrededor distinguimos diferentes “objetos”, cada uno de ellos de una clase diferente. Nos resulta
muy sencillo distinguir entre un gato y una mesa; ya que son objetos de diferentes clases. La POO Propone resolver
problemas de la realidad a través de identificar objetos y relaciones de colaboración entre ellos.
Es importante aclarar que la POO no es un lenguaje de programación, sino que es una forma de construir software, y
que puede desarrollarse en diferentes lenguajes.
CARACTERISTICAS DE POO
Abstracción - Herencia – Polimorfismo – Encapsulamiento - Modularidad
ABSTRACCION:
- Ignorancia selectiva
- Decide qué es importante y qué no lo es
- Se enfoca en lo que es importante
- Ignora lo que no es importante
- Utiliza la encapsulación para reforzar la abstracción.
1
Programación III
Prof. Paula Giaimo
ENCAPSULAMIENTO:
HERENCIA:
- Va de la generalización a la especialización
- Clase base o padre – clase derivada o hija
- Hereda la implementación
2
Programación III
Prof. Paula Giaimo
MODULARIDAD:
POLIMORFISMO:
JERARQUIZACION:
3
Programación III
Prof. Paula Giaimo
COMPONENTES FUNDAMENTALES
Clases – Objetos
Las clases son abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando
programamos un objeto y definimos sus características y funcionalidades en realidad estamos programando una clase.
Cuando decimos “ave”, sabemos que nos referimos a “algo” con plumas, pico, dos patas, etc. No importa si tenemos un
ave frente a nosotros; entendemos claramente que la palabra “ave” se refiere a alguna cosa que cumple con unas
características específicas, se comporta de una forma concreta, etc. Por ejemplo, sabemos que una gallina es un ave y
que un perro no es un ave.
La clasificación es algo que hacemos todos los días, a cada momento. Cada vez que decimos que algo es
alguna cosa, estamos clasificándolo, asociándolo a una clase.
Sin embargo, sabemos que la palabra ave no se refiere a un animal concreto, sino a una serie de
animales. Ave es la palabra que usamos para identificarlos en un grupo, pero siempre que nos referimos
a “esta” o “aquella” ave, hablaremos de un animal concreto. La palabra es lo que conocemos como un
concepto, una abstracción.
En la POO ocurre igual, una clase no es más que una serie de código que define a todos los elementos
relacionados con ella. Así, podríamos escribir la clase ave colocando en ella todas las características que tienen las aves
(pico, color, alto, ancho, patas,…) esas características las llamaremos en lenguaje de programadores, propiedades o
atributos.
Las aves tienen también ciertos comportamientos específicos, como comer, dormir, reproducirse, etc. Estos
comportamientos los llamamos métodos.
Por último, también sabemos que las aves reaccionan ante ciertos sucesos, como peligro, atracción, defensa… A esto lo
llamaremos eventos.
4
Programación III
Prof. Paula Giaimo
Entonces, vemos que una clase es algo así como el concepto de lo que queremos hacer, es como la idea (concebida al
detalle) de la cosa, del objeto; pero igual que con las ideas, no puedo hacer nada directamente con una clase (puedes
sentarte en una silla, pero no en tu idea de una silla). Sin embargo, esta idea será la que dé forma al objeto que
crearemos (que tendrá las características, mecanismos y comportamientos que habíamos pensado en nuestra idea).
class: Es una palabra reservada que le indica al compilador que el siguiente código es una clase.
Identificador: Indica el nombre de la clase
5
Programación III
Prof. Paula Giaimo
Los nombres deben ser sustantivos, con la primera letra en mayúscula y el resto en minúscula. Ejemplo: Auto
Si el nombre es compuesto, las primeras letras de cada palabra en mayúsculas, las demás en minúsculas.
Ejemplo: MiAuto
Es importante intentar mantener los nombres de las clases simples y descriptivos. Usar palabras completas,
evitar acrónimos y abreviaturas.
La llave de apertura "{" aparece al final de la misma línea de la sentencia declaración
La llave de cierre "}" empieza una nueva línea indentada para ajustarse a su sentencia de apertura
correspondiente, excepto cuando no existen sentencias entre ambas, que debe aparecer inmediatamente
después de la de apertura "{"
EJEMPLO:
6
Programación III
Prof. Paula Giaimo
ATRIBUTOS:
Las propiedades o atributos son las características individuales que diferencia un objeto de otro y determinan su
apariencia, estado u otras cualidades. Los atributos se guardan en variables, y cada objeto particular puede tener valores
distintos para estas variables.
Las variables de instancia son declaradas en la clase pero sus valores son fijados y cambiados en el objeto.
https://www.php.net/manual/es/language.oop5.properties.php
SINTAXIS de atributos.
Modificador: Determina la accesibilidad que tendrán sobre él las demás clases. Si no pongo ninguno se permite usar la
palabra var; la cual actúa de la misma manera que si pusiera “public”.
Tipo(opcional): A partir de PHP 7.4. Se permite definir el tipo de dato que almacenará. (No es posible en versiones
anteriores)
Identificador: Indica el nombre del atributo.
Los nombres de variables o atributos deben empezar con el signo pesos "$".
Los nombres de los atributos se designan en minúsculas.
Si el nombre es compuesto, la primera letra de la segunda palabra estará en mayúscula, las demás en minúscula;
o las palabras pueden estar separadas por un guión bajo. Ejemplos: $miNombre / $mi_nombre.
Los nombres de las variables deben ser cortos pero con significado. La elección del nombre de una variable debe
estar designado para indicar a un observador casual su función.
Los nombres de variables de un solo carácter se deben evitar, excepto para variables índices temporales.
Nombres comunes para variables temporales son $i, $j, $k, $m, y $n para enteros; $c, $d, y e para caracteres.
METODOS:
7
Programación III
Prof. Paula Giaimo
SINTAXIS de métodos.
MODIFICADORES de Acceso:
Los atributos y métodos pueden tener 3 tipos de modificadores (a partir de PHP 5):
8
Programación III
Prof. Paula Giaimo
Un objeto es una instancia de una clase. Cuando creamos un objeto tenemos que especificar la clase a partir de la cual
se creó. Esta acción de crear un objeto a partir de una clase se llama instanciar, esta palabra viene de instance en inglés,
que significa “ejemplo”.
Los objetos son creados en tiempo de ejecución. Poseen un comportamiento que le permite realizar tareas específicas,
y un estado que le permite almacenar información fija o variable.
Por ejemplo, un objeto de la clase Fracción sería 3/5. El concepto o definición de fracción sería la clase; pero cuando ya
estamos hablando de una fracción en concreto 4/7, 8/10 o cualquier otra, la llamamos objeto.
En un mismo proyecto puedo tener varios objetos de una misma clase sin problemas.
Cada vez que creamos un nuevo objeto, éste adquiere las propiedades, métodos y eventos de la clase a la que
pertenece, sin embargo, cada objeto es independiente de los otros; esto nos da dos ventajas:
Si hago algún cambio en la clase, todos los objetos de esta clase se actualizarán automáticamente;
esto nos permite hacer cambios sin tener que ir a cada uno de los objetos.
Al ser independientes de los otros objetos, puedo darles valores diferentes sin que afecten a los
demás (como tener una silla negra, una roja, una más alta, etc.). Aunque comparten la misma
estructura, pueden programarse individualmente, dando versatilidad y flexibilidad al código.
SINTAXIS de OBJETOS
LOS CONSTRUCTORES:
Los constructores son métodos especiales que se utilizan para inicializar objetos al
momento de su creación.
Los constructores, a partir de PHP5 se definen con la palabra __construct y nos permite
iniciarlizar las propiedades de un objeto cuando lo creamos.
Si no especificamos un constructor, existe uno por defecto
que nos permitirá crear objetos.
Si el constructor por defecto no es adecuado, lo mejor es que escribamos nuestro propio constructor.
Podemos escribir un constructor que contenga únicamente el código
necesario para inicializar campos con valores distintos a cero. Todos los
campos que no estén inicializados en este constructor conservarán su
inicialización predeterminada a cero, false o null.
Una vez declarado un constructor en nuestra clase, el constructor por
defecto deja de funcionar.
10
Programación III
Prof. Paula Giaimo
Ejemplo:
Operador $this:
Se usa para referirse al objeto que está ejecutando el método. Solo se puede usar adentro de un método.
Ejemplo:
11
Programación III
Prof. Paula Giaimo
DESTRUCTOR:
Propiedades estáticas:
Las propiedades y métodos estáticos pueden ser accedidos sin necesidad de crear un objeto. Van precedidos del
modificador static
NombreClase :: $propiedad;
Ejemplo:
Una clase puede tener propiedades estáticas y no estáticas al mismo tiempo. Para acceder a ellas desde un método de la
misma clase usamos el operador self y ::
12
Programación III
Prof. Paula Giaimo
Para invocarlo:
Metodos estáticos:
Suelen emplearse para realizar operaciones comunes a todos los objetos de la clase. No afectan a los estados de los
mismos (a los valores de sus variables de instancia). Por ejemplo, si se necesita un método para contabilizar el número
de objetos creados de una clase, tiene sentido que sea estático ya que su función (aumentar el valor de una variable
entera) se realizaría independientemente del objeto empleado para invocarle.
No conviene usar muchos métodos estáticos, pues si bien se aumenta la rapidez de ejecución, se pierde flexibilidad, no
se hace un uso efectivo de la memoria y no se trabaja según los principios de la Programación Orientada a Objetos
Si se invoca desde la clase en la que se encuentra definido, debemos nombrarlo luego de self::
Si se le invoca desde una clase distinta, debe anteponerse a su nombre, el de la clase en la que se encuentra seguido del
operador ::
Ejemplo:
13