Conceptos de


PROGRAMACIÓN ORIENTADA A
       OBJETOS
Clase

                                     Figura


                                x               y



                          despliega()        mueve()


Una Clase es una descripción abstracta de una entidad de la realidad en términos
   de propiedades (datos) y métodos (procesos) encapsulados en una unidad.
      Gráficamente se representa con un cuadro con puntas redondeadas,
su nombre generalmente se escribe con una letra inicial mayúscula y las restantes
   minúsculas, si aparece más de una palabra, el inicio de cada una se escribe
                               con una mayúscula,
                   por ejemplo: Persona, Figura, AnimalAcuatico
Propiedad


                                 nombre



     Una Propiedad es un dato de Tipo Primitivo (TDP) o un objeto.
       Por ejemplo, una variable x, nombrePersona, imagen, archivo.
Gráficamente representamos a una propiedad como un rectángulo su nombre
  generalmente se escribe con minúsculas,si aparece más de una palabra,
               al inicio de cada una se escribe letra mayúscula
Método



                                despliega()



Un Método es un proceso abstracto y contiene un conjunto finito de instrucciones.
  Gráficamente representamos a un método con un círculo, su nombre es similar
    al de las propiedades y termina con paréntesis donde van los parámetros.
  Al conjunto de métodos de una clase se le llama la Interfase de la Clase. Las
            clases y métodos de Java se encuentran descritos en la API
                  (Application Program Interface) java.sun.com/api
Clase Automovil
class Automovil
{
// PROPIEDADES
String color ;
int velocidadMaxima ;

    // MÉTODOS
    void asignaColor(String _color)
    {
        color = _color;
    }
    String indicaColor()
    {
        return color;
    }
}
Objeto

                                circulo


                            x               y



                     despliega()        mueve()


         Un Objeto es una instancia (caso particular) de una clase.
  El nombre de un objeto es una referencia hacia las propiedades y métodos.
       Un objeto apunta hacia propiedades y métodos y es relocalizable,
   esto significa que No apunta hacia una dirección de memoria específica.
Gráficamente se representa de forma similar que una clase la diferencia es que
        generalmente el nombre de un objeto se inicia con minúsculas.
Objetos de la Clase Automovil
class Agencia
{
  public static void main(String args[])
  {
  // OBJETOS
  Automovil autoDeportivo = new Automovil();
  Automovil camioneta = new Automovil();

        // INVOCACIÓN DE MÉTODOS
        autoDeportivo.asignaColor("azul");
        camioneta.asignaColor("rojo");
        System.out.println("autoDeportivo color " +
          autoDeportivo.indicaColor());
        System.out.println("camioneta color " +
          camioneta.indicaColor());
    }
}
Constructor

                                    Figura




                          Figura()


Un Constructor es un método público que lleva el mismo nombre de la clase
                         a la que pertenece.
Se ejecuta automáticamente cuando se crea una instancia de la clase (objeto),
  generalmente el desarrollador lo utiliza para asignar valores iniciales a las
                          propiedades del objeto.
               En Java automáticamente cada clase tiene un
  constructor con el mismo nombre de la clase sin argumentos de entrada.
     Si el usuario escribe su propio constructor entonces debe utilizarlo.
Clase Automovil con un Constructor
class Automovil
{
String color ;

        Automovil(String _color)
     {
           color = _color;
     }
        void asignaColor(String _color)
        {
            color = _color;
        }
        String indicaColor()
        {
            return color;
        }
}
class Autos
{
  public static void main(String args[])
  {
  // OBJETOS DE LA CLASE Automovil USANDO EL CONSTRUCTOR
  Automovil autoDeportivo = new Automovil("azul");
  Automovil camioneta = new Automovil("rojo");

          System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor());
          System.out.println("camioneta color " + Camioneta.indicaColor());
    }
}
Sobrecarga de métodos

                             Figura




                  Figura()     Figura(String)




   La Sobrecarga se da cuando se usa en una misma clase,
el mismo nombre de un método pero con diferentes argumentos.
 Las operaciones de los métodos, generalmente, son diferentes.
Cualquier método en una clase es posible sobrecargarlo, tanto los
     constructores como los métodos de clase o de instancia
Sobrecarga de métodos
class Automovil
{
String color ;

