Programacion Orientada a Objetos 03-11

    Conoce al Mtro. Villarreal

    Home‎ > ‎

    Programación Orientada a Objetos

    Es un modelo de programación que utiliza objetos, ligados mediante mensajes, para la solución de problemas. Es decir organizar los programas a imagen y semejanza de la organización de los objetos en el mundo real.

    Los objetos poseen un conjunto de propiedades o atributos y un conjunto de métodos mediante os cuales muestran su comportamiento y además los objetos muestran un conjunto de interrelaciones entre ellos mediante mensajes a los que responden mediante métodos.

    Un mecanismo importante de la POO, son las clases y los objetos están contenidos dentro de ellas, por eso se dice que un objeto es la instancia de una clase.

    Ejemplo:
    figuras objfiguras=new  figuras();  //Creamos un nuevo objeto para la clase figuras
     

    Un programa orientado a objetos se compone solamente de objetos, cada uno de ellos es una entidad que tiene unas propiedades particulares, los atributos y las formas de operar de ellos los métodos. Por ejemplo esta página Web es un objeto, tiene colores de fondo, anchura y altura, etc. son los atributos (caracteristicas) y las rutinas que ejecuta el usuario cerrar, abrir, recorrer, etc. son los métodos. 

    Cuando se ejecuta un programa orientado a objetos, los objetos están recibiendo, interpretando y respondiendo mensajes de otros objetos y por lo tanto ejecutando métodos asociados con el objeto. 

    Los métodos se escriben en una clase de objetos y determinan como tiene que actuar el objeto cuando recibe el mensaje vínculado con ese método. A su vez un método puede tambien enviar mensajes a otros objetos solicitando una acción o información, además los atributos definidos en la clase permiten almacenar información para dicho objeto. 

    Cuando escribimos un programa Orientado a Objetos, lo que hacemos es diseñar a un conjunto de clases, desde las cuales se crearan los objetos necesarios cuando el programa se ejecute. 

    Normalmente los atributos, la estructura más interna de un objeto, se ocultan a los usuarios del objeto, manteniendo como unica conexión con el exterior a los mensajes. Esto quiere decir que los atributos de un objeto solamente podrán ser manipulados por los métodos del propio objeto. Este conjunto de métodos recibe el nombre de Interfaz (medio de comunicación con un objeto).
     
    Para crear una clase solo utilizamos la palabra reservada class y el nombre de la clase
     
    Ejemplo:
     

    class figuras
    {

    //......

    }
     
    Veamos el ejemplo de un código:
     
     
    Podemos crear otros métodos dentro de la misma clase como por ejemplo Circulo, Triángulo y Cuadrado los cuales se mostrarían de la siguiente manera:
     
     
     
    En el main tenemos el objeto, ahora creamos un menu para hacer el llamado de cada uno de los métodos:
     
     
     Dentro del mismo proyecto vamos a crear otra clase llamada perímetro, dentro de la cuál vamos a crear 4 métodos que calculen el perímetro de las mismas figuras geométricas, quedando de la siguiente manera: 
     
    Conectamos a una clase con la otra mediante la creación de otro objeto al cual llamarémos objperimetro y hacemos las modificaciones  para que dentro del menu podamos elegir entre calcular el Área o el Perímetro de cada figura Geométrica:
     
     
     Realiza los cambios necesarios para que todas las figuras funcionen de la misma manera
     

     Cuando en un programa vamos a utilizar las mismas variables para diferentes métodos, podemos declararlas como Variables Globales y quedarian de la siguiente manera:
     
     
     
     
     En la vida real la información con la que va a trabajar un método puede llegar de manera externa a él, en ese caso se declara de manera diferente y el valor llega de otra función como por ejemplo:
     
     
     


    Pensando en la clase de objetos CCuenta, elegimos los atributos de interés que van a definir está clase de objetos:

    nombre: nombre del cliente del banco al que pertenece la cuenta.
    cuenta: número de la cuenta.
    saldo:  saldo actual de la cuenta
    tipoDeInteres: Tipo de interés en tanto por ciento

    Todos los atributos son definidos en la clase por variables:


    class CCuenta
    {

    private String nombre;
    private String cuenta;
    private double saldo;
    private double tipoDeInteres;

    //...........

    }

    Al utilizar private los atributos quedan protegidos de los usuarios, solo se podra acceder a ellos mediante los métodos que implementen dentro de la misma clase

    El comportamiento define las acciones que el objeto pueda tener, en nuestro ejemplo las acciones podrían ser:

    • Asignar el nombre del Cliente del banco a una cuenta.
    • Obtener el nombre del cliente de una cuenta.
    • Asignar el número de cuenta
    • Obtener el número de cuenta
    • Realizar un ingreso
    • Realizar un integro
    • Asignar el tipo de interés
    • Obtener el tipo de interés
    • Obtener el saldo, es decir el estado de cuenta.

    Para definir este comportamiento, es necesario añadir métodos a la clase. los métodos son rutinas del código definidas dentro del cuerpo de la clase, que se ejecutan en respuesta a algun acción desde dentro de un objeto de esa clase. El conjunto de mensajes a los que el objeto puede responder es directamente proporcional al conjunto de métodos que implementan su clase.

    public void asignarNombre (String nom){
               
                if (nom.length() == 0){
                   
                    System.out.println ("Error: cadena vacia");
                return;
            }
       
        nombre = nom;
        }

    Observamos que el método es declaraado como public, lo cuál nos indica que esté método es accesible desde cualquier otra claseo subclase que necesite utilizarlo, void nos indica que nos va a regresar cualquier valor que genere el método, después tenemos al identificador de método, es decir su nombre y por último entre paréntesis tenemos a los parámetros que va a manejar el método, si hubieré más de un parámetro los separamos por comas

    Dentro de las llaves tenemos la acción o conjunto de acciones que va a realizar el método

    Podemos decir que los nombres de los métodos de una clase forman al conjunto de mensajes a los que un objeto de esa clase puede responder.

    Observemos el siguiente método:

    public double estado(){
               
                return saldo;
        }

    Esté método simplemente devolverá el saldo de la cuenta del banco.

    Observemos entonces al conjunto de metodos de la clase completa CCuenta:


    Falta el Main lo agregamos aquí abajo, dentro del mismo paquete:

    Para crear objetos de una clase y poder trabajar con ellos tiene que existir una clase con un método main, puesto que éste es el punto de entrada y de salida de un programa.

    El main puede añadirse en el mismo archivo fuente en el que está almacenada la clase CCuenta, ya sea al final o antes de la clase

    Se puede también crear también de manera separada en otro archivo dentro de la msma carpeta o directorio darle otro nombre, pero creando un objeto a partir de la clase que queremos manejar como por ejemplo:

    CCuenta cuenta01=new  CCuenta( );  //Cuenta nueva

    El método main, tiene que ser estático y generalmente es público
    devuelve cualquier resultado y tiene un parámetro args que es una matriz de una dimensión de cadena de caracteres

    Para acceder a un miembro de un objeto (atributo o método) utilizamos la siguiente sintaxis:

    nombre_objeto.nombre_miembro;

    De está manera podemos manejar el objeto que creamos y si es que hubieré más de un objeto se nombra diferente a cada uno

    Cualquier método de una clase tiene acceso(puede invocar) a todos los otros miembros (atributos y métodos) de su clase.

    Un objeto de una clase sólo puede invocar a métodos de su clase.

    Ejemplo 2:

    Clase COrdenador para simular el trabajo con Ordenadores, debe incluir los siguientes atributos:

    Marca: Dell, Toshiba, HP
    Procesador: Intel, AMD.
    Peso: 2, 2.5, 3.

    Los atributos pueden también mostrar el estado del objeto, si está encendido o apagado, si la pantalla está activa o inactiva

    El comportamiento define las acciones que el objeto puede emprender. Por ejemplo puede:
    • Ponerse en marcha
    • Apagarse
    • Desactivar la pantalla
    • Activar la pantalla
    • Cargar una aplicación

    Para definir el comportamiento hay que crear métodos. Por ejemplo, agregamos a la clase COrdenador un método que responda a la acción de ponerlo en marcha:

    El método EncenderOrdenador comprueba si el ordenador está encendido, si lo está muestra el mensaje que lo indica de lo contrario también lo indica.
    Un método más para que el objeto muestre su estado:

    El método Estado visualiza los atributos específicos de un objeto.

    ¿Cómo accedemos al valor de cada atributo si se han declarado como privados por emisión? Podemos implementar un método para establecer el valor del atributo privado marca de la clase COrdenador:

    Una vez creada la clase creamos el método main y los objetos de la clase. Llamaremos a está clase Miordenador

    El método main que es lo que hace:

    La primer línea crea un objeto de la clase COrdenador y almacena una referencia de sí mismo en miOrdenador, dicha variable la vamos a utilizar para acceder a ese objeto con la siguientes lineas

    La siguiente línea establece el atributo marca del objeto referenciado por miOrdenador

    En las dos últimas líneas el objeto recibe los mensajes de EncenderOrdenador y Estado. Compila el programa y observa los resultados




    Ejercicio:

    Diseña una clase CCoche que represente coches, incluya los atributos marca, modelo y color. Además los métodos que simulen enviando mensajes, las acciones de arrancar motor, cambiar de velocidad, acelerar, frenar y parar el motor.


    Constructor

    Es un método especial de una clase que es llamado automáticamente siempre que se crea un objeto de esa clase. Su función es iniciar el objeto. Un constructor tiene el mismo nombre de la clase a la que pertenece y no retorna un valor. En esté caso como la clase se llama CCuenta entonces el constructor también se llamará CCuenta

    Ejemplo:

    public CCuenta( ){

    }

    Los constructores salvo casos excepcionales deben declararse siempre como públicos para que puedan ser invocados desde cualquier parte

    La siguiente línea invoca al constructor sin parámetros:

    CCuenta cuenta01=new  CCuenta();  //invoca al constructor CCuenta

    El operador new crea un nuevo objeto, en está caso de la clase CCuenta y a continuación se invoca al constructor de su clase para realizar las operaciones programadas en la clase.

    Métodos Sobrecargados

    Cuando en una clase un mismo método se define varias veces con distino número de parámetros, o bien con el mismo número de parámetros pero diferenciandose una definición de otra en que al menos un parámetro sea de tipo diferente, se dice que está sobrecargado.

    Ejemplo:





    Cuando una clase sobrecarga a un método una o más veces ¿Cómo sabe Java cuál tiene que ejecutar cuando se invoque?  Esto lo hace comparando el número y los tipos de los argumentos especificados en la llamda, con los parámetros especificados en las distintas definiciones del método.

    Operaciones con métodos


    Ejercicio:

    Crea una clase que permita trabajar con métodos diferentes, que calculen los precios de los diferentes autos de la marca Nissan y muestre las diferentes categorías y precios del catálogo de la empresa automotriz
    . Investigar en internet la tabla de precios y categorias.

    Posteriormente utiliza un solo método sobrecargado con diferentes argumentos, muetra los resultados.


    virj
    Comments