La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS

Presentaciones similares


Presentación del tema: "CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS"— Transcripción de la presentación:

1 CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS
M. en C. Cecilia Pérez Colín

2 CONTENIDO Conceptos de Programación Orientada a Objetos
Clases Objetos Herencia Relaciones de uso Generadores Iteradores Manejo de excepciones Paquetes (módulos) Interfaces Programación en Java

3 Introducción a la programación orientada a objetos
Crear software es inherentemente complejo, muchas veces esta complejidad excede la capacidad humana. Además una de las tareas de los ingenieros de software es crear sistemas que parezcan simples. La POO es una forma de organizar nuestras ideas con respecto a nuestro mundo, de manera conceptual. Esta organización se basa en el tipo de cosas, o tipos de objetos, con los que convivimos diariamente.

4 Introducción a la programación orientada a objetos

5 Introducción a la programación orientada a objetos
POO surgió de la necesidad de simular sistemas de forma sencilla. La idea básica consiste en simular conceptos que son fundamentales en el pensamiento humano

6 Introducción a la programación orientada a objetos
El análisis y diseño orientado a objetos es un método para crear software. El concepto principal es que uno debe modelar sistemas de software como una colección de objetos que cooperan entre sí mediante el envío de mensajes. Se trata a cada objeto como instancia de una clase dentro de una jerarquía de clases. Lenguajes Orientados a Objetos: Simula, Smalltalk, Object Pascal, C++, the Common Lisp Object System (CLOS), Ada, Eiffel, Java y más.

7 programación estructurada vs programación orientada a objetos
Con los métodos de programación estructurada los desarrolladores a crean sistemas basados en algoritmos. De igual manera, con los métodos orientados a objetos los desarrolladores crean sistemas basados en objetos y clases . Las ideas fundamentales de clases y objetos aparecieron por primera vez en el lenguaje de programación Simula 67.

8 Ventajas y desventajas de la programación orientada a objetos
Aumenta la reusabilidad Forma más modular de modelar problemas => diseños más claros => implementación más clara => mejor manejo de la complejidad Mantenimiento más eficiente

9 Ventajas y desventajas de la programación orientada a objetos
La OO no garantiza la construcción de un sistema correcto, como ningún otro método de programación. Mayor concentración en requerimientos, análisis y diseño. OO, no es solo la programación, es entender la abstracción. Las ventajas de OO se obtienen a largo plazo

10 ¿qué es la programación orientada a objetos?
La programación orientada a objetos es un método de implementación donde los programas están organizados como colección de objetos cooperativos, cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son todas miembro de una jerarquía de clases unidas mediante relaciones de herencia. (Grady Booch) Observar estos tres elementos de la definición: Utiliza objetos y no algoritmos Cada objeto es instancia de una clase Las clases se relacionan entre sí mediante herencia

11 ¿qué es el diseño y análisis orientado a objetos?
El diseño orientado a objetos es un método de diseño que acompaña al proceso de descomposición orientada a objetos y una notación que describe tanto modelos lógicos y físicos, así como estáticos y dinámicos del sistema bajo diseño (Grady Booch). El análisis orientado a objetos es un método de análisis que examina los requerimientos del sistema desde la perspectiva de clases y objetos encontrados en el vocabulario de la descripción del problema (Grady Booch). Observar estos dos elementos de la definición de diseño OO: Se diseña pensando en objetos Notación que describe modelos Lógicos (clases y objetos) Físicos (arquitectura de módulos y procesos) Estáticos, que se establecen al compilar Dinámicos, que toman valores al ejecutarse

12 5 principales estilos de programación
Todos los estilos de programación tiene su propio marco conceptual. Orientado a y basado en: Procedimientos – algoritmos Objetos – Clases y objetos Lógica – Metas, generalmente lógica de predicados Reglas – IF, THEN Restricciones – Relaciones invariantes

