|
|
(15 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
| {{TEP}} | | {{TEP}} |
− | <!--__NOEDITSECTION__-->
| + | {{:Usuario:ManuelRomero/php/opp/nav}} |
− | __NOTOC__
| + | <br /> |
− | {|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:2px; border-color:#0066FF;" | + | {{Objetivos| |
− | | width="100%" valign="top" style="padding: 0; margin:0px;" |
| + | *Usar php como un lenguaje orientado a objetos |
− | {|cellpadding="5" cellspacing="6" style="width:100%;background:#DFFFFF; border-style:solid; border-width:1px; border-color:#0066FF;" | + | *PHP en principio no fue un lenguaje orientado a objetos |
− | | width="100%" valign="top" style="padding: 0; margin:0px;" |
| + | *En este sentido hay una gran diferencia a partir de php versión 5 |
− | <span style="background:#FFFF99">
| + | |
− | </span> | + | |
− | [[Imagen:DWES_TituloTema6.png|center]]
| + | |
− | |}
| + | |
− | ===Repaso básico de la programación orientada a objetos===
| + | |
− | *En programación el paradigma imperativo está basado en funciones y datos, | + | |
− | *El paradigma orientado a objetos está basado en Objetos.
| + | |
− | *Los '''objetos''' son el elemento básico y central de la programación orientada a objetos (OOP) o (POO) | + | |
− | *Podemos hablar de ''universo de discurso'' como el sitema que queremos automatizar por software
| + | |
− | *Un Objeto es una entidad (concreta o abstracta) que presenta una actividad en un entorno concreto,
| + | |
− | en un determinado universo de discurso
| + | |
− | {{Definicion| '''Objeto''' Cada '''elemento activo''' que identificamos dentro de un determinado univeso de discurso}}
| + | |
− | {{Ejemplo|
| + | |
− | ;En un banco hay cuentas bancarias (objeto)
| + | |
− | :Las cuentas bancarias se identifican con un número y un titular (nombre, apellido y dni) '''''atributos'''''
| + | |
− | :Las cuentas se pueden dar de alta, de baja, hacer extracciones e ingresos y transferencias... '''''metodos'''''
| + | |
| }} | | }} |
− | un clase es la estructura de un tipo concreto de objetos
| |
− | Los objetos son elementos concretos en mi sistema
| |
− | La estructura común (datos y comportamiento) de los objetos sirven especificar su composicion
| |
− | Esta composición queda descrita y especificada en la clase
| |
− | Una clase tiene dos elementos
| |
− | '''''Atributos''''' ==> Son las características o datos de un objeto
| |
− | Su valor nos da el estado de un objeto en un momento dado
| |
− | Comportamiento==> permiten modificar el estado de un objetos
| |
− | Permiten saber como es el estado de un objeto
| |
− | Permiten que un objeto haga cosas en el sistema (comunicación entre objetos)
| |
− | Son las cosas que el objeto sabe hacer Servicios que ofrece
| |
− | También lo son acciones internas para facilitar las cosas al objeto
| |
− |
| |
− | [[Archivo:clase.png]]
| |
− |
| |
− | ==Instancias==
| |
− | *Una clase describe lo común de unos determinados objetos
| |
− | *Las clases en principio no se usan durante la ejecución
| |
− | *Lo que se usa son objetos
| |
− | *Para ello debemos ''instanciar'' objetos de las clases
| |
− | *Esto se hace con el operador '''new'''
| |
− | *Una vez '''instanciado''' ya tenemos el objeto en memoria y lo podemos utilizar
| |
− | *Se realiza una copia de '''toda''' la estructura del la clase por objeto
| |
− | [[Archivo:Objetos4.png]]
| |
− |
| |
− | ===Carácterísticas de la programación orientada a objetos===
| |
− | *La programación orientada a objetos está basada en cuatro pilares fundamentales
| |
− | *Estos pilares dan pontecia a este paradigma de la programación
| |
− | *Ŝu objetivo final es reutilizar componentes. Pensamos en el desarrollo software como una contrucción donde diferentes componentes se integran para interactuar y resolver un problema previamente planteado.
| |
− | ;Polimorfismo:
| |
− | :Hace referencia a utilizar un mimo método de diferentes maneras. según se invoque con unos u otros parámetros realizará unas acciones u otras
| |
− | ;Herencia:
| |
− | Característica por la cual una clase puede heredar todas las características de otra clase y así especializar su funcionalidad a partir de una clase mas general previamente construida
| |
− | ;Encapsulacion y Abstracción.
| |
− | Estas carácterísticas son fundamentales. La idea es construir una clase y tener encerrada dentra de ella su programación. Cara al esterior un programador que utilice dicho objeto sabe lo qué hace y para que puede utilizar dicho objeto, también debe saber como usarlo. Pero como lo hace no es información relevante para él.
| |
− | ==elementos estáticos==
| |
− | Dentro de una clase es posible definir elementos estáticos
| |
− | tanto atributos como operaciones
| |
− | Estos elementos tiene un comportameinto especial
| |
− | su valor o funcionalidad es compartida por todos los objetos de la clase
| |
− | solo hay una referencia a ello en memoria
| |
− | no se crean en memoria por cada objeto
| |
− | Permanecen en memoria mientras exista un objeto de la clase
| |
− | Una operación estática solo puede acceder a miembros estáticos
| |
− | o invocar a otros métodos estáticos
| |
− |
| |
− | ==Modificadores de acceso==
| |
− | *Exiten tres modificadores explícitos de acceso
| |
− | *Es una forma de ocultar información al exterior
| |
− | *permite implementar el principio de encapsulación
| |
− | ;''publico(+)'' ''''public'''' Todos pueden acceder sin ningún tipo de restricción para acceder a ese miembro
| |
− | ;''privado(+)'' ''''private'''' Nadie sino la propia clase puede acceder a ese miembro
| |
− | ;''protegido(+)'' ''''protected'''' Sólo la propia clase y clases derivadas pueden acceder a ese miembro
| |
− | [[Archivo:Modificadores.png]]
| |
− | ;Los miembros no etiquetados son accesibles por clases amigas
| |
− | :En java las clases amigas son las que pertenecen a un mismo paquete
| |
− | :para especificar un paquete se usa la palabra reservada '''package'''
| |
− | {{Lectura|Las clases que no se decalren dentro de un paquete pertenecen a un paquete por defecto Todas ellas}}
| |
− |
| |
− |
| |
− |
| |
− | ==Constructor==
| |
− | *Cuando se instancia un objeto de una clase normalmente hay que dar valor a sus atributos
| |
− | *Esto se hace con un método especial llamado constructor
| |
− | *El constructor es un método que no debe de retornar nada
| |
− | *Se ha de llamar exactamente igual que la clase
| |
− | *Siempre ha de haber un constructor, en caso de no haberlo el sistema crea uno por defecto (transparente)
| |
− | *Inicializa los atributos con valores por defecto 0,cadena vacía, null,...
| |
− | *Si una clase tiene superclase se invoca al constructor de su supertipo si no se hace explícitamente
| |
− | *En caso de hacer explícitamente ha de ser la primera instrucción del constructor
| |
− | *Se hace con la palabra reservada '''super(..)'''
| |
− | ==Destructor==
| |
− | *El destructor es un método especial que se ejecuta cuando el objeto se destruye (se libera la memoria donde estaba ubicado)
| |
− | *En java existe lo que se llama el recolector de basura
| |
− | *Esto implica que no tenemos que preocuparnos de eliminar un objeto
| |
− | *Sin embargo existe un método que podemos invocar al destruirse un objeto
| |
− | *el método se llama '''finalize''' y el código que en él pongamos se ejecutará cuando se destruya el objeto
| |
− | =Herencia=
| |
− | *La herencia es un mecanismo por el cual puedo definir una clase con ciertas características (atributos, métodos)
| |
− | *Posteriormente puedo definir otra clase a partir de la ya existente incorporándo implícitamente las características de la primera
| |
− | *Es una característica muy natural (p.e Personas (médicos y bailarines) vehículos (Terrestres (coche, moto) Acuáticos (barco, lancha))
| |
− | [[Archivo:Herencia.png]]
| |
− | *Es una forma de objtener características comunes por separado y luego especializar evitando redundancias
| |
− | Medi
| |
− | *Facilita la reusabilidad y adaptación
| |
− | Puedo heredar un método y añadir cosas (MRM Falta ejemplo)
| |
− | En java todas las clases heredan de la clase Object (java.lang.Object)
| |
− | Esta clase tiene una serio de métodos que por lo tanto podrán utilizar cualquier clase que cree o que exista en java
| |
− | toString() compareTo() ...
| |
− |
| |
− | |}
| |