     Automovil()
     {
         color = "blanco";
     }
     Automovil(String _color)
     {
         color = _color;
     }
        void asignaColor(String _color)
        {
            color = _color;
        }
        String indicaColor()
        {
            return color;
        }
}
class Autos
{
  public static void main(String args[])
  {
  Automovil autoDeportivo = new Automovil("azul");
  Automovil camioneta = new Automovil();

          System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor());
          System.out.println("camioneta color " + Camioneta.indicaColor());
    }
}
Propiedades y Métodos de Clase
                                   Automovil


                                 static cuenta

                                 color

                                 Automovil()

                                 static Contador()

                                 asignaColor()

                                 indicaColor()




Las Propiedades y Métodos de Clase se crean una sola vez en cada clase y
            los comparten los objetos (instancias) de esa clase.
         Se identifican porque los precede la palabra reservada static.
Propiedades y Métodos de Clase en Ejecución
                              camioneta


                              color

                              Automovil()
                              asignaColor()
         Automovil
                              indicaColor()

         static cuenta
                            autoDeportivo

        static Contador()
                              color

                              Automovil()
                              asignaColor()
                              indicaColor()
Métodos y Propiedades de Clase
class Automovil
{
String color ; // PROPIEDAD DE INSTANCIA
static int cuenta; // PROPIEDAD DE CLASE   class Autos
                                           {
    // CONSTRUCTORES                          public static void main(String args[])
    Automovil()                               {
    {                                        // SE INVOCA AL METODO DE CLASE SIN CREAR OBJETO
        color = "blanco";                     Automovil.contador();
        cuenta++;                             Automovil autoDeportivo = new Automovil();
    }
    Automovil(String _color)                   // EL METODO DE CLASE INVOCADO DESDE UN OBJETO
    {                                          autoDeportivo.contador();
        color = _color;                        Automovil camioneta = new Automovil("rojo");
        cuenta++;                              camioneta.contador();
    }
    // METODOS DE INSTANCIA                        System.out.println("autoDeportivo color "
    void asignaColor(String _color)                  + autoDeportivo.indicaColor());
    {                                              System.out.println("camioneta color "
        color = _color;                              + camioneta.indicaColor());
    }                                              Automovil.contador();
    String indicaColor()                       }
    {                                      }
        return color;
    }
    // METODO DE CLASE
    static void contador()
    {
        System.out.println("Creadas "
            + cuenta + " instancias");
    }
}
Clonación
          circulo                              clonCirculo

      x             y                          x           y



  despliega()   mueve()                    despliega()   mueve()




    apuntadorCirculo


  clonCirculo = circulo.clone();                   // CLONACIÓN

  apuntadorCirculo = circulo;       // COPIA DE REFERENCIA


La Clonación de un objeto consiste en generar una copia del mismo
                 en otra localidad de memoria,
     en vez de solamente referenciarlo mediante otra variable.
Clonación de un objeto
class Persona implements Cloneable
{
String nombre ;
String direccion ;

    public Persona(String _nombre ,String _direccion)
    {
        nombre = _nombre;
        direccion = _direccion;
    }
    public Object clone()
    {
    Cloneable clon = new Persona(nombre ,direccion);

        return clon;
    }
    void asignaDireccion(String _direccion)
    {
        direccion = _direccion;
    }
    void despliega()
    {
        System.out.println("Nombre: " + nombre +
             " Dirección: " + direccion);
    }
}
Clonación de un objeto
class Clon
{
    public static void main(String arg[])
    {
    Persona juan = new Persona("Juan" ,"Lomas"); // SE CREA EL OBJETO juan

        juan.despliega(); // SE DESPLIEGAN LOS DATOS DE juan
        System.out.println("Clonando a Juan");

    Persona copiaJuan = (Persona)juan.clone(); // SE CLONA EL OBJETO juan
    Persona otroApuntadorJuan = juan; // OTRO OBJETO APUNTA A juan

        copiaJuan.asignaDireccion("Iztapalapa"); // CAMBIO DE DIRECCION AL CLON
        juan.despliega(); // DESPLIEGA LOS DATOS DE juan
        copiaJuan.despliega(); // DESPLIEGA LOS DATOS DEL CLON
        otroApuntadorJuan.despliega(); // DESPLIEGA LOS DATOS DEL OTRO APUNTADOR

        otroApuntadorJuan.asignaDireccion("C.U."); // CAMBIO DE DIRECCION A juan
        juan.despliega(); // DESPLIEGA LOS DATOS DE juan
        otroApuntadorJuan.despliega(); // DESPLIEGA LOS DATOS DEL OTRO APUNTADOR
    }
}
Liberación de Memoria


 Se hace mediante el Recolector de Basura