13 Características de la programación orientada a objetos
La abstracción denota las características esenciales de un objeto que lo distinguen de otros tipos de objetos. Es el análisis de las características, atributos y métodos que son (y que no son) de interés para la aplicación en consideración. El encapsulamiento es el proceso modularizar los elementos de una abstracción que constituyen su estructura y comportamiento. “Los secretos de la abstracción”. El ocultamiento de datos relacionados detrás de una interface de métodos. Estos métodos permiten acceder a a la información y manipularla convenientemente. En OO un sistema se modulariza en clases, qua a su vez se modularizan en métodos y atributos. El comportamiento es encapsulado en métodos La información es encapsulada en atributos A través del encapsulamiento se define el qué se hace ocultando el cómo se hace.

14 Características de la programación orientada a objetos
La modularidad es la propiedad de un sistema para ser descompuesto en un conjunto de módulos unidos y acoplados. El acto de dividir un programa en componentes individuales que reducen su grado de complejidad. La jerarquía es la clasificación u orden de las abstracciones. La herencia es la jerarquía más importante: “es un”, “es parte de” La asignación de tipos es la imposición de asignar una clase a un objeto; así los objetos de diferentes tipos no pueden ser intercambiados, o a lo más, ser intercambiados pero con muchas restricciones. La concurrencia es la propiedad que distingue un objeto activo de uno que no está activo. La concurrencia permite actuar a diferentes objetos al mismo tiempo. La persistencia es la propiedad de un objeto a existir en tiempo y/o espacio.

15 Conceptos básicos de la programación orientada a objetos
Un objeto es una entidad que mantiene una estructura (atributos), que ofrece un conjunto de operaciones (comportamiento), tiene una identidad (distingue un objeto de otro). El conjunto de valores asociados a cada atributo en un momento dado se denomina estado. Los objetos responden a mensajes recibidos mediante la ejecución de métodos. Información nombre = “Universidad RIO” domicilio = “Rio 3245” Objeto Universidad Partes alumnos profesores Comportamiento inscribirAlumno modiDatosProfesor

