ACTIVIDAD 1
Programación Orientada a Objetos POO (bases de datos)
1.- Fundamentos de la Programación Orientada a Objetos:
- La POO tiene como su más importante característica la reutilización del código, mismo que debe ser simple y lo suficientemente comprobado antes de estar disponible para ser utilizado.
Objeto: Componente o código de software que contiene en sí mismo tanto sus características (campos) como sus comportamientos (métodos); se accede a través de su interfaz o signatura.
Campo: Es una característica de un objeto, que ayuda a definir su estructura y permite diferenciarlo de otros objetos. Se define con un identificador y un tipo, el cual indica los valores que puede almacenar. El conjunto de valores de los campos definen el estado del objeto.
Método: Es la implementación de un algoritmo que representa una operación o función que un objeto realiza. El conjunto de los métodos de un objeto determinan el comportamiento del objeto.
- Existen cuatro conceptos fundamentales dentro de la Programación Orientada a Objetos que se relacionan entre sí y que nos permitirán tener las riendas de nuestro código:
Abstracción: proceso mental de extracción de las características esenciales de algo, ignorando los detalles superfluos.
Encapsulación: proceso por el que se ocultan los detalles del soporte de las características esenciales de una abstracción.
Modularización: proceso de descomposición de un sistema en un conjunto de módulos o piezas independientes y cohesivos (con significado propio). Lo adecuado es conseguir los mínimos acoplamientos.
Jerarquización: proceso de estructuración por el que se produce una organización (jerarquía) de un conjunto de elementos en grados o niveles de responsabilidad, incumbencia o composición entre otros.
2.- Beneficios de la Programación Orientada a Objeto:
3.- Qué es la programación orientada a objetos:
- Es un método de implementación en el que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cúyas clases son, todas ellas miembros de una jerarquía de clases unidas mediante relaciones de herencia.
4.- Métodos y atributos static en Programación Orientada a Objetos:
Un Método static:
- Tiene acceso solo a los atributos estáticos de la clase.
- No es necesario instanciar un objeto para poder utilizarlo.
- Para acceder a un método de clase se escribe: NombreClase.método()
- No es específico de cada objeto. Solo hay una copia del mismo y su valor es compartido por todos los objetos de la clase.
- Podemos considerarlo como una variable global a la que tienen acceso todos los objetos de la clase.
- Existe y puede utilizarse aunque no existan objetos de la clase.
- Para acceder a un atributo de clase se escibe: NombreClase.atributo
5.- Herencia en Programación Orientada a Objetos:
- La herencia es un mecanismo que permite la definición de una clase a partir de la definición de otra ya existente. La herencia permite compartir automáticamente métodos y datos entre clases, subclases y objetos.
6.- Polimorfismo en Programación Orientada a Objetos:
- Se denomina polimorfismo a la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa.
7.- Abstracción en Programación Orientada a Objetos:
- Abstracción (informática) La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. La abstracción encarada desde el punto de vista de la programación orientada a objetos expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás.
8. Definir que es:
• CLASE:
- Las clases son plantillas que agrupan comportamiento (métodos) y estados (atributos) de los futuros objetos.
• METODO:
- Conjunto de instrucciones a las que se les asocia un nombre de modo que, si se desea ejecutarlas, sólo basta con referenciarlas a través de dicho nombre en vez de tener que escribirlas.
Dentro de estas instrucciones es posible acceder con total libertad a la información almacenada en los campos, pertenecientes a la clase dentro de la que el método se ha definido. Por lo que los métodos permiten manipular los datos almacenados en los objetos.
Sintaxis:
()
{
instrucciones;
}
• ATRIBUTO:
- Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables. Las variables de instancia también denominados miembros dato, son declaradas en la clase, pero sus valores son fijados y cambiados en el objeto. Además de las variables de instancia hay variables de clase, las cuales se aplican a la clase y a todas sus instancias.
• OBJETO:
- Son la parte ejecutable de la programación orientada a objetos Se manejan a través de variables, pertenecen a una clase.
9. Como se define en PHP:
- Una clase (Sintaxis y ejemplo):
La definición básica de una clase comienza con la palabra reservada class, seguida de un nombre de clase, y continuando con un par de llaves que encierran las definiciones de las propiedades y métodos pertenecientes a dicha clase.
El nombre de clase puede ser cualquier etiqueta válida, siempre que no sea una palabra reservada de PHP. Un nombre válido de clase comienza con una letra o un guión bajo, seguido de una cantidad arbitraria de letras, números o guiones bajos. Como expresión regular, se expresaría de la siguiente forma: ^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$.
Una clase puede tener sus propias constantes, variables (llamadas "propiedades"), y funciones (llamados "métodos").
- El Metodo constructor (sintaxis y ejemplo);
*El constructor es un método especial dentro de una clase, se suele utilizar para darle un valor a los atributos del objeto al crearlo.
*Es el primer método que se ejecuta al crear el objeto y se llama automáticamente al crearlo. Este método puede recibir parámetros como cualquier otro método y para pasárselos tenemos que pasarle los parámetros al objeto. El constructor NO DEVUELVE ningún dato.
*Podemos definir un constructor en una clase de la siguiente forma:
- Otros métodos (sintaxis y ejemplo)
Los métodos mágicos permiten reaccionar a eventos que le puedan ocurrir a un objeto instanciado. Se inician con una doble barra baja, y son: __construct(), __destruct(), call(), callStatic(), __get(), __set(), __isset(), __unset(), sleep(), wakeup(), __toString(), invoke(), set_state(), clone() y debugInfo().
El más utilizado es el constructor __construct(), que se ejecuta cuando el objeto se crea, pudiendo inyectar parámetros y dependecias requeridos para crear el objeto.

Los constructores también se heredan. Si una clase hija define un constructor propio, para heredar el de la madre es necesario indicarlo con _parent::__construct()_:

El método __destruct() hace lo contrario, se ejecuta cuando un objeto se destruye, aunque apenas se utiliza.
El método __isset() actúa como la función isset() normal, como cuando se trabaja con arrays o variables. Este método mágico permite comprobar la existencia de una propiedad no pública. El método __unset() también actúa como la función unset()** normal pero para propiedades no públicas.
El método mágico __toString() permite devolver el objeto en forma de string:
