Programación Orientada a Objetos Conceptos Básicos de Objetos Ing Ing.. Julio Ernesto Carreño Vargas MsC.. MsC Conceptos Básicos Las aproximaciones ADOO y POO, proveen a los objetos como el principal medio para estructurar un sistema El mundo del problema se ve como objetos que interactúan. Modelar consiste en : identificar qué objetos hay en el mundo del problema, cómo son, cómo se comportan y cómo se relacionan. Programación Orientada a Objetos 2 1 Objeto(1) Un objeto representa una entidad física, conceptual ó de software. Es una manifestación concreta de una abstracción con un límite bien definido y una identidad que encapsula estado y comportamiento. Un objeto puede : modelar entidades del mundo real, capturar abstracciones de fenómenos complejos, representar artefactos de software (pilas, gráficos, …). Programación Orientada a Objetos 3 Objeto(2) Ejemplos:Estudiante, Profesor, Fecha, Automóvil, Libro, Figura. El objeto tiene como propósito promover la comprensión del mundo real, y es la base de la implementación. Programación Orientada a Objetos 4 2 Comportamiento de los Objetos El comportamiento de los objetos puede ser descrito por una caracterización abstracta de su interfaz (servicios que presta). Por ejemplo los servicios del cajero: Programación Orientada a Objetos 5 Clase Describe un conjunto de objetos del mundo del problema, que tienen : las mismas características (atributos, propiedades) y el mismo comportamiento (operaciones, métodos). Estructura de software que especifica determinado tipo de objeto. Es una abstracción que enfatiza características relevantes de un concepto del mundo real. Las clases representan nuevos tipos de datos Programación Orientada a Objetos 6 3 Representación Gráfica de una Clase Programación Orientada a Objetos 7 Atributo Propiedad del objeto Determinan el estado del objeto Son los datos que contiene y encapsula una clase(ocultas al exterior) y se acceden por medio de algún método Es un valor de un dato que está almacenado en los objetos de una clase Los atributos son llamados variables de instancia podrían verse como una variable global a toda la clase. Programación Orientada a Objetos 8 4 Método(1) Una operación que se podrá realizar sobre un objeto Definen el comportamiento de la clase Servicios que ofrece la clase Permiten cambiar el estado del objeto, esto es, operan sobre los atributos. Programación Orientada a Objetos 9 Método(2) Los atributos son visibles en toda la clase En cualquier método se puede hacer referencia a las variables de instancia Los métodos pueden tener variables locales son visibles sólo dentro del método. Programación Orientada a Objetos 10 5 Clases y Objetos(1) Un objeto es una instancia de una clase con valores concretos en sus atributos. Los objetos son agrupados en clases. Una clase es una definición abstracta de un objeto Una clase es una plantilla para crear objetos Programación Orientada a Objetos 11 Clases y Objetos(2) La noción de Clase viene de clasificación: esto es, agrupar (en un conjunto) objetos (elementos) que se comportan de la misma manera. Todos los objetos de una clase tienen la misma estructura (los mismos atributos), lo que varía son los valores de dichos atributos Programación Orientada a Objetos 12 6 Clases y Objetos(3) Cuenta Clase Cuenta saldo objCuenta1 : Cuenta 3 objetos de la clase Cuenta Observe que todos tienen un saldo, pero cada objeto con un valor diferente objCuenta2 : Cuenta saldo saldo 500 9000 Programación Orientada a Objetos objCuenta3 : Cuenta saldo 15000 13 Visibilidad Atributos, Métodos Hay tres tipos de visibilidades: private (Privada): Indica que el atributo o el método no puede ser visto y utilizado por objetos de clases diferentes a la actual. public (Pública): Indica que el atributo o el método puede ser visto y utilizado por objetos de clases diferentes a la actual. protected (Protegida): Esta visibilidad hace referencia a estructuras con herencia, sólo es visible por ella misma y por sus subclases Programación Orientada a Objetos 14 7 Visibilidad - Privado + Publico # Protegido Programación Orientada a Objetos 15 Ejemplo de Visibilidad … Service obj = new Service(); class Service { public int memberOne; private int memberTwo; public void doOne() { obj.memberOne = 10; … obj.memberTwo = 20; } private void doTwo() { obj.doOne(); … } obj.doTwo(); } … Client Programación Orientada a Objetos Service 16 8 Visibilidad Clases Las visibilidad pueden ser aplicada también a la clase Existe otra visibilidad que se aplica a paquetes Un paquete es una colección de clases Cuando se marca una clase con visibilidad de paquete, se indica, que dicha clase puede ser vista y/o utilizada por las clases del mismo paquete. Programación Orientada a Objetos 17 Forma Básica Clase Java Especifica que la clase forma parte del paquete “conceptos” import permite “reusar” clases de otros paquetes. Sección de atributos visibles en toda la clase Sección de métodos Programación Orientada a Objetos 18 9 Paquetes Los paquetes son una forma de organizar grupos de clases. Un paquete contiene un conjunto de clases relacionadas por finalidad ó funcionalidad. Los paquetes resuelven el problema del conflicto entre los nombres de las clases. Al crecer el número de clases crece la probabilidad de designar con el mismo nombre a dos clases diferentes. La siguiente declaración indica que la clase va a pertenecer a un paquete llamado ventas Programación Orientada a Objetos 19 Importar clases La palabra reservada import permite utilizar clases de otro paquete Lo anterior no implica copiar el código de la clase importada a la clase importadora La anterior definición es equivalente a: En los lenguajes POO se debe informar la ubicación de los paquetes que se quieren importar: classpath Programación Orientada a Objetos 20 10 Clase Pública El archivo en el disco se debe llamar “Orden.java” Programación Orientada a Objetos 21 Clase Privada Si no aparece ningun modificador de visibilidad, la clase sólo es visible en el directorio. Programación Orientada a Objetos 22 11 Forma Básica de Atributos Comentario del atributo para ser usado con javadoc Visibilidad •private •public •protected •paquete Tipo •String •int •double •float •boolean •… Nombre dado a la variable Programación Orientada a Objetos 23 Propiedades this this: Es una referencia al objeto (instancia de la clase) actual. Programación Orientada a Objetos 24 12 Modificador de Visibilidad •private •public •protected •paquete Forma Básica Métodos Tipo de retorno •void (no retorna valor) •String •int •double… Nombre del método Lista de parámetros Cuerpo del método, incluido variables locales y un return al final si retorna un valor ó sin return si el retorno es void Programación Orientada a Objetos 25 Tipos de Métodos Existen varias clases especiales de métodos: Constructores: método para crear un nuevo objeto de la clase. Destructores: método para eliminar un objeto de una clase. Modificadores: métodos para asignar el valor de un atributo Analizadores: métodos para recuperar el valor de un atributo. Programación Orientada a Objetos 26 13 Métodos Analizadores(accesors Analizadores(accesors)) Por cada atributo de la clase existe un método get que retorna el valor de dicho atributo Programación Orientada a Objetos 27 Métodos Modificadores(mutators Modificadores(mutators)) Por cada atributo de la clase existe un método set que asigna un valor a dicho atributo Programación Orientada a Objetos 28 14 Encapsulamiento de Atributos Los objetos no deberían conocer detalles de implementación de otros objetos. Por ejemplo, un objeto, no debería modificar el valor de un atributo de otro objeto. Al definir la visibilidad de los atributos, esta debe ser lo más restrictiva posible, esto es, private. Los métodos modificadores y analizadores son los únicos que pueden cambiar ó retornar el valor de un atributo. Programación Orientada a Objetos 29 Encapsulamiento de Atributos Observe que el atributo TotalDinero es privado Para acceder al atributo se hace a través de los métodos getXXX y setXXX Programación Orientada a Objetos 30 15 Bibliografía UML y patrones una introducción al análisis y diseño orientado a objetos y al proceso unificado. Larman, Craig Paul Deitel. Como programar en Java 7/e. Pearson Education. 2007. Programación Orientada a Objetos 31 16