4 clases y metodos - copia - copia.pdf

55
Programación Orientada a Objetos utilizando JAVA

Upload: lucian-de-la-rosa

Post on 17-Sep-2015

252 views

Category:

Documents


3 download

TRANSCRIPT

  • Programacin Orientada a Objetos

    utilizando JAVA

  • Clase

    Figura

    x

    despliega()

    y

    mueve()

    Una Clase es un conjunto de propiedades (datos) y mtodos (procesos)relacionados entre si.

    Grficamente se representa con un cuadro con puntas redondeadas, su nombre

    generalmente se escribe con una letra inicial mayscula y las restantes

    minsculas, si aparece ms de una palabra, el inicio de cada una se escribe con

    una mayscula, por ejemplo: Persona, Figura, AnimalAcuatico

  • Propiedad

    nombre

    Una Propiedad o Variable es un dato de Tipo Primitivo (TDP) o un objeto.

    Por ejemplo, una variable x, nombrePersona, imagen, archivo.

    Grficamente representamos a una propiedad como un rectngulo su nombre

    generalmente se escribe con minsculas,si aparece ms de una palabra,

    al inicio de cada una se escribe letra mayscula

  • Objeto

    circulo

    x

    despliega()

    y

    mueve()

    Un Objeto es una instancia (caso particular) de una clase.

    El nombre de un objeto es una referencia hacia las propiedades y mtodos.

    Un objeto apunta hacia propiedades y mtodos y es relocalizable,

    esto significa que No apunta hacia una direccin de memoria especfica.

    Grficamente se representa de forma similar que una clase la diferencia es quegeneralmente el nombre de un objeto se inicia con minsculas.

  • Objetos de la Clase Automovil

    class Agencia

    {

    public static void main(String args[])

    {

    // OBJETOS

    Automovil autoDeportivo = new Automovil();

    Automovil camioneta = new Automovil();

    // INVOCACIN DE MTODOS

    autoDeportivo.asignaColor("azul");

    camioneta.asignaColor("rojo");

    System.out.println("autoDeportivo color " +

    autoDeportivo.indicaColor());

    System.out.println("camioneta color " +

    camioneta.indicaColor());

    }

    }

  • Mtodo

    despliega()

    Un Mtodo es un proceso abstracto y contiene un conjunto finito de instrucciones.Es decir, un fragmento de cdigo al que se llama, acompaado de unos datos de entrada,

    y produce una determinada salida. Para esto tenemos que indicar el tipo de los primitivos

    de entrada, el tipo de los de salida, el nombre del mtodo y el trabajo que realizara.

    [tipodatoSalida] [nombreMtodo] ([tipodatoEntrada] [nombredatoEntrada]) {//Codigo del mtodoreturn datoSalida;

    }

    int sumaCinco(int entrada) {return entrada + 5;

    }

    Grficamente representamos a un mtodo con un crculo, su nombre es similar al de las

    propiedades y termina con parntesis donde van los parmetros.

    Al conjunto de mtodos de una clase se le llama la Interfase de la Clase. Las clases y mtodos

    de Java se encuentran descritos en la API (Application Program Interface) java.sun.com/api

  • Clase Automovil

    class Automovil

    {

    // PROPIEDADES

    String color ;

    int velocidadMaxima ;

    // MTODOS

    void asignaColor(String _color)

    {

    color = _color;

    }

    String indicaColor()

    {

    return color;

    }

    }

  • Constructor

    Figura

    Figura()

    Un Constructor es un mtodo pblico que lleva el mismo nombre de la clasea la que pertenece.

    Se ejecuta automticamente 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 automticamente 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 mtodos

    La Sobrecarga se da cuando se usa en una misma clase,

    el mismo nombre de un mtodo pero con diferentes argumentos.

    Las operaciones de los mtodos, generalmente, son diferentes.

    Cualquier mtodo en una clase es posible sobrecargarlo, tanto los

    constructores como los mtodos de clase o de instancia

    Figura

    Figura() Figura(String)

  • Sobrecarga de mtodosclass 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 Mtodos de Clase

    Las Propiedades y Mtodos 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.

    Automovil

    static cuenta

    static Contador()

    color

    Automovil()

    asignaColor()

    indicaColor()

  • Propiedades y Mtodos de Clase en Ejecucin

    Automovil

    static cuenta

    static Contador()

    camioneta

    color

    Automovil()

    asignaColor()

    indicaColor()

    autoDeportivo

    color

    Automovil()

    asignaColor()

    indicaColor()

  • Mtodos y Propiedades de Claseclass Automovil

    {

    String color ; // PROPIEDAD DE INSTANCIA

    static int cuenta; // PROPIEDAD DE CLASE

    // CONSTRUCTORES

    Automovil()

    {

    color = "blanco";

    cuenta++;

    }

    Automovil(String _color)

    {

    color = _color;

    cuenta++;

    }

    // METODOS DE INSTANCIA

    void asignaColor(String _color)

    {

    color = _color;

    }

    String indicaColor()

    {

    return color;

    }

    // METODO DE CLASE

    static void contador()

    {

    System.out.println("Creadas "

    + cuenta + " instancias");

    }

    }

    class Autos

    {

    public static void main(String args[])

    {

    // SE INVOCA AL METODO DE CLASE SIN CREAR OBJETO

    Automovil.contador();

    Automovil autoDeportivo = new Automovil();

    // EL METODO DE CLASE INVOCADO DESDE UN OBJETO

    autoDeportivo.contador();

    Automovil camioneta = new Automovil("rojo");

    camioneta.contador();

    System.out.println("autoDeportivo color "

    + autoDeportivo.indicaColor());

    System.out.println("camioneta color "

    + camioneta.indicaColor());

    Automovil.contador();

    }

    }

  • Accesibilidad

    La Accesibilidad se indica con el calificador public, private, protected o abstracten las propiedades y mtodos de una clase.

    Accesibilidad Clases Subclases Paquete Todas

    public si si si si

    protected si si si

    package si si

    private protected si si

    private si

    La misma clase llama al mtodo

    La subclase llama al mtodo

    Las clases del mismo paquete

    llaman al mtodo

    Cualquier clase llama al mtodo

  • Relaciones entre Clases:

    Herencia

    Composicin

    Agregacin

    Las relaciones entre clases permiten la reutilizacin de cdigo

  • Herencia

    La Herencia es una relacin entre clases en donde la subclase clase hereda laspropiedades y mtodos de la superclase.

    Se representa mediante relaciones es_un con una flecha con punta huecadirigida de la clase derivada a la superclase.

    Persona

    ProfesorAlumno

  • Obtencin de las relaciones de herencia

    Las Relaciones de Herencia se obtienen mediante la generalizacin yla especializacin.

    La Generalizacin se hace a partir de un conjunto de clases y se busca

    una clase que las generaliza (agrupa).

    La Especializacin se genera cuando a partir de una clase genrica se

    obtienen clases que son casos particulares de la misma.

  • Herencia de Persona a Alumno class Persona

    {

    String nombre ;

    Persona(String _nombre)

    {

    nombre = _nombre;

    }

    String indicaNombre()

    {

    return nombre;

    }

    }

    class Alumno extends Persona

    {

    int calificacion ;

    Alumno(String _nombre)

    {

    super(_nombre);

    }

    void asignaCalificacion(int _calificacion)

    {

    calificacion = _calificacion;

    }

    String indicaDatos()

    {

    return "Alumno: " + super.indicaNombre() + " calificacion: "

    + calificacion;

    }

    }

  • Sobreescritura

    Se le llama Sobreescritura cuando un mtodo existente en una superclase se

    declara en una subclase y ambos tienen el mismo nombre, en este caso el mtodo de

    la clase derivada sobreescribe a la superclase.

    En este ejemplo el mtodo pinta() de Circulo sobrescribe al de Figura mientras queTriangulo utiliza el mtodo pinta() que hereda de Figura

    TrianguloCirculo

    Figura

    pinta()

    pinta()

  • Sobreescritura del mtodo indicaNombre() class Persona

    {

    String nombre ;

    Persona(String _nombre)

    {

    nombre = _nombre;

    }

    String indicaNombre()

    {

    return nombre;

    }

    }

    class Alumno extends Persona

    {

    int calificacion ;

    Alumno(String _nombre)

    {

    super(_nombre);

    }

    String indicaNombre()

    {

    return Alumno + nombre;

    }

    void asignaCalificacion(int _calificacion)

    {

    calificacion = _calificacion;

    }

    String indicaDatos()

    {

    return "Alumno: " + super.indicaNombre() + " calificacion: "

    + calificacion;

    }

    }

  • Polimorfismo

    El Polimorfismo se da cuando un mtodo aparece en dos clases diferentescon el mismo nombre y argumentos.

    El comportamiento generalmente es diferente

    Triangulo

    Figura

    pinta()

    Circulo

    x

    Isoceles

    base

    altura

    pinta()

    Cuadrado

    y

    color

    radio

    pinta()pinta()

    lado

  • Polimorfismo

    // DECLARA EL ARREGLO DE OBJETOS

    Figura arreglo[] = new Figura[6];

    // DETERMINA QUE OBJETO SE ALMACENA EN CADA ELEMENTO

    arreglo[0] = new Circulo(20,30,10 ,Color.blue);

    arreglo[1] = new Triangulo(50,220,Color.red);

    arreglo[2] = new Circulo(200,100,40 ,Color.cyan);

    arreglo[3] = new Cuadrado(120,40,30,Color.green);

    arreglo[4] = new Triangulo(250,70,Color.gray);

    arreglo[5] = new Isoceles(173 ,204 ,50 ,66

    ,new Color(0100 ,150 ,0xFF));

    // LLAMA AL METODO pinta PARA CADA ELEMENTO APLICANDO POLIMORFISMO

    for(int i=0; i < arreglo.length; i++)

    arreglo[i].pinta();

  • Composicin

    Chasis

    Llanta

    Motor

    Automovil

  • Composicin

    La Composicin consiste en incluir (o formar) una clase a otra(s) como unapropiedad para crear clases complejas. En este caso se reutiliza la interfase

    de las clases componente. Las clases estn unidas mediante la relacin parte_decon una flecha con punta de rombo. Los objetos que lo componen son privados

    Llanta

    Automovil

    Motor

    Chasis

  • Composicin class Automovil

    {

    String marca ;

    Motor motor ;

    Chasis chasis ;

    Llanta llanta[] = new Llanta[4];

    Automovil(String _marca)

    {

    marca = _marca;

    motor = new Motor(4);

    chasis = new Chasis(azul);

    for( int i = 0; i < llanta.length; i++ )

    llanta[i] = new Llanta(deportiva);

    }

    void asignaMotor(Motor _motor)

    {

    motor = _motor;

    }

    }

  • Agregacin

    La Agregacin es una relacin que permite crear clases complejasmediante la agrupacin de una coleccin de una clase existente

    (es una forma ms dbil que la composicin).

    Las clases estn unidas mediante la relacin parte_de con una flecha con

    punta de rombo hueca. En Java las implementaciones de Collectionson ejemplos de esta relacin

    BosqueArbol

  • Paquetes

    Un Paquete agrupa a un conjunto de clases se indica en un programa con

    la palabra reservada import subdirectorio1.subdirectorio2.claseEn la variable de ambiente CLASSPATH debe estar la ruta de la ubicacin de las

    clases que forman al paquete subdirectorio1\subdirectorio2

    Escuela

    Materia

    Profesor Salon

    Alumno