Diferencia entre revisiones de «ManuelRomero/DAW/distancia/tutorias/Tutoria2»

De WikiEducator
Saltar a: navegación, buscar
(Página creada con «{{:Usuario:ManuelRomero/DAW/distancia/tutorias/nav}} <br/> {{Objetivos| ;Se han tratado los siguientes temas #Agenda #Ejercicios básicos de php #Presentación del tema de...»)
 
(PHP como lenguaje orientado a objetos)
 
(9 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
 
{{:Usuario:ManuelRomero/DAW/distancia/tutorias/nav}}
 
{{:Usuario:ManuelRomero/DAW/distancia/tutorias/nav}}
 +
__NOTOC__
  
 
<br/>
 
<br/>
 
{{Objetivos|
 
{{Objetivos|
;Se han tratado los siguientes temas
+
;Se han tratado el tema de programación orientado a objetos
#Agenda
+
#Concepto básicos
#Ejercicios básicos de php
+
#Características de la programación orientada a objetos
#Presentación del tema de bases de datos
+
 
}}
 
}}
  
==Agenda==
+
==Programación Orientada a objetos==
*Sobre la agenda hemos comentado tres conceptos
+
*Ver la programación orientada a objetos como una manera más cómoda de programar
#Cómo ejecutar  código php en un solo  fichero
+
*Creamos componentes software, luego los usamos
#Cómo pasar información en input de tipo hidden
+
*Usamos la abstracción es sus dos visiones:
#Cómo pasar varios datos de información usando una sola variable que sería un array
+
#Al crear los componentes software me abstraigo de lo general (de su uso), y me centro en el detalle (en su funcionamiento).
===Ejecutar php en un solo fichero===
+
#Al usarlo en el programa principal me abstraigo del detalle y me centro en su uso
 
+
===Consejos===
*Muchas ocasiones queremos que el código php se ejecute en la misma página php.
+
*Los nombres de las clases la primera letra en mayúscula
*Esto implica que de alguna manera el servidor tiene que saber si esta página es la primera vez o sea que se pide por que un usuario ha tecleado el url de la página en el navegador, o se solicita la página por que se ha invocado la ejecución del fichero como resultado de hacer un submit en un forfmulario.
+
<source lang=php>
En la página index.php tendrá que haber un formulario p.e.
+
class Fecha{
 
+
....
<form action=”index.php” method=”POST”>  
+
}
  …..
+
</source>
  <intput type=submit value=”enviar datos” name=”enviar”
+
*Guardar cada clase en un fichero con su propio nombre
 
+
<source lang=php>
</form>
+
Fecha.cpp
 
+
</source>
El código necesario dentro de la página sería
+
===PHP como lenguaje orientado a objetos===
<?php
+
*PHP es un lenguaje un poco peculiar como lenguaje orientado a objetos
  if ($_POST['enviar']){
+
*Bajo mi punto de vista hay dos temas importantes
      …...
+
#No tiene sobrecarga tal cual la conocemos
 +
#Tiene métodos mágicos que dan versatilidad aunque al principio despistan
 +
*Atributos y métodos por  defecto publicos
 +
<source lang=php>
 +
class Fecha{
 +
  private $dia;
 +
  private $mes;
 +
  private $year;
 
}
 
}
?>
+
</source>
 +
;Constructor
 +
*Podemos poner un método con el nombre de la clase y ese se ejecutaría al instanciar el objeto
 +
*Tenemos un método mágico
 +
{{Definicion|'''''métodos mágicio'''  son métodos que se ejecutan sin que los invoquemos. Se invocan de forma explícita (transparente para el programador, sin que éste los invoque),  cuando ocurre determinadas cicunstancias}}
 +
<source lang=php>
 +
__construct(){
 +
}
 +
</source>
 +
*Si tenemos un método con el nombre de la clase y el método '''''__construct''''' implementado, solo se ejecutará el método '''''__construct'''''
  
De esta forma vemos si se ha enviado el formulario. Por su puesto hay varias maneras pero esta es una de ellas
+
;Sobrecarga
Aquí ponemos un ejemplo que podemos ejecutar para verificar este ejemplo
+
*La podemos simular de dos maneras
 +
#Pasando varios atributos con valores por defecto
 +
#usanto el método mágico __call($nameFuncion, $atributos)
 +
;Ver el wiki donde está explicada esta parte
 +
;Otros aspectos en los que se han incidido
 +
*Recordad que para acceder a un atributo hay que usar obligatoriamente la seudovariable $this, en este caso el atributo no tiene que llevar $
 +
<source lang=php>
 +
class Fecha{
 +
  private $dia;
 +
  private $mes;
 +
  private $year;
 +
  public function __construct( $d, $m, $y){
 +
    $this->dia = $d; //mirar bien que dia no lleva $
 +
    $mes = $m; //En este caso $mes es una variable local al método no tiene nada que ver con el atributo $mes de la clase
 +
.....
  
 +
  }
  
//MRM Poner ejemplo formulario.
 
  
Enviar datos con input de tipo hidden
 
Supongamos que tenemos un dato que queremos pasar a un programa php, es un valor conocido por la página cliente.
 
Para enviar datos al servidor, estos han de ir en un formulario.
 
Si no queremos que en la página cliente se vean los datos los insertaremos en input de tipo hidden
 
<form action=”index.php” method=”POST”>
 
  <intput type=hidden value=8 name =edad1>
 
  <intput type=hidden value=12 name =edad2>
 
  
  <intput type=submit value=”enviar datos” name=”enviar”
+
</source>
  
</form>
+
*Concepto de variables/métodos estáticos y constantes
 +
*Usar self::... Para acceder a él
 +
<source lang=php>
 +
class miClase{
 +
  const IVA=0.21; //Constante iva, así se declaran las constantes el oop de php
 +
  public  static $cuentaObjetos; // es un atributo estático
 +
  ....
 +
  public function __contruct(){
 +
      self::$cuentaObjetos ++;//Así accedo a un elemento estático
 +
      echo "Valor de la constante " . self::IVA: //Así accedo a una constante
 +
  }
  
en la ejecucion del fichero en el servidor podremos obtener esos valores
 
<?php
 
….
 
$edadPrimera = $_POST['edad1'];
 
$edadSegunda = $_POST['edad2']:
 
….
 
?>
 
  
En el caso de la agenda observamos que cada nombre y teléfono que rellene en el input de tipo text lo podré leer directamente del input, pero también los anteriores los tengo que ir leyendo para visualizarlos , ya que partimos de que todo el mundo tiene claro que http es un protocolo sin estado.
 
  
insertar imágenes de la aplicación de la agenda
+
}
 +
</source>
  
Pasar varios valores en una única variable usando un array
+
*Luego hicimos un pequeño ejemplo de una calculadora
Supongamos que queremos pasar 10 números de diez notas para calcular la media
+
*El enunciado es la práctica del wiki
en el cliente tendríamos que tener 10 cajas de texto
+
*Os dejaré el código para que lo analicéis
 
+
<form action=”index.php” method=”POST”>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=text name =notas[]>
+
  <intput type=submit value=”enviar datos” name=”enviar”
+
 
+
</form>
+
 
+
En el servidor leeré todas las notas y se amacenarán en un array
+
<?php
+
$notas =$_POST['notas'];
+
$suma=0;
+
foreach($notas as $nota) {
+
    $suma=$suma+$nota;
+
}
+
echo “nota media = $suma/10;
+
?>
+

Última revisión de 06:33 19 dic 2015





Icon objectives.jpg

Objetivos

Se han tratado el tema de programación orientado a objetos
  1. Concepto básicos
  2. Características de la programación orientada a objetos




Programación Orientada a objetos

  • Ver la programación orientada a objetos como una manera más cómoda de programar
  • Creamos componentes software, luego los usamos
  • Usamos la abstracción es sus dos visiones:
  1. Al crear los componentes software me abstraigo de lo general (de su uso), y me centro en el detalle (en su funcionamiento).
  2. Al usarlo en el programa principal me abstraigo del detalle y me centro en su uso

Consejos

  • Los nombres de las clases la primera letra en mayúscula
class Fecha{
....
}
  • Guardar cada clase en un fichero con su propio nombre
Fecha.cpp

PHP como lenguaje orientado a objetos

  • PHP es un lenguaje un poco peculiar como lenguaje orientado a objetos
  • Bajo mi punto de vista hay dos temas importantes
  1. No tiene sobrecarga tal cual la conocemos
  2. Tiene métodos mágicos que dan versatilidad aunque al principio despistan
  • Atributos y métodos por defecto publicos
class Fecha{
   private $dia;
   private $mes;
   private $year;
}
Constructor
  • Podemos poner un método con el nombre de la clase y ese se ejecutaría al instanciar el objeto
  • Tenemos un método mágico


Icon define.gif

Definición

métodos mágicio son métodos que se ejecutan sin que los invoquemos. Se invocan de forma explícita (transparente para el programador, sin que éste los invoque), cuando ocurre determinadas cicunstancias


__construct(){
}
  • Si tenemos un método con el nombre de la clase y el método __construct implementado, solo se ejecutará el método __construct
Sobrecarga
  • La podemos simular de dos maneras
  1. Pasando varios atributos con valores por defecto
  2. usanto el método mágico __call($nameFuncion, $atributos)
Ver el wiki donde está explicada esta parte
Otros aspectos en los que se han incidido
  • Recordad que para acceder a un atributo hay que usar obligatoriamente la seudovariable $this, en este caso el atributo no tiene que llevar $
class Fecha{
   private $dia;
   private $mes;
   private $year;
   public function __construct( $d, $m, $y){
     $this->dia = $d; //mirar bien que dia no lleva $
     $mes = $m; //En este caso $mes es una variable local al método no tiene nada que ver con el atributo $mes de la clase
.....
 
   }
  • Concepto de variables/métodos estáticos y constantes
  • Usar self::... Para acceder a él
class miClase{
   const IVA=0.21; //Constante iva, así se declaran las constantes el oop de php
   public  static $cuentaObjetos; // es un atributo estático
   ....
   public function __contruct(){
      self::$cuentaObjetos ++;//Así accedo a un elemento estático
      echo "Valor de la constante " . self::IVA: //Así accedo a una constante
   }
 
 
 
}
  • Luego hicimos un pequeño ejemplo de una calculadora
  • El enunciado es la práctica del wiki
  • Os dejaré el código para que lo analicéis