(Garbage Collector) cuando un objeto nadie
                lo apunta

A diferencia de C++, JAVA no cuenta con
métodos Destructor en las clases, esto se
         hace automáticamente

Conceptos de programacion orientada a objetos

  • 1.
  • 2.
    Clase Figura x y despliega() mueve() Una Clase es una descripción abstracta de una entidad de la realidad en términos de propiedades (datos) y métodos (procesos) encapsulados en una unidad. Gráficamente se representa con un cuadro con puntas redondeadas, su nombre generalmente se escribe con una letra inicial mayúscula y las restantes minúsculas, si aparece más de una palabra, el inicio de cada una se escribe con una mayúscula, por ejemplo: Persona, Figura, AnimalAcuatico
  • 3.
    Propiedad nombre Una Propiedad es un dato de Tipo Primitivo (TDP) o un objeto. Por ejemplo, una variable x, nombrePersona, imagen, archivo. Gráficamente representamos a una propiedad como un rectángulo su nombre generalmente se escribe con minúsculas,si aparece más de una palabra, al inicio de cada una se escribe letra mayúscula
  • 4.
    Método despliega() Un Método es un proceso abstracto y contiene un conjunto finito de instrucciones. Gráficamente representamos a un método con un círculo, su nombre es similar al de las propiedades y termina con paréntesis donde van los parámetros. Al conjunto de métodos de una clase se le llama la Interfase de la Clase. Las clases y métodos de Java se encuentran descritos en la API (Application Program Interface) java.sun.com/api
  • 5.
    Clase Automovil class Automovil { //PROPIEDADES String color ; int velocidadMaxima ; // MÉTODOS void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } }
  • 6.
    Objeto circulo x y despliega() mueve() Un Objeto es una instancia (caso particular) de una clase. El nombre de un objeto es una referencia hacia las propiedades y métodos. Un objeto apunta hacia propiedades y métodos y es relocalizable, esto significa que No apunta hacia una dirección de memoria específica. Gráficamente se representa de forma similar que una clase la diferencia es que generalmente el nombre de un objeto se inicia con minúsculas.
  • 7.
    Objetos de laClase Automovil class Agencia { public static void main(String args[]) { // OBJETOS Automovil autoDeportivo = new Automovil(); Automovil camioneta = new Automovil(); // INVOCACIÓN DE MÉTODOS autoDeportivo.asignaColor("azul"); camioneta.asignaColor("rojo"); System.out.println("autoDeportivo color " + autoDeportivo.indicaColor()); System.out.println("camioneta color " + camioneta.indicaColor()); } }
  • 8.
    Constructor Figura Figura() Un Constructor es un método público que lleva el mismo nombre de la clase a la que pertenece. Se ejecuta automáticamente cuando se crea una instancia de la clase (objeto), generalmente el desarrollador lo utiliza para asignar valores iniciales a las propiedades del objeto. En Java automáticamente cada clase tiene un constructor con el mismo nombre de la clase sin argumentos de entrada. Si el usuario escribe su propio constructor entonces debe utilizarlo.
  • 9.
    Clase Automovil conun Constructor class Automovil { String color ; Automovil(String _color) { color = _color; } void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } } class Autos { public static void main(String args[]) { // OBJETOS DE LA CLASE Automovil USANDO EL CONSTRUCTOR Automovil autoDeportivo = new Automovil("azul"); Automovil camioneta = new Automovil("rojo"); System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor()); System.out.println("camioneta color " + Camioneta.indicaColor()); } }
  • 10.
    Sobrecarga de métodos Figura Figura() Figura(String) La Sobrecarga se da cuando se usa en una misma clase, el mismo nombre de un método pero con diferentes argumentos. Las operaciones de los métodos, generalmente, son diferentes. Cualquier método en una clase es posible sobrecargarlo, tanto los constructores como los métodos de clase o de instancia
  • 11.
    Sobrecarga de métodos classAutomovil { String color ; Automovil() { color = "blanco"; } Automovil(String _color) { color = _color; } void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } } class Autos { public static void main(String args[]) { Automovil autoDeportivo = new Automovil("azul"); Automovil camioneta = new Automovil(); System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor()); System.out.println("camioneta color " + Camioneta.indicaColor()); } }
  • 12.
    Propiedades y Métodosde Clase Automovil static cuenta color Automovil() static Contador() asignaColor() indicaColor() Las Propiedades y Métodos de Clase se crean una sola vez en cada clase y los comparten los objetos (instancias) de esa clase. Se identifican porque los precede la palabra reservada static.
  • 13.
    Propiedades y Métodosde Clase en Ejecución camioneta color Automovil() asignaColor() Automovil indicaColor() static cuenta autoDeportivo static Contador() color Automovil() asignaColor() indicaColor()
  • 14.
    Métodos y Propiedadesde Clase class Automovil { String color ; // PROPIEDAD DE INSTANCIA static int cuenta; // PROPIEDAD DE CLASE class Autos { // CONSTRUCTORES public static void main(String args[]) Automovil() { { // SE INVOCA AL METODO DE CLASE SIN CREAR OBJETO color = "blanco"; Automovil.contador(); cuenta++; Automovil autoDeportivo = new Automovil(); } Automovil(String _color) // EL METODO DE CLASE INVOCADO DESDE UN OBJETO { autoDeportivo.contador(); color = _color; Automovil camioneta = new Automovil("rojo"); cuenta++; camioneta.contador(); } // METODOS DE INSTANCIA System.out.println("autoDeportivo color " void asignaColor(String _color) + autoDeportivo.indicaColor()); { System.out.println("camioneta color " color = _color; + camioneta.indicaColor()); } Automovil.contador(); String indicaColor() } { } return color; } // METODO DE CLASE static void contador() { System.out.println("Creadas " + cuenta + " instancias"); } }
  • 15.
    Clonación circulo clonCirculo x y x y despliega() mueve() despliega() mueve() apuntadorCirculo clonCirculo = circulo.clone(); // CLONACIÓN apuntadorCirculo = circulo; // COPIA DE REFERENCIA La Clonación de un objeto consiste en generar una copia del mismo en otra localidad de memoria, en vez de solamente referenciarlo mediante otra variable.
  • 16.
    Clonación de unobjeto class Persona implements Cloneable { String nombre ; String direccion ; public Persona(String _nombre ,String _direccion) { nombre = _nombre; direccion = _direccion; } public Object clone() { Cloneable clon = new Persona(nombre ,direccion); return clon; } void asignaDireccion(String _direccion) { direccion = _direccion; } void despliega() { System.out.println("Nombre: " + nombre + " Dirección: " + direccion); } }
  • 17.
    Clonación de unobjeto class Clon { public static void main(String arg[]) { Persona juan = new Persona("Juan" ,"Lomas"); // SE CREA EL OBJETO juan juan.despliega(); // SE DESPLIEGAN LOS DATOS DE juan System.out.println("Clonando a Juan"); Persona copiaJuan = (Persona)juan.clone(); // SE CLONA EL OBJETO juan Persona otroApuntadorJuan = juan; // OTRO OBJETO APUNTA A juan copiaJuan.asignaDireccion("Iztapalapa"); // CAMBIO DE DIRECCION AL CLON juan.despliega(); // DESPLIEGA LOS DATOS DE juan copiaJuan.despliega(); // DESPLIEGA LOS DATOS DEL CLON otroApuntadorJuan.despliega(); // DESPLIEGA LOS DATOS DEL OTRO APUNTADOR otroApuntadorJuan.asignaDireccion("C.U."); // CAMBIO DE DIRECCION A juan juan.despliega(); // DESPLIEGA LOS DATOS DE juan otroApuntadorJuan.despliega(); // DESPLIEGA LOS DATOS DEL OTRO APUNTADOR } }
  • 18.
    Liberación de Memoria Se hace mediante el Recolector de Basura (Garbage Collector) cuando un objeto nadie lo apunta A diferencia de C++, JAVA no cuenta con métodos Destructor en las clases, esto se hace automáticamente