16 Conceptos básicos de la programación orientada a objetos
Una clase es un molde a partir del cual se pueden crear objetos con la estructura y el comportamiento definidos en ella. La identidad de cada objeto es única y no depende de la case, pues aunque los objetos de misma clase tiene igual estructura, su estado puede ser diferente. public class Alumno { public String Nombre; public String Domicilio; public Alumno(String n, String d){ } public void setNombre(String n){ public String getNombre(){

17 Conceptos básicos de la programación orientada a objetos
Todos los objetos son ejemplares o instancias de una clase. Java Alumno alu1 = new Alumno(“Juan Perez”, “ejemplo”); Alumno alu2 = new Alumno(“Abel Garcia”, “ejemplo”); Alumno alu3 = new Alumno(“Jose Lopez”, “nada”);

18 Java - clases En cada clase se define la estructura y el comportamiento que tendrán los objetos El encabezado consta como mínimo, de la visibilidad de la clase Pública (public) Privada (private) Protegida (protected) La estructura de los objetos de la clase se define declarando sus atributos como datos de cualquiera de los tipos definidos por el lenguaje Las variables utilizadas para definir los atributos en una clase se conocen como variables de instancia.

19 Java - datos Los datos que intervienen en la solución de un problema pueden ser Datos de algún tipo definido por Java, Objetos de clases definidas en Java (paquetes) Definidas por el lenguaje Definidas por otros programadores Objetos de clases definidas por el mismo programador En Java es preciso asignar un identificador a cada elemento que se defina: clase, atributo, método, objeto, dato, etc.

20 Java – palabras reservadas
abstract else interface static boolean extends long super break false main switch byte final native synchronized case finally new this catch float null throw char for package throws class if private true continue implements protected try default import public void do instanceof return volatile double int short while

21 Java – tipos de datos primitivos
Los tipos de datos definidos en Java y denominados primitivos son: Tipo Descripción Literales (ejemplos) byte Entero de 8 bits 8, 25 short Entero de 16 bits 567 int Entero de 32 bits -78654 long Entero de 64 bits L float Real en 32 bits con 7 dígitos en la parte decimal 47.5F double Real en 64 bits con 15 dígitos en la parte decimal 3456e-3 char Carácter en 16-bits (unicode) ‘a’, ‘\’’,’\n’,’\u03A6’ (π) boolean Booleano true y false

22 Java – referencia a objetos
Además de los datos de tipo primitivo, en Java se tiene a los objetos como el tipo de datos más importante. Para poder manipular a los objetos se tiene a las referencias. Una referencia contiene una dirección en memoria, donde se encuentra el objeto con el que se quiere trabajar. En este tipo de datos sólo hay una literal, null

23 Java - declaración Ejemplos de declaración de variables
int edad, peso; double salario, altura; double altura = 0.48; Ejemplos de declaración de constantes final int IVA = 16;

24 Java – expresiones Los datos de tipo primitivo no son objetos, por lo tanto no existen métodos asociados a ellos, la única forma de trabajar con estos datos es mediante los operadores. Un operador y sus operandos constituyen una expresión La expresión puede ser aritmética lógica asignación Los operandos pueden ser literales constantes variables resultado de llamadas a métodos

25 Java - operadores Operador aritmético Descripción + Suma - Resta *
Multiplicación / División % Residuo de la división Operador unario Descripción + Mas unario - Menos unario ++ Autoincremento -- Autodecremento Operador de relación Descripción < Menor que <= Menor o igual que == Igual que >= Mayor o igual que > Mayor que != Diferente de Operador para cadenas Descripción + Concatenación

26 Java - operadores Operador lógico Descripción && Conjunción ||
Disyunción ! Negación && true false || true false ! false true

27 Operador Descripción Asoc () [] . Paréntesis y punto I Incremento y decremento (post) ++ -- Incremento y decremento (pre) D ! Negación - + Menos y más unarios new Operador para crear objetos (tipo) Conversión explícita de tipo * / % Multiplicación, división, residuo + - Suma, resta instanceof <, <=, >, >= Operadores de relación == != Operadores de igualdad && Conjunción || Disyunción ?: Operador condicional = op = Asignación Precedencia de operadores de mayor a menor

28 Java – conversión de tipos
En las expresiones que involucran operandos de diferente tipo y estas no son compatibles se pueden convertir implícita o explícitamente al tipo de dato que necesitamos. La conversión implícita ocurre al tener una asignación de un dato con tipo de menor prioridad a otro con mayor prioridad Las prioridades de menor a mayor son: byte char short int long float double

29 Java – conversión de tipos
La conversión explícita se utiliza cuando la implícita no es factible. Esta se indica con el tipo de resultado deseado entre paréntesis antes del nombre de la variable. Ejemplo de la implícita: Al tener una expresión que incluya datos de tipo entero y datos de tipo real, el resultado será un número real. Ejemplo de explícita: long largo = L; int entero = (int) largo; //trunca a un valor de 32 bits

30 Conceptos básicos de la programación orientada a objetos
Un constructor es un método definido en una clase usado para instanciar objetos de la misma. En Java, la aplicación del operador new crea un objeto, separando el espacio necesario para mantener su estado y devuelve como resultado la referencia al objeto creado. Una referencia es un tipo de dato usado para trabajar con objetos. Java: Alumno alu1 = new Alumno(“Juan Perez”, “ejemplo”); Alumno alu2 = new Alumno(“Abel Garcia”, “ejemplo”); Alumno alu3 = new Alumno(“Jose Lopez”, “nada”);

31 Conceptos básicos de la programación orientada a objetos
Un destructor (recolector de basura) En Java, la eliminación de objetos es implícita. Si se piensa que se tiene varios objetos sin referencia, se puede llamar al método gc de la clase System.

32 Ejemplo de programa en java
/** *Programa para que envíe un mensaje de felicitación *Objetivo Mostrar como se crean y usan objetos suNombre Fecha */ public class Felicitación { public static void main (String [] pps) { System.out.println(“¡Felicidades! Has escrito tu primer programa en Java”); }

33 Java – matrices o arreglos
Las matrices o arreglos son un grupo de variables con el mismo nombre y tipo. La manera de referirse a cada uno de los elementos de una matriz es mediante su índice. Los tipos de la matrices son los mismos que el de las variables. Tenemos 2 tipos de arreglos: unidimensional y bidimensional. UNIDIMENSIONALES:   tipo nombre_array[]=new tipo[tamaño]; Ej.: int [] enteros =new int[10] tipo nombre_array[]={valores}; Ej.: int mesdias[]={31,28,31,30,31,30,31,31,30,31,30,31}; BIDIMENSIONALES: tipo nombre_array[][]=new[lineas][columnas]; Ej. int a[][] = new int[10][3]

34 Java – matrices o arreglos
Los arreglos en Java son realmente objetos que deben crearse por medio del operador new. Tiene una función miembro length que se utiliza para conocer la longitud de cualquier arreglo. int a[][] = new int[10][3]; a.length; /* 10 */ a[0].length; /* 3 */ Para crear un array en Java hay dos métodos básicos. Crear un array vacío Crear el arreglo con sus valores iniciales Se pueden crear arreglos de tipos referencia (arreglos de objetos) Tipo identificador[] = new tipo[tamaño] Ej.: Alumno cursoPA[] = new Alumno[50] public class Alumno { private string nombre; }

35 Java - métodos El comportamiento de los objetos de una clase se programa mediante la creación de métodos. Un método es el conjunto de instrucciones que se deben realizar al llamar a ejecutar tal método. Componentes de un método: Visibilidad - Especifica a cuáles métodos se puede tener acceso Tipo de valor que devuelve – void si no devuelve nada Identificador del método – por convención se utiliza letra minúscula Parámetros – especifica el tipo de cada valor que requiere el método para trabajar Paso de parámetro por valor Cuerpo – bloque con las instrucciones que implementan la tarea.

36 Java - métodos Métodos modificadores Métodos de acceso
Tienen el propósito de modificar el valor de los atributos privados del objeto No devuelven valor alguno. Generalmente el nombre de estos métodos empieza con la palabra set. Métodos de acceso Son el medio de conocer el valor de los atributos privados del objetos. No reciben parámetros. El valor que devuelven es del tipo definido en el atributo. Generalmente su nombre empieza con la palabra get. Si se especifica que un método va a devolver un valor, se debe usar en el cuerpo del mismo la instrucción return seguida de una expresión cuyo valor es lo que se devuelve.

37 Java - métodos Métodos calculadores Métodos constructores
Se emplean para implementar cualquier comportamiento deseado de los objetos. Pueden recibir y/o devolver valores No modifican el estado del objeto, ni devuelven el valor de algún atributo, trabajan con el estado del objeto para calcular un valor Métodos constructores Un constructor es un método cuyo objetivo es asignar valor inicial a cada atributo de un objeto recién creado. Se verá más adelante

38 Java - métodos SINTAXIS: valor_devuelto nombre_método([valores]) {
cuerpo; } Si tenemos que hacer referencia a las variables de instancia y los métodos contenidos en un objeto se necesita el operador punto(.). Ej. Objeto.nomb_método( ); Objeto.nomb_método(valores); Objeto.variable;

39 Java - métodos El método main es indispensable pues es ahí donde empieza la ejecución del programa public static void main(String [] arg) { …. //algoritmo } Es un método público (public) Es un atributo compartido por todos los objetos de la clase, es decir, se trata de un atributo de clase (static) No devuelve valor alguno (void) Recibe un parámetro de tipo cadena

40 Java - métodos STATIC: El uso de este modificador nos permite utilizar el método y las variables sin necesidad de crear objetos. Los métodos estáticos solo pueden llamar a métodos estáticos. Hay que ser consciente que es equivalente a declararlas como globales. Al modificar el valor de un atributo estático en un objeto se modifica para todos los objetos de esa clase. Si la llamada al método static esta en otra clase distinta, se tiene que poner el nombre de la clase en donde esta declarado el método static y el operador punto (.). nomb_clase.nomb_metodo([parámetros]);

41 Java - métodos EJEMPLO: Teniendo una clase con 2 variables y un método. Desde la otra clase se crea el objeto, se llama al método y se muestran los valores del objeto. Mostrar aplicación “PruebaPunto” en NetBeans EJEMPLO: Pasar valores al método. Mostrar aplicación “PruebaPunto2” en NetBeans EJEMPLO: Uso de las variables Static. Mostrar aplicación “PruebaEstatica” en NetBeans EJEMPLO: Mostrar lectura de enteros. Mostrar aplicación “???” en NetBeans

42 Java – constructores Constructores Métodos para inicializar objetos.
Este método no posee tipo de retorno, ni siquiera void Recibe el nombre de la clase que lo contiene. Se llama mediante el operador new Puede contener parámetros Toda clase de Java debe poseer por lo menos un constructor. Si desde un constructor se llama a otro constructor de la misma clase se usa la palabra this en vez de new La palabra this sólo puede aparecer en la primera sentencia de un constructor.

43 Java – constructores EJEMPLO: Constructores
Mostrar aplicación “PuntoConstructor” en NetBeans EJEMPLO: Diferentes métodos y constructores y la aplicación muestra la diferencia entre referencia y objeto Mostrar aplicación Diferencia

44 Java – sentencias de control
Es la manera que tiene un lenguaje de programación de provocar que el flujo de la ejecución avance y se ramifique en función de los cambios de estado de los datos. IF-ELSE: La ejecución atraviesa un conjunto de estados boolean que determinan que se ejecuten distintos fragmentos de código. La cláusula else es opcional, la expresión puede ser de cualquier tipo y más de una (siempre que se unan mediante operadores lógicos). if (expresion-booleana) sentencia1; else sentencia2; Operador ternario Ej.: e = (b==0) ? 0 : (a/b)

45 Java – sentencias de control
IF-ELSEIF ELSE: Permite introducir más de una expresión de comparación. Si la primera no se cumple, compara la segunda y así sucesivamente. En caso de que no se cumpla ninguna de las comparaciones se ejecutan las sentencias correspondientes al else. if (expresion-booleana1) { sentencia1; } else if (expresión-booleana2) { sentencia2; ……. else { sentencian;

46 Java – sentencias de control
SWITCH: Realiza distintas operaciones en base al valor de una única variable o expresión. Es una sentencia muy similar a if-else, pero esta es mucho más cómoda y fácil de comprender. switch (expresión) { case valor1: sentencia; break; case valor2: ….. case valorN: default: }

47 Java – sentencias de control
WHILE: Ejecuta repetidamente el mismo bloque de código hasta que se cumpla una condición de terminación. [inicialización;] while(condición){ cuerpo; iteración; } DO-WHILE: Es lo mismo que en el caso anterior pero aquí como mínimo siempre se ejecutara el cuerpo una vez, en el caso anterior es posible que no se ejecute ni una sola vez. do{ } while(condición);

48 Java – sentencias de control
FOR: Realiza las mismas operaciones que en los casos anteriores pero la sintaxis es una forma compacta. for (inicialización;condición;iteración) { sentencia1; sentencia2; } EJEMPLO: Este programa muestra números del 1 al 100:  class multi{   public static void main(String args[]){   int n1=0;   for (n1=1;n1<=100;n1++)   System.out.print(n1+" ");   }   CONTINUE: lo que hace es ignorar las sentencias que tiene el ciclo y saltar directamente a la condición para ver si sigue siendo verdadera, si es así sigue dentro del ciclo en caso contrario saldría directamente de el.

49 Conceptos básicos de la programación orientada a objetos
Modularización Facilita el diseño de programas grandes Es la propiedad de un sistema para ser descompuesto en un conjunto de módulos unidos y acoplados. El acto de dividir un programa en componentes individuales que reducen su grado de complejidad. Abstracción Facilita el diseño de programas grandes. Denota las características esenciales de un objeto que lo distinguen de otros tipos de objetos. Es el análisis de las características, atributos y métodos que son (y que no son) de interés para la aplicación en consideración. Agregación Incluir objetos en la estructura de objetos de otra clase. Por ejemplo, una línea tiene un punto p1 y un punto p2.

50 Conceptos básicos de la programación orientada a objetos
Las clases se relacionan entre sí por mediante relaciones de herencia. Es una jerarquía estilo “es un(a)”. Por ejemplo, “un alumno es una persona” La herencia es una generalización/especialización de una clase. Las superclases son abstracciones generalizadas Las subclases son abstracciones especializadas. La subclase puede añadir nuevas variables y métodos y/o redefinir (overridden) las variables y métodos heredados.

51 Conceptos básicos de la programación orientada a objetos

52 Conceptos básicos de la programación orientada a objetos
La herencia es el mecanismo que permite definir nuevas clases basadas en la existencia de otras muy parecidas evitando la duplicidad de código. ANTES DESPUES Auto maxFuel maxNroDePasajeros modelo velocidad . . . acelerar() desacelerar() doblarAIzq() doblarADcha() . . . Vehiculo maxFuel maxNroDePasajeros velocidad . . . acelerar() desacelerar() . . . Avion maxAltitud nroDeMotores . . . descender() ascender() . . . Auto modelo . . . doblarAIzq() doblarADcha() superclase Avion maxAltitud maxFuel maxNroDePasajeros velocidad nroDeMotores . . . acelerar() desacelerar() descender() ascender() . . . subclase

53 Conceptos de la programación orientada a objetos
VENTAJAS: Se reduce el tiempo que toma construir nuevas aplicaciones, debido a que el software no tiene que re-inventarse. Una aplicación se construye tomando clases ya escritas, en caso necesario se extienden. Cuando se crean nuevas clases utilizando herencia, éstas son pequeñas debido a que sólo contienen las diferencias con respecto a sus superclases. Es posible extender clases sin necesidad de tener el código de ellas. Las aplicaciones son más fáciles de entender debido a que es menos el software nuevo. Se facilita el trabajo de mantenimiento debido a que cualquier cambio en un atributo o método compartido sólo se hace en un lugar, evitando posibles inconsistencias.

54 Java - herencia Java permite múltiples niveles de herencia, pero no permite que una clase derive de varias (no es posible la herencia múltiple). Todas las clases de Java creadas por el programador tienen una superclase. Cuando no se indica explícitamente una superclase con la palabra extends, la clase deriva de java.lang.Object, que es la raíz de toda la jerarquía de clases de Java.

55 Java - herencia La clase Object tiene métodos interesantes para cualquier objeto que son heredados por cualquier clase. 1. Métodos que pueden ser redefinidos por el programador: clone() – Crea un objeto a partir de otro objeto de la misma clase equals() – indica si dos objetos son o no iguales toString() – Devuelve un String que contiene una representación del objeto como cadena de caracteres. finalize() – Se verá en el tema de excepciones 2. Métodos que no pueden ser redefinidos (son métodos final): getclass() – devuelve un objeto de la clase Class, al cual se le pueden aplicar métodos para determinar el nombre de la clase, su super-clase, las interfaces implementadas, etc. notifiy(), notifyall y wait() – Son métodos relacionados con las threads, los verán más adelante

56 Java - herencia Para especificar que se va a usar el mecanismo de herencia se utiliza la palabra reservada extends seguida del nombre de la clase que se heredará. Los elementos públicos de una superclase pueden ser utilizados sin ningún problema para cualquier clase y sus subclases. Para esto se utiliza la palabra reservada public. Los elementos privados de una superclase no pueden ser utilizados desde fuera de la clase en que se definieron, así sea una subclase. Para esto se utiliza la palabra reservada privated. Si se quiere tener atributos y métodos que sean privados para todas las clases excepto para las clases derivadas, es necesario que en su declaración se precedan la palabra reservada protected.

57 Java – herencia - encapsulamiento
private Clase A Clase A1 Clase A2 Clase B public protected Niveles de acceso de los elementos de la clase A

58 Java - herencia Sintaxis: class nombre_clase extends nombre_superclase
{cuerpo;} Sobrecarga Se utiliza para crear más de un método con el mismo nombre, pero con distinto numero de parámetros y operaciones distintas. La sobrecarga se puede utilizar para miembros constructores o para la herencia. EJEMPLO: Partiendo de los ejemplos anteriores vamos a crear una jerarquía de clases y muestra uso del constructor super. Mostrar aplicación “JerarquiaPunto” en NetBeans

59 Java – constructores (repetido)
Métodos para inicializar objetos. Este método no posee tipo de retorno, ni siquiera void Recibe el nombre de la clase que lo contiene. Se llama mediante el operador new Puede contener parámetros Toda clase de Java debe poseer por lo menos un constructor. Si desde un constructor se llama a otro constructor de la misma clase se usa la palabra this en vez de new La palabra this sólo puede aparecer en la primera sentencia de un constructor.

60 Java – constructores en subclases
El constructor de una subclase puede llamar al constructor de su superclase por medio de la palabra super(), seguida entre paréntesis de los argumentos apropiados. La llamada al constructor de la superclase debe ser la primera sentencia del constructor excepto se llama a otro constructor de la misma clase con this(). Si el programador no prepara un constructor, el compilador crea uno, inicializando las variables de los tipos primitivos a sus valores por defecto y a los Strings y referencias a objetos a null.

61 Java – clases y métodos finales
Las variables declaradas como final no pueden cambiar su valor una vez que han sido inicializadas. Una clase declarada final no puede tener subclases. Un método declarado como final no puede ser redefinido por una subclase

62 Java – finalizadores Los finalizadores son métodos que completan la labro del garbage collector que sólo libera la memoria reservada con new. Se llama automáticamente cuando se va a destruir un objeto Se utilizan para ciertas operaciones de terminación distintas de liberar memorial, por ejemplo, cerrar archivos, cerrar conexiones de red, etc. Un finalizador es un método de objeto (no static), void, sin argumentos. finalize()

63 Conceptos de la programación orientada a objetos
La relación de herencia entre clases forma una estructura jerárquica similar a un árbol. Una superclase puede ser subclase de otra clase superior y una subclase puede ser superclase de otra clase. La especialización de una clase permite reusar una clase existente para definir una nueva clase más específica Cuando durante el diseño de la solución a un problema se obtienen diversas clases relacionadas y no existen clases para extender, se crea una clase que generalice a todas ellas.

64 Java – redefinición métodos heredados
Una clase puede redefinir cualquiera de los métodos heredados de su superclase que no sean final. El nuevo método sustituye al heredado para todos los efectos en la clase que lo ha redefinido. Los métodos de la superclase que han sido redefinidos, pueden ser todavía accedidos por medio de la palabra super desde los métodos de la subclase Los métodos de clase o static no pueden ser redefinidos en las subclases.

65 Java – especialización / generalización
Un objeto de una subclase puede usarse en cualquier lugar en que se usaría un objeto de su superclase, esto se debe a que el objeto también pertenece a su superclase. Es decir, siempre es posible asignar un objeto especializado a uno más general y no al revés sin una conversión explícita. Por ejemplo; Cuenta cta; //superclase CuentaConServicios ctaConS = new CuentaConServicios(); //subclase CuentaDeCredito ctaCred = new CuentaDeCrédito(); //subclase ……. cta = ctaCred //correcto ctaCred = cta //incorrecto ctaConsS = ctaCred //incorrecto

66 Java – especialización / generalización
Para evitar problemas, al asignar referencias a objetos es conveniente utilizar el operador instanceof, el cual devuelve la clase a la que pertenece el objeto. EJEMPLO: Se verá en el programa de PruebaCuentas a continuación. EJEMPLO: Aplicación del investigador que desea llevar el control de los libros, tesis y artículos que tiene.

67 Java – especialización / generalización
Obra autor título año Métodos Libro ……. editorial Métodos Tesis ……. director Grado Métodos Artículo ……. revista volumen número Métodos

68 Conceptos de la programación orientada a objetos
La habilidad de decidir cuál método aplicar a un objeto en una jerarquía de herencia se denomina polimorfismo. Polimorfismo es el mecanismo por el cual un objeto puede responder al mismo mensaje de diferentes maneras, permitiendo a los objetos interactuar con otros sin conocer su tipo exacto anticipadamente. Es distinto al concepto de sobrecarga pues este se lleva a cabo dentro de una misma clase. El ejemplo más sencillo de polimorfismo es cuando se envía un mensaje a un objeto para que realice una tarea, la subclase verifica si tiene un método con esa firma. Si es así, ejecuta el método Si no turna el mensaje a la superclase Este proceso se repita en la jerarquía de herencia hasta llegar a la raíz. Si el método buscado no se encuentra entonces se tiene un error

69 Java – ejemplo herencia
EJEMPLO: Crear nuevas clases por combinación, extensión y/o especialización de clases existentes, a través del mecanismo de herencia. Problema: Se requiere un programa para el mantenimiento de cuentas bancarias teniendo cuentas de débito, cuentas con pago automático de servicios y cuentas de crédito. Con todas las cuentas se permite retirar dinero, depositar dinero, y conocer el saldo de la misma. Las cuentas con pago de servicio además permiten el pago automático de teléfono, y las cuentas de crédito permiten comprar crédito y consultar este crédito. (Ver diseño en el slide siguiente) Mostrar aplicación “PruebaCuentas” en NetBeans

70 Java - herencia Clase Cuenta CuentaCon Servicios CuentaDe Credito
Estructura: saldo numCuenta Comportamiento: retirar depositar darSaldo pagarTeléfono retirar (superclase) comprar retirar (subclase) obtenerValorDeuda Mediante la herencia nos evitamos: Modificar la clase Cuenta agregando los métodos requeridos. Alterar el funcionamiento de la clase ya creada. Copiar el código de Cuenta en el programa para el pago de servicios y hacer el cambio necesario (duplicidad de código)

71 Conceptos de la programación orientada a objetos
Las clases genéricas o polimorfismo real paramétrico son clases que almacenan datos cuyo tipo de determina al momento de crear objetos de tal clase. Los métodos pueden trabajar con argumentos de diversos tipos, generalmente realizando el mismo tipo de trabajo independientemente del tipo de argumento. En Java se este concepto se logra con la clase Object. Una envoltura es una clase que permite trabajar con un dato primitivo como si fuera un objeto y por lo tanto usarlo cuando se requiera un objeto de la clase Object.

72 Java – ejemplo clases genéricas
EJEMPLO: Crear nuevas clases por combinación, extensión y/o especialización de clases existentes, a través del mecanismo de herencia. Problema: Una memoria que consta de un conjunto de celdas que almacene cualquier dato de alguno de los diferentes tipos que se permitan en el lenguaje. Mostrar aplicación “ClaseGenerica” en NetBeans ………... 2 5.3 “a” Punto(3,2) Memoria

73 Conceptos de la programación orientada a objetos
Una clase abstracta (abstract) es una clase de la que no se pueden crear objetos. Su utilidad es permitir que otras clases deriven de ella, proporcionándoles un marco o modelo que deben seguir y algunos métodos de utilidad general. Las clases abstractas se declaran anteponiéndoles la palabra abstract public abstract class Figura { } Puede tener métodos declarados como abstract, en cuyo caso no se define el método. Si un clase tiene algún método abstract es obligatorio que la clase sea abstract, más no viceversa.

74 Java - abstract Figura f = new Rectangulo();
int s = f.obtenerSuperficie();

75 Java – abstract EJEMPLO: Ejemplo que tiene como superclase Figura; y Círculo y Cuadrado como subclases Figura x y obtenNombre() Area() Circulo x y radio obtenNombre() area() Cuadrado x y lado obtenNombre() area()

76 Conceptos de la programación orientada a objetos
Una interface es la definición de una colección de una o más operaciones que componen un comportamiento cohesivo (servicio) que debe ser implementado por una o más clases o componentes. Cuando todos los métodos de una clase son abstractos y sólo hay constantes se está definiendo una interfaz.

77 Conceptos de la programación orientada a objetos
En Java no es posible tener herencia múltiple, es decir: Clase A Atributos Métodos Clase B Atributos Métodos Clase C Atributos Métodos


Descargar ppt "CONCEPTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS"

Presentaciones similares


Anuncios Google