You are on page 1of 171

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403

– PROGRAMACION ORIENTADA A OBJETOS

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD

PROGRAMACION ORIENTA A OBJETOS

ING. CESAR ORLANDO JIMENEZ ANGARITA 2010

i

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

PROGRAMACIÒN ORIENTADA A OBJETOS

CESAR ORLANDO JIMENEZ ANGARITA

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA PROGRAMA DE INGENIERIA DE SISTEMAS 2010
CONTENIDO UNIDAD 1. INTRODUCCION A LA PROGRAMACION ORIENTADA A OBJETOS

ii

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

Lección 1 CAPÍTULO 1. CONCEPTOS BASICOS ORIENTADOS A OBJETOS 1.1. (TOMADO DEL LIBRO PROGRAMACIÓN DE COMPUTADORES DE JOSÉ CÁRCAMO SEPÚLVEDA, EDICIONES UIS). 1.2. ¿Que es un objeto? ............................................................................................. 1 Lección 2 1.3. Cada objeto tiene un conjunto de características o atributos que lo hacen diferente a los demás. ................................................................................................ 2 1.4. Inicialmente podríamos decir que un objeto es algo que tiene atributos y comportamientos propios. .......................................................................................... 2 Lección 3 1.5. ¿Podríamos hacer la representación de un objeto del mundo real? ................. 3 1.6. Tipo abstracto de datos........................................................................................ 3 Lección 4 1.7. Características de datos: Por ejemplo hora, minutos y segundos...................... 4 1.8. Para representar el objeto anterior debemos considerar tres aspectos ............. 5 Lección 5 1.9. ¿ Que es un mensaje? ........................................................................................ 5 1.10. Beneficios de la POO (tomado de monografías.com) ...................................... 6 1.11. Problemas derivados de la utilización de OOP en la actualidad (tomado de monografías.com) ....................................................................................................... 6 1.11.1. Curvas de aprendizaje largas. ....................................................................... 6 1.11.2. Dependencia del lenguaje ............................................................................. 7 1.11.3. Determinación de las clases .......................................................................... 7 1.11.4. Performance. .................................................................................................. 7 CAPITULO 2. INTRODUCCIÓN Y ELEMENTOS BÁSICOS DE PROGRAMACIÓN ORIENTADA A OBJETOS (POO) Lección 6 2.1 Introducción .......................................................................................................... 8 2.2 ¿Porqué POO? ..................................................................................................... 9 2.3 ¿Que es la POO? ............................................................................................... 10 Lección 7 2.4 Ventajas de POO ............................................................................................... 11 Lección 8 2.5. Desventajas de la tecnología orientada a objetos ........................................... 12 Lección 9 2.6 Evolución de la programación ............................................................................ 13 2.6.1. Programación lineal. ...................................................................................... 13 2.6.2. Programación Modular ................................................................................... 13 2.6.3. Programación Estructurada ........................................................................... 14 Lección 10 2.7. Comparación entre la Programación orientada a Objetos y la programación estructurada. ............................................................................................................. 14 2.7.1. Paradigma Estructurado ................................................................................ 14 2.7.2 Paradigma Orientado a Objetos ..................................................................... 16 2.7.2.1.Ventajas del Modelo orientado a objetos con respecto al modelo estructurado .............................................................................................................. 17 2.8 ACTIVIDADES COMPLEMENTARIAS ............................................................. 18

iii

....... .................................... ...... ......................................................................5 Interacciones entre tipos de objetos Objeto...................................................... ..... ESTRUCTURA DE UN OBJETO ......................................................................... Estructura de un Objeto...............7 ACTIVIDADES COMPLEMENTARIAS ..4 Jerarquia ...............................2 Análisis del comportamiento de objetos .....3...................... 28 Lección 17 4.....4 El Ciclo Vital de un Objeto Objeto.......................................1........2.................................... 39 Lección 19 4.......................6 Herencia .....................2...........Componentes Objeto... 23 Lección 15 3..................1 Análisis de la Estructura de Objetos..............2....................................................................................................... 20 Lección 13 3..1.....................2 Asociaciones de Objetos......... 28 Lección 18 4............................................................................2.......................................................... 38 4.............. .......... 30 4..................................... 35 4..........2........7 Fuentes externas de eventos Objeto.........................................2 Eventos ..........5 Polimrfismo .......... 19 Lección 12 3.................. 36 4............................................................................................ 33 4...................... 37 4...........5 Diagramas de relación entre los objetos .2...3 Moduaridad ..................................................... 24 3...3..........................................1 Objeto Objeto..........................................3 Tipos de Eventos............................................................................................2................ 30 4..................... .............................................3 Diferencia entre operación y método Objeto........... 35 4........................ Objeto..................................... 26 3.................................. 31 4......... 35 4...........1.........6................................................... 40 4................................................... 30 4.............................................. .......................2....1................................. ... ............... 28 4........ ........................................................................1 Abstracción ..................3.............................8 Reglas deactivación Objeto................................ .. 41 iv ........... 28 4....................................... 33 4..9 Condiciones de Control Objeto........................... ....... ..2 Encapulación ..4 Jerarquías Compuestas..............1......... 34 4.......3 Diseño de la Estructura y Comportamiento de un Objeto Objeto........ ...2................................. ANALISIS DE LA ESTRUCTURA Y COMPORTAMIENTO DE UN OBJETO Lección 16 4...... 37 4.........................................................6 Esquemas de Objetos..........................INTRODUCCION A JAVA CAPITULO 4....................3........6 Operaciones Objeto................. .. 25 3........... 31 4.............................1 Objetos y Tipos de Objetos ..................................................4 Herencia de Clase.....10 Subtipos y Supertipos de Eventos Objeto.......3..............................2................ 29 4................................................................1 Estados de un Objeto.......1 Tipos de herencia ........................ 26 UNIDAD 2..1.......................... PROPIEDADES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS Lección 11 3.2...........................................3 Jerarquías de Generalización ........ 22 Lección 14 3..............1..................................... 29 4......UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS CAPITULO 3........................................2...

............................. 55 5.........................1..............................................................3........................ Objeto................... Busqueda de un elemento en un vector ordenado....3 Sentencias de salto: break..3...... Objeto....................3..3. Ordenamiento de un Vector Método Lineal ..........................7 Polimorfismo Objeto............ 71 5.............7............................................ 68 5.....3...................6............................................... 83 v ..............3...................................2 Palabras clave ..................................................... do...................5..................... 81 6........ continue y return .3 Sentencia return ..............5 Herencia Múltiple............. .. 82 6..... 54 Lección 22 5................................................................................1 Las sentencias condicionales: if y switch ..5..... 44 CAPITULO 5................................8............ 78 6....3..................3..3..............................................2 Bucle do-while .................1...2 Características de Java .... Busqueda de un elemento en un vector ordenado.............5........................4 ACTIVIDADES COMPLEMENTARIAS ......................2....................................... 71 5............. 68 5.............................................................. 65 5........... Metodo Binaria ....................................................4 E/S caracteres: ........ 41 4.................................. 46 5................. 51 5.3................................................................................3...... GUIA DE LABORATORIO Lección 26 6.......2 Sentencia continue ..............................3 Estructura de un programa en Java .....5......................................................5..............................................2.......4 ACTIVIDADES COMPLEMENTARIAS Objeto.................... Método Secuencial ...2. Caja de dialogo... Programacion de arregos....8 Notación.. FUNDAMENTOS DE JAVA Lección 21 5..............3............................. 79 6..3 Operadores y expresiones ...........3.............................UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 4...........................................1 Tipos de datos simples .....6 Selección del Método Objeto.. 53 5... 62 Lección 24 5... 76 6................5......................................................3.. Asignacion de un vector con numeros Aleatorios ...................3.....................3..................................................................................................5..............1 Métodos de definición .............. 47 5...... 73 5. 69 Lección 25 5...................5................. 72 5............... 50 5.........................................................1...... 69 5.................. 53 5.....1 Sentencia break ............ 55 5.............1 Creación de un primer programa .. Implementacion de clases que administran Arreglos....................3....3.......5............................4.........3 Bucle for ..........................2.......... 42 4... La sentencia switch ...1.... 80 6.................................2............1 Introducción ...................... while ...........................................................................................3....................... 80 6...................1 Bucle while ...................... 74 CAPITULO 6.....5........... ......................................................... Sentencias de iteración o bucles: for.........3......1 Diferencias Con C++ ................................... 41 Lección 20 4..... 65 5.............1......... 59 Lección 23 5...........3... ....3.........3............3........ Ordenamiento de un Vector Método Burbuja ............................1 La sentencia if – else ..........................................3.........................................................................................9... Lectura de un vector por teclado .................................................. 42 4..........................2..........2 Tipos de datos y declaraciones ...........5.........5....................... 79 6........................ 66 5... 64 5..........5 Estructuras De Control .....................................2.3..................................................................3.....2.......................

.....................................................16................................................9................................... 107 6.................... 139 7.............................. 135 7............20............................22......................................... 104 6.........................................4 Abstracción .............................................. Ejemplo Cola 4 Archivo ................................................................................................... Ejemplo Cola 2 ............................................ Ejemplo Lista y Pila ........................ Programa Simulación de un Parqueadero .......1............................................1 Herencia de excepciones Java ........................................................................... Programa Simulación de un Inventario .................. 97 Lección 29 6................2 Funcionamiento ...9.....UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 6....3................ 140 7..................................................1...........................................................10.10.................. Invertir un Arreglo .....................................................7...2 Características Importantes De Las Clases: ........ 142 7......18.. Programa de Diagonal .................. 121 6...1............................................ 101 6.............. Ejemplo Lista Circular ...............1 Variables miembro de objeto ............. 136 7............... Ejemplo Lista y Cola.........3............... Prog2..................................11..........10.......... Ejemplo Cola 4 ................... 137 7... 99 6....8.......................... Ejemplo Arbol Binario ............................................................ 96 6........................................... Programa de Copas .............. 134 7............................................................................. 127 UNIDAD 3... Ejemplo Multilista ...... Uso de un Objeto StringBuffer para la presentación de un vector ............13... 125 6...... Ejemplo Cola 1 ................................................................................3........... 93 6................................15....... Variables miembro ........................................ 88 Lección 27 6................ 133 7......................................................2.............12............ 111 Lección 30 6................. Ejemplo De Definición De Una Clase ..............................7 Flujo de E/S en java ....6 Arreglos y cadenas ......................................10......................... Gestión De Excepciones Y Errores ..2 Variables Finales ............21............................... Programa lectura y escritura de matrices ......................................... 86 6....................1......................... Programa 3........................................5......................... 120 6...........3 Concepto de Interface ....................... 113 6........................................................ 93 Lección 28 6................................................................3............10...........................1 Conceptos Básicos ................................. 117 6. 141 Lección 32 7..................... 138 7..8...................9..... 92 6................................................................ Creación de una clase Arreglo.......................... Prog 1.........2.............................3................... 91 6..... 142 7........................................1 Tipos de excepciones ..................................... 90 6......................................10.............................. 133 7..................................................8.......................... Ejemplo Arbol Binario .................................. Proramacion avanzada....................6. 140 7.........1......10..19...5 Encapsulado ... 83 6.............. Ejemplo Lista .............................4............2..................... Ejemplo Pila ......................................................................... 134 7................ Programa Suma de Diagonales y Transversales...1 Concepto de Clase .................8...........17..... 115 6............................... 143 7......... CLASES Y HERENCIA EN LA PROGRAMACION ORIENTADA A OBJETOS CAPITULO 7.......... CLASES BASICAS EN LA POO Lección 31 7............ 143 vi ...............................................14.......................... uso de matrices .......................

.......1 Paquetes de utilidades ............... La clase Object .....7 Herramientas De Java ..................... 145 7..8.....................5 Limitaciones en la herencia ...............................8..........2 Relación de tipo de herencia .................. 156 7... 163 Lección 40 8........6........... 149 7................3 Protocolos Para Trabajo En La Red ....3 Herencia múltiple .................................................................. 156 Lección 36 APITULO 8.....2 La referencia this ......2...............3 La destrucción personalizada: finalize .................7......................................................2 HTML para Java .................................. 149 7.........) ..............2 Jerarquía ...........................................3 Ejemplo de gestión de excepciones ......... HERENCIA 8.................................... La destrucción del objeto ...................8........................ 150 7....................................................4...6... 167 9................. EXTENSIÓN DE CLASES Lección 41 9..1...1 La destrucción de los objetos ...8.8..........................1 Composición De Objetos Extendido ...................................................................................................1 Manejo de excepciones: try .....................8......................................................................................................3 Paquetes para el desarrollo en red ................8............. 144 7............................................2 Sobrecarga De Método ..........................................1 Applets ....................2.......8...8.. 151 Lección 34 7......2.......................................................... 163 Lección 39 8.................8.......................8............................................................................7 Extensión De Clases ................................... 167 9.............7.......4................................... 162 8........................................... 159 8. 152 7..................................... 161 Lección 38 8................................................................................7..7................................................................8....UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 7.....................................8................... 153 Lección 35 7...........5. 145 7................. Acceso al objeto ...................................4... 152 7..................2 Constructores ..................1 El operador punto (..................2 La destrucción por defecto: Recogida de basura ..... 154 7................................................. 158 8..2 Paquetes para el desarrollo gráfico .......8............................................................. 155 7..............................6....................................................4 Declaración ................................................. Lanzamiento de excepciones: throw – throws ................8..2... Applest Y Web ......1 Referencias a Objeto e Instancias ....................8................................................... 159 Lección 37 8........3 Los métodos .......6.........................................7.................................8................3 El operador new ................6..................................1........................................................... ACTIVIDADES COMPLEMENTARIAS ............................... 156 7.. 162 8.....8...... 160 8......... 158 8....................................8................................5.........1subclase ................... 155 7...........1.........................................................................1 La Herencia ......... 162 8.................................... 156 7....5. 148 Lección 33 7...............................................................1...........................8...............7.. 167 Lección 42 vii ..............................7................... 167 9......1 Métodos ..... 165 CAPITULO 9................2......1..................7.catch – finally ............................ 154 7..................................................................... 154 7....................................4 La instanciación de las clases: Los objetos ..........2....................

.........4 Que Es Un Applet ............................................5 La Clase Applet .................................1............................. 174 9.....................................................1.............7.........................2 Obtención de información sobre una applet ...... 176 9........................7 Inclusión de la applet en una página Web ......1.......2 Ejecución ..... 173 9.. 172 9........... 174 Lección 45 9.............. 172 9.. Bibliografia Sitios Web ...2 Métodos del ciclo de vida ........3 Manipulación del entorno de una applet .8...............................6 La Clase Url ................................................ 169 Lección 43 9.........1.1... BIBLIOGRAFIA 10........................................................ 170 9.......1 Código ......2 ACTIVIDADES COMPLEMETARIAS ...................................................... Bibliografia . 168 9... 176 CAPITULO 10......1..........1..7...7.....................5.............4.8.............................................................................................................1............................................................... 170 Lección 44 9..............................................1............... 175 9...... 175 9.1................1 Consideraciones sobre la seguridad en las applets ...........................1.....1..................................................1........................... 170 9.........................1...........................................1 Situación de la clase Applet en la API de Java ..................UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 9.8 Ejemplo De Construcción De Una Applet ......................1 Obtención de los parámetros de la applet ..2....5 .................................. 179 viii .................................................................................. 178 10.

Quizá al hablar de objetos se nos venga a la cabeza el cuento de los objetos voladores no identificados. Esto ha permitido ofrecer soluciones con larga opción de usabilidad atacando problemas concernientes a la denominada crisis del software. es un apropiado encadenamiento de mensajes entre distintos objetos. Existen objetos que contienen datos y métodos y eventos que activa procedimientos .2. Que es un objeto? Según el diccionario. que pueden modificar el estado de los objetos. INTRODUCCION A LA PROGRAMACION ORIENTADA A OBJETOS Leección CAPÍTULO 1. 1 . 1. y seguro serán siempre plenamente identificados. un objeto es cualquier cosa que se ofrece a la vista y afecta los sentidos. Ediciones UIS) Hoy por hoy es evidente que la orientación a objetos es el término más corriente en diversos entornos con actividades comerciales. de servicios y académicos. aquí hablaremos de objetos pero no serán solo voladores. industriales.1. un lenguaje se dice que está basado en objetos si soporta objetos como una característica fundamental del mismo. previamente instanciados de las clases a las que pertenecen. La Programación Orientada a Objetos se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos. Es así como podemos ver que el mundo real que nos rodea es un conjunto de objetos. (Tomado del libro Programación de Computadores de José Cárcamo Sepúlveda. CONCEPTOS BASICOS ORIENTADOS A OBJETOS 1. desarrollo y mantenimiento del software.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS UNIDAD 1. La Programación Orientada a Objetos modela el mundo en términos de objetos. eventos y responsabilidades. A través de esta técnica se logra la optimización en tareas concernientes a las fases de desarrollo de software como en el diseño. En los lenguajes orientados a objetos un programa. Lo anterior pensado teniendo en cuenta la existencia de procesos imprescindibles hoy en día como lo son la reutilización de código y su portabilidad.

la misma línea.5. que tienen la misma marca. son dos objetos distintos pues cada uno tiene una identificación diferente. vegetal que a primera vista esta construido por hojas. un sentimiento. etc. elabora clorofila etc. raíz. 1. ¿Podríamos hacer la representación de un objeto del mundo real? 2 . personas. Un diccionario es un libro especial que contiene un conjunto de palabras y definiciones. las mismas características.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Si miramos a nuestro alrededor podemos observar plantas. leer su significado. Cada objeto tiene un conjunto de características o atributos que lo hacen diferente a los demás. Inicialmente podríamos decir que un objeto es algo que tiene atributos y comportamientos propios. Lección 3 1. por ejemplo “un mes del ano”. el mismo modelo. etc. por ejemplo dos carros recién salidos de la fabrica. Existen otros que no son tangibles.4. Lección 2 1. o de pronto investigar sobre algún tema especifico. Una planta es un ser viviente. pero somos conscientes de que existen. Por ejemplo una planta difiere notablemente de un animal y de un edificio. frutos. ilustraciones. una profesión etc. Estos son objetos tangibles. tablas. son distintos entre si. Y su utilidad la percibimos cuando necesitamos consultar alguna palabra. cosas. etc. tallos. Son algunas de las características y comportamiento que podemos percibir superficialmente de una planta. mas aun aunque dos objetos sean exactamente iguales.3. se alimenta por su raíz. Además respira por sus hojas. “una hora de una cita”. Cada uno de ellos presentan características y comportamientos muy diferentes. verificar su ortografía. aunque pertenecen a la misma clase. animales. también podemos encontrar en el graficas.

es mas podríamos afirmar que lo único estructurado en la “programación estructurada” son los procedimientos pero los datos están muy aislados. Aparece entonces un nuevo elemento de información que se denomina “tipo abstracto de datos”. Quizá nos sea difícil en los objetos abstractos. Tipo abstracto de datos En la terminología de organización de la información muchas veces se manejan los términos “estructura de datos” y “tipo abstracto de datos” como una misma cosa . Para representar a un objeto recurrimos a un tipo abstracto de datos. existe una diferencia entre los dos términos. Sin embargo.6. Para una solución software un objeto es un elemento especial de información que se construye a partir de una estructura de datos y una estructura funcional. Un tipo abstracto de datos contienen una estructura de datos propia y un conjunto de operaciones o métodos autorizados para manipular la estructura de datos. ESTRUCTURA DE DATOS ESTRUCTURA FUNCIONAL La estructura funcional opera directamente sobre la estructura de datos y esta a su vez solo puede ser manipulada por la estructura funcional del mismo objeto. Desde el punto de vista computacional es posible representar lógicamente cualquier objeto del mundo real. En la programación estructurada la estructura de datos es totalmente independiente de la parte funcional o procedimental. mostrar la hora en minutos o sumar y restar horas.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS ¿Por ejemplo el amor? ¿La alegría?. Imaginemos un objeto RELOJ. encontramos en el unas características a nivel de datos (estructuras de datos) y unas características de comportamiento (características funcionales). Lección 4 1. pero de una u otra forma lograríamos hacerlo. Características de datos: Por ejemplo hora.7. 3 . para muchos autores. actualizar la hora y siendo mas ambiciosos mostrar la hora en segundos. minutos y segundos Características funcionales: Por ejemplo mostrar la hora. La programación orientada a objetos se acerca mas al mundo real estructurando en un mismo elemento de información datos y procedimientos. 1. Por ejemplo tomemos un objeto del mundo real cotidiano que nos rodea.

Segundos 2. Horas.8. Minutos. etc. ¿Cómo representar su comportamiento? Identificar las operaciones o procesos a efectuar sobre los datos Leer hora Mostrar hora Mostrar hora en segundos. Para representar el objeto anterior debemos considerar tres aspectos 1. ¿Cómo representar la estructura de datos? Identificar las características del objeto a nivel de datos. 4 . ESTRUCTURA FUNCIONAL  Leer hora      Mostrar hora Mostrar hora en segundos Mostrar hora en minutos Sumar hora Restar hora 1.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Representemos este objeto del mundo real Quedaría de la siguiente forma: ESTRUCTURA DE DATOS  Hora   Minutos Segundos como un tipo abstracto de datos.

¿Cómo comunicarnos con el objeto? Para comunicarnos con el objeto debemos enviarle un mensaje. etc. los costos de producción de software siguen aumentando. que sea identificado por el mismo objeto.10. bases de datos multimediales. cada aplicación. fácilmente extensibles y a partir de componentes reusables. Lección 5 1. Así surgen nuevas áreas de aplicación cotidianamente: procesamiento de imágenes y sonido. en consecuencia un cambio en la codificación de un objeto no afectará la operación con otro objeto siempre que los métodos respectivos permanezcan intactos. Los objeto ofrecen al mundo que lo rodea una puerta de entrada que es la que permite determinar si el mensaje es adecuado o no. el objeto actúa. A esta puerta de entrada se le denomina “interfaz de objeto” El mensaje llega a la interfaz de objeto solicitando una operación y si este se ajusta a una forma de llamado conocida. En el ejemplo del reloj podemos enviarle un mensaje para que nos muestre la hora: MENSAJE: “Mostrar hora”. etc. es más sencillo modificar código existente porque los objetos no interaccionan excepto a través de mensajes. el mantenimiento y la modificación de sistemas complejos suele ser una tarea trabajosa. MENSAJE: “Mostrar fecha”. Todos estos problemas aún no han sido solucionados en forma completa. automatización de oficinas.com) Día a día los costos del Hardware decrecen. Que es un mensaje? Según el diccionario. podemos definir un mensaje como el llamado que se hace a un objeto para que ejecute una de sus operaciones. diseñar e implementar aplicaciones permite obtener aplicaciones más modificables. Esta reusabilidad del código 5 . un mensaje es un encargo de decir o llevar una cosa.9. Lamentablemente. (aunque tenga aspectos similares a otra) suele encararse como un proyecto nuevo. Beneficios de la POO (tomado de monografías. Aún en las aplicaciones tradicionales encontramos que definir interfaces hombre-máquina "a-laWindows" suele ser bastante conveniente. es un mensaje identificable por el objeto por que puede invocar una operación propia del mismo. Pero como los objetos son portables (teóricamente) mientras que la herencia permite la reusabilidad del código orientado a objetos. resulta desconocido para el objeto por que no existe ninguna operación asociada a el. Para que el objeto funcione se le debe enviar un mensaje adecuado.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 3. La introducción de tecnología de objetos como una herramienta conceptual para analizar. 1. ambientes de ingeniería de software. Más puntualmente.

en consecuencia la elección de un lenguaje tiene ramificaciones de diseño muy importantes.11. Desafortunadamente la definición de las clases es más un arte que una ciencia. Dependencia del lenguaje. 1. puede parecer un paraíso virtual. 1. 1. Performance. Problemas derivados de la utilización de OOP en la actualidad (tomado de monografías. al hacer la transición a un sistema orientado a objetos la mayoría de los programadores deben capacitarse nuevamente antes de poder usarlo. desde subsistemas a los datos. 6 . en la práctica existen muchas dependencias. por ejemplo C++ soporta el concepto de herencia múltiple mientras que SmallTalk no lo soporta. Un sistema orientado a objetos ve al mundo en una forma única.com) Un sistema orientado a objetos. 1. Involucra la conceptualización de todos los elementos de un programa. Muchas compañías oyen acerca de los beneficios de un sistema orientado a objetos e invierten gran cantidad de recursos luego comienzan a darse cuenta que han impuesto una nueva cultura que es ajena a los programadores actuales. A pesar de la portabilidad conceptual de los objetos en un sistema orientado a objetos.11. Toda la comunicación entre los objetos debe realizarse en la forma de mensajes. Luego.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS disminuye el tiempo que se utiliza en el desarrollo y hace que el desarrollo del software sea mas intuitivo porque la gente piensa naturalmente en términos de objetos más que en términos de algoritmos de software. Muchos lenguajes orientados a objetos están compitiendo actualmente para dominar el mercado. Curvas de aprendizaje largas. en la forma de objetos. Si bien hay muchas jerarquías de clase predefinidas usualmente se deben crear clases específicas para la aplicación que se este desarrollando.11. en ese caso será necesario reestructurar la jerarquía de clases devastando totalmente la planificación original.2. Esta no es la forma en que están escritos los programas orientados a objetos actualmente. Cambiar el lenguaje de implementación de un sistema orientado a objetos no es una tarea sencilla. El problema sin embargo surge en la implementación de tal sistema.11. Una clase es un molde que se utiliza para crear nuevos objetos. En consecuencia es importante crear el conjunto de clases adecuado para un proyecto.1. en 6 meses ó 1 año se da cuenta que las clases que se establecieron no son posibles.4. por lo visto.3. Específicamente los siguientes temas suelen aparecer repetidamente: 1.11. Determinación de las clases.

pero en la situación actual. Debería existir una metodología fácil de aprender e independiente del lenguaje. la situación mejorará. A medida que la tecnología avanza y la velocidad de micro procesamiento.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS En un sistema donde todo es un objeto y toda interacción es a través de mensajes. el tráfico de mensajes afecta la performance. un diseño de una aplicación orientada a objetos que no tiene en cuenta la performance no será viable comercialmente. y fácil de reestructurar que no drene la performance del sistema. potencia y tamaño de la memoria aumentan. Idealmente. 7 . habría una forma de atacar estos problemas eficientemente al mismo tiempo que se obtienen los beneficios del desarrollo de una estrategia orientada a objetos.

código que es difícil de modificar. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen una estructura y forman parte de una organización. Un lenguaje orientado a objetos ataca estos problemas.2 ¿Porqué POO? Es una manera de pensar. lo más reciente en metodologías de desarrollo de software. Muchos de los lenguajes pueden cumplir uno o dos de estos puntos. Un lenguaje se dice que está basado en objetos si soporta como una característica fundamental del mismo. 2. El concepto de programación orientada a objetos (POO) no es nuevo. Los lenguajes de programación convencionales son poco más que una lista de acciones a realizar sobre un conjunto de datos en una determinada secuencia. Básicamente la POO permite a los programadores escribir software. otra manera de resolver un problema. Dado que la POO. basado en clases y capaz de tener herencia de clases. Introducción Actualmente una de las áreas más importantes en la industria y el ámbito académico es la orientación a objetos. lenguajes clásicos como SmallTalk se basan en ella. cada objeto no es un ente aislado. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS CAPITULO 2. En primer lugar. sino que forma parte de una organización jerárquica o de otro tipo. ciclos de desarrollo largos y técnicas de codificación no intuitivas. el inconveniente mas complicado de diseñar es la herencia. un objeto no es un dato simple.1. Es un proceso mental humano aterrizado en una computadora. de forma que esté organizado en la misma manera que el problema que trata de modelar. Si en algún punto del programa modificamos la estructura de los datos o la acción realizada sobre ellos. pero es muy difícil que se cumplan los tres. el programa cambia. En segundo lugar. Tiene tres características básicas: debe estar basado en objetos. sino que contiene en su interior cierto número de componentes bien estructurados. La orientación a objetos promete mejoras de amplio alcance en la forma de diseño. el objeto. 8 . El elemento fundamental de la POO es. INTRODUCCIÓN Y ELEMENTOS BÁSICOS DE PROGRAMACIÓN ORIENTADA A OBJETOS (POO) Lección 6 2. Esta definición especifica varias propiedades importantes de los objetos. desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo del software: la falta de portabilidad del código y reusabilidad. como su nombre lo indica.

entre un objeto y sus atributos (automóvil > marca. parabrisas. color. Desarrollar software que sea fácil de utilizar hace que sea muy compleja su construcción. sistemas de manejo de ventanas. entre un objeto y su relación con otros objetos (camión > vehículos automotores. Entre un objeto y sus componentes donde incluso otros objetos pueden formar parte de otros objetos (agregación) (camión > motor.). La metodología del software orientado a objetos consiste en:  Saber el espacio del problema Realizar una abstracción Crear los objetos (espacio de la solución) Instanciarlos (esto es. ciclos de desarrollo largo. 9 . La Orientación a Objetos está basada en los tres métodos de organización que utilizamos desde la infancia. Una de las mayores ventajas de una estructura orientada a objetos es el mapeo directo de los objetos en el dominio del problema a los objetos en el programa. es un modelo para aclarar algo o para explicarlo. etc. la modificación (que antes era difícil de lograr). obligar a que los objetos se comuniquen a través de una interfaz pública estrecha hace más fácil aislar los errores ocultos y determinar cuales son los métodos responsables de los errores ocultos que ocurran. La Orientación a Objetos es el paradigma que mejora el diseño. la estructuración orientada a objetos reduce el número de conexiones entre los componentes del sistema. técnicas de programación no intuitivas. Actualmente. La Orientación a Objetos es un paradigma. El diseño del nuevo software se enfoca a complejas interfaces de usuarios.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Antes se adecuaba el usuario al entendimiento de la computadora. La definición explicita de un protocolo de comunicación permite a compiladores e intérpretes advertir a los usuarios acerca de los accesos ilegales e incluso impedir la modificación no deseada de los componentes del sistema. su reusabilidad. se le enseña a la computadora a entender el problema. desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo del desarrollo del software: La falta de portabilidad del código. una bicicleta no entraría en esta relación). y programas multitarea están haciendo que el software sea cada vez mas complejo. número de llantas. es decir. Los objetos mismos protegen los datos privados de modificaciones no deseadas. traerlos a la vida) Dejarlos vivir (ellos ya saben lo que tienen que hacer) Las herramientas de programación orientadas a objetos ayudan a manejar la complejidad. Las herramientas enfocadas a objetos facilitan la comprensión de esta complejidad. llantas).

Los programadores que emplean lenguajes procedimentales. El desarrollo de la POO empieza a destacar durante la década de lo 80 tomando en cuenta la programación estructurada. a cualquier tipo de lenguaje de programación.3 ¿Que es la POO? La Programación Orientada a Objetos (POO ú OOP según siglas en inglés) es una metodología de diseño de software y un paradigma de programación que define los programas en términos de "clases de objetos". la cual es llamada a veces programación basada en objetos. y en segundo lugar en los datos que esos procedimientos manejan. Otra manera en que esto es expresado a menudo. Esto difiere de los lenguajes procedimentales tradicionales. en los que los datos y los procedimientos están separados y sin relación. Término de Programación Orientada a Objetos indica más una forma de diseño y una metodología de desarrollo de software que un lenguaje de programación. Los programadores que emplean lenguajes orientados a objetos definen objetos con datos y métodos y después envían mensajes a los objetos diciendo que realicen esos métodos en sí mismos. Se puede definir POO como una técnica o estilo de programación que utiliza objetos como bloque esencial de construcción. La orientación a objetos surgió de la necesidad de simular sistemas de forma sencilla. Algunas personas también diferencian la POO sin clases. Object Oriented Design). Los lenguajes procedimentales animan al programador a pensar sobre todo en términos de procedimientos. mantener y reutilizar. Si la programación se considera una simulación. Estos métodos están pensados para hacer los programas y módulos más fáciles de escribir. objetos que son entidades que combinan estado (es decir. La programación orientada a objetos expresa un programa como un conjunto de estos objetos. no solo de información. 2. datos) y comportamiento (esto es. procedimientos o métodos). si no de cualquier otro tipo. sin importar el modo de implantación. que se comunican entre ellos para realizar tareas. Hay un cierto desacuerdo sobre exactamente que características de un método de programación o lenguaje le califican como "orientado a objetos". 10 . resulta mucho más fácil seleccionar objetos de un mundo simulado que desarrollar una solución de programación basada completamente en procedimientos y acciones.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Este mapeo directo es una consecuencia de tener una estructura basada en objetos. ya que en realidad se puede aplicar el Diseño Orientado a Objetos (En inglés abreviado OOD. y en segundo lugar en las operaciones ("métodos") específicas a esos tipos de datos. a la que engloba y dotando al programador de nuevos elementos para el análisis y desarrollo de software. escriben funciones y después les pasan datos. es que la programación orientada a objetos anima al programador a pensar en los programas principalmente en términos de tipos de datos.

Desventajas de la tecnología orientada a objetos. el desarrollo de un programa puede llegar a ser una simple combinación de objetos ya definidos donde estos están relacionados de una manera particular. Dado que permite un tratamiento diferenciado de aquellos objetos que permanecen constantes en el tiempo sobre aquellos que cambian con frecuencia permite aislar las partes del programa que permanecen inalterables en el tiempo. Lección 7 2. Mejor independencia e interoperatividad de la tecnología. Mejor informática distribuida en cliente – servidor. que se corresponden con las estructuras de información que el programa trata. Lección 8 2. 11 . Desarrollo más flexible.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Los objetos son en realidad como los tipos abstractos de datos. como los procedimientos que los manipulan. están agrupados en clases. A pesar de que las ventajas de la programación orientada a objetos superan a las limitaciones de la misma. Mejores relaciones con los clientes. Proceso de desarrollo apropiado.4 Ventajas de POO La OOP proporciona las siguientes ventajas sobre otros lenguajes de programación Uniformidad. podemos encontrar algunas características no deseables en ésta. Se denominan abstractos para diferenciarlos de los tipos de datos fundamentales o básicos. De esta forma. cualquier cambio que se realice sobre ellos quedará reflejado automáticamente en cualquier lugar donde estos datos aparezcan. Ya que la representación de los objetos lleva implica tanto el análisis como el diseño y la codificación de los mismos. Modelos que reflejan mejor la realidad. Un TAD es un tipo definido por el programador junto con un conjunto de operaciones que se pueden realizar sobre ellos. Sistemas más fiables. Reutilización.5. Estabilidad. Bibliotecas de clases comerciales disponibles. Comprensión. Reusabilidad. Mejor calidad del producto de software terminado. Flexibilidad. La noción de objeto permite que programas que traten las mismas estructuras de información reutilicen las definiciones de objetos empleadas en otros programas e incluso los procedimientos que los manipulan. Las clases se construyen a partir de otras clases. Al tener relacionados los procedimientos que manipulan los datos con los datos a tratar. Tanto los datos que componen los objetos.

6. comenzaremos por examinar la historia del proceso de programación analizada cómo evolución POO y deduciendo. lo que produce aplicaciones muy grandes que no siempre encajan en los sistemas con los que se disponga. En otras palabras. En esencia. COBOL Y FORTRAN) no tenían facilidad para reutilizar el código existente de programas.1. El control de programas era difícil y se producían continuos saltos a lo largo del referido programa. No obstante que la tecnología orientada a objetos no es nueva. Así pues. Lección 9 2. la lógica de la programación estructurada sigue siendo predominante en la mayoría de los desarrolladores de software.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Limitaciones para el programador. Aún más. a fin de comprender lo que es la POO. por qué es tan importante este concepto. es necesario comprender sus raíces. Los lenguajes de programación lineal (BASIC. en consecuencia. De hecho se duplicaban segmentos de software cada vez más en muchos programas. un gran porcentaje de programadores no están familiarizados con los conceptos de dicha tecnología. con el punto anterior. Programación lineal. los lenguajes lineales no tenían capacidad de controlar la visibilidad de los elementos llamados datos. Programación Modular 12 . 2.6 Evolución de la programación POO (Programación Orientada a Objetos)es un importante conjunto de técnicas que se pueden utilizar para hacer el desarrollo de programas más eficientes mientras se mejora la facilidad de los programas resultantes. Sin embargo. Tamaño excesivo en las aplicaciones resultantes. POO es un nuevo medio de enfocar el trabajo de programación. sin embargo existen casos en los que lo anterior no se cumple. una aplicación innecesariamente pesada en muchas ocasiones es más lenta de ejecutar que una aplicación conformada únicamente por los módulos necesarios. Una de las desventajas de la programación orientada a objetos es que cuando se heredan clases a partir de clases existentes se heredan de forma implícita todos los miembros de dicha clase aun cuando no todos se necesiten. Velocidad de ejecución. La gran mayoría de los equipos de cómputo cuentan con capacidades tanto de almacenamiento como de memoria lo suficientemente buena como para ejecutar la mayoría de las aplicaciones que puedan desarrollarse con la tecnología orientada a objetos. 2. después de haber revisado de forma breve los principios de la programación orientada a objetos. nos es claro que en ésta se requiere una lógica de pensamiento totalmente diferente a la lógica comúnmente utilizada para la programación estructurada.6. haciendo la lógica difícil de comprender. Los programas se ejecutaban en secuencias lógicas. Esto tiene que ver.2. en cierto modo.

El mantenimiento de los desarrollos deben efectuarse minuciosamente.7. diferentes programas utilizan. mientras que la POO se fija en la interrelación que existe entre los datos y las acciones a realizar con ellos.3. la subrutina se puede ejecutar simplemente incluyendo el nombre del programa siempre que se requiera. Hoy casi todos los lenguajes de programación tienen construcciones que facilitan la programación estructurada. 13 . Un concepto importante en campo de la programación Estructurada: Abstracción. Sin esta disciplina. Programación Estructurada. Esto se conoce como una Abstracción funcional y es el núcleo de la programación estructurada. Esta ha sido la panorámica durante muchos años en el desarrollo del software.1. Una subrutina ha creado una secuencia de instrucciones a las que se les da un nombre independiente. una vez que se ha definido. Las subrutinas proporcionan una división natural de las tareas. Comparación entre la Programación orientada a Objetos y la programación estructurada. 2. ya que la Abstracción se puede definir como la capacidad de examinar algo sin preocuparse de los detalles internos. Aunque las subrutinas proporcionan el mecanismo básico de la programación Modular. estos se pueden distribuir entre diferentes personas que se vean involucradas en la solución de un problema y así efectuar los desarrollos de software de una manera más rápida y eficiente.6. para que se pueda utilizar sin tener que conocer cómo funciona su interior.1 Programación Estructurada Los procesos son la parte central de este modelo pues a partir de estos se manejan las variantes (datos) que solucionarán el problema. es suficiente conocer que un procedimiento sea fiable. es fácil escribir programas compilados y tortuosos difíciles de modificar y comprender. 2. En un programa estructurado. así como imposible de mantener. Lección 10 2. Generalmente se manejan muchos procesos lo cual hace largos códigos. Figura 1. Paradigma Estructurado La Programación estructurada fija su atención en el conjunto de acciones que manipulan el flujo de datos. se necesita mucha disciplina para crear software bien estructurado. Descomposición funcional: el sistema es considerado una unidad funcional que se disgrega en procesos El resultado del proceso de abstracción para la solución de un problema macro lo constituyen pequeños subprogramas Un problema macro se subdivide en unidades más pequeñas llamadas procesos.7.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS El soporte más elemental de la programación Modular llegó con la aparición de la subrutina.

El mantenimiento de los desarrollos deben efectuarse minuciosamente. Las operaciones se ajustan a las características propias de los lenguajes procedimentales. Las operaciones se ajustan a las características propias de los lenguajes procedimentales. Los procedimientos empleados en una aplicación pueden reutilizarse teniendo cuidado en el manejo de los datos. Generalmente se manejan muchos procesos lo cual hace largos códigos. Los procesos que se modelan en el desarrollo de un problema plasman las operaciones necesarias para resolverlo Los procesos son la parte central de este modelo pues a partir de estos se manejan las variantes (datos) que solucionarán el problema. Los procesos que se modelan en el desarrollo de un problema plasman las operaciones necesarias para resolverlo 14 .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Los procedimientos empleados en una aplicación pueden reutilizarse teniendo cuidado en el manejo de los datos.

Los datos (estados) son la parte central del modelo y los métodos que los modifican muestran el comportamiento del objeto.2 Paradigma Orientado a Objetos Descomposición en objetos. Los cuales son el resultado del proceso de abstracción para la solución del problema macro. estos pueden ser tratados por diferentes personas que luego lo integraran para dar la solución final. El sistema es considerado un objeto o conjunto de objetos.7. 15 .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 2. Dado que un problema macro puede ser dividido en objetos.

ka3 ) R = /R/I. Adición: Producto Punto: Producto Cruz: Producto por escalar: Normal: R = A + B.b3) R = A x B. R =(a2*f3-a3*b2. El modelo orientado a objetos evita la redundancia en los procesos luego los códigos son más entendibles y resumidos.Ventajas del Modelo orientado a objetos con respecto al modelo estructurado Un modelo de objetos es más cercano a la realidad que un modelo funcional. El modelo orientado a objetos no es una técnica de programación sino un medio de plasmar el mundo real. La integridad que dan los objetos a los datos evita ambigüedades en su uso.7. Los objetos que se modelan en el desarrollo de un sistema se ajustan a la realidad que representa el problema. ka2. R = Raíz cuadrada de (A * A) Figura 1.b1 + a2 . a3*b1-a1*b3.a2*b1) R = k A. R =(a1 + b1. 16 .2.4 Objeto 2. R =(a1 . R = ( ka1. a3 + b3) R = A .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS El mantenimiento de programas y aplicaciones generalmente son fáciles de realizar . dando mayor seguridad en los resultados. El modelo orientado a objetos facilita la integridad de módulos que hallan sido realizados por separado sin correr riesgos en el manejo de los datos.1. a1*b2. B. a2 + b2. Un desarrollo realizado con el modelo orientado a objetos es más fácil de mantener y de reutilizar. este puede representare como un objeto o conjunto de objetos abstractos.b2 + a3 .

6. SERVLETS. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . Realice un ejemplo de manera grafica en donde se identifiquen los elementos de una clase y un objeto. Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega Ra-Ma 5. Explique cual es la estructura de un objeto? 5.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Autoevaluación 2. Que es una clase y Que es un objeto? 4. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley 3. Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma 4. 17 . para conocer el lenguaje de programación JAVA ya que están resueltos solo los puede digitar compilar y ejecutar en la casa o laboratorio de su correspondiente CEAD o CERES. 2.8 ACTIVIDADES COMPLEMENTARIAS Pate Uno: 1. Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm. Que es la POO? Y cuales son sus ventajas? 3. JSP tm Editorial Pearson Prentice Hall Quinta Edición. Ver Capitulo 9 Guia de Laboratorios para desarrollar en los laboratorios del CEAD o CERES respectivos Parte Dos: Realizar los ejercicos complementarios de Laboratorios de la Guia de Laboratotios y Consultar Bibliografia de Libros Virtual de la Unad y otros Autores 1. Investigue la diferencia entre la POO y la Programación estructurada? 2.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

Lección 11 CAPITULO 3. PROPIEDADES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS La programación orientada a objetos, ha tomado las mejores ideas de la programación estructurada y los ha combinado con varios conceptos nuevos y potentes que incitan a contemplar las tareas de programación desde un nuevo punto de vista. La programación orientada a objetos, permite descomponer más fácilmente un problema en subgrupos de partes relacionadas del problema. Entonces, utilizando el lenguaje se pueden traducir estos subgrupos a unidades auto contenidas llamadas objetos. El término Programación Orientada a Objetos (POO), hoy en día ampliamente utilizado, es difícil de definir, ya que no es un concepto nuevo, sino que ha sido el desarrollo de técnicas de programación desde principios de la década de los setenta, aunque sea en la década de los noventa cuando ha aumentado su difusión, uso y popularidad. No obstante, se puede definir POO como una técnica o estilo de programación que utiliza objetos como bloque esencial de construcción. Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. A los elementos de un objeto se les conoce como miembros; las funciones que operan sobre los objetos se denominan métodos y los datos se denominan miembros datos. Lección 12 3.1 Abstracción Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando los están, una variedad de técnicas son requeridas para ampliar una abstracción. La abstracción es una especificación del sistema que enfatiza sobre algunos de los detalles o propiedades del mismo mientras suprime a otros. Una buena abstracción es aquella que enfatiza sobre detalles significativos al lector y al usuario y suprime detalles que son al menos por el momento irrelevantes o que causan distracción. Existen cuatro tipos de abstracciones: La primera es la abstracción de entidades; este tipo de abstracción representa una entidad ya sea del dominio del problema o del dominio de la solución. El segundo tipo de abstracción es la abstracción de acciones, es la abstracción de comportamiento, esta abstracción proporciona un conjunto especializado de operaciones y todas ellas desempeñan funciones del mismo tipo.

18

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

El tercer tipo de abstracción es el de maquinas virtuales, este tipo de abstracción agrupa operaciones virtuales utilizadas por un nivel superior de control u operaciones que utilicen un conjunto de operaciones de nivel inferior. Por ejemplo, una abstracción que utilice el código "x" cuando la aplicación se ejecute en Latinoamérica, o utilice el código "y" cuando se ejecute el Norteamérica. El último tipo de abstracción es el de coincidencia, que almacena un conjunto de operaciones que no tienen relación entre sí, esto es, toma actividades que aparentemente no tienen una relación como las clases hombre (con métodos como come(), camina(), etc.), las clases transporte aéreo (volar()) y ave (volar()) y creamos una subclase de hombre llamada superhombre que come(), camina() y vuela(); esto se logra tomando comportamientos que no tienen que ver entre sí y no se atribuyen a la herencia sino a la interfaz. Padre Interfaz \/ Hijo Por definición una interfaz es abstracta, por lo tanto no tiene un comportamiento, sólo la declaración de este. Lección 13 3.2 Encapsulación También llamada "ocultación de la información", esto asegura que los objetos no pueden cambiar el estado interno de otros objetos de maneras inesperadas; solamente los propios métodos internos del objeto pueden acceder a su estado.

Cada tipo de objeto expone una interfaz a otros objetos que especifica cómo otros objetos pueden interactuar con él. Algunos lenguajes resaltan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La encapsulación protege los atributos que conforman al objeto, y permite o niega información al público. Con el encapsulamiento, se consigue ocultar información y

19

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

ocultar todos los secretos de un objeto que no contribuyen a sus características esenciales, típicamente la estructura de un objeto se encuentra oculta y la implantación de sus métodos es visible. Para el caso del termómetro tal vez sólo se requieren 3 métodos: activarlo, desactivarlo y pedirle la temperatura. Un objeto es la abstracción de algo que forma parte del dominio del problema reflejando las posibilidades de un sistema para mantener la información sobre él. Representa una entidad real o abstracta con un papel bien definido dentro de nuestro mundo y con dos características que son sus atributos y su comportamiento. Ejemplos de objetos pueden ser un celular, lentes, pluma, computadora, pizarrón, perro, etc. Los objetos se componen de atributos o variables que aclaran el estado del objeto. Los atributos de un objeto, bicicleta, podrían ser el número de llantas que tiene (estado 2) el numero de marchas (estado 4 si es de velocidades), numero de asientos (estado uno), velocidad instantánea. Para alterar el estado de un objeto se necesita invocar un método. Este método es algo que el objeto sabe y por lo tanto define su comportamiento. Bicicleta.dameTuvelocidadactual() -entrega 0 Bicicleta.avanza(10) -modifico su velocidad Bicicleta.dameTuvelocidadactual()-entrega valor distinto de cero. La encapsulacion es una técnica que permite localizar y ocultar los detalles de un objeto. La encapsulación previene que un objeto sea manipulado por operaciones distintas de las definidas. La encapsulación es como una caja negra que esconde los datos y solamente permite acceder a ellos de forma controlada. Las principales razones técnicas para la utilización de la encapsulación son: 1) Mantener a salvo los detalles de representación, si solamente nos interesa el comportamiento del objeto. 2) Modificar y ajustar la representación a mejores soluciones algorítmicas o a nuevas tecnologías de software. Lección 14 3.3 Modularidad Proceso de crear partes de un todo que se integran perfectamente entre sí para que funcionen por un objetivo general, y a las cuales se les pueden agregar más componentes que se acoplen perfectamente al todo, o extraerle componentes sin afectar su funcionamiento. En el caso que se requiera actualizar un módulo, no hay necesidad de hacer cambios en otras partes del todo. Un ejemplo clásico es un conjunto de módulos que, al integrarlos conforman un armario, el cual puede agregarle más funcionalidad si se le agregan más módulos, o al contrario.

20

Por ejemplo. La representación de dicha organización da lugar a los denominados árboles de herencia: 21 . las distintas clases de un programa se organizan mediante la jerarquía. a la solución de problemas por composición de soluciones a subproblemas Modularidad es el atributo del software que permite a un programa ser manejable intelectualmente. ámbito de referencia. Del mismo modo. Para dos problemas P1 y P2. Un software monolítico no puede ser entendido fácilmente por un solo usuario.. número de variables y la complejidad global harían su comprensión casi imposible. Myers La arquitectura del software implica la división de éste en componentes identificables y tratables por separado. Esto ayuda a la descomposición de problemas en subproblemas. y los mamíferos son animales. considérense los siguientes argumentos basados en observaciones llevadas a cabo: Sea C(x) una función que define la complejidad percibida de un problema x. y es: C(P1 + P2) > C(P1) + C(P2) se sigue que E(P1 + P2) > E(P1) + E(P2) Es más fácil resolver un problema complejo cuando se rompe en piezas manejables. denominados módulos. y los animales seres vivos. Lección 14 3. si C(P1) > C(P2) se sigue que E(P1) > E(P2) Otra interesante característica se ha descubierto durante la experimentación en la resolución de problemas.4 Jerarquía La mayoría de las personas ve de manera natural nuestro mundo como objetos que se relacionan entre sí de una manera jerárquica. Para ver la importancia de la modularidad. y E(x) una función que defina el esfuerzo (en tiempo) requerido para solucionar el problema x. G..UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS También se puede cambiar su finalidad si se acomodan esos módulos para darle otro objetivo: volverlo una mesa. que están integrados para satisfacer los requisitos del programa. El número de caminos de control. es decir. un perro es un mamífero.

22 . Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo. tales como las plantillas y la sobrecarga de operadores de C++. Se puede clasificar el polimorfismo en dos grandes clases: Polimorfismo dinámico (o polimorfismo ad hoc) es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. los tipos polimórficos. puede ser utilizado a todo tipo de datos compatible. Así se simplifican los diseños y se evita la duplicación de código al no tener que volver a codificar métodos ya implementados. y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del referente. Cuando esto ocurre en "tiempo de ejecución". En programación orientada a objetos se denomina polimorfismo a la capacidad del código de un programa para ser utilizado con diferentes tipos de datos u objetos.5 Polimorfismo Las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos. Lección 5 3. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. También se puede aplicar a la propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican. son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado. esta última característica se llama asignación tardía o asignación dinámica. El concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos. por su parte. Al acto de tomar propiedades de una clase padre se denomina heredar.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Mediante la herencia una clase hija puede tomar determinadas propiedades de una clase padre. Las primeras son aquellas funciones que pueden evaluarse y/o ser aplicadas a diferentes tipos de datos de forma indistinta. Así.

Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Polimorfismo estático (o polimorfismo paramétrico) es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder ser utilizados. Si una clase dada encapsula algunos atributos. por medio de la cual una clase se deriva de otra de manera que extiende su funcionalidad. se puede decir que estos tiene atributos tales como: tamaño. donde la clase padre sirve como patrón a la clase derivada. esto recibe el nombre de herencia simple. Por ejemplo al hacer una descripción de los animales de forma abstracta. Una de sus funciones más importantes es la de proveer polimorfismo . Utilizando la herencia. La herencia es uno de los mecanismos de la programación orientada a objetos. Esto suele hacerse habitualmente agrupando los objetos en clases y las clases en árboles o enrejados que reflejan un comportamiento común. 3. Este objeto puede heredar sus atributos generales de su padre. La herencia interactúa con el encapsulado. Para realizar herencia se debe tener en cuenta dos aspectos importantes: la clase base y la clase derivada donde la clase base define todas las cualidades que serán heredadas por cualquier clase y la clase derivada hereda las características generales y añade a esta de su propia clase. un objeto sólo necesita definir aquellas cualidades que lo hacen único dentro de una clase. Los animales tienen diferentes clase de comportamiento esta puede ser una definición de la clase de los animales.6 Herencia Organiza y facilita el polimorfismo y la encapsulación permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. y si hereda atributos de múltiples padres es herencia múltiple. inteligencia. Por lo tanto la herencia es el mecanismo que le permite a un objeto ser una instancia específica de un caso más general analicemos el proceso de un animal. El polimorfismo dinámico unido a la herencia es lo que en ocasiones se conoce como programación genérica. la ventaja de la herencia es permitir la reutilización de código. y el tipo de esqueleto. 23 . entonces la cualquier clase tendrá los mismos atributos. si un objeto hereda sus atributos de un único padre. La herencia en la POO permite a una clase heredar las propiedades de una clase de objetos.

Mediante un ejemplo explique el concepto de herencia 24 .6. se considera que existe herencia múltiple. Herencia múltiple: Un objeto puede extender las características de uno o más objetos. puede tener varios padres. una instancia de objeto de la clase hija. es decir. 5. Algunos de ellos han preferido no admitir la herencia múltiple por las posibles coincidencias en nombres de métodos o datos miembros. es decir. solo puede tener un padre. Java y Ada sólo herencia simple. public y protected. ¿Cual es la relación que existe entre jerarquía y polimorfismo? 6. 2. De acuerdo con el concepto de abstracción mire su casa o apartamento y diga cual es la función de cada una de las partes. Si una clase cualquiera tiene más de un ancestro directo en la jerarquía de clases. En términos concretos. En este aspecto hay discrepancias entre los diseñadores de lenguajes. Cual es la función principal de la jerarquía en la POO.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 3. 3. 4. Autoevaluación 3.7 ACTIVIDADES COMPLEMENTARIAS Parte Uno: 1. Por ejemplo C++ admite herencia múltiple. Realiza un mapa conceptual con 15 términos del tema de modularidad. poseerá todos los atributos y métodos de sus clases ancestro. Cual es la función de los descriptores private.1 Tipos de herencia Herencia sencilla: Un objeto puede extender las características de otro objeto y de ningún otro.

Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma 4. 25 . Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega Ra-Ma 5. JSP tm Editorial Pearson Prentice Hall Quinta Edición. Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . SERVLETS. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley 3. para conocer el lenguaje de programación JAVA ya que están resueltos solo los puede digitar compilar y ejecutar en la casa o laboratorio de su correspondiente CEAD o CERES. Realiza un árbol teniendo en cuanta las clases y subclases y lo que heredan de cada uno de las clases padres. 2. Parte Dos: Realizar los ejercicos complementarios de Laboratorios de la Guia de Laboratotios y Consultar Bibliografia de Libros Virtual de la Unad y otros Autores 1.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 7.

INTRODUCCION A JAVA Lección 16 Capitulo 4. Un objeto puede categorizarse de variadas formas.1 Objetos y Tipos de Objetos. 4. 1 El análisis de la estructura de objetos (AEO) define las categorías de los objetos que percibimos y las formas en que los asociamos. En el análisis se trata de identificar los tipos de objeto más que los objetos individuales en un sistema.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS UNIDAD 2. de lo más general a lo más específico.1. ESTRUCTURA DE UN OBJETO .2 Asociaciones de Objetos. Además es necesario identificar el significado de la asociación y la cantidad de objetos con los que un objeto dado puede y debe asociarse (cardinalidad).1. 26 . Los tipos de objetos se definen en base a la comprensión del analista de nuestro mundo. Representación para la Asociación entre dos Tipos de Objetos. Una de las vías de sentido común por las que el hombre organiza su volumen de conocimiento es el de las jerarquías. 4. Un objeto del tipo persona posee cero o muchos objetos del tipo vehículo. Un objeto del tipo vehículo es de un y sólo un objeto del tipo persona. Es importante modelar la forma como los objetos se asocian entre sí.1 Análisis de la Estructura de Objetos.1. Análisis De La Estructura Y Comportamiento De Un Objeto 4. 4.3 Jerarquías de Generalización.

En el caso anterior. Las jerarquías Compuestas permiten realizar agregaciones de objetos. Por otra parte. Los tipos de objetos están relacionados con otros tipos de objeto. además. Empleado es el supertipo para los subtipos Ejecutivo y Vendedor. que son sus subtipos. Por ejemplo.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Representación de una Jerarquía de generalización. podría tener varios (o ninguno) objetos del tipo baño y oficina. cada instancia de un tipo de objeto lo es también de sus supertipos.1. 4. 27 . para el tipo de objeto Persona. un empleado trabaja en una sucursal. o un cliente realiza un pedido de varios productos.5 Diagramas de relación entre los objetos.1. 4. Un objeto se denomina complejo si está formado por otros. A su vez un objeto del tipo piso se compone de a lo menos un objeto del tipo pasillo. Los subtipos (niveles inferiores de la jerarquía) heredan las características de sus supertipos. En las jerarquías se habla de subtipo o especialización de un supertipo o generalización. Un objeto del tipo edificio se compone de a lo menos un objeto del tipo piso. persona es el supertipo para Empleado y Estudiante.4 Jerarquías Compuestas.

4. cancelada. un objeto reservación aérea puede ser una instancia de alguno de los siguientes tipos de objeto:  Reservación Reservación Reservación Reservación Reservación Reservación solicitada. un objeto puede tener una gran variedad de perspectivas de ciclos vitales. mientras que un objeto del tipo pedido tiene al menos un objeto del tipo producto. para los usuarios más sofisticados puede ser útil presentarlo todo en un mismo diagrama. y un objeto del tipo pedido es ordenado por un y sólo un objeto del tipo cliente. el que se denomina esquema de objetos. 4. archivada. en lista de espera.2 Análisis del comportamiento de objetos 2 En el análisis del comportamiento de objetos (ACO) realizamos esquemas de eventos que muestran eventos. Sin embargo. Por ejemplo. el mismo objeto reservación aérea también puede tener los siguientes estados relacionados con el pago: Reservación Reservación Reservación no liquidada.1 Estados de un Objeto.6 Esquemas de Objetos. Lección 17 4. la secuencia en que ocurren y cómo los eventos cambian el estado de los objetos. Sin embargo. 28 .2. los supertipos y subtipos se presentan en un diagrama de jerarquías de generalización y las estructuras compuestas en un diagrama compuesto. Un objeto puede existir en varios estados. satisfecha. Tales tipos de objetos suelen percibirse como estados posibles del ciclo vital de un objeto. confirmada. totalmente pagada.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Un objeto del tipo cliente puede ordenar muchos objetos del tipo pedidos. Un objeto del tipo producto está en muchos o ningún objeto del tipo pedido. Por ejemplo.1. La comprensión de un modelo suele ser más sencilla si los tipos de objetos y relaciones se presentan mediante un diagrama de relación entre objetos. con un pago de depósito.

Por ejemplo. debemos entender y modelar los eventos. 29 . 4. El mundo está lleno de eventos: una coneja tiene conejitos. Los objetos pueden asociar un objeto con otro. En el análisis orientado a objetos el mundo se describe en términos de los objetos y sus estados. cuando se deposita dinero en una cuenta bancaria o se actualiza el sueldo de un trabajador. objeto se desclasifica como una instancia de un tipo de objeto. así como los eventos que modifican esos estados. Por ejemplo. Básicamente. objeto cambia de clasificación. Así. el servidor se cae. Los eventos sirven como indicadores de los instantes en que ocurren los cambios de estado. Otro evento creará una asociación entre el objeto empleado y un objeto Departamento (las asociaciones son objetos como los demás). cuando un objeto se clasifica como empleado. el estado de un objeto es la colección de asociaciones que tiene un objeto. 4.3 Tipos de Eventos El analista no necesita conocer cada evento que ocurra en una organización: sólo los tipos de eventos.2. objeto se clasifica como una instancia de un tipo de objeto. Los tipos de eventos indican los cambios sencillos en el estado de un objeto. en la mayoría de las organizaciones. se termina la tarea.2.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Reservación reembolsada. Para saber de los cambios y reaccionar adecuadamente ante ellos. atributo de un objeto se cambia. por ejemplo. debe estar asociado con un departamento.2 Eventos. Un evento clasificará al objeto como empleado. un cliente solicita un préstamo. llega el pesado del vecino en forma inesperada. etc. los tipos de eventos describen las siguientes formas de cambios de estado: Un Un Un Un Un Un objeto se crea. objeto se termina. el tipo de evento reservación en lista de espera confirmada es la colección de eventos donde un objeto cambia de una reservación en lista de espera a una reservación confirmada. Un evento produce un cambio en el estado de un objeto.

4 El Ciclo Vital de un Objeto La mayoría de los objetos tienen un ciclo vital en el que una sucesión de eventos pueden ocurrirle y cada uno de éstos modifica su estado. incluyendo los estados posibles de los objetos. además de los cambios de estado permisibles. y cada uno de estos puede activar operaciones independientes. se dibuja un diagrama que muestre el ciclo vital de un objeto. Por ejemplo. 30 . puesto que los eventos indican los puntos en el tiempo en que se da el cambio de estado de un objeto. el cambio de circuito a las conexiones de un avión. puede exigir cambios a varios otros objetos. Una operación hace que los eventos ocurran. generalmente unidos a la caja de operación.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Algunos eventos requieren que antes ocurran otros. antes de cerrar un departamento. Dibujamos la operación como un cuadro con esquinas redondeadas. Los tipos de eventos se representan como triángulos negros llenos. puede ocurrir más de un evento al terminar una operación. 4. En este análisis. un evento puede provocar la reacción encadena de otros eventos. todos los empleados deben ser asignados a otra parte.2. Según el área que se modele. Este se denomina diagrama de reja. las oficinas que ocupaban deben tener otro uso. Algunas veces. etc. Por ejemplo.

se desarrolla el diagrama anterior para mostrar las operaciones necesarias. 4. 31 .5 Interacciones entre tipos de objetos La mayoría de los procesos requieren la interacción de varios objetos. En esta otra figura.2.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Diagrama de reja que muestra los estados posibles de un objeto reservación aérea. Las líneas horizontales representan estados y las verticales muestran las transiciones entre estados.

4.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 4. Sin embargo. Siempre que ocurra un evento de cierto tipo. Una operación invocada es una instancia de una operación. el método es el código que implanta la operación. ello puede activar una operación para volver a realizar un pedido. cada una de las cuales invoca a su operación en paralelo.2. El procedimiento se implanta mediante un método. 4. Las reglas de activación definen la relación entre la causa y el efecto. lo normal es que el cambio de estado active el llamado a una o más operaciones.2. 32 .6 Operaciones. El método es la especificación de cómo llevar a cabo la operación. si lo cambiara ocurriría un evento. antes de invocar de hecho a la operación se puede verificar una condición de control. Por ejemplo. si se retiran bienes de un almacén y la cantidad baja de cierto nivel.2. Las operaciones paralelas pueden producir diferentes cambios de estado en forma simultánea. A nivel de programa.7 Fuentes externas de eventos Los eventos son cambios de estado que un sistema debe conocer y reaccionar ante ellos de algún modo. Una operación puede o no cambiar el estado de un objeto.9 Condiciones de Control Una operación puede ser invocada por una o varias reglas de activación. Si el resultado de evaluación de la condición es verdadera se invoca su operación. Un tipo de evento puede tener varias reglas de activación. Muchas de las operaciones que producen estos eventos son externas al sistema.8 Reglas de activación Cuando ocurre un evento. Las operaciones se invocan.2. En el análisis OO. la regla de activación invoca a una operación ya definida. 4. en otro caso no. una operación se refiere a una unidad de procesamiento que puede ser solicitada.

10 Subtipos y Supertipos de Eventos. La operación revisar tarea produce dos eventos: tarea aceptada o tarea rechazada. 4. o bien. pues garantizan que un conjunto de eventos esté completo antes de proceder con una operación. es posible expresar la misma información en un diagrama ampliado.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Las condiciones de control también pueden actuar como puntos de sincronización para el procesamiento en paralelo. 33 . Sólo se puede dar uno de estos tipos de evento al revisar una tarea.2. Los eventos pueden dividirse en subtipos mediante diagramas independientes.

. Los tipos de objetos en el AEO serán la guía en esta decisión.3. que son los subtipos."). Estructura de un Objeto: Un objeto puede considerarse como una especie de cápsula dividida en tres partes. LAS PROPIEDADES: Distinguen un objeto determinado de los restantes que forman parte de la misma organización y tienen valores que dependen de la propiedad 34 .3 Diseño de la Estructura y Comportamiento de un Objeto En el diseño de la estructura y comportamiento de objetos se identifican los componentes siguientes: que se implantarán. donde cado uno de ellas desempeñan un papel independiente que son:  LAS RELACIONES: Permiten que el objeto se inserte en la organización y están formadas esencialmente por punteros a otros objetos. excepto. Operaciones que ofrecerá cada clase y cuáles serán sus métodos.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Aquí tarea revisada es un supertipo de tarea aceptada y tarea rechazada. Identificación de variantes de clases ("igual que.3.1 Objeto  Clases 4.. Lección 18 4. 4. Se enumeran las operaciones y se especifican los métodos. Estructuras de Datos que utilizará cada clase. Forma de Implantación de la herencia de clases y efecto sobre las especificaciones de los datos y operaciones. Siempre se entiende que existe una relación de exclusividad entre los subtipos. Se puede hacer un diagrama para representar la estructura de datos.2.

La especificación de cómo se llevan a cabo las funciones de una clase se llama método. sino también declaraciones de funciones. Las propiedades de u objeto pueden ser heredadas a sus descendientes en la organización.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS de que se trate. El encapsulado protege los datos del 35 . Una instancia de una clase. que normalmente estarán incorporados en formas de programas (en código) que el objeto es capaz de ejecutar y que también pone a disposición de sus descendientes a través de la herencia. la existencia de clases es la característica más significativa que convierte a muchos lenguajes de programación en un lenguaje orientado a objetos. Los objetos se pueden utilizar exclusivamente con métodos específicos. Las funciones se conocen como funciones miembro. Especifica la estructura de datos y los métodos operativos permitidos que se aplican a cada uno de sus objetos. Esta restricción al acceso se debe al encapsulado. LOS METODOS: Son las operaciones que pueden realizarse sobre el objeto. Las clases son estructuras que contienen no sólo declaraciones de datos. Se tiene acceso a los datos y se les modifica sólo mediante operaciones que son permitidas. e indican qué tipos de cosas puede hacer una clase. almacena sus datos dentro de él. La palabra reservada class introduce una declaración de clase. Una clase es la evolución natural de una estructura. “Clase es la implantación de un tipo de objeto. La clase específica la estructura de datos de cada uno de sus objetos y las operaciones que se utilizan para tener acceso a los objetos.

Las clases pueden definirse como estructuras (struct). Habitualmente. Métodos en las clases Implementan la funcionalidad asociada al objeto. las variables miembro son privadas al objeto (siguiendo las directrices de diseño del Principio de ocultación) y su acceso se realiza mediante propiedades o métodos que realizan comprobaciones adicionales. se dice que se le manda un mensaje invocando a un método que realizará la acción. Las clases son declaraciones o abstracciones de objetos. Estas operaciones forman la interfaz del objeto con sus usuarios. Cuando se desea realizar una acción sobre un objeto. Suelen denominarse con nombres. El acceso o la actualización directa de los datos de un objeto por parte del usuario violaría el encapsulado.2. 36 . Variables miembro Las propiedades o atributos que son características de los objetos. así como los resultados de tales operaciones. los métodos suelen ser verbos.3. Propiedades Las propiedades son un tipo especial de métodos. realmente se programa una clase.1 Componentes Una clase es un contenedor de uno o más datos (variables o propiedades miembro) junto a las operaciones de manipulación de dichos datos (funciones/métodos). 4. Debido a que suele ser común que las variables miembro sean privadas para controlar el acceso y mantener la coherencia. uniones (unión) o clases (class) pudiendo existir diferencias entre cada una de las definiciones según el lenguaje. Habitualmente. surge la necesidad de permitir consultar o modificar su valor mediante pares de métodos: GetVariable y SetVariable. “ Los usuarios observan el "comportamiento" del objeto en términos de las operaciones que se pueden aplicar a los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Cuando se programa un objeto y se definen sus características y funcionalidades. Los métodos son el equivalente a las funciones en los lenguajes estructurados. Se diferencian de ellos en que es posible acceder a las variables de la clase de forma implícita. lo que significa.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS uso arbitrario o no permitido. Nos podemos hacer a la idea de que las variables son algo así como el almacén de los datos de estado relacionados con los objetos. que una clase es la definición de un objeto.

C#. el método podría obtener el precio de cada artículo del pedido al enviar una solicitud a los objetos artículo asociados. 37 . Losmétodos son especificaciones del procedimiento de una operación dentro de una clase. añaden la construcción de propiedad que es una sintaxis simplificada para dichos métodos: tipo Propiedad { get { } set { } } De esta forma es posible realizar operaciones sobre las propiedades como si fuesen variables normales. Los métodos de una clase controlan solamente a los objetos de esa clase. cada objeto artículo regresaría su precio al método pedido mediante un método de la clase artículo. 4.3 Diferencia entre operación y método.5 Las operaciones son procesos que se pueden solicitar como unidades. Para utilizar las estructuras de datos en una clase diferente. A su vez. Es decir.4 Herencia de Clase. Las propiedades se denominan con nombres como las variables.3. Por ejemplo una operación asociada con la clase pedido podría ser aquella que calcule el total del pedido. El método especificaría la forma de calcular el total. La herencia de clase (que sólo se conoce como herencia) es una implantación de la generalización. La herencia de las operaciones de una superclase permite que las clases compartan código. La generalización establece que las propiedades de un tipo se aplican a sus subtipos. Para esto. Lección 19 4.3. la operación es el tipo de servicio solicitado y el método es su código de programación. deben enviar una solicitud a ese objeto. La herencia de la estructura de datos permite la reutilización de la estructura. No pueden tener acceso directo a las estructuras de datos de un objeto en una clase distinta. La generalización es una noción conceptual. La herencia de clase hace que la estructura de datos y operaciones sean disponibles para su reutilización por parte de sus subclases.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Los lenguajes orientados a objetos más modernos (Java. el compilador se encarga de crear el código apropiado que llame a la cláusula get o set según se necesite.

sino en una superclase. nivel por nivel. En vez de esto. pero con distintos mecanismos. donde una subclase es una especialización de su superclase. definida como la multiplicación de los largos de dos lados contiguos. el método se asocia con la clase. algunas de las operaciones requieren adaptación para resolver necesidades particulares.7 Polimorfismo Uno de los objetivos principales de las técnicas OO es utilizar otra vez el código. una superclase rectángulo podría tener una operación área cuyo objetivo es calcular el área del rectángulo. se da generalmente entre superclases y subclases. el software selecciona los métodos por utilizar. selecciona la operación. El mecanismo de selección deja en manos de la aplicación OO el problema de localizar la operación y la ejecute. 4.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 4.3.6 Selección del Método. Cuando se envía una solicitud a un objeto. En ese caso. una clase puede heredar estructuras de datos y operaciones de más de una superclase. El método puede no estar en la clase de la que el objeto es una instancia. Lección 20 4. cuenta de cliente tiene como a subtipo a cuenta de cliente vencida y cuenta vencida también tiene como subtipo a cuenta de cliente vencida. pues esto causaría una réplica múltiple y pérdida de espacio. Si la operación no se encuentra en ningún nivel de la superclase. los usuarios sólo deben especificar lo que se debe hacer. El método no se almacena en el objeto. el mecanismo de selección buscará la operación en su superclase y en todas las superclases de la jerarquía hasta que lo encuentre. dejando que sea el mecanismo de selección el que determine la forma de localizar la operación y la ejecute. De esta forma. la clase cuadrado es una subclase de rectángulo que también tiene una operación área cuyo objetivo es calcular el área del cuadrado. A su vez. 38 . pero que está definida especialmente para los objetos del tipo cuadrado como la multiplicación del largo de uno de sus lados por si mismo. Por ejemplo supóngase que existe un tipo de objeto cuenta. se considera inválida la fuente de la solicitud.5 Herencia Múltiple. Por ejemplo. y puede requerir alcanzar los mismos objetivos. Si la encuentra.3. que tiene como subtipos a los tipos de objetos cuenta de cliente y cuenta vencida. A su vez. Sin embargo.3. En la herencia múltiple. Esta necesidad.

La media luna representa una jerarquía de generalización (se lee Objeto 'es un' Clase).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS El fenómeno recién descrito se conoce como polimorfismo. sus atributos y sus métodos: Para representar una instancia de una clase: Objeto es una instancia de la Clase. y se aplica a una operación que adopta varias formas de implantación segun el tipo de objeto. la responsabilidad descansa en el mecanismo de selección de la implantación OO. pero cumple siempre el mismo objetivo. 4. La sintaxis típica de una clase es: class Nombre { // Variables miembro (habitualmente privadas) 39 . Una de las ventajas del polimorfismo es que se puede hacer una solicitud de una operación sin conocer el método que debe ser llamado.3. Para representar una clase. La forma general de la declaración de una clase es: class Nombre_de_la_clase { datos y funciones privados public: datos y funciones publicas } lista de objetos. Estos detalles de la implantación quedan ocultos para el usuario.8 Notación.

SERVLETS. // funciones miembro conocidas funcion_miembro_2 ( ). Parte Dos: Realizar los ejercicos complementarios de Laboratorios de la Guia de Laboratotios y Consultar Bibliografia de Libros Virtual de la Unad y otros Autores 1. 2. ¿cual es la diferencia de la programación orientada objetos con otros lenguajes. 5.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS miembro_1. JSP tm Editorial Pearson Prentice Hall Quinta Edición. 3. Agustin Froute Java 2 Manual Usuario tutorial 3 40 . Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm. Crear el siguiente objeto de la figura: Donde demuestre la creación de los 6 métodos que consta la clase operación. ¿Cuáles son las desventajas de la programación orientada a objetos? 4. } Autoevaluación 4. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley 3. //lista de miembros miembro_2. miembro_3. 2.4 ACTIVIDADES COMPLEMENTARIAS Parte Uno: 1. // Funciones o métodos (habitualmente públicas) funcion_miembro_1( ). // funciones como métodos // Propiedades (habitualmente públicas) propiedad_1. Realiza una estructura por ejemplo del computador de su casa donde indique cuales son los datos y cuales son los métodos. propiedad_3. Investiga como es el comportamiento de los objetos en una clase. propiedad_4. Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma 4. propiedad_2.

41 . Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . para conocer el lenguaje de programación JAVA ya que están resueltos solo los puede digitar compilar y ejecutar en la casa o laboratorio de su correspondiente CEAD o CERES.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Edición Editorial Alfaomega Ra-Ma 5.

tanto comercial como libre. la tecnología de JavaBeans. Los programas se ejecutan por medio de un intérprete que ha sido incorporado a los navegadores de Internet más usuales. Además se pueden correr programas de manera incorporada a los navegadores de Internet. Sun Microsystems. Con este nuevo estándar. permitía utilizar el patrón MVC (Modelo-Vista-Controlador) que ya tanto se había aplicado a interfaces gráficas. El compilador GCC de GNU compila Java con algunas limitaciones (año 2002).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Lección 21 CAPITULO 5. La plataforma Java se divide en 3 partes:  Lenguaje de programación. pero adopta algunas ideas de Smalltalk. Esta última sirve como una plataforma de abstracción entre la máquina y el lenguaje permitiendo que se pueda "escribir el programa una vez. Sumado a esto. Java permite escribir programas de interfaz gráfica o textual. Oracle y otros crearon nuevos "servidores de aplicaciones" que tuvieron gran acogida en el mercado. 5. IBM. aunque esto nunca llegó a popularizarse como se esperaba. empresas como BEA. Se parece mucho a C++. Java llegó a ser extremadamente popular cuando Sun Microsystems introdujo el J2EE (Java 2 Enterprise Edition) en la que incluía la tecnología de Enterprise Java Beans (EJB) que es una tecnología de objetos distribuídos. Máquina Virtual Java API Java Es un lenguaje de programación orientada a objetos puro diseñado para su uso en Internet. Esta plataforma ha sido desarrollada de tal manera que los programas desarrollados para ella puedan ejecutarse de la misma forma en diferentes tipos de arquitecturas y dispositivos computacionales. al incorporarse con JSP.1 Introducción Plataforma de software desarrollada por Sun Microsystems. FUNDAMENTOS DE JAVA 5. se hizó muy fácil escribir páginas dinámicas para sitios de Internet.2 Características de Java 42 . Java llegó a ser el lenguaje de mayor acogida para programas de servidor. y correrlo en cualquier lado". Utilizando una tecnología llamada JSP (basada en ASP de Microsoft). logrando por fin el sueño de muchas empresas como Microsoft e IBM de crear una plataforma de objetos distribuídos con un monitor de transacciones. A finales del siglo XX. Programas en Java generalmente son compilados y luego interpretados por una máquina virtual. También existen compiladores nativos de Java. Además de programas del servidor.

Esto encarece mucho los desarrollos y el problema es especialmente acusado en el campo de la electrónica de consumo.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Microsystems. supone un ahorro considerable. dada la falta de pericia de los usuarios para el manejo de estos dispositivos. el miembro del equipo con más experiencia en lenguajes de programación. Posteriormente se aplicó a otro proyecto denominado VOD (Video On Demand) en el que se empleaba como interfaz para la televisión interactiva. Este mercado. Ninguno de estos 43 . Por tanto. deben ser compilados para un chip. Para ello se construyó un ordenador experimental denominado *7 (Star Seven). Gosling decidió mejorar las características de Oak y utilizarlo. y si se cambia el chip. requería unas interfaces mucho más cómodos e intuitivos que los sistemas de ventanas que proliferaban en el momento. Los lenguajes al uso. aún partiendo de la sintaxis de C++. Hace algunos años. por pequeña que sea la diferencia en precio ya que. uno de cuyos lemas desde hace mucho tiempo es "the network is the computer" (lo que quiere dar a entender que el verdadero ordenador es la red en su conjunto y no cada máquina individual). La aparición de un chip más barato y. Es quien ha desarrollado el lenguaje Java. líder en servidores para Internet. el cual. El mercado inicialmente previsto para los programas de FirstPerson eran los equipos domésticos: microondas. tostadoras y. denominada FirstPerson Inc. la actual mascota de Java. más eficiente. Gosling había estado trabajando en su tiempo libre en un lenguaje de programación que él había llamado Oak. añadiendo la dificultad de crear aplicaciones distribuidas en una red como Internet. en un intento de resolver simultáneamente todos los problemas que se le plantean a los desarrolladores de software por la proliferación de arquitecturas incompatibles. Se decidió crear una filial. todo el software debe compilarse de nuevo. televisión interactiva. decidió que las ventajas aportadas por la eficiencia de C++ no compensaban el gran coste de pruebas y depuración. Otros requisitos importantes a tener en cuenta eran la fiabilidad del código y la facilidad de desarrollo. El sistema presentaba una interfaz basada en la representación de la casa de forma animada y el control se llevaba a cabo mediante una pantalla sensible al tacto. para dar una margen de maniobra al equipo responsable del proyecto. En el sistema aparecía Duke. como C o C++. Sun Microsystems decidió intentar introducirse en el mercado de la electrónica de consumo y desarrollar programas para pequeños dispositivos electrónicos. James Gosling. Tras unos comienzos dudosos. generalmente. conduce inmediatamente a los fabricantes a incluirlo en las nuevas series de sus cadenas de producción. intentaba remediar las deficiencias que iba observando. fundamentalmente. tanto entre las diferentes máquinas como entre los diversos sistemas operativos y sistemas de ventanas que funcionaban sobre una misma máquina. multiplicada por la tirada masiva de los aparatos. El primer proyecto en que se aplicó este lenguaje recibió el nombre de proyecto Green y consistía en un sistema de control completo de los aparatos electrónicos y el entorno de un hogar.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

proyectos se convirtió nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java primitivo y fueron como su bautismo de fuego. Una vez que en Sun se dieron cuenta de que a corto plazo la televisión interactiva no iba a ser un gran éxito, urgieron a FirstPerson a desarrollar con rapidez nuevas estrategias que produjeran beneficios. No lo consiguieron y FirstPerson cerró en la primavera de 1994. Lo mejor será hacer caso omiso de las historias que pretenden dar carta de naturaleza a la clarividencia industrial de sus protagonistas; porque la cuestión es si independientemente de su origen y entorno comercial, Java ofrece soluciones a nuestras expectativas. Porque tampoco vamos a desechar la penicilina aunque haya sido su origen fruto de la casualidad. Se puede decir que Java es: Simple: Basado en el lenguaje C++ pero donde se eliminan muchas de las características POO que se utilizan esporádicamente y que creaban frecuentes problemas a los programadores. Esta eliminación de causas de error y problemas de mantenimiento facilita y reduce el costo del desarrollo de software. Java no da soporte a struct, union y pointer Java no ofrece typedef ni #define No permite la sobrecarga de operadores. No ofrece herencia múltiple. Maneja los comandos en línea de diferente manera que C++ Java tienen una clase String, que permite un mejor manejo que los arrays de terminación nula del C y C++. Java tiene un sistema automático de asignación y liberación de memoria (recolector de basura) que mejora mucho los sistemas del C++. Orientado al objeto: Java da buen soporte a las técnicas de desarrollo POO y en resumen a la reutilización de componentes de software. Distribuido: Java se ha diseñado para trabajar en ambiente de redes y contienen una gran biblioteca de clases para la utilización del protocolo TCP/IP, incluyendo HTTP y FTP. El código Java se puede manipular a través de recursos URL con la misma facilidad que C y C++ utilizan recursos locales (archivos). Interpretado: El compilador Java traduce cada fichero fuente de clases a código de bytes (Bytecode), que puede ser interpretado por todas las máquinas que den soporte a un visualizador de que funcione con Java. Este Bytecode no es especifico de una máquina determinada, por lo que no se compila y enlaza como en el ciclo clásico, sino que se interpreta. Sólido: El código Java no se quiebra fácilmente ante errores de programación. Así el relaje que existe en la declaración y manejo de tipos en C y C++ se torna en restricciones en Java, donde no es posible la conversión forzada (cast) de enteros en

44

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

punteros y no ofrece soporte a los punteros que permitan saltarse reglas de manejo de tipos. Así en Java no es posible escribir en áreas arbitrarias de memoria ni realizar operaciones que corrompan el código. En resumen se eliminan muchas de las posibilidades de "trucos" que ofrecía el C y C++. Seguro: Como Java suele funcionar en ambiente de redes el tema de seguridad debe interesar en sobremanera. Las mismas características antes descritas que evitan la corrupción de código evitan su manipulación. Actualmente se esta trabajando en encriptar el código. Arquitectura Neutral: El compilador crea códigos de byte (Bytecode) que se envía al visualizador solicitado y se interpreta en la máquina que posee un interprete de Java o dispone de un visualizador que funciona con Java. Portable: Al ser de arquitectura neutral es altamente portable, pero esta característica puede verse de otra manera: Los tipos estándares (int., float...) están igualmente implementados en todas las máquinas por lo que las operaciones aritméticas funcionaran igual en todas las máquinas. Alto desempeño: Al ser código interpretado, la ejecución no es tan rápida como el código compilado para una plataforma particular. El compilador Java suele ofrecer la posibilidad de compilar Bytecode en código máquina de determinadas plataformas, y según Sun este código resultar de una eficacia similar a compilaciones de C y C++. Multihilos: Java puede aplicarse a la realización de aplicaciones en las que ocurra más de una cosa a la vez. Java, apoyándose en un sistema de gestión de eventos basado en el paradigma de condición y monitores C.A.R. permite apoyar la conducta en tiempo real e interactivo en programas. Dinámico: Al contrario que C++ que exige se compile de nuevo la aplicación al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Como resultado, los programas Java pueden permitir nuevos métodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes. 5.2.1 Diferencias Con C++ En Java no es posible crear variables globales. Solo las variables estáticas y publicas de algunas clases pueden considerarse como tales, pero esto generalmente, y como en el caso de las variables globales en C++ son síntoma de un mal diseño. Java no dispone de sentencia goto lo cual permite crear un código más robusto y seguro así como más optimizado. Para cubrir esta falta Java proporciona un tratamiento muy optimizado de excepciones, poderoso y bien definido. Los punteros son una característica poderosa y peligrosa del C++, en si evitan que ninguna variable sea privada de verdad, ya que es fácil acceder a la mis a través de punteros, los cuales son fuente inacabable de problemas y malfuncionamiento. Java no dispone de tratamiento de punteros. Los vectores o arrays lo son de modo cierto, lo cual evita sobrepasar el mismo o salirse de sus limites.

45

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

El manejo de memoria en C se realiza de forma peligrosa a través de punteros obtenidos con la función malloc (), y que se libera explícitamente con free(), esto puede causar errores si el programador no controla perfectamente los pasos en que estas operaciones se realizan. Otro error es el olvido frecuente de liberar memoria, lo cual termina consumiendo los recursos del sistema. Java no dispone de punteros y todos lo objetos se crean con el operador new, el cual asigna espacio en el montículo de memoria a cada objeto. Lo que se obtiene con new es un descriptor del objeto (no una dirección) la dirección real es manejada por el sistema el cual la puede mover o recolocar según necesidad, pero el programador no ha de preocuparse por ello. Lo importante es que el objeto tiene memoria asignada mientras le interese al programa, quedando esta memoria disponible en cuanto este interés cese. No se hará falta llamar a free o delete ya que el recolector de basura realizara esta labor. Este recolector o reciclador de basura se ejecutara cuando el sistema este libre o una asignación no encuentren lugar disponible. C y C++ disponen de tipos de datos frágiles cuyos límites y características dependen de la implementación y maquina del compilador. Java implementa límites y tamaños sensatos y validos para todo tipo de máquinas y entornos (independientes del Hardware) por lo que es totalmente reproducible en cualquier plataforma. En C es posible la realización de casting o conversión de tipos en tiempo de ejecución. En C++ esta operación es peligrosa ya que los objetos son referencias a zonas de memoria y no es posible tener información sobre sí la conversión en posible. En Java los descriptores de los objetos contienen información completa acerca de la clase a la que pertenece el objeto, por lo que pueden realizarse comprobaciones en tiempo de ejecución sobre la compatibilidad de tipos y emitir la excepción correspondiente si no es aplicable la conversión. En Java no se dispone de archivos de cabecera con los prototipos de las clases. Esto, en principio es una desventaja, hasta que se comprueba que esta habilidad del C++ ha llevado a entornos de compilación prácticamente inmanejables, ya que cada compilación puede tratar estos archivos de formas un tanto complejas. Java no dispone de esta habilidad de archivos de cabecera, el tipo y la visibilidad de la clase se compila en el propio archivo de la clase, siendo tarea del intérprete de Java realizar el acceso. Java no tiene struct ni unión, ambos sistemas de encasulamiento y polimorfismo un tanto crípticos e inseguros del C++, unificando todo en un solo concepto de class. La programación de entornos reales de C y C++ implica un buen conocimiento del manejo del procesador y sus trucos, lo cual no es una manera limpia de controlar lo que se compila. Java no dispone de este sistema, pero tienen medios (como la declaración final para constantes) que permiten igual potencia. 5.3 Estructura de un programa en Java

46

es buena practica el llamar al fichero fuente con el mismo nombre. operaciones y datos de la clase. Esta 47 .java podrá ser cualquiera pero dado que el resultado de la compilación adquiere el nombre de la clase contenida en el mismo.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS /**mi primera aplicación Java @autor jmrr @version 1. _ Después de main se declara los parámetros de este método (String args[]) que en este caso consta de un array de cadenas de caracteres cuyo nombre es args.out. _ La línea: "Public static void main (String args[]) {" da comienzo al método main.0. El nombre del fichero fuente (. el que todas las aplicaciones han de tener: main.java (Aplicación Escencial. } } Lo anterior representa el código de un programa Java que se compilara y ejecutara de la siguiente forma: El código anterior se guarda en un fichero texto cuya extensión es .println("Hola Mundo"). java).1.  Este se compila llamando a javac.class (AplicacionEsencial.class).*/ Class AplicacionEsencial { Public static void main (String args[]) { System. las palabras clave que anteceden al nombre indican formas especificas para este y su explicación se hará a posteriori. En nuestro caso solo contienen un método. son ignorados por el compilador.java $ java AplicacionEsencial. _ La palabra clave class que seguida del nombre de la clase a definir y de la llave de apertura "{" da comienzo a la definición de la misma.class Hola Mundo $ Las partes del programa anterior son: _ Comentarios: desde "/*" hasta que aparece "*/". El resultado de esta compilación es un fichero con el nombre de la clase contenida y la extensión . _ Cuerpo de la clase que contendrá métodos.  El fichero obtenido puede ser llamado como argumento del interprete para su ejecución: $ javac AplicacionEsencial.

Este archivo de llama “ejemplo. ejecutamos el compilador javac.1 Creación de un primer programa /* Este es un primer programa de prueba. int f = 0. dando el nombre del archivo fuente en línea de órdenes de la siguiente forma C:\>javac ejemplo. arreglos u objetos Veamos el siguiente ejemplo donde recibe un entero y devuelve un # de dígitos que componen dicho entero. 5.out.java” /* class ejemplo { // El programa comienza con una llamada a main (). en nuestro caso una única llamada al método println. Public static void main (String args[ ]) { System.entonces: Int p (int a){ If (a<0) a = -a. ya que representa la teórica línea de comandos que podría acompañar a la llamada a la clase: _ $java Aplicación esencial alpha beta _ Entre las llaves de apertura y cierre se encuentra en cuerpo del método o lista de sentencias que le implementan.3. .3.println(“Este es un programa sencillo en java. int b){ Return x+b } Se caracteriza porque sus parámetros son matrices.java 5.”). pero todos los métodos main han de declarar tal lista. } } Para compilar el programa ejemplo. Los métodos son conjuntos de instrucciones agrupadas bajo un mismo nombre y existen 5 tipos de parámetros que son: METODO El incluyen parámetros por valor DESCRIPCIÓN Este método recibe en la variable x un valor entero lo mismo que la variable b y retorna un dato de tipo entero que corresponde a la suma de los valores recibidos ejemplo: int f(int x. El que incluye parámetros por Referencia Los que devuelven un dato 48 .1 Métodos de definición Los métodos en java le dan mucho poder y flexibilidad debido a su gran utilidad.1.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS aplicación no hace uso de estos parámetros.

3. Java tiene un conjunto de palabras clave más rico que C o que C++. Las siguientes palabras son palabras reservadas de Java: Abstact Case Const Else Float If Int Null Protected Static Throw Var boolean cast continue extends for implements interface operator public super throws void break catch default false future mport long outer rest switch transient volatile byte char do final generic inner native package return syncroniced true while byvalue class double finally goto instanceof new private short this try Tabla 2: Palabras reservadas Java Lección 22 5. asegúrese de que presta atención a las palabras clave de Java. 49 . por lo que sí está aprendiendo Java con conocimientos de C o C++. } Los que no devuelven ningún Estas rutinas se utilizan para cambiar algún valor dato fuera de la función Los que no reciben parámetros Esta rutina no recibe parámetros pero pueden generar un valor o cambiar un dato de un variable global. a = a/10.1.2 Tipos de datos y declaraciones A toda variable que se use en un programa. } Return f.3. se le debe asociar (generalmente al principio del programa) un tipo de dato específico.2 Palabras clave Las palabras claves son aquellos identificadores reservados por Java para un objetivo determinado y se usan sólo de la forma limitada y específica.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS While (a>0){ F = f+1. La forma general de un método es la siguiente: tipo nombre _ de_ método(lista de parámetros) { // cuerpo del método } 5.

short. Para crear una variable (de un tipo simple) en memoria debe declararse indicando su tipo de variable y su identificador que la identificará de forma única. Tipos de datos enteros Se usan para representar números enteros con signo. de coma flotante. e incluyen las cadenas. booleanos y de carácter.3. Hay cuatro tipos: byte. las matrices y tanto las clases como las interfaces. En este apartado se explican los tipos de datos simples (o primitivos) que presenta Java. Esta sentencia indica al compilador que reserve memoria para dos variables del tipo simple TipoSimple con nombres Identificador1 e Identificador2. Tipo Byte Short Int Long Tabla 5: Tipos de datos enteros Literales enteros Son básicos en la programación en Java y presentan tres formatos:  Decimal: Tamaño 1Byte (8 bits) 2 Bytes (16 bits) 4 Bytes (32 bits) 8 Bytes (64 bits) Los literales decimales aparecen como números ordinarios sin ninguna notación especial. 50 . 5. para darles valor. en general. Identificador2. Estos definen los métodos de almacenamiento disponibles para representar información. junto con la manera en que dicha información ha de ser interpretada. Cada tipo de datos simple soporta un conjunto de literales que le pueden ser asignados.1 Tipos de datos simples Es uno de los conceptos fundamentales de cualquier lenguaje de programación. Los tipos de datos en Java pueden dividirse en dos categorías: simples y compuestos.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Un tipo de dato define todo el posible rango de valores que una variable puede tomar al momento de ejecución del programa y a lo largo de toda la vida útil del propio programa. como los enteros. La sintaxis de declaración de variables es la siguiente: TipoSimple Identificador1. int y long.2. Los simples son tipos nucleares que no se derivan de otros tipos. así como los literales que soporta (sintaxis de los valores que se les puede asignar). Los tipos compuestos se basan en los tipos simples.

// Aproximadamente float temperatura = (float)36. La declaración de variables de coma flotante es muy similar a la de las variables enteras. De forma predeterminada son del tipo double (8 bytes). Por ejemplo: double miPi = 314. con el tipo long.16e-2 . Pueden representarse con notación estándar (563. o si se trabaja con números muy grandes. y como 014 en octal. // Paciente sin fiebre Se realiza un moldeado a temperatura. (4 bytes con signo). Hay dos tipos de coma flotante: float y double. Existe la opción de usar un tipo más corto (el tipo float de 4 bytes). añadiendo una L ó l al final del número.6. Un ejemplo de ello sería: long numeroLargo = 0xC. especificándolo con una F ó f al final del número. El primero reserva almacenamiento para un númerode precisión simple de 4 bytes y el segundo lo hace para un numero de precisión doble de 8 bytes. como 0xC en hexadecimal.84) o científica (5. (8 bytes con signo). porque todos los literales con decimales por defecto se consideran double. La declaración de variables enteras es muy sencilla. Por ejemplo. Los literales enteros se almacenan por defecto en el tipo int. Octal: Los octales aparecen con un 0 inicial delante de los dígitos. Tipo Float Doublé Tamaño 4 Byte (32 bits) 8 Bytes (64 bits) Tabla 6: Tipos de datos numéricos en coma flotante Literales en coma flotante Representan números decimales con partes fraccionarias. // Por defecto vale 12 Tipos de datos en coma flotante Se usan para representar números con partes fraccionarias. Tipo de datos boolean 51 .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Hexadecimal: Los hexadecimales (base 16) aparecen con un 0x ó 0X inicial.6384e2). notación similar a la utilizada en C y C++. un literal entero para el número decimal 12 se representa en Java como 12 en decimal.

el tipo de datos char se almacena en un entero sin signo de 16 bits. Java a diferencia de C/C++ distingue entre matrices de caracteres y cadenas. Representan valores bi-estado. lenguajes en los que el valor de falso se representaba por un 0 numérico. De forma similar que en C/C++. Los caracteres especiales (de control y no imprimibles) se representan con una barra invertida ('\') seguida del código carácter. y verdadero cualquier número que no fuese el 0. // ¡¿Aun no nos han pagado?! Tipo de datos carácter Se usa para almacenar caracteres Unicode simples. Descripción Caracter Unicode Numero octal Barra invertida Continuación Retroceso Retorno de carro Alimentación de Formularios Tabulación horizontal Línea nueva Comillas simples Comillas dobles Números arábigos ASCII Alfabeto ASCII en Mayúsculas Alfabeto ASCII en Minúsculas Representación \udddd \ddd \\ \ \b \r \f \t \n \’ \" 0-9 A. Literales carácter Representan un único carácter (de la tabla de caracteres Unicode 1. provenientes del denominado álgebra de Boole. Literales Booleanos Java utiliza dos palabras clave para los estados: true (para verdadero) y false (para falso). Para declarar un dato del tipo booleano se utiliza la palabra reservada boolean: boolean reciboPagado = false. Debido a que el conjunto de caracteres Unicode se compone de valores de 16 bits. Este tipo de literales es nuevo respecto a C/C++.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Se usa para almacenar variables que presenten dos estados.-z Valor Unicode \u005C \ \u0008 \u000D \u000C \u0009 \u000A \u0027 \u0022 \u0030 a \u0039 \u0041 a \u005A \u0061 a \u007A Tabla 7: Caracteres especiales Java Las variables de tipo char se declaran de la siguiente forma: 52 .-Z a.1) y aparecen dentro de un par de comillas simples. que serán representados por los valores true y false.

long. float. // Observe la necesidad de las ' ' char letraV = '\u0056'. long double. Este proceso se denomina "conversión". long. Por ejemplo. "moldeado" o "tipado". de forma que encajen en los 32 bits del int. int. int double. Por ello se establece la norma de que "en las conversiones el tipo destino siempre debe ser igual o mayor que el tipo fuente": Tipo Origen Byte Short Char Int Long Float Tipo Destino double.in. La función read devuelve un valor int. char. esta se perderá. al convertir un long en un int.3. // Letra 'V' Conversión de tipos de datos En Java es posible transformar el tipo de una variable u objeto en otro diferente al original con el que fue declarado. el compilador corta los 32 bits superiores del long (de 64 bits). No todos los tipos se convertirán de forma segura. float. que se convierte en un char debido a la conversión (char). El tamaño de los tipos que queremos convertir es muy importante. con lo que si contienen información útil. OPERADOR + * / OPERACIÓN SUMA RESTA MULTIPLICACIÓN DIVISIÓN 53 . La conversión se lleva a cabo colocando el tipo destino entre paréntesis. short double. java reconoce los siguientes operadores. float.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS char letraMayuscula = 'A'. float double Tabla 8: Conversiones sin pérdidas de información 5. float. int double. long.3 Operadores y expresiones Un operador es un símbolo especial que indica al compilador que debe efectuar una operación matemática o lógica. y el valor resultante se almacena en la variable de tipo carácter c. a la izquierda del valor que queremos convertir de la forma siguiente: char c = (char)System.read().

math : public class ejemplo1 { public static void man(String args[ ]) { double base=5.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS % RESIDUO O MODULO Es importante tener en cuenta lo siguiente: En problemas de división entre números enteros. ejemplo: Dividir--_13/5---_el resultado es 2  Para resolver los problemas de potencias y raíces. se aprovecha una de las más elementales y conocida de las leyes de exponentes que dice: Es decir una raíz cualquiera se puede transformar a una potencia con un exponente fraccionario ejemplo: 54 .lang. en java existe toda una librería de instrucciones o funciones matemáticas. java trunca la parte residual. Esta función ocupa dos valores o datos (base y exp) ambos de tipo double.io.out. y regresa un resultado también de tipo double. Recordar que todas las funciones reciben uno o más datos o valores y regresan siempre un resultado. una de estas funciones matemáticas es: import java.*. ejemplo. llamadas funciones matemáticas. se usan ciertas instrucciones especiales que proporcionan el lenguaje.lang. potencia = Math.println(“potencia=”+potencia). import java. Resolver el problema de calcular 53 import java.math : piblic stagic double pow(double a. System. double b) .pow(base. } // cerrar main } // cerrar clase Para resolver el problema de raíces. double exponente=3. exponente). double potencia = 0 .

public static int abs(int a). Alfa1=alfa. es importante tener en cuenta que no se pueden hacer directamente operaciones con ellos ni tampoco pueden recibir resultados en ellos. public static double atan(double a).5).0. public static double acos(double a). Para realizar operaciones con objetos numéricos. luego estas dos últimas variables se cargan con los objetos numéricos que emplean métodos propios para convertirlos a datos normales. Double zeta = new Double(5). Como se observa se crearon dos objetos numéricos.lang. double b). // Metodos public static double abs(double a). Zeta1=zeta. 55 .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Problema y = 3Ö x esto es equivalente a y-3*x1/2 entonces //hay que usar la función pow() para trabajar correctamente y=3*Math. Desplegar alfa1.math extends java. public static double exp(double a). public static double floor(double a). zeta1=0.// En este ejemplo no funcional se esta dando por supuesto que no interesa el tipo de dato que requiere la función pow () para trabajar correctamente. public static double asin(double a).pow(x. public static long abs(long a).Objet { // fields public final static double E public final static double PI. Double alfa1= 0. public static double ceil(double a). public static double atan2(double a.doubleValue().doubleValue(). luego dos variables numéricas normales. public static float abs(float a). public static double cos(double a). Alfa1=alfa1 + zeta1. hacer operaciones con dicha variable y al final si se quiere convertir esta variable al objeto numérico apropiado ejemplo: integer alfa = new Integer(20). La librería matemática completa incluye: Class Math Public final class java. lo que se debe hacer es usar una variable temporal de tipo apropiado.

public static double pow(double a. Un flujo es una abstracción que produce o consume información. hay que tener en encuenta que estos métodos están declarados como abstracto dentro de inputStream y OutputStream y son sobrescritos en las clases derivadas. public static long max(long a. public static double max(double a. int b). long b).3. public static int min(int a. public static int round(float a). float b). Este paquete define una clase llamada system que encapsula algunos aspectos del entorno de ejecución. public static double log(double a). public static double random(). Todos los flujos se comportan de la misma forma. Por defecto.out: salida estándar. long b). public static double tan(double a). float b). desde un archivo de disco o una conexión de red. Clases de flujos: java implementa los flujos dentro de una jerarquía de clases definida en el paquete java. public static float min(float a. Esto significa que un flujo de entrada puede abstraer distintos tipos de entrada. En la parte superior hay dos clases abstractas que son:  InputStream OutputStream Estas clases definen los métodos read( ) y write( ) que respectivamente leen y escriben bytes de datos. public static double sin(double a). public static float max(float a. double b). double b). double b).4 E/S caracteres: Los programas en java realizan la E/S a través de flujos(stream). public static long round(double a). incluso aunque estén relacionados con distintos dispositivos físicos. public static int max(int a. Flujos predefinidos: java importa automáticamente el paquete java. public static long min(long a. } Lección 23 5.io.lang. public static double rint(double a). public static double min(double a. double f2).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS public static double IEEEremainder(double f1. System. public static double sqrt(double a). es la consola 56 . int b). Un flujo esta relacionado con un dispositivo físico a través del sistema de E/S de java.

in. // lee caracteres do { c = (char) System. tomar decisiones de qué hacer en función de las condiciones que se den en el programa en un momento dado de su ejecución. Por ejemplo.out.3. nuestro ejemplo se podría indicar como: i 57 .read(). Ejemplo: // ejemplo del método read().read(). que facilitan que determinadas acciones se realicen varias veces. mientras que una condición se cumpla. Este código además de poco elegante sería inviable para una repetición de 3000 lecturas.*. ‘q’ para salir. Por eso aparecen las estructuras de control. Class Usuread { public static void main (string args[]) throws IOExceptoon { char c.in: hace referencia a la entrada estándar que es por defecto el teclado System. ‘q’ para salir 123abcq 1 2 3 a b c q Lección 24 5. In. } } Cuando ejecute el programa el resultado debe ser el siguiente: Introduzca caracteres.read(). Import java.5 Estructuras De Control Durante un programa existen acciones que se han de repetir un número determinado de veces. Java no tiene un método de entrada por consola generalizado que sea similar a la función scanf() de c o a lo operadores de entrada de C++. leer 3 caracteres de un flujo de entrada in se codificaría: in.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS System. y en definitiva.println(“ introduzca caracteres. Err: hace referencia al flujo de error estándar que por defecto es la consola. system. Así. } while(c = != ‘q’).”).io.read(). in.

3.1 Las sentencias condicionales: if y switch 5.5. 5.out. i <= 3 . i++ ) in.1. goto Tabla 18: Estructuras de control Aunque goto es una palabra reservada. } else { // código para realizar la acción Cancelar System. for ( i=0 .3. Nuestro programa puede realizar esto usando la sentencia if . return.out.else: // La respuesta es Aceptar o Cancelar If (respuesta == Aceptar) { // código para realizar la acción Aceptar System. El lenguaje Java soporta las estructuras de control: Sentencia Toma de decisión Bucle Misceláneo Clave if-else.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS nt i=0.5. y un bloque de código puede ser simplemente la sentencia vacía. continue. Donde bastaría cambiar el 3 por cualquier otro número para que la lectura se repitiese ese número de veces.1 La sentencia if – else La sentencia if-else de Java dota a los programas de la habilidad de ejecutar distintos conjuntos de sentencias según algún criterio. actualmente el lenguaje Java no soporta la sentencia goto. do-while break. label:. Se puede utilizar las sentencias de bifurcación en su lugar. switch-case for. while. La sintaxis de la sentencia if-else es: If ( condición ) Bloque de código a ejecutar si la condición es cierta else Bloque de código a ejecutar si la condición es falsa La parte del else es opcional.println( "Su peticion esta siendo atendida" ). para representar que en ese caso no se ha de ejecutar nada.read(). 58 . Supongamos que un programa debe realizar diferentes acciones dependiendo de si el usuario oprime el botón aceptar o el botón cancelar en una ventana de dialogo.println( "Cancelando accion" ).

} Se pueden escribir los if en las mismas líneas que los else. Esto es lo que se suele denominar como sentencias else if. Es una instrucción de decisión múltiple donde el compilador prueba o busca casos. pero se recomienda utilizar la tabulación (como se ha podido ver en el ejemplo). 59 . break. B de 90-81. case valor2 : conjuntoDeSentencias.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } Se pueden anidar expresiones if-else. para poder implementar aquellos casos con múltiples acciones. La sentencia switch Mediante la sentencia switch se puede seleccionar entre varias sentencias según el valor de cierta expresión. } else if (valor > 80) { clasificacion='B'. if (valor > 90) { clasificacion='A'. break.2. break.3. asigne una letra a una variable clasificacion: A para un valor del 100-91. pues es más clara para el lector. break. supongamos que se desea escribir un programa que clasifique según el contenido de una variable valor. default: conjuntoDeSentencias. C para 80-71 y F si no es ninguno de los anteriores: int valor. } else { clasificacion='F'. 5. char clasificacion. } else if (valor > 70) { clasificacion='C'. case valor3: conjuntoDeSentencias.1. La forma general de switch es la siguiente: switch ( expresionMultivalor ) { case valor1 : conjuntoDeSentencias.5. Por ejemplo. o se usa una condición compuesta muy grande.

break. } Por supuesto. break. Las sentencias break son necesarias porque sin ellas se ejecutarían secuencialmente las sentencias case siguientes. //Demas meses // . supongamos un programa con una variable entera meses cuyo valor indica el mes actual. Por ejemplo. Finalmente. y se desea imprimir el nombre del mes en que estemos.println( "Mes no valido" ).println( "Enero" ).out. } else if ( meses == 2 ) { System.out.out. Se puede utilizar la sentencia switch para realizar esta operación: int meses.println( "Marzo" ). Existen ciertas situaciones en las que se desea ejecutar secuencialmente algunas o todas las sentencias case. para lo que habrá que eliminar algunos break. } // Y así para los demás meses 60 . case 3: System. case 12: System. . break.out. default: System.println( "Febrero" ). Su uso es altamente recomendado. se puede usar la sentencia default para manejar los valores que no son explícitamente contemplados por alguna de las sentencias case.out.println( "Diciembre" ). break. case 2: System.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } La sentencia switch evalúa la expresiónMultivalor y ejecuta el conjuntoDeSentencias que aparece junto a la cláusula case cuyo valor corresponda con el de la expresiónMultivalor. .println( "Febrero" ). Las sentencias break que aparecen tras cada conjuntoDeSentencias provocan que el control salga del switch y continúe con la siguiente instrucción al switch.println( "Enero" ). break. Cada sentencia case debe ser única y el valor que evalúa debe ser del mismo tipo que el devuelto por la expresiónMultivalor de la sentencia switch. switch ( meses ) { case 1: System. se puede implementar esta estructura como una sentencia if else if: int meses.out.out. if ( meses == 1 ) { System.

por ejemplo para estar en un bucle del que no hay que salir hasta que no se cumpla una determinada condición.2 Bucle do-while El bucle do-while es similar al bucle while. while ( i <= 100 ) { i = i * 2.2. La forma general del bucle while es la siguiente: while ( expresiónBooleana ) { sentencias.5. while 5.3.3. pero tiene sus usos. do.1 Bucle while El bucle while es el bucle básico de iteración. Se utiliza. La forma general del bucle do-while es la siguiente: Do { sentencias. } Con él se podrían eliminar los bucles do-while y for por ser extensiones de éste.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS El decidir si usar la sentencia if o switch depende del criterio de cada caso.5. aunque se recomienda utilizar switch para sentencias con más de tres o cuatro posibilidades. } while ( expresiónBooleana ). Sirve para realizar una acción sucesivamente mientras se cumpla una determinada condición. La sentencia do-while es el constructor de bucles menos utilizado en la programación. Sentencias de iteración o bucles: for. Por ejemplo. multiplicar un número por 2 hasta que sea mayor que 100: int i = 1. 61 .2. 5. 5.2. Se puede decidir cuál usar basándonos en la legibilidad. Las sentencias se ejecutan mientras la expresiónBooleana tenga un valor de verdadero. pero en el bucle while la expresión se evalúa al principio del bucle y en el bucle do-while la evaluación se realiza al final. }.3. pero que se incluyen en el lenguaje para facilitar la programación.5. cuando el bucle deba ser ejecutado por lo menos una vez.

En su forma simple la inicialización es una instrucción de asignación que carga una variable de control de ciclo con un valor inicial. condición.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Por ejemplo.HttpSerletResponse response) throws ServletException.IOException { 62 . Ejemplo: Import java. Por eso el bucle for está tan extendido.in.io.* . { public void doGet(HttpServetRequest request. inmediatamente antes de comenzar los bucles.read( ).servlet. Import javax. Public class prog7 extends Http.servlet. se sabe que siempre se debe leer por lo menos un carácter: Int c.5. Es muy común que en los bucles while y do-while se inicien las variables de control de número de pasadas por el bucle. cuando se lee información de un archivo. // Sentencias para tratar el carácter c } while ( c != -1 ).2.*. Se deben separar esos tres argumentos con punto y coma. // No se puede leer más (Fin fichero) 5. incremento) { Instrucción(es).* . El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite el ciclo. Import javax. }. Se utiliza para repetir una instrucción o un grupo de instrucciones un determinado número de veces. do { c = System.3 Bucle for Mediante la sentencia for se resume un bucle do-while con una iniciación previa.3.http* . Su formato general es: For (inicialización. La condición es una expresión relacional que evalúa la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo.

for( int j=1.print(" i="+i). Un ejemplo de esto sería el programa: void gotoBreak() { System. response. continue y return 5. Se puede etiquetar una sentencia poniendo un identificador Java válido seguido por dos puntos antes de la sentencia: nombreSentencia: sentenciaEtiquetada La sentencia break se utiliza para salir de una sentencia etiquetada. //Sale de los dos bucles!!! System. j++ ) { if ( j==5 ) break a. } Lección 25 5. pagina. } } 63 .getWriter(). a: for( int i=1.out. int x.3 Sentencias de salto: break.flusch().close(). j<10. pagina.println("Ejemplo de break como 'goto' "). que no es soportada por el lenguaje Java. pagina. pagina.print("No llega aquí").5.print(" j="+j).5.println(“</HTML>”).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS printWriter pagina=respionse.x<=10.1 Sentencia break La sentencia break provoca que el flujo de control salte a la sentencia inmediatamente posterior al bloque en curso.out. public void destroy(){sper. for(x=1.out.out. llevando el flujo del programa al final de la sentencia de programa que indique: break nombreSentencia2. } System. Ya se ha visto anteriormente la sentencia break dentro de la sentencia switch.setContentType(“text/html”).println(“<HTML>”). }.3.3. El uso de la sentencia break con sentencias etiquetadas es una alternativa al uso de la sentencia goto. i<10.}.printl(“x=”+x+”<br>”).3. i++ ) { System.destroy().x++) {pagina.

también se puede desear continuar con el bucle. System. i <5. y el bucle continúa o no dependiendo del resultado de la evaluación. } Del mismo modo que break.print( " " + (i*j) ). Por ejemplo el siguiente fragmento de código imprime los números del 0 al 9 no divisibles por 3: for ( int i = 0 . Con ello podemos referirnos a un bloque superior.5. j++ ) { if ( j>i ) { System. 64 . obteniéndose: i=1 j=1 j=2 j=3 Nota: Se desaconseja esta forma de programación.out. y con saltos de flujo no controlados. continue f. pero dejando pasar una determinada iteración. En los bucles for además en ese momento se ejecuta la cláusula de incremento (antes de la evaluación). si estamos en bucles anidados. Por ejemplo.println(" "). el siguiente fragmento de código: void gotoContinue( ) { f for ( int i=1. j<5.out. i++ ) { if ( ( i % 3 ) == 0 ) continue. basada en goto. 5.3.out. que vuelve a ser evaluada en ese momento. sino que se salta al final del bucle i. no solo se rompe la ejecución del bucle interior (el de j).3. Si dicha etiqueta no es indicada.print( " " + i ). se presupone que nos referimos al bucle en el que la sentencia continue aparece. } System. Tras la invocación a una sentencia continue se transfiere el control a la condición de terminación del bucle. i < 10 .2 Sentencia continue Del mismo modo que en un bucle se puede desear romper la iteración.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Al interpretar break a. en las sentencias continue se puede indicar una etiqueta de bloque al que hace referencia. Se puede usar la sentencia continue dentro de los bucles para saltar a otra sentencia. i++ ) { for ( int j=1. aunque no puede ser llamada fuera de un bucle.

5.4 ACTIVIDADES COMPLEMENTARIAS Parte Uno: 1. simplemente se debe poner el valor (o una expresión que calcule el valor) a continuación de la palabra return. Para devolver un valor. y con saltos de flujo no controlados. Realice un mapa conceptual sobe el tema anterior. que puede usar para salir del método en curso y retornar a la sentencia dentro de la cual se realizó la llamada.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } } } En este código la sentencia continue termina el bucle de j y continua el flujo en la siguiente iteración de i. 5. basada en goto.3. int devuelveContadorIncrementado() { return ++contador. Esto se hace para no ejecutar todo el código del programa: int contador. } void metodoReturn() { //Sentencias if ( condicion == true ) return. 2. ¿qué instrucciones debemos tener en cuenta para crear un programa sencillo? 3. 65 . Ese método imprimiría: 1 24 369 4 8 12 16 Nota: Se desaconseja esta forma de programación. Cuando un método se declara como void se debe usar la forma de return sin indicarle ningún valor.3. El valor devuelto por return debe coincidir con el tipo declarado como valor de retorno del método. Investigue sobre los métodos de definición para complementar el tema 4. boolean condicion.3 Sentencia return La última de las sentencias de salto es la sentencia return. Explique cual es la diferencia de la estructura de un programa en C y Java. //Más sentencias a ejecutar si condición no vale true } 5.

en caso contrario desplegar en otra página un bono del 25% de su sueldo semanal. 8. SERVLETS.000 y si esta en el departamento de producción. construir un programa que capture un número cualesquiera y diga si es o no es mayor de 50 y múltiplo de tres. 2. Construir la tabla de dividir que el usuario indique. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . 12. Diseñar un programa de los múltiplos de 5. 9. 10.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 5. 66 . para conocer el lenguaje de programación JAVA ya que están resueltos solo los puede digitar compilar y ejecutar en la casa o laboratorio de su correspondiente CEAD o CERES. Diseñar un programa que muestre los múltiplos de 4 entre 60 y 20 acompañados de su logaritmo de base 10 y base e respectivos. 7. Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm. Parte Dos: Realizar los ejercicos complementarios de Laboratorios de la Guia de Laboratotios y Consultar Bibliografia de Libros Virtual de la Unad y otros Autores 1. JSP tm Editorial Pearson Prentice Hall Quinta Edición. 14. 11. Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega Ra-Ma 5. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley 3. Realice un mapa conceptual con 20 términos sobre tipo de datos y declaraciones. construir un programa que indique si un número es par positivo. Exponga 10 ventajas de para utilizar instrucciones repetitivas 6. construir un programa que capture los datos de un empleado. Diseñar un programa que despliegue los números del 20 al 30. Diseñar un programa donde se despliegue las tablas de multiplicar que usuario indique. Diseñar un programa que capture un deporte cualquiera y despliegue dos implementos deportivos apropiados. 13. 15. Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma 4. acompañados de su factorial y logaritmo respectivo. entre 10 y 50. desplegar en una página su cheque semanal si gana más de $500.

“Diálogo de información”). “Diálogo de error”. A continuación vemos un ejemplo de uso de este método. “Diálogo de advertencia”. En las siguientes figuras podremos ver algunos ejemplos junto al código que lo genera. el título del diálogo y el tipo de mensaje que se mostrará.1. El método showInputDialog Este método nos permite mostrar diálogos estandarizados que nos piden que introduzcamos algún dato.WARNING_MESSAGE). el título. “Título del Mensaje”.ERROR_MESSAGE).showMessageDialog( null. 67 . el mensaje a mostrar.showMessageDialog( JOptionPane.showMessageDialog( null. Al igual que en los métodos anteriores los argumentos que utilizan principalmente son el mensaje a mostrar.showInputDialog(null. JOptionPane. JOptionPane. JOptionPane. etc. “Título del Mensaje”. JOptionPane. String n = JOptionPane. "Introduce el dato").UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Lección 26 Capitulo 6 Guia de Laboratorio 6. CAJAS DE DIALOGO El método showMessageDialog Este método nos permite mostrar diálogos que muestran un mensaje y contienen un botón de aceptación. null. Los parámetro mínimos necesarios dependen del carácter del mensaje aunque general mente son la ventana padre.

swing.showMessageDialog( null. } } donde las cajas de Dialogo están en el paquete de clases javax. En la casilla de texto Name: coloque el nombre del programa con extensión java). JOptionPane. DESARROLLO DEL TALLER 1.swing. Definiciones de Arreglos 68 . String n = JOptionPane.swing. Compile y Ejecute el Programa Menú Build > Compile File Menú Build > Execute File 6. "Introduce el dato"). por eso. En la Ventana de Código escriba: import javax. "Título del Mensaje". "Diálogo de advertencia". JOptionPane.*. Es Necesario crear el archivo java: Menú File>New>File a. 4. "Título del Mensaje". public class Interfaz { public static void main(String args[]) { JOptionPane.*. "Diálogo de error". en este caso Interfaz b.showMessageDialog( null. Pulse el Botón Finish 3.showMessageDialog( null. Abra el Aplicativo JCREATOR LE (Inicio>Todos Los Programas>JCREATOR LE>JCREATOR LE) 2. En la Casilla de Texto Location: C:\ o utilice el botón … y seleccione C: (Carpeta Raíz) c.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Como podemos observar en el código anterior este método nos devuelve una cadena que contiene los datos que hemos introducido en el diálogo. JOptionPane. en la cláusula import javax.WARNING_MESSAGE). "Diálogo de información").ERROR_MESSAGE). JOptionPane.2.showInputDialog(null.

// A y B son arreglos String S[]. Inicialización de un arreglo: for (int i=0. Asignación de punteros a arreglos int B[]. 6. // S es un arreglo de strings S[1]="" // error. A[9] // correcto A[10] // error. índice fuera // de rango 3..B.. // A es un arreglo de enteros int A. // error..length // correcto A.length.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 1. B= A..swing. Creación de un arreglo int A[]= new int[10].3. A[1]. 4.*.clone(). A[0]= 10. // 10 enteros Subindicación de un arreglo: A[0]. // A es un entero. LECTURA DE UN VECTOR POR TECLADO import javax. . i++) A[i]= i. Copia de un arreglo: B= (int[])A. el arreglo no ha sido // creado 2. Tamaño de un arreglo: A.length() // error. Modificación de un arreglo: A[3]= 8. Declaración de un arreglo: int A[].. public class LecturaVector 69 . 6. sin paréntesis 5. B un arreglo int[] A.B[]. el tamaño no va aquí int[] A. // A es un arreglo de enteros int A[10]. // A y B son el mismo arreglo if (A==B) // Comparación de punteros // true! . i<A. B[0] // también 10 7.

A=new int[n]. for(i=0.i++) { System. } System.length. } } 6.4."Digite la dimension: ")). } System.nextInt()%100+1). // R.util.length.print(A[i]+" "). for(i=0.i<A.showInputDialog(null.println("Vector Leido").i++) { System.length.i++) { A[i]=Math.abs(R.nextInt()%100+1)::Aleatorio Entero desde 1 hasta los siguientes 100 } System.out.parseInt(JOptionPane.j.println("Vector Leido")."Digite la dimension: ")). int A[].i<A.*.showInputDialog(null. ORDENAMIENTO DE UN VECTOR.showInputDialog(null. } } 6.exit(0). n=Integer.aux. Random R=new Random().*.print(A[i]+" ").out.out.println().swing.5.parseInt(JOptionPane.out.swing.i<A. A=new int[n].i. System.*. //Objeto que genera el aleatorio for(i=0. System. } System.i<A.println().i. for(i=0.exit(0).i++) { A[i]=Integer."Digite A["+i+"]: ")).aux. int A[].out. public class LectorVectorAleatoria { public static void main(String[] args) { int n.parseInt(JOptionPane.length.out. public class OrdenarLineal { public static void main(String[] args) 70 . n=Integer.j. import java.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { public static void main(String[] args) { int n. METODO LINEAL import javax. ASIGNACION A UN VECTOR DE NUMEROS ALEATORIOS import javax.

i<=A. n=Integer. A=new int[n].println("Vector Ordenado").i++) { A[i]=Integer.i++) for(j=i+1.i++) for(j=0.i<A.out.out.j++) if(A[i]>A[j]) { aux=A[i].parseInt(JOptionPane.i<A. } System."Digite A["+i+"]: ")). for(i=0.*.i<A.i<A. METODO BURBUJA import javax. for(i=0. for(i=0.out."Digite A["+i+"]: ")).length.length. for(i=0.println("Vector Leido").i.i<A.out. A=new int[n].length.aux. } System.showInputDialog(null.length-1.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { int n.length. for(i=1.j.i++) { System.showInputDialog(null. for(i=0.i<A.length-1.i."Digite la dimension: ")).length.parseInt(JOptionPane.parseInt(JOptionPane. } System.j<A.i++) { System. n=Integer.j++) 71 .j<A. int A[].out.out. public class OrdenarBurbuja { public static void main(String[] args) { int n.swing.length-i.i++) { System.print(A[i]+" ").j.println("Vector Leido").println()."Digite la dimension: ")). for(i=0.6. } System.showInputDialog(null.out. ORDENAMIENTO DE UN VECTOR.print(A[i]+" ").println().parseInt(JOptionPane.i++) { A[i]=Integer.print(A[i]+" "). A[j]=aux. } } 6.showInputDialog(null.aux.length. int A[]. } System.out.out.println(). A[i]=A[j]. } System.

} System.println("Vector Ordenado").j++) if(A[i]>A[j]) { aux=A[i].7."Digite el Numero a Buscar: ")). i=0.j<A. if(i<A.println().out.length && A[i]==j) 72 .i<A. int A[]. A=new int[n].out. } } 6.print(A[i]+" "). BUSQUEDA DE UN ELEMENTO EN UN VECTOR ORDENADO. A[i]=A[j]. n=Integer. } System.length. j=Integer.showInputDialog(null. public class BuscarLinealOrdenado { public static void main(String[] args) { int n.aux. A[j+1]=aux.print(A[i]+" ").showInputDialog(null.println().swing.println("Vector Ordenado"). A[j]=A[j+1]."Digite A["+i+"]: ")). for(i=0."Digite la dimension: ")).length-1. } System.print(A[i]+" ").i<A.parseInt(JOptionPane. for(i=0.*.out.length.parseInt(JOptionPane. METODO SECUENCIAL import javax.i<A. for(i=0.length.i++) { System. } System.i<A.i.showInputDialog(null. } System.out.length && A[i]<j) i++.i++) for(j=i+1.length.out.i++) { System.i++) { A[i]=Integer.out.out.i<A.out.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS if(A[j]>A[j+1]) { aux=A[j]. for(i=0. A[j]=aux. for(i=0.j. } System.parseInt(JOptionPane.out.println(). while(i<A.println("Vector Leido").length.i++) { System.

out."Digite la dimension: ")).aux.i<A.showInputDialog(null. j=Integer. System. else System. for(i=0. public class BuscarBinaria { public static void main(String[] args) { int n.menor.println("No Existe ").8. BUSQUEDA DE UN ELEMENTO EN UN VECTOR ORDENADO.i++) { System. if(A[mitad]==j) 73 . A[i]=A[j].*.length.length.println("Vector Ordenado").exit(0).out. for(i=0.out. for(i=0. do { mitad=(menor+mayor)/2.showInputDialog(null.i++) { A[i]=Integer.out.showInputDialog(null.i++) for(j=i+1. METODO BINARIA import javax. } System.i.length-1. if(A[mitad]<j) menor=mitad+1.println(). } System.mitad.length-1.out. A=new int[n].parseInt(JOptionPane.mayor.i++) { System.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS System.parseInt(JOptionPane.length.j."Digite el Numero a Buscar: ")). if(A[mitad]>j) mayor=mitad-1."Digite A["+i+"]: ")).j<A.out.print(A[i]+" "). n=Integer. } while(A[mitad]!=j && mayor>=menor).println().i<A.parseInt(JOptionPane. for(i=0. int A[].println("Vector Leido"). menor=0. } System.print(A[i]+" ").swing.j++) if(A[i]>A[j]) { aux=A[i].out.out. mayor=A.println("Existe: "+j+" en la Posicion: "+i).i<A. A[j]=aux. } } 6.i<A.length. } System.

Creación de una clase Arreglo import javax. } boolean verificardesc() // Verifica Ordenamiento Descendente { for(i=0. if(i<n && A[i]==x) return true.out.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS System. else return true.i++).println("Existe: "+j+" en la Posicion: "+mitad). } } 6. System. } boolean verificarasc() // Verifica Ordenamiento ascendente { for(i=0. } boolean buscarasc(int x) // Busqueda Ascendente { for(i=0.length<=100) n=B.*. if(i<n-1) return false. else n=100. for(i=0. class Arreglo { int A[]=new int[100].i<n-1 && A[i]<=A[i+1]. Programa 1.length.swing.i<n && A[i]<x. IMPLEMENTACION DE CLASES QUE ADMINISTRAN ARREGLOS 6.i++). int i. import java.i++).i<n.i<n-1 && A[i]>=A[i+1].exit(0). else System.1.out.i++) A[i]=B[i].println("No Existe ").j. if(i<n-1) return false. int aux. else return false.9. } 74 .*.n. public Arreglo(int B[]) //Constructor { if(B.9. else return true.util.

else return false.i<n-1.parseInt(JOptionPane. } JOptionPane.i<n. if(i<n) return true. A[i]=A[j]. } } void ordenarasc() // Ordenar Ascendente { for(i=0.toString()).i<n.i<n && A[i]>x.i++) { S." Vector Posicion ["+i+"]")).j<n. A[j]=aux.j<n.i++). else return false.j++) if(A[i]<A[j]) { 75 .append('\n'). } void consulta() // Recorrer el contenido de vector { StringBuffer S=new StringBuffer().showInputDialog(null.S.i<n-1. } } void ordenardesc()// Ordenar Descendente { for(i=0.i++).i++) { A[i]=Integer.showMessageDialog(null. } void lectura() // Leer el Vector { for(i=0.i++) for(j=i+1.j++) if(A[i]>A[j]) { aux=A[i].i++) for(j=i+1. S.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS boolean buscardesc(int x) // Busqueda Descendente { for(i=0. for(i=0.append(A[i]).i<n && A[i]!=x. } boolean busqueda(int x) // Busqueda Normal { for(i=0. if(i<n && A[i]==x) return true.

i++) B[i]=Math. } } }while(opcion!=6). Busqueda \n 5.showMessageDialog(null. 76 .ordenardesc().length. case 4: x=Integer.parseInt(S). Arreglo Z=new Arreglo(B). Lectura \n 2.x.6]". String Menu="1.ordenarasc(). Salir \n Seleccion Opcion[1. break. A[j]=aux. do { do { S=JOptionPane. } } } public class Arreglos { public static void main(String args[]) { int i. if(opcion!=6) { switch(opcion) { case 1:Z.buscardesc(x) && !Z.opcion.Menu).showInputDialog(null.. case 3:Z. break. String S=new String().x+" No existe"). case 5: Z.buscarasc(x) && !Z.showInputDialog(null. break. Ordenar Ascendente \n 3. Random R=new Random(). } catch(NumberFormatException e) { opcion=0.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS aux=A[i]. else JOptionPane.consulta(). if(!Z. // Error de Conversion } }while(opcion<1 || opcion>6).x+" Existe"). for(i=0. int B[]=new int[10].i<B.parseInt(JOptionPane.abs(R." Numero a Buscar ")).showMessageDialog(null. A[i]=A[j].nextInt()%100+1).lectura(). break. Ordenar Descendente \n 4. case 2:Z. try { opcion=Integer.busqueda(x)) JOptionPane. Consulta \n6.

j<A. 77 .*. Random R=new Random().exit(0). for(i=0. P.abs(R.swing.append(" Vector Ordenado: "). int A[]=new int[10].i<A.i++) { P.i++) { P. P. Uso de un Objeto StringBuffer para la presentación de un vector.nextInt()%99+1). import javax. public CasoVector1() { P.length-1. } } } class CasoVector2 { StringBuffer P=new StringBuffer("Vector de Entrada: Vector de Salida: "). A[j]=aux.j. for(i=0.append(" ").*.aux.append(A[i]).length.append("Vector de Entrada: ").i<A.length.length.append(A[i]). A[i]=A[j]. A[i]=Math.i<A. } ordenar().9. } void ordenar() { for(i=0. import java.util.i++) for(j=i+1.append(" ").UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS System. } } String impresion() { return P.j++) if(A[i]>A[j]) { aux=A[i]. adicionOrdenado(). StringBuffer Q.2 Programa 2.toString(). } void adicionOrdenado() { P. int i. } } 6. class CasoVector1 { StringBuffer P=new StringBuffer().

} } 6.showMessageDialog(null.i<A. } void ordenar() { for(i=0. j=new String(P.impresion(). } void insertar(int k) { Q=new StringBuffer().nextInt()%99+1).length-1. } } String impresion() { return P.*. System.length. public CasoVector2() { for(i=0. Q.indexOf(':'). Random R=new Random().abs(R. insertar(j). } P.j. JOptionPane.toString(). A[j]=aux. } } public class VectorCasos { public static void main(String[] args) { CasoVector1 X=new CasoVector1().insert(k+1.toString()). CasoVector2 Y=new CasoVector2().lastIndexOf(':').showMessageDialog(null.toString()).exit(0). ordenar().length.append(A[i]). A[i]=A[j]. JOptionPane. int A[]=new int[10].i++) { Q.swing.toString()).Q.j++) if(A[i]>A[j]) { aux=A[i]." Caso Vector 1: \n"+X.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS int i. Invertir un Arreglo import javax.impresion().aux. for(i=0. 78 ." Caso Vector 2: \n"+Y.toString()).i++) for(j=i+1. Programa 3.j<A.i++) A[i]=Math.append(" ").length.i<A.9.i<A.3.toString()). insertar(j). j=new String(P.

while(n>0) { m=m+((n%10)*k). C[j]=n%10.charAt(i)). j=-1.i>=0.i>=0.String S) { j=-1. }*/ void pasar(int C[].append(S.k.charAt(i).toString(). } m=0. for(i=S.length()-1. for(i=S. } } int pasar(int n) { int m=n. return B. k=0.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS class Inverso { int i.i--) { j++.toString().i--) B.length()].j. C[j]=S. for(i=S.valueOf(C). n/=10. } /* String pasar(String S) { StringBuffer B=new StringBuffer().length()-1. m/=10.int n) { j=-1. while(n>0) { j++.i>=0. } } String pasar(String S) { char C[]=new char[S. C[j]=S. void pasar(char C[]. } return new String().length()-1.charAt(i).i--) { j++. else k*=10. while(m>0) { if(k==0) k=1. 79 .

*.} } while(n==0)." Valor Inverso de String a char[]: "+new String().showInputDialog(null.toString()). try { n=Integer. JOptionPane. do { n=0. } } Lección 27 6.i++) B.showMessageDialog(null. int i.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS n/=10.pasar(C."Digite las columnas: ")). Random R=new Random().toString()).util. JOptionPane.length()]. k/=10.1.swing.valueOf(C). class LecturaEscrituraMatriz { public static void main(String[] args) { int filas=Integer. I.parseInt(JOptionPane. int A[][]=new int[filas][columnas]. for(i=0.showInputDialog(null. PROGRAMACION AVANZADA. Programa Lectura y Escritura de Matrices import java." Digite Valor a Invertir: "). } catch(NumberFormatException e){n=0."Digite las Filas: ")).i<A.parseInt(S).pasar(S)). char C[]=new char[S.append(A[i]). int columnas=Integer. StringBuffer B=new StringBuffer()." Valor Inverso de String a int "+B.length. I. } } public class PasoInverso { public static void main(String[] args) { Inverso I=new Inverso()." Valor Inverso de un Entero a int[]: "+B.valueOf(I. 80 .showMessageDialog(null.10.*. JOptionPane.S). String S.j.10. int n. USO DE MATRICES 6.length()].showInputDialog(null. import javax.showMessageDialog(null. int i.toString()). S=JOptionPane.n).parseInt(JOptionPane. JOptionPane. int A[]=new int[S.pasar(A. } return m.showMessageDialog(null." Valor Inverso de String a String "+new String().toString()).

t=columnas-1. import javax. else System.i++) for(j=0. d++. } } import java.out.out.j<columnas. //Lectura() for(i=0.out.j<columnas.Matriz Leida -------"). Random R=new Random().j++) { if(A[i][j]>=10) System.nextInt()%99+1). for(i=0.exit(0).nextInt()%10+1).i++) { sumad=sumad+A[i][d].parseInt(JOptionPane.i<filas.out.sumat=0.j<columnas. } } System. 81 .i++) { System.println(). for(j=0.println().abs(R.out. //Escritura System. System. } //Escritura System. for(i=0.j++) A[i][j]=Math. int A[][]=new int[filas][columnas]. for(j=0.print(A[i][j]+" ").print(A[i][j]+" "). int columnas=Integer. t--.out.i<filas.k. int d=0.showInputDialog(null. else System.println(" -----.i<filas.out.*.showInputDialog(null.j.j++) { if(A[i][j]>=10) System.out.swing.println(" -----.*."Digite las columnas: "))."Digite las Filas: ")).i<filas. class SumaDiagTran { public static void main(String[] args) { int filas=Integer.i<filas. int sumad=0.parseInt(JOptionPane.i++) for(j=0.j++) A[i][j]=Math.print(A[i][j]+" "). for(i=0.abs(R. int i.println().print(A[i][j]+" ").Matriz Leida -------").out.util.j<columnas.i++) { System.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS //Lectura() for(i=0. sumat=sumat+A[i][t].

println(" -----.j<n.swing.*.println().out. int d=0.println("Suma de Diagonal: "+sumad+" Suma Transversal: "+sumat).out.out. //Lectura() for(i=0.3. sumat=sumat+A[i][t].println("Suma de Diagonal: "+sumad+" Suma Transversal: "+sumat).out. } //Escritura System. for(i=0.abs(R.10. } } System. Programa Suma de Diagonales y Transversales import java.i++) for(j=0.j++) A[i][j]=Math.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } } System. System. d++. for(i=0.i<n.parseInt(JOptionPane. int sumad=0. 82 .j++) { if(A[i][j]>=10) System.j<n. else System.*.println().util.out.j. System.i++) { System.exit(0).showInputDialog(null. int A[][]=new int[n][n]. import javax.k. import javax.i<n.swing.2.*.out.i<n. System. int i.out.print(A[i][j]+" ").out.Matriz Leida -------"). Programa de Diagonal import java.nextInt()%10+1).util.sumat=0. Random R=new Random().i++) { sumad=sumad+A[i][d]. class SumaDiagTran { public static void main(String[] args) { int n=Integer."Digite Dimension: ")).*. t--.exit(0).t=n-1.print(A[i][j]+" "). System.println(). for(j=0.10. } } 6. } } 6.

Random R=new Random()."Digite Dimension: ")). t--.k.i++) for(j=0. int d=0.out.parseInt(JOptionPane. System.swing.i++) for(j=0.print(A[i][j]+" ").println().j. //Escritura System.i<n.println(" -----.Copas-----").UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS class Diagonal { public static void main(String[] args) { int n=Integer.i++) { for(j=d. for(i=0.exit(0).i<n. //Lectura() for(i=0.i++) { System.t=n-1.10. //Lectura() for(i=0.j++) System. int i. class Copas { public static void main(String[] args) { int n=Integer. } System.t=n-1.4.println(" -----.k.j<n. for(j=t.j<=t.j++) A[i][j]=1. int i.j<=d. for(i=0.j.j<n.j++) if(i==j) A[i][j]=1. else A[i][j]=0.out."Digite Dimension: ")). d++.i++) 83 . } //Escritura System.out.*.Diagonal -----"). } } 6.out. for(i=0.i<n.showInputDialog(null.parseInt(JOptionPane. int A[][]=new int[n][n].i<n.out. for(j=0.println().j++) A[i][j]=0.showInputDialog(null.j<n. int d=0.j++) A[i][j]=1. int A[][]=new int[n][n].i<n. Programa de Copas import javax.

} } 6. } void venta(int cant.exit(0). Programa Simulación de un Inventario import java. } if(esta) return i.k++) { do { j=Math.out.util.int pos) 84 .5. else System. // Referencia del Articulo A[k][1]=Math. // Cantidad de Articulos A[k][2]=0.println().j. int A[][]=new int[n][4].*.println(). //Simulador de un Kardex Random R=new Random().j++) { if(A[i][j]==0) System. for(j=0.k.print("*").j<n.out. } } System. final int n=10. A[k][0]=j.print(" "). // Salida de Productos } } int existe(int x) { boolean esta=false. public Inventario() { for(k=0. else i++. System.abs(R.10.out.abs(R.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { System. while(i<n && !esta) { if(A[i][0]==x) esta=true. // Entrada de Productos A[k][3]=0. import javax. class Inventario { int i.k<n.*.out.nextInt()%999+1). } while(existe(j)!=-1). else return -1.swing.nextInt()%999+1). i=0.

10)." Almacen Doris".existe(Integer.parseInt(JOptionPane.Cierre"}. Consulta".null."4. opc=Character.int pos) { A[pos][1]=A[pos][1]+cant. for(i=0."3.showInputDialog(null." Digite Codigo "))). do { S=(String) JOptionPane. } else JOptionPane. for(j=0. if(A[i][j]<100) P. int opc.QUESTION_MESSAGE.i++) { P. } } return P.showMessageDialog(null.JOptionPane.append("\n ")."No existe Codigo").append(" "). A[pos][2]=A[pos][2]+cant. P.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { if(A[pos][1]>=cant) { A[pos][1]=A[pos][1]-cant.. } } public class Kardex { public static void main(String[] args) { Inventario X=new Inventario(). else 85 .Opcion."No se puede realizar la venta. } String impresion() { StringBuffer P=new StringBuffer().j++) { P. Compra". switch(opc) { case 1: pos=X. if(A[i][j]<10) P."Opciones: ".append(" ")."2. P.i<n. Object[] Opcion={"1. Venta". } void compra(int cant.append(" ").charAt(0).digit(S.append(A[i][j]). A[pos][3]=A[pos][3]+cant.no hay existencia").toString().Opcion[2])..pos. if(pos==-1) JOptionPane.append(" CODIGO SALDO ENTRADA SALIDA").showMessageDialog(null.showInputDialog(null.j<4. String S.

10. case 2: pos=X. } 86 .showInputDialog(null.*. } }while(opc!=4).ha. class Parqueo { int n=10.existe(Integer.util. if(k==n*n) return true.compra(Integer.j. System. break.i++) for(j=0.venta(Integer.showMessageDialog(null. for(i=0. else return false. do { do { h=Math. boolean lleno() { k=0.nextInt()%21+hora).m.parseInt(JOptionPane. if(pos==-1) JOptionPane.j<n.exit(0).showMessageDialog(null.hf.minuto=59. } void reloj() { int hi=hora+2. // Placa del Vehiculo int hora=5.pos).parseInt(JOptionPane."No existe Codigo").UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS X." Digite Codigo "))). else X." Digite Cantidad a Comprar ")). int Militar[][]=new int[10][10]. Random R=new Random().*. int h.k.showInputDialog(null. // Hora de Entrada Vehiculo AM/PM int Placa[][]=new int[10][10].abs(R. case 3: JOptionPane." Inventario \n"+X.i.6.j++) if(Entrada[i][j]!=0) k++.impresion(). Programa Simulación de un Parqueadero import javax.parseInt(JOptionPane. break." Digite Cantidad a Venta ")). ha=(hora*60)+minuto.showInputDialog(null.pos). // Hora Militar de Entrada de Vehiculo int Entrada[][]=new int[10][10]. } } Lección 28 6.i<n.swing.toString()). import java.

} return esta. } boolean noatiende() { if(hora>=20) return true. } while(hf<=ha).toString(). hora=h. Entrada[i][j]=(hora*60)+minuto. } void asignar(int placa) { do { i=m=Math. } 87 . while(j<n && !esta) if(Placa[i][j]==placa) esta=true.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS while(h<hora || h>hora+2). if(!esta) i++. } boolean existe(int placa) { boolean esta=false. Militar[i][j]=(hora*100)+minuto. } while(Entrada[i][j]!=0). String M=new String(new String().abs(R.nextInt()%59+0).abs(R. i=0. else j++. m=Math. hf=(h*60)+m.nextInt()%(n-1)+0). minuto=m.nextInt()%(n-1)+0). reloj(). return new String(H. } String leerReloj(int hm) { String H=new String(new String(). String P=new String(":"). j=m=Math. else return false.abs(R.valueOf(hm%100)).concat(M))). while(i<n && !esta) { j=0.valueOf(hm/100)). Placa[i][j]=placa.concat(P.

null.placa.charAt(0).append(" PLACA ENTRADA").UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS int salida(int placa) { if(existe(placa)) { reloj().append("\n "). k=(hf-Entrada[i][j])*10. P.digit(S. switch(opc) { case 1: if(!P.append(Placa[i][j]).append(" "). } return k.noatiende() && !P. } return P."2. } String impresion() { StringBuffer P=new StringBuffer().toString()+" \n Pago:"+k).j<n. int opc.JOptionPane. Salida". P.lleno()) { 88 . Entrada"."4. } } public class Parqueadero { public static void main(String[] args) { Object[] Opcion={"1.10).append(Militar[i][j]).showMessageDialog(null.toString(). P.Opcion[0]).QUESTION_MESSAGE. JOptionPane. for(i=0. do { S=(String) JOptionPane."Opciones: ". hf=(hora*60)+minuto.i<n. String S. P. Entrada[i][j]=0. Consulta". opc=Character. Parqueo P=new Parqueo()." Parqueadero Doris". Militar[i][j]=0. } else { JOptionPane."3.i++) for(j=0.toString()+" \n Hora de Salida: "+leerReloj(ha).j++) if(Placa[i][j]!=0) { P. Cierre"}.showInputDialog(null. ha= (hora*100)+minuto. k=0.showMessageDialog(null.Opcion. Placa[i][j]=0."Placa: "+placa+"\n Hora de Entrada: "+leerReloj(Militar[i][j])."No existe la placa:"+placa).

valores.11.Salir"}.exit(0).QUESTION_MESSAGE)).parseInt(JOptionPane. case 3: JOptionPane.showInputDialog(null.impresion(). Borrar".existe(C.nit=Integer.*.showInputDialog(null.nit)) JOptionPane.JOptionPane."3. null. public class Cola1 { static double SALDO=0.util. Ejemplo Cola1: import javax.*."2.showMessageDialog(null.Math. if(P.salida(placa). } } while(opc!=4).QUESTION_MESSAGE)). } } Lección 29 6. } break. case 2: if(!P.showInputDialog(null. do { String resp=(String) JOptionPane. Adicion".existe(C. Cola B=new Cola(20).noatiende()) { placa=Integer. public static void main(String[]args) { int i.showInputDialog(null.charAt(0). } break." Parqueadero Doris". import java.JOptionPane."Digite Placa: ".parseInt(JOptionPane. import java. Object [] valores = {"1.digit(resp.lang."Existe Nit").swing. import java.valores[0]). Cliente C=new Cliente()."Placa: "+placa+" Ya Esta en el Parqueadero").10). else P." Parqueadero Doris". if(A. Consulta Atendidos". switch(opc) { case 1: C."Escriba el número de Nit")).existe(placa)) JOptionPane."Elija la Opcion".nit) || B. Cola A=new Cola(10).opc. Consulta Por Atender".*. else 89 .showMessageDialog(null. System.asignar(placa).*. P.JOptionPane." Parqueadero Doris \n"+P.QUESTION_MESSAGE.parseInt(JOptionPane."4.showMessageDialog(null.io.toString())."5.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS placa=Integer.nit."Digite Placa: ". "Entrada de datos". opc=Character.

C.showInputDialog(null. int telefono.n=n.showMessageDialog(null. } break. } } while(opc!=5).showMessageDialog(null."Digite Telefono")). A=new Cliente[n].vacia()) JOptionPane. break.llena()) JOptionPane."Cola de Atendidos Vacia").n.showInputDialog(null.parseInt(JOptionPane. case 2: if(A."Digite Nombre"). } class Cola { int min."Cola de Atencion Vacia").vacia()) JOptionPane.nomCliente=JOptionPane. public Cola(int n) { min=-1. } break.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS if(A. int i. String nomCliente. else { A.showMessageDialog(null.telefono=Integer. this.max."No se Puede Atender Mas"). } boolean vacia() { 90 .vacia()) JOptionPane.B. if(!B. else { C. else JOptionPane. Cliente A[].showMessageDialog(null.showMessageDialog(null. max=-1.adicion(C)."Cola de Atencion Vacia"). else JOptionPane. case 3: if(A. } } class Cliente { int nit.imprime(" Atencion ")).A.imprime(" Atencion ")). A.llena()) B. case 4: if(B.showMessageDialog(null.borra(C).adicion(C).

toString()+"\n".nit.nomCliente. else min++. A[max].nit=C.nit. S=S+" "+A[i]. else return false.i<=max. S=S+" "+new String().nomCliente=A[min].telefono.telefono.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS if(min==-1) return true.i++) if(A[i]. max++. } String imprime(String Aviso) { String S=" Elemenos de la Cola de: "+Aviso.telefono=C.telefono=A[min].nit).nomCliente=C.toString()+"\n". A[max]=new Cliente(). } boolean existe(int nit) { boolean esta=false.toString(). for(i=min.i<=max && ! esta.nomCliente.toString(). } void borra(Cliente C) { C. if(min==max) min=max=-1.telefono). } boolean llena() { if(max==n-1) return true.valueOf(A[i].nit==nit) esta=true. } return S. C. } 6. } void adicion(Cliente C) { if(min==-1) min++. return esta.nomCliente. A[max].nit=A[min]. C.valueOf(A[i]. Ejemplo Cola2: 91 . A[max]. else return false.12. if(!vacia()) for(i=min.i++) { S=S+" "+new String().

lang.parseInt(JOptionPane."4. Info C=new Info().tope() && !A. BiCola A=new BiCola(10).minimo()) { C. case 2: if(A.telefono=Integer.showInputDialog(null. C. opc=Character.nit."No se Puede Atender Mas").io.valores[0]). Adicion Menos Reciente". 92 . A.*."Escriba el número de Nit")).showMessageDialog(null. import java.borra_min(). Borrar Menos Reciente". public class Cola2 { public static void main(String[]args) { int i. case 3: if(A. import java."6."3.llena()) JOptionPane.Math."No se Puede Atender Mas"). } break. Adicion Mas Reciente".Salir"}.*."Digite Nombre").adicion_min(C)."5.nomCliente=JOptionPane.*.10).showMessageDialog(null.nit=Integer. switch(opc) { case 1: if(A."Digite Nombre").showInputDialog(null. import java.util. "Entrada de datos". } break.nit=Integer. } break."Cola de Atencion Vacia").QUESTION_MESSAGE.llena()) JOptionPane.opc.showInputDialog(null. else { C. A. else if(!A.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS import javax.vacia()) JOptionPane."Digite Telefono")). valores.showInputDialog(null.showInputDialog(null.vacia()) JOptionPane. C. Borrar Mas Recientes".showMessageDialog(null. C."Digite Telefono")). do { String resp=(String) JOptionPane."2.parseInt(JOptionPane."Elija la Opcion".charAt(0).telefono=Integer. case 4: if(A."Escriba el número de Nit")).JOptionPane.showMessageDialog(null."Cola de Atencion Vacia"). Consulta".parseInt(JOptionPane. null.*. else { A. C.swing. Object [] valores = {"1.digit(resp.nomCliente=JOptionPane.parseInt(JOptionPane.showInputDialog(null.showInputDialog(null.adicion_max(C).

"BiCola Vacia"). else return false.showMessageDialog(null.n. else JOptionPane. } break.showMessageDialog(null. } boolean tope() { if(max==n-1) return true. public BiCola(int n) { min=-1. } } class Info { int nit. } boolean llena() { if(min==0 && max==n-1) return true.borra_max(). Info A[]. for(i=0. else return false.vacia()) JOptionPane. A=new Info[n]. this. } } while(opc!=6).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS else { A. int telefono.A. case 5: if(A. max=-1.i++) A[i]=new Info().imprime()). } 93 . } boolean vacia() { if(min==-1) return true.max. int i. } class BiCola { int min. String nomCliente. else return false.n=n.i<n.

toString().swing. } void adicion_max(Info C) { if(min==-1) min=0. } void borra_max() { if(min==max) min=max=-1.nomCliente.lang.nit.telefono=C. A[min].*.valueOf(A[i].i++) { S=S+" "+new String().i<=max.nomCliente=C. else max--.valueOf(A[i]. else min++. A[max]. 94 .Math.telefono=C.nomCliente. import java. for(i=min. A[max]. S=S+" "+new String().telefono).nit=C.nit=C. A[max].telefono.io.nit). else return false.nomCliente=C.telefono. } } 6. } return S.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS boolean minimo() { if(min==0) return true. A[min]. import java.toString()+"\n". } void borra_min() { if(min==max) min=max=-1. S=S+" "+A[i]..toString(). A[min]. max++.nomCliente.*.13. } String imprime() { String S=" Elemenos de la Cola \n". Ejemplo Cola3: import javax.nit. } void adicion_min(Info C) { min--.*.

QUESTION_MESSAGE. Object [] valores = {"1. Consulta".10).borrar().opc. valores.llena()) JOptionPane.nomCliente=JOptionPane.showMessageDialog(null."No se Puede Atender Mas"). } break. switch(opc) { case 1: if(A.showMessageDialog(null. Info C=new Info().showInputDialog(null.parseInt(JOptionPane. opc=Character.A.charAt(0). case 2: if(A. } break. } } while(opc!=4). } class ColaCir { int min."Digite Telefono")). else JOptionPane."Cola Vacia")."Elija la Opcion".adicion(C). int telefono. } } class Info { int nit. C.valores[0]). else { A."3.vacia()) JOptionPane. public class Cola3 { public static void main(String[]args) { int i.showInputDialog(null. do { String resp=(String) JOptionPane. Adicion". Info A[].JOptionPane.util."Escriba el número de Nit"))."4.max.vacia()) JOptionPane. C. A.*."2.showMessageDialog(null."Cola de Atencion Vacia").telefono=Integer.showInputDialog(null.parseInt(JOptionPane."Digite Nombre").imprime()).digit(resp. null.nit.Eliminar".showMessageDialog(null. ColaCir A=new ColaCir(3).n. String nomCliente.nit=Integer. else { C. 95 .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS import java. "Entrada de datos".showInputDialog(null.Salir"}. case 3: if(A.

else max++. A[max]. } String imprime() { S=" Elemenos de la Cola \n".i<n.telefono=C.n=n. } void borrar() { if(min==max) min=max=-1.nit.nomCliente=C. } void adicion(Info C) { if(min==-1) min=0. for(i=0.nit=C. else if(min==n-1) min=0. A=new Info[n].UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS int i.max). consulta(0.telefono. String S=" ". } else 96 . A[max]. else min++.nomCliente. if(max==n-1) max=0.. public ColaCir(int n) { min=-1. A[max]. else return false. } boolean llena() { if((min==0 && max==n-1) || (max==min-1)) return true. else return false. this. } boolean vacia() { if(min==-1) return true. max=-1. if(max<min) { consulta(min.i++) A[i]=new Info().n-1).

cargar().telefono)."Cola de Atencion Vacia").digit(resp. Cola A=new Cola(10).showInputDialog(null.charAt(0).*.14.vacia()) JOptionPane.toString().valueOf(A[i].llena() || !A. Ejemplo Cola 3 Archivos import javax.valueOf(A[i].vacia()) JOptionPane.JOptionPane."No se Puede Atender Mas").exit(1).showMessageDialog(null.swing.Math. } void consulta(int inf. A.i++) { S=S+" "+new String(). case 2: if(A.io. opc=Character. if(A. return S. import java.hayMas()) JOptionPane."4.*.borrar(). import java. Adicion". else A.10).nit). public class ColaArch { static double SALDO=0. else A. 97 . S=S+" "+A[i]. import java."2.toString()."Cola de Atencion Vacia"). S=S+" "+new String().nit.opc. public static void main(String[]args) { int i. null. valores.int sup) { for(i=inf.toString()+"\n".max).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS consulta(min. "Entrada de datos". do { String resp=(String) JOptionPane.adicion().util.Salir"}. Object [] valores = {"1.lang.QUESTION_MESSAGE. break. Borrar". case 3: if(A. break. switch(opc) { case 1: if(A.*.valores[0]).showMessageDialog(null.*. } } } Lección 29 6.showMessageDialog(null.salir()) System. Consulta".nomCliente."3."Elija la Opcion".i<=sup.

else return false. break. int i.cerrar().A.max. System.tabla().lectura("cliente.imprime()).tope()==0) return true. cargar(). } } while(opc!=4).showMessageDialog(null. A=new int[n].d. } boolean llena() { if(max==n) return true. } boolean vacia() { if(min==-1) return true. int A[]. return false. } boolean hayMas() { if(numreg<P. else return false. } boolean salir() { if(!P.numreg=-1. int min. A.n. 98 . } } class Cola { ArchivoBase P=new ArchivoBase(). } void cargar() { P. public Cola(int n) { min=-1. if(P.tope()) return true.exit(1).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS else JOptionPane. else return false. this. max=-1.n=n.txt")) return true.

Hashtable H=new Hashtable().i<=max. //Numero de Registro long k. } catch(FileNotFoundException e) { System. } void borrar() { if(min==max) min=max=-1."r"). } 99 . } String Consulta() { return P.println("No Existe Archivo"). StringBuffer linea=new StringBuffer().cerrar(). A[max]=numreg.out.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } void adicion() { if(min==-1) min++. for(i=min.consulta(A[i])+"\n". } void cerrar() { P. max++.i++) { S=S+P. return false. else min++. boolean lectura(String Nom) { try { arch=new RandomAccessFile(Nom. numreg++. long pos=-1. } return true.toString().toString().Consultabla(). } } class ArchivoBase { long longreg=34. } String imprime() { String S=" Elemenos de la Cola de: \n". RandomAccessFile arch. } return S. int numreg=-1.

put(new String().length().toString(). bajar(). numreg=-1.append(arch. } catch(IOException e){} return k. } 100 . } while(pos<arch. pos=Long. return linea.length()). try { do { numreg++. } int tope() { return numreg.parseLong((String) H. } catch(IOException e) { } } void bajar() { try { arch.get(S)).append(" "). } } catch(IOException e) { } } String consulta(int n) { String S=new String(). try { k=arch.valueOf(pos)).k<pos+longreg. linea. } long longitud() { long k=0. for(k=pos.valueOf(numreg).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS void tabla() { pos=0.new String(). H.readChar()).valueOf(n). pos=pos+(longreg*2).seek(pos).k++) { if(k==7 || k==27) linea. linea=new StringBuffer().

while(p!=null && p.sig.r. while(codigo. } return linea. Ejemplo de Lista import javax.keys(). } void cerrar() { try { arch.15. Nodo cab=null.info!=x) { q=p.get(S))*longreg. Nodo(int info) { this.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS String Consultabla() { Enumeration codigo=H.swing. String S=null.*. } catch(IOException e){} } } Lección 20 6. } void recorre_ant() { 101 . p=p. class Nodo { int info.append("\n"). else return false.parseLong((String) H.close().nextElement(). boolean busca_ant(int x) { p=q=cab.info = info. } if(p!=null) return true.append(" Codigo Nombre Telefono \n").q. } Nodo sig. pos=Long. linea.toString(). bajar(). } class Listas { Nodo p.hasMoreElements()) { S=(String) codigo. linea=new StringBuffer(). linea.

switch(opc) { 102 . while(p!=null) { q=p.toString(). else q. null. do { String resp=(String) JOptionPane.opc. Listas L=new Listas().UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS p=q=cab.sig.10).sig=p.QUESTION_MESSAGE.JOptionPane. if(cab==null) cab=r. } } public class Lista { public static void main(String[]args) { int i. r. p=cab.valores[0]). Borrar".sig=r.info. } } void adicion(int x) { if(!busca_ant(x)) { r=new Nodo(x)."Elija la Opcion". } } void borrar(int x) { if(busca_ant(x)) { if(p==cab) cab=cab. } } String consulta() { String S="C O N S U L T A \n" . Consulta". p=p.sig.sig.charAt(0). Adicion". else q."2. p=p. "Entrada de datos".sig.digit(resp."4. Object [] valores = {"1. opc=Character. } return S.showInputDialog(null.Salir"}.sig=null. while(p!=null) { S+=p.info+"\n"."3. valores.

showMessageDialog(null.showInputDialog(null.parseInt(JOptionPane.consulta()).L.sig=r. else return false.borrar(info).*. } } 6.16.parseInt(JOptionPane. break. if(cab==null) cab=r. case 3: JOptionPane. L. case 2: info=Integer. Nodo(int info) { this. Nodo cab=null. } Nodo sig. } } while(opc!=4). Ejemplo de Lista Circular import javax. r.exit(1). break. L. class Nodo { int info.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS case 1: info=Integer.adicion(info). } void borrar() { if(cab==ult) 103 .q. ult=r. else ult.info = info.showInputDialog(null. } void adicion(int x) { r=new Nodo(x). } class Listas { Nodo p." Digite Info a Adicionar:")). System.sig=cab. boolean vacia() { if(cab==null) return true.r. Nodo ult=null." Digite Info a Borrar:")).swing. break.

else { cab=cab.info.opc. opc=Character. break. L.showInputDialog(null. } } public class ListaCircular { public static void main(String[]args) { int i.charAt(0).UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS cab=ult=null.L.showMessageDialog(null. do { String resp=(String) JOptionPane. Listas L=new Listas().10).vacia()) JOptionPane.JOptionPane.sig.exit(1). System. break."3. valores.sig=cab. Borrar". ult.info+"\n". Object [] valores = {"1. Consulta". switch(opc) { case 1: info=Integer. case 3: if(!L.borrar(). do { S+=p. Ejemplo de Lista y Cola 104 . case 2: if(!L.Salir"}.sig.adicion(info).toString().valores[0]). "Entrada de datos". p=cab.digit(resp.QUESTION_MESSAGE." Digite Info a Adicionar:")). } } while(opc!=4). break.vacia()) L. } } 6. null."4. } while(p!=cab)."Elija la Opcion". Adicion".consulta()). return S.showInputDialog(null."2. p=p.17.parseInt(JOptionPane. } } String consulta() { String S="C O N S U L T A \n" .

swing. Programa sig.r.Cod = Cod. else return false. Alumno cab=null. p=cab. class Alumno { int Cod. this. Alumno ult=null. Programa(int Id.Id = Id. } String consulta() { String S="C O N S U L T A \n" .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS import javax. Alumno p.sig=r.String Nombre) { this. Alumno(int Cod. } boolean vacia() { if(cab==null) return true. 105 . String Nombre.sig.String Nombre) { this. r.sig. if(cab==null) cab=r. this.Nombre = Nombre. } void borrar() { if(cab==ult) cab=ult=null.sig=null.q. else ult. } class Programa { int Id. } Alumno sig. else cab=cab.Nombre = Nombre. while(p!=null) { S+=p.*.String y) { r=new Alumno(x. String Nombre.info+"\n". } void adicion(int x. p=p.y). ult=r.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } return S.toString(); } } public class ListaCola { public static void main(String[]args) { int i,opc,info; Listas L=new Listas(); Object [] valores = {"1. Adicion","2. Borrar","3. Consulta","4.Salir"}; do { String resp=(String) JOptionPane.showInputDialog(null,"Elija la Opcion", "Entrada de datos",JOptionPane.QUESTION_MESSAGE, null, valores,valores[0]); opc=Character.digit(resp.charAt(0),10); switch(opc) { case 1: info=Integer.parseInt(JOptionPane.showInputDialog(null," Digite Info a Adicionar:")); L.adicion(info); break; case 2: if(!L.vacia()) L.borrar(); break; case 3: JOptionPane.showMessageDialog(null,L.consulta()); break; } } while(opc!=4); System.exit(1); } }

6.18. Ejemplo Lista Encadenada import javax.swing.*; class Nodo { int info; Nodo(int info) { this.info = info; } Nodo sig; Nodo ant; } class Listas { Nodo p,q,r; Nodo cab=null; Nodo ult=null; boolean vacia()

106

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { if(cab==null) return true; else return false; } boolean esta(int x) { p=q=cab; while(p!=null && p.info<x) { q=p; p=p.sig; } if(p!=null && p.info==x) return true; else return false; } void primero(int x) { r=new Nodo(x); cab=ult=r; r.ant=null; r.sig=null; } void insertar(int x) { r=new Nodo(x); q.sig=r; p.ant=r; r.ant=q; r.sig=p; } void menor(int x) { r=new Nodo(x); r.sig=cab; r.ant=null; cab.ant=r; cab=r; } void mayor(int x) { r=new Nodo(x); ult.sig=r; r.ant=ult; r.sig=null; ult=r; } void adicion(int x) { if(vacia()) primero(x); else if(x>ult.info)

107

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS mayor(x); else if(x<cab.info) menor(x); else if(!esta(x)) insertar(x); } void borrar(int x) { if(esta(x)) { if(p==cab) { if(cab==ult) cab=ult=null; else { cab=cab.sig; cab.ant=null; } } else if(p==ult) { ult=ult.ant; ult.sig=null; } else { r=p.sig; q.sig=r; r.ant=q; } } } String consulta_asc() { String S="C O N S U L T A \n" ; p=cab; while(p!=null) { S+=p.info+"\n"; p=p.sig; } return S.toString(); } String consulta_desc() { String S="C O N S U L T A \n" ; p=ult; while(p!=null) { S+=p.info+"\n";

108

class Nodo { int info. } Nodo sig."5.toString().valores[0]).JOptionPane. } } public class ListaEncadenada { public static void main(String[]args) { int i. null.*.showInputDialog(null. } } while(opc!=5). opc=Character. Borrar". do { String resp=(String) JOptionPane.QUESTION_MESSAGE."4. } return S.digit(resp.charAt(0). "Entrada de datos". L. } class Listas { 109 .19. case 3: JOptionPane." Digite Info a Adicionar:")).borrar(info). System. break. break. Nodo(int info) { this."Elija la Opcion".consulta_asc()). Listas L=new Listas().parseInt(JOptionPane. } } 6. break. Adicion".10)." Digite Info a Borrar:")).parseInt(JOptionPane."2.L. L.L.showMessageDialog(null.showMessageDialog(null.opc. switch(opc) { case 1: info=Integer.info = info. case 4: JOptionPane.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS p=p.consulta_desc()).showInputDialog(null.swing. Ejemplo de Lista y Pila import javax. Object [] valores = {"1.adicion(info).showInputDialog(null.ant.info.Salir"}. valores.exit(1)."3. case 2: info=Integer. Consulta Ascendente". Consulta Descendente". break.

opc=Character. do { String resp=(String) JOptionPane. } String consulta() { String S="C O N S U L T A \n" ."3.sig. p=p. break.sig. Nodo cab=null. Consulta". boolean vacia() { if(cab==null) return true." Digite Info a Adicionar:")). p=cab. Listas L=new Listas()."Elija la Opcion".JOptionPane.vacia()) L.showInputDialog(null. valores.info+"\n".info.toString().r."4.QUESTION_MESSAGE. Adicion". else return false. while(p!=null) { S+=p. "Entrada de datos". } void borrar() { cab=cab. r.sig=cab.valores[0]).parseInt(JOptionPane.showInputDialog(null. Borrar".10). case 2: if(!L. break.borrar().charAt(0).Salir"}.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Nodo p. switch(opc) { case 1: info=Integer."2.digit(resp. case 3: 110 . L. null. } return S. } } public class ListaPila { public static void main(String[]args) { int i.adicion(info). } void adicion(int x) { r=new Nodo(x). Object [] valores = {"1.opc. cab=r.

L.sig=r.Nombre = Nombre. Programa sig.exit(1).sig=null. class Alumno { int Cod.String Nombre) { this. break. else 111 . Programa(int Id. System. } Alumno sig. else ult.String y) { r=new Alumno(x. Ejemplo de Multilista import javax.20. Alumno p.y).Id = Id.Nombre = Nombre. } void adicion(int x.q. Alumno ult=null. } } 6. String Nombre.consulta()). if(cab==null) cab=r. } boolean vacia() { if(cab==null) return true. this.swing. ult=r.Cod = Cod. } class Programa { int Id.*. } void borrar() { if(cab==ult) cab=ult=null. String Nombre.String Nombre) { this. } } while(opc!=4). r. this. Alumno cab=null. else return false.r. Alumno(int Cod.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS JOptionPane.showMessageDialog(null.

if(cab==null) cab=r.sig.y).sig. r.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS cab=cab. else ult. } boolean existe(int id) { p=cab. while(p!=null) { S+=p. } void borrarAlumno() { 112 .q.sig.sig. } } class Facultad { Programa p. } String consulta() { String S="C O N S U L T A D E A L U M N O S \n" . p=cab. } return S.sig=null.toString(). else return true. Programa cab=null. } void adicion(int x. else cab=cab.r.Nombre+"\n".Cod+" "+p.String y) { r=new Programa(x. boolean vacia() { if(cab==null) return true. Programa ult=null. } void borrar() { if(cab==ult) cab=ult=null. while(p!=null && p. else return false. if(p==null) return false. ult=r. p=p.sig=r.Id!=id) p=p.

charAt(0).Nombre+"\n".adicion(cod.QUESTION_MESSAGE.showInputDialog(null.L. Nombre=JOptionPane.consulta()).id.digit(resp.adicion(x.vacia()) L. break. while(p!=null) { S+=p. L.10)."7. switch(opc) { case 1: cod=Integer.y)."Elija la Opcion". } String consulta() { String S="C O N S U L T A D E P R O G R A M A S \n" .Salir"}. S+=p.borrar().toString().vacia()) p. case 3: JOptionPane." Digite Nombre A Adicionar:"). Object [] valores = {"1. 113 .Nombre+"\n". null."3. } void adicionAlumno(int x. p=p.consulta().opc." Digite Programa a Adicionar:")).valores[0]).showInputDialog(null. p=cab. "Entrada de datos". break.toString().parseInt(JOptionPane. } return S. S+=p. valores.cod. Facultad L=new Facultad().borrar(). case 2: if(!L. break.sig."2. do { String resp=(String) JOptionPane.Id+" "+p."5. Consulta".showInputDialog(null. Adicion Programa". } String consultaTodo() { String S="C O N S U L T A D E P R O G R A M A S \n" . String Nombre.JOptionPane. opc=Character."6.String y) { p. Consulta Programa". Borrar Programa".showMessageDialog(null. return S.Id+" "+p.Adicion Alumno".Nombre). } } public class MultiLista { public static void main(String[]args) { int i.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS if(!p."4.Borrar Alumno".

existe(cod)) switch(opc) { case 4: cod=Integer.showInputDialog(null.QUESTION_MESSAGE.borrarAlumno().showInputDialog(null. case 5: L. public static void main(String[]args) { int i. switch(opc) { case 1: if(A."2." Digite Nombre A Adicionar:"). Object [] valores = {"1."No se Puede Atender Mas"). Desempila".swing.Salir"}. if(L. Nombre=JOptionPane."4.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS case 4: case 5: case 6: cod=Integer.showInputDialog(null.lang.Nombre).exit(1).*.*. "Entrada de datos". valores.parseInt(JOptionPane. } } } while(opc!=7).io.10).valores[0]).llena()) JOptionPane.digit(resp. public class Pila1 { static double SALDO=0. L. break. Consulta". System.showInputDialog(null. Info C=new Info()." Digite Programa:")). import java." Digite Alumno a Adicionar:")).21.charAt(0). opc=Character. else { 114 . import java.showMessageDialog(null. case 6: JOptionPane.JOptionPane.opc.util. Pila A=new Pila(10).showMessageDialog(null.parseInt(JOptionPane. Ejemplo de Pila import javax.consultaTodo()).adicionAlumno(cod.nit. } } 6. break."3. Apilar".*."Elija la Opcion".L.Math. do { String resp=(String) JOptionPane.*. import java. null.

vacia()) JOptionPane. } boolean llena() { if(cab==n-1) return true.parseInt(JOptionPane."Digite Nombre"). int i. } boolean vacia() { if(cab==-1) return true.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS C.i<n.showInputDialog(null.i++) A[i]=new Info().telefono=Integer.parseInt(JOptionPane.apila(C).showMessageDialog(null.nomCliente=JOptionPane.A. Info A[]."Pila de Atencion Vacia"). C.showInputDialog(null.n. A=new Info[n].imprime()). } class Pila { int cab. A. this. public Pila(int n) { cab=-1. 115 ."Digite Telefono")). } break."Pila Vacia"). String nomCliente. int telefono.showMessageDialog(null. for(i=0. } } class Info { int nit.showInputDialog(null. C. case 2: if(A.k. else JOptionPane.desempila(). case 3: if(A.vacia()) JOptionPane.nit=Integer.showMessageDialog(null."Escriba el número de Nit")). } } while(opc!=4). else { A. } break.n=n. else return false.

info) { q=p.toString().swing. else 116 . while(p!=null && x!=p. int fila=0.*. for(i=cab.telefono=C. } return S.nit. class ArbolBin { NodoArbol raiz=null. S=S+" "+new String(). } void apila(Info C) { cab++. NodoArbol p. Stack Pila=new Stack(). } } if(p==null) return false. } String imprime() { String S=" Elemenos de la Pila\n".telefono.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS else return false. A[cab].r.toString()+"\n".der.telefono). } } 6.izq.nit=C.i>=0.nomCliente=C.util.valueOf(A[i]. boolean existe(int x) { q=p=raiz. } else { p=p.i--) { S=S+" "+new String(). A[cab].22.q.nomCliente.*. S=S+" "+A[i]. Ejemplo de Arbol Binario import javax.nit).valueOf(A[i].nomCliente. } void desempila() { cab--. import java. A[cab].toString(). if(x<p.info) { p=p.

info) { q. s=s. r=new NodoArbol(x).der=null. r. if(raiz==null) { raiz=r.der.izq=p. } boolean adicion(int x) { if(existe(x)) return false. } boolean masizquierda(NodoArbol s) { 117 .pop(). else q.push((Object) s). else { if(q. s.izq=r. s=(NodoArbol) Pila.empty()) return true. } else { if(x<q.izq.empty()) return false.der.der=s. if(p==raiz) raiz=s.izq=s.izq=r.println("adicion de: "+x+"raiz: "+raiz+" q:"+q+" p: "+p). r.out. } else { q.izq.der=s. } boolean masderecha(NodoArbol s) { Pila=new Stack(). s. // System. r=(NodoArbol) Pila.der=r.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS return true. } } return true.der=p. while(s!=null) { Pila.pop(). } if(Pila. } if(Pila.izq==p) q. return true.

push((Object) s). else q. else raiz=p.izq. if(q.empty()) return false.izq==p) q. if(p==raiz) raiz=s. else { if(q. else { if(q.pop(). P.der=p.izq.izq==null) raiz=p.der==p) q. } else { if(p.der.izq es Null { if(p==raiz) { if(p. } } void caso2Borrado()//Hijo Unico.pop(). s. s. s=(NodoArbol) Pila.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Pila=null.izq=p.der. } 118 . r.izq==null) { if(q.izq=s.izq==p) q. } if(Pila. Es Nodo Terminal { if(p==raiz) raiz=null. r=(NodoArbol) Pila.der es Null ó P. return true.izq==p) q. while(s!=null) { Pila.empty()) return true.der=null. } if(Pila.der.izq=s.izq. } void caso1Borrado()// P.der.der=s.izq=p. s=s. else q.der.izq=null.der=p.

println(p. preorden(p.der=p.izq). if(p.der)) System.println(" No se pudo Borrar").der).int A[]) 119 . return true.out. preorden(p.izq.izq=p.izq).der y P.out.der!=null) caso3Borrado(). } } void conteoNodo(NodoArbol p.izq!=null && p. else if(p.out.println(p.der==null { if(q.der). P. } void preorden(NodoArbol p) { if(p!=null) { System.info). System. posorden(p. } } } void caso3Borrado()// Dos Hijos. } boolean borrar(int x) { if(!existe(x)) return false.izq==p) q.out. System.izq==null && p.der==null) caso1Borrado().UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS else //p.izq).info). inorden(p.izq no es null { if(!masderecha(p. } } void inorden(NodoArbol p) { if(p!=null) { inorden(p. } } void posorden(NodoArbol p) { if(p!=null) { posorden(p.println(p. else q.info).izq)) if(!masizquierda(p.der).izq. else caso2Borrado().

println("Impresion de Arbol en PreOrden"). } NodoArbol izq.out.println("Impresion de Arbol en InOrden"). inorden(p). } void imprimirPreorden() { System.Salir"}.der.out.print("El numero de nodos: "+A[0]). p=raiz.println("Impresion de Arbol en PosOrden"). p=raiz. Object [] valores = {"1. p=raiz. Consulta en PosOrden". p=raiz. } void imprimirInorden() { System.out. Consulta En PreOrden"."5. Adicion". Borrar". preorden(p).A).opc. ArbolBin A=new ArbolBin().A)."7. } } class NodoArbol { int info. posorden(p).izq.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { if(p!=null) { A[0]++. public static void main(String[]args) { int info.out.der. } } void contarNodos() { int A[]=new int[2]. } void imprimirPosorden() { System. conteoNodo(p. do 120 . conteoNodo(p. NodoArbol(int x) { info=x. Consulta en InOrden". conteoNodo(p."6. } public class Arbol { static double SALDO=0. Conteo de Nodos". System."4.A)."2."3.

} } 121 .showInputDialog(null.parseInt(JOptionPane.charAt(0).showMessageDialog(null. break.borrar(info)) JOptionPane. case 5: A. case 4: A. case 3: A. null.imprimirInorden()."Existe Info"). break."Elija la Opcion".showInputDialog(null.imprimirPreorden().parseInt(JOptionPane. case 2: info=Integer.adicion(info)) JOptionPane. } } while(opc!=7). valores.valores[0]). "Entrada de datos".exit(0).QUESTION_MESSAGE. break. break."Escriba info a Borrar: ")).10). opc=Character. case 6: A.showMessageDialog(null.contarNodos(). break."Escriba info a Adicionar: ")).showInputDialog(null. switch(opc) { case 1: info=Integer.JOptionPane. if(!A. break. System. if(!A.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { String resp=(String) JOptionPane."No Existe Info").imprimirPosorden().digit(resp.

Un objeto (en inglés.1 Concepto de Clase Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos.1 Conceptos Básicos 7. CLASES Y HERENCIA EN LA PROGRAMACION ORIENTADA A OBJETOS Lección 31 CAPITULO 7. Classname unObjeto. Las variables miembro y los métodos pueden ser public. la clase tiene la visibilidad por defecto. Las clases son el centro de la Programación Orientada a Objetos (OOP – Object Oriented Programming). 7. Las clases pueden ser declaradas como públicas (public) y como package (accesibles sólo para otras clases del paquete).. instance) es un ejemplar concreto de una clase. Polimorfismo. La definición de una clase se realiza en la siguiente forma: [public] class Class name { // definición de variables y métodos . ClassnameotroObjeto. Todos los métodos y variables deben ser definidos dentro del bloque {.1. La clase define un nuevo tipo de dato. Una clase derivada puede añadir nuevas variables y métodos y/o redefinir las variables y métodos heredados. esto es. mientras que los objetos son como variables concretas de un tipo determinado. y en ese caso hereda todas sus variables y métodos. sólo es visible para las demás clases del paquete. al mismo tiempo. protected y package. private..} de la clase. Las clases son como tipos de variables. Clases En La Poo Una clase es el núcleo en java para la construcción lógica en la programación de este lenguaje. Una clase puede derivar de otra (extends). De esta forma se puede controlar el acceso y evitar un uso inadecuado. Algunos de los conceptos más importantes de la POO son los siguientes: Encapsulación. 122 . Herencia.. La clase construye la base de programación orientada a objetos en java.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS UNIDAD 3. } Donde la palabra public es opcional: si no se pone.. Los objetos de distintas clases pertenecientes a una misma jerarquía o que implementan una misma interface pueden tratarse de una forma general e individualizada.

en cuyo caso incorpora las declaraciones de todos los métodos de las interfaces de las que deriva (a diferencia de las clases. No hay variables y funciones globales. Si una clase contenida en un archivo no es public. La clase Object es la base de toda la jerarquía de clases de Java. 7. Si una clase implementa (implements) una interface.). Una interface puede derivar de otra o incluso de varias interfaces. Con algunas excepciones. Esta agrupación en paquetes está relacionada con la jerarquía de directorios y archivos en la que se guardan las clases.2 Características Importantes De Las Clases: Todas las variables y funciones de Java deben pertenecer a una clase. Este archivo se debe llamar como la clase public que contiene con extensión *. Las clases se pueden agrupar en paquetes. Si al definir una clase no se especifica de qué clase deriva.3 Concepto de Interface Una interface es un conjunto de declaraciones de funciones. introduciendo una línea al comienzo del archivo (paquete Nombrepaquete. Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple). sólo se pueden utilizar los métodos de la interface. Las interfaces pueden definir también variables finales (constantes). sin embargo. Los métodos de una clase pueden referirse de modo global al objeto de esa clase al que se aplican por medio de la referencia this. Por ejemplo.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 7. En un archivo se pueden definir varias clases. las interfaces sirven para definir referencias a cualquier objeto de cualquiera de las clases que implementan esa interface.1. En algunos aspectos los nombres de las interfaces pueden utilizarse en lugar de las clases. Si una clase deriva de otra (extends). representando una alternativa a la herencia múltiple.2. Éste es un aspecto importante del polimorfismo. Una clase puede implementar más de una interface. 7. no es necesario que el archivo se llame como la clase. Ejemplo De Definición De Una Clase 123 . por defecto la clase deriva de Object.java. las interfaces de Java sí tienen herencia múltiple). Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que crean los usuarios. lo habitual es escribir una sola clase por archivo. hereda todas sus variables y métodos. pero en un archivo no puede haber más que una clase public. Con ese nombre o referencia.1. debe definir todas las funciones especificadas por la interface.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS A continuación se reproduce como ejemplo la clase Círculo. } // método de clase para comparar círculos public static Circulo elMayor(Circulo c. c. else 124 .x=x. this.y=y. // archivo Circulo. 1. } public Circulo(Circulo c) { this(c. 0. double r) { this. public static final double PI=3. public Circulo(double x.y.0). 0.r).14159265358979323846.0 * PI * r.0.r>=c. public double x. c. } public Circulo(double r) { this(0. numCirculos++. } public double perimetro() { return 2. } // método de objeto para comparar círculos public Circulo elMayor(Circulo c) { if (this.r) return c. double y.x.java public class Circulo extends Geometria { static int numCirculos = 0. } public Circulo() { this(0.r) return this. } public double area() { return PI * r * r. else return c. Circulo d) { if (c.r=r. y.0.0.r>=d. this. r).0. r.

el carácter nulo para char y cero para los tipos numéricos). Una clase está constituida por unos datos y unos métodos que operan sobre esos datos. por medio de constantes o llamadas a métodos (esta inicialización no está permitida en C++).3. lo más adecuado es inicializarlas también en el constructor. y su propio valor del radio r.. int. ?) o referencias a objetos de otra clase (composición). De todas formas. para calcular el área de un objeto de la clase Circulo llamado c1 se escribirá: c1. Un aspecto muy importante del correcto funcionamiento de los programas es que no haya datos sin inicializar. como las variables locales. Por ejemplo. Esto es importante porque unas variables pueden apoyarse en otras previamente definidas. separados por un punto. Las variables miembro de una clase (también llamadas campos) pueden ser de tipos primitivos (boolean. 7.3. Variables miembro A diferencia de la programación algorítmica clásica. Por ejemplo. Por ejemplo. Los métodos de objeto se aplican a un objeto concreto poniendo el nombre del objeto y luego el nombre del método. 7. } } // fin de la clase Circulo. Las variables miembro se inicializan en el mismo orden en que aparecen en el código de la clase. Cada objeto que se crea de una clase tiene su propia copia de las variables miembro. la programación orientada a objetos está centrada en los datos. tiene su propia copia de las variables miembro.area().UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS return d. double.1 Variables miembro de objeto Cada objeto.java. long. cada objeto de la clase Circulo tiene sus propias coordenadas del centro x e y. Las variables miembro del argumento 125 . A este objeto se le llama argumento implícito. Se puede ver también cómo el nombre del archivo coincide con el de la clase public con la extensión *. que estaba centrada en las funciones. Las variables miembro pueden también inicializarse explícitamente en la declaración. En este ejemplo se ve cómo se definen las variables miembro y los métodos (cuyos nombres se han resaltado en negrita) dentro de la clase. long nDatos = 100. Dichas variables y métodos pueden ser de objeto o de clase (static). es decir cada ejemplar concreto de la clase. Por eso las variables miembro de tipos primitivos se inicializan siempre de modo automático. incluso antes de llamar al constructor (false para boolean.

protected y package (que es el valor por defecto y puede omitirse). Las variables miembro pueden ir precedidas en su declaración por uno de los modificadores de acceso: public.2 Variables Finales 126 . Lo importante es que las variables miembro static se inicializan siempre antes que cualquier objeto de la clase. Junto con los modificadores de acceso de la clase (public y package). private. Si no se les da valor en la declaración.3. determinan qué clases y métodos van a tener permiso para utilizar la clase y sus métodos y variables miembro. los modificadores transient y volatile no serán utilizados. pues se puede utilizar también el nombre de cualquier objeto). Las variables de clase son lo más parecido que Java tiene a las variables globales de C/C++. Al nivel de estos apuntes. Las variables miembro static se crean en el momento en que pueden ser necesarias: cuando se va a crear el primer objeto de la clase.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS implícito se acceden directamente o precedidas por la palabra this y el operador punto. Para llamarlas se suele utilizar el nombre de la clase (no es imprescindible. 7. Las variables static se suelen utilizar para definir constantes comunes para todos los objetos de la clase (por ejemplo PI en la clase Circulo) o variables que sólo tienen sentido para toda la clase (por ejemplo. y con null si es una referencia. porque de esta forma su sentido queda más claro. Por ejemplo. Variables miembro de clase (static) Una clase puede tener variables propias de la clase y no de cada objeto. A estas variables se les llama variables de clase o variables static. en cuanto se llama a un método static o en cuanto se utiliza una variable static de dicha clase.numCirculos es una variable de clase que cuenta el número de círculos creados. las variables miembro static se inicializan con los valores por defecto para los tipos primitivos (false para boolean. el carácter nulo para char y cero para los tipos numéricos). Existen otros dos modificadores (no de acceso) para las variables miembro: Transient: indica que esta variable miembro no forma parte de la persistencia (capacidad de los objetos de mantener su valor cuando termina la ejecución de un programa) de un objeto y por tanto no debe ser serializada (convertida en flujo de caracteres para poder ser almacenada en disco o en una base de datos) con el resto del objeto. un contador de objetos creados como numCirculos en la clase Circulo). Volatile: indica que esta variable puede ser utilizada por distintas threads sincronizadas que el compilador no debe realizar optimizaciones con esta variable. Circulo. Las variables de clase se crean anteponiendo la palabra static a su declaración.

pero no tiene por qué tener el mismo valor en todas las ejecuciones del programa. la vegetación. los animales. Realizando una secuencia de pasos don de un proceso se puede convertir en un conjunto de mensajes entre otros objetos donde cada uno de ellos tiene su propio comportamiento.4 Abstracción El elemento esencial de la programación orientada a objetos en java es la abstracción. que puede ser modificado a través de otra referencia. Puede ser considerada como una constante. 7. Ejemplo: 127 . pero no el propio objeto. pues depende de cómo haya sido inicializada. Una forma poderosa de gestionar la abstracción es utilizando clasificaciones jerárquicas.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Una variable de un tipo primitivo declarada como final no puede cambiar su valor a lo largo de la ejecución del programa. Nosotros normalmente miramos la complejidad a través de la abstracción. Donde es un objeto bien definido con un comportamiento propio único. La variable final así definida es constante (no puede cambiar). esto nos permite dividir en niveles la semántica de los sistemas complejos. obteniendo sistemas más manejables. y equivale a la palabra const de C/C++. Los conceptos orientada a objetos forma el corazón de java. el medio ambiente ect. Declarar como final un objeto miembro de una clase hace constante la referencia. Por ejemplo el paisaje desde el exterior es un sistema sencillo a simple vista pero una vez dentro. La inicialización puede hacerse más tarde. En la programación se puede utilizar en los programas de algorítmicos tradicionales se pueden transformar mediante la abstracción en objetos. Como podemos ver la importancia de la abstracción es que se puede controlar la complejidad de un sistema utilizando abstracciones jerárquicas. En Java no es posible hacer que un objeto sea constante. también las variables locales y los propios argumentos de un método pueden ser declarados final. estos conceptos se aplican en la programación cuando por ejemplo se nos presenta un problema de la vida real se realiza una clasificación jerárquica para poderlo resolver satisfactoriamente. podemos ver que este sistema esta compuesto por varios subsistemas: el clima. Por ejemplo como se puede observar en la figura vemos un conjunto de miles de partes individuales.. Además de las variables miembro. llamando a métodos o en función de otros datos. Esta es la esencia de la programación orientada a objetos. Java permite separar la definición de la inicialización de una variable final. en tiempo de ejecución.

etc. La Encapsulación sirve para separar la interface de una abstracción y su implementación.5 Encapsulado Es el proceso de compartimentalización de los elementos de una abstracción que constituyen su estructura y comportamiento. Encapsulación esconde la implementación del objeto que no contribuye a sus características esenciales. Interfase: captura la visión externa de una clase. variables escalares no son suficientes ya que su principal problema es que sólo 128 .6 Arreglos y cadenas Uno de los problemas más comunes en los diversos sistemas de información es el tratamiento o procesamiento de un gran volumen de datos o de información. porque solo permiten almacenar o procesar un dato a la vez. en problemas que exigen manejar mucha información o datos a la vez. abarcando la abstracción del comportamiento común a los ejemplos de esa clase. Las variables usadas hasta ahora reciben propiamente el nombre de variable escalares. b. así como los mecanismos que conducen al comportamiento deseado. los árboles. 7. Implementación: comprende la representación de la abstracción. La Encapsulación da lugar a que las clases se dividan en dos partes: a. una vez dentro podemos ver esta compuesto por varios subsistemas: las nubes. Es decir. Por ejemplo si quiere almacenar nombre y edad de 15 personas con el método tradicional se ocuparan de 30 variables y sólo es nombre y edad de 15 personas.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Desde el exterior el cuadro es un objeto sencillo. agreguen más datos y más personas y ya es tiempo de empezar otro tipo de variables.  Es La un concepto complementario al de abstracción. 7. Se conoce también como ocultamiento o privacidad de la información.

operación despliegue) usando el nombre del arreglo respectivo y un subíndice indicando la posición relativa del elemento con respecto a los demás elementos del arreglo. Flujos: los programas de java realizan las E/S a través de flujos (streams) donde un flujo es una abstracción que produce o consume información y está relacionado con dispositivos físicos a través del sistema de java. OutputStream datos. los flujos se comportan de la misma forma aunque estén relacionados con diferentes dispositivos físicos.. Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y procesa (captura. Del mismo modo el destino de salida puede ser una consola. se ocupan entonces variables que sean capaces de almacenar y . El sistema de E/S de java es coherente y consistente a la vez que se entienden sus fundamentos. Por esta razón se pueden aplicar las mismas clases y métodos de E/S al cualquier tipo de dispositivo. el resto del sistema de E/s es bastante sencillo. En la parte superior de la jerarquía hay dos clases abstracta. La E/S por consola de java es bastante limitada y no es fácil de usar.io. manipular conjuntos de datos a al vez Variables de tipo arreglo si permiten almacenar conjuntos de datos del mismo tipo a la vez. 1. Java implementa los flujos dentro de una jerarquía de clases definida en el paquete java.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS permiten almacenar y procesar un dato a la vez. Ambos métodos están declarados como abstractos 129 . hacer operaciones con ellos. Los flujos son una forma de limpia de tratar con la E/S sin necesitar que todo el código comprenda la diferencia entre un teclado y una red. donde el flujo de entrada puede abstraer distintos tipos de entrada desde un archivo de disco a un teclado de conexión de red. respectivamente lee y escribe byte de 4. compilarlos. capturarlos. Ejemplo: NOMBRES Juan----- nombres(0) Pedro---- nombres(1) Rosa ----nombres(2) Camilo--nombres(3) Sin embargo sus problemas son similares a los de variables normales es decir hay que declararlos. un archivo de disco. sólo recordar que en vcpp la primera posición elemento o renglón es el 0(cero). Dos de los métodos más importantes son: 3. incluso en programas sencillos. La E/S basada en texto no es importante en la programación en java. InputStream read( ) y write ( ). etc. Estas clases definen algunos métodos que las otras clases 2. 7. Implementan.7 Flujo de E/S en java Java proporciona una E/s completa y flexible para archivos y redes.

130 . return). sin pretender profundizar demasiado. y avisar a otros objetos de una condición anormal de ejecución durante un programa. Exception: Excepciones no definitivas. Pero Java va mucho más allá. Dentro de InputStream y OutputStram Lección 32 7. Durante este capítulo estudiaremos la gestión de excepciones y errores. Mediante la gestión de excepciones se prescindirá de sentencias de control de errores del tipo: if ( error == true ) return ERROR.8 Gestión De Excepciones Y Errores El control de flujo en un programa Java puede hacerse mediante las ya conocidas sentencias estructuradas (if. pero que se detectan fuera del tiempo de ejecución. while. RuntimeException: Excepciones que se dan durante la ejecución del programa. mediante una técnica de programación denominada gestión de excepciones. en busca de un posible error.1 Tipos de excepciones Existen varios tipos fundamentales de excepciones:  Error: Excepciones que indican problemas muy graves. pero sí fijando la base conceptual de lo que este modo de programación supone. 7. que suelen ser no recuperables y no deben casi nunca ser capturadas. Mediante las excepciones se podrá evitar repetir continuamente código.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 5.8.

String getMessage(). Devuelve una breve descripción del objeto.finally Cuando el programador va a ejecutar un trozo de código que pueda provocar una excepción (por ejemplo. se ha de trabajar en dos partes de los programas: Definir qué partes de los programas crean una excepción y bajo qué condiciones.1 Herencia de excepciones Java Todas las excepciones tienen como clase base la clase Throwable. Crea una descripción local de este objeto. void printStackTrace( PrintStream_o_PrintWriter s ). Para ello se utilizan las palabras reservadas try. debe incluir este fragmento de código dentro de un bloque try: try { // Código posiblemente problemático } Pero lo importante es cómo controlar qué hacer con la posible excepción que se cree.catch . Devuelve la cadena de error del objeto.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 7.8. Para ello se utilizan las clausulas catch. catch y finally. que está incluida en el paquete java.2. una lectura en un fichero).lang.1. o en la salida estándar (por defecto). String getLocalizedMessage(). Imprime este objeto y su traza en el flujo del parámetro s.1 Manejo de excepciones: try .2 Funcionamiento Para que el sistema de gestión de excepciones funcione. String toString. Comprobar en ciertas partes de los programas si una excepción se ha producido. en las que se especifica que acción realizar: try { // Código posiblemente problemático } catch( tipo_de_excepcion e) { // Código para solucionar la excepción e } catch( tipo_de_excepcion_mas_general e) { // Código para solucionar la excepción e } 131 .8. y sus métodos son: Trowable( String mensaje ). La cadena es opcional Throwable fillInStackTrace(). 7. y actuar en consecuencia. Constructor. Llena la pila de traza de ejecución. 7.8. Para ello se utilizan las palabras reservadas throw y throws.

puesto que cualquier clase hija de Runtime es también hija de Throwable.8. Este tipo de código se inserta en una sentencia finally. por herencia. Para insertar fragmentos de código que se ejecuten tras la gestión de las excepciones.throws Muchas veces el programador dentro de un determinado método deberá comprobar si alguna condición de excepción se cumple.8. y si es así lanzarla. 7. Este código se ejecutará tanto si se ha tratado una excepción (catch) como sino. pero conviene hacerlo indicando en último lugar las excepciones más generales (es decir. Aquellos métodos que pueden lanzar excepciones. miExcep2 { // Codigo capaz de lanzar excepciones miExcep1 y miExcep2 } Se puede observar que cuando se pueden lanzar en el método más de una excepción se deben indicar en su declaración separadas por comas. puesto que las excepciones son objetos y por tanto deberán ser instanciadas antes de ser lanzadas. Pero. ¿y si quiero realizar una acción común a todas las opciones?. Si no se ha lanzado ninguna excepción el código continúa sin ejecutar ninguna sentencia catch. nunca llegaríamos a gestionar una excepción Runtime. Se puede observar que hemos creado un objeto de la clase miExcepcion. porque el intérprete Java ejecutará aquel bloque de código catch cuyo parámetro sea del tipo de una excepción lanzada.2.3 Ejemplo de gestión de excepciones 132 . Por una parte la excepción se lanza mediante la sentencia throw: if ( condicion_de_excepcion == true ) throw new miExcepcion(). Si por ejemplo se intentase capturar primero una excepción Throwable. Para ello se utilizan las palabras reservadas throw y throws. Para ello se utiliza la sentencia throws: tipo_devuelto miMetodoLanzador() throws miExcep1.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS En el ejemplo se observa que se pueden anidar sentencias catch.2 Lanzamiento de excepciones: throw .2. deben cuáles son esas excepciones en su declaración. que se encuentren más arriba en el árbol de herencia de excepciones). que será ejecutada tras el bloque try o catch: try { } catch( Exception e ) { } finally { // Se ejecutara tras try o match } 7.

} catch ( IOException e ){ // Estándar System.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Ahora que ya sabemos cómo funciona este sistema.out. } catch ( MiExcepcion e ){ // Personalizada System. // constructor por defecto de Exception } MiExcepcion( String cadena ) { super( cadena ).out.println( "Excepcion: " + e. entrada.close(). } } class Excepciones { public static void main( String[] args ) { // Para leer un fichero Lanzadora lanza = new Lanzadora().out.read() ) != -1 ) lanza. // constructor param. de Exception } } // Esta clase lanzará la excepción class Lanzadora { void lanzaSiNegativo( int param ) throws MiExcepcion { if ( param < 0 ) throw new MiExcepcion( "Numero negativo" ). FileInputStream entrada = null.lanzaSiNegativo( leo ). }finally { if ( entrada != null ) try 133 . while ( ( leo = entrada.getMessage() ). que ilustre al lector en el uso de las excepciones: // Creación de una excepción personalizada class MiExcepcion extends Exception { MiExcepcion() { super().txt" ). conviene ver al menos un pequeño ejemplo. try { entrada = new FileInputStream( "fich. System.getMessage() ). int leo.println( "Excepcion: " + e.println( "Todo fue bien" ).

getMessage() ). } catch ( MiExcepcion e ){ // Personalizada System. } } } class Excepciones { public static void main( String[] args ) { // Para leer un Archivo FileInputStream entrada = null.close().println( "Todo fue bien" ). } catch ( IOException e ){ // Estándar System. try { entrada = new FileInputStream("fich.out.out.println( "Excepcion: " + e. suponiendo un número negativo sería: Excepción: Numero negativo 134 . // Así el fichero siempre queda cerrado System. imprimiendo su contenido (cadena de error) por pantalla.getMessage() ).out.println( "Excepcion: " + e. y lee su contenido en forma de números." ). System. Además gestiona la excepción IOException.println( "Excepcion: " + e.out.close(). } } } Este programa lee un Archivo (fichero.out.println( "Fichero cerrado. int leo. while ( ( leo = entrada. Si alguno de los números leídos es negativo.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS { entrada. } finally { entrada.println( "Fichero cerrado" ). Ambas excepciones son gestionadas.read() ) != -1 ) 80 lanza. } System. La salida de este programa. Lanzadora lanza = new Lanzadora().out.getMessage() ). // Siempre queda cerrado } catch ( Exception e ) { System.lanzaSiNegativo( leo ).txt"). lanza una excepción MiExcepcion. que es una excepción de las que Java incluye y que se lanza si hay algún problema en una operación de entrada/salida.txt).

sería: Excepción: java. 135 . int paramY ) { return ( paramX + paramY ). int paramY ) { x = paramX. por lo que los métodos se pueden referir directamente a ellas.8. sus capacidades y comportamiento.3 Los métodos Los métodos son subrutinas que definen la interfaz de una clase.io. Los métodos son llamados indicando una instancia individual de la clase.IOException Archivo cerrado 7. Un método ha de tener por nombre cualquier identificador legal distinto de los ya utilizados por los nombres de la clase en que está definido. Así mismo. Los métodos se declaran al mismo nivel que las variables de instancia dentro de una definición de clase. si no se desean parámetros. al leer el primer número. El método inicia() para establecer valores a las dos variables de instancia sería el siguiente: void inicia( int paramX. } En el caso de que no se desee devolver ningún valor se deberá indicar como tipo la palabra reservada void. } Por ejemplo el siguiente método devuelve la suma de dos enteros: int metodoSuma( int paramX. de sintaxis tipo identificador separadas por comas. La forma general de una declaración de método es: tipo_devuelto nombre_de_método( lista-formal-de-parámetros ) { cuerpo_del_método. En la declaración de los métodos se define el tipo de valor que devuelven y a una lista formal de parámetros de entrada. la declaración del método debería incluir un par de paréntesis vacíos (sin void):serf void metodoVacio( ) { }. y = paramY.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Archivo cerrado En el caso de que no hubiera ningún número negativo sería: Todo fue bien Archivo cerrado En el caso de que se produjese un error de E/S. que tendrá su propio conjunto único de variables de instancia.

Cada vez que se crea una clase se añade otro tipo de dato que se puede utilizar igual que uno de los tipos simples. haciendo que el objeto sea utilizable inmediatamente. Su misión es iniciar todo estado interno de un objeto (sus atributos). y se podrá convertir a una referencia a cualquier otro objeto porque todos los objetos son hijos de la clase Object. Una vez definido.8. Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar las variables explícitamente para su iniciación. reservando memoria para sus atributos. La referencia null es una referencia a un objeto de la clase Object.1 Referencias a Objeto e Instancias Los tipos simples de Java describían el tamaño y los valores de las variables. Todas las referencias a objeto son compatibles también con las instancias de subclases de su tipo. Esta es una declaración de una variable p que es una referencia a un objeto de la clase MiPunto. El constructor tiene exactamente el mismo nombre de la clase que lo implementa. Por ejemplo: MiPunto( ) { inicia( -1.8.4.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } Lección 33 7. se llamará automáticamente al constructor al crear un objeto de esa clase (al utilizar el operador new).4 La instanciación de las clases: Los objetos 7. iniciando sus valores. -1 ).. se puede declarar que una variable es del tipo MiClase y guardar una referencia a una instancia de este tipo de clase: MiPunto p.. se puede utilizar un nombre de clase como tipo. A estas variables se las conoce como referencias a objeto.4. Por ello al declarar una nueva variable. Del mismo modo que es correcto asignar un byte a una variable declarada como int. ni siquiera void. de momento con un valor por defecto de null.8. } 136 .2 Constructores Las clases pueden implementar un método especial llamado constructor. El constructor no devuelve ningún tipo. 7. no puede haber ningún otro método que comparta su nombre con el de su clase.

se debe de crear una clase que contenga un método main(). paramY ). Este otro constructor. } La lista de parámetros especificada después del nombre de una clase en una sentencia new se utiliza para pasar parámetros al constructor.. 137 . System.8.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Este constructor denominado constructor por defecto. Este es un ejemplo de la creación de una instancia de MiPunto. Hay una distinción crítica entre la forma de manipular los tipos simples y las clases en Java: Las referencias a objetos realmente no contienen a los objetos a los que referencian.3).out.println( "p1. Se llama al método constructor justo después de crear la instancia y antes de que new devuelva el control al punto de la llamada.4.3 El operador new El operador new crea una instancia de una clase (objetos) y devuelve una referencia a ese objeto.x + " y = " + p1. por defecto .x = 10 y = 20 Para crear un programa Java que contenga ese código. que es controlador por la referencia a objeto p2. Así. El intérprete java se ejecutará el método main de la clase que se le indique como parámetro. 20). sin embargo.llamará al constructor de la superclase Object() si no se especifican parámetros en el constructor. recibe dos parámetros: MiPunto( int paraX. int paraY ) { inicia( paramX. De esta forma se pueden crear múltiples referencias al mismo objeto. por no tener parámetros.x = " + p1. como por ejemplo: MiPunto p3 =p2. Por ejemplo: MiPunto p2 = new MiPunto(2. 7. Se muestra en la pantalla: p1. establece el valor -1 a las variables de instancia x e y de los objetos que construya..y ). El compilador. cuando ejecutamos el siguiente programa: MiPunto p1 = new MiPunto(10.

5. p3 todavía apunta al objeto creado por el operador new. Cualquier cambio realizado en el objeto referenciado por p2 afectará al objeto referenciado por p3.. p4..out. por lo que los cambios sobre las variables de instancia de un objeto no tienen efecto sobre las variables de instancia de otro.x = " + p5. // p3 todavía apunta al objeto creado con new Aunque se haya asignado null a p2.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Aunque tan sólo se creó un objeto MiPunto. MiPunto p5 = new MiPunto( 42.println("p5. Cuando se realiza una instancia de una clase (mediante new) se reserva en la memoria un espacio para un conjunto de datos como el que definen los atributos de la clase que se indica en la instanciación.8. sin afectarlo: p2 = null. Es importante el comprender que cada objeto tiene su propia copia de las variables de instancia de su clase.1 El operador punto (.x + " y = " + p4.y). Este es el aspecto de salida cuando lo ejecutamos. La asignación de p2 a p3 no reserva memoria ni modifica el objeto. 99 ).x = 42 y = 99 Lección 34 7. MiPunto p4 = new MiPunto( 10. System.x + " y = " + p5.out.) 138 . Java reclama automáticamente la memoria utilizada por ese objeto.5. Acceso al objeto 7. Cuando ya no haya ninguna variable que haga referencia a un objeto. A este conjunto de variables se le denomina variables de instancia. System.8. De hecho. La potencia de las variables de instancia es que se obtiene un conjunto distinto de ellas cada vez que se crea un objeto nuevo.println("p4. a lo que se denomina recogida de basura.. El siguiente programa crea dos objetos MiPunto y establece los valores de x e y de cada uno de ellos de manera independiente para mostrar que están realmente separados..y). las asignaciones posteriores de p2 simplemente desengancharán p2 del objeto.x = " + p4.x = 10 y = 20 p5. 20 ). hay dos variables (p2 y p3) que lo referencian.

El siguiente constructor llama al constructor parametrizado MiPunto(x. p6.2.x y p6. Y=40 Durante las impresiones (método println()) se accede al valor de las variables mediante p6..println ("p6.y.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS El operador punto (.) se utiliza para acceder a las variables de instancia y los métodos contenidos en un objeto. Y=" + p6. 7.y).nombre_de_método( lista-de-parámetros ). X=30 . incluso si lo hacen de una manera concurrente. Cuando se ejecuta este programa. X=10 . Este es uno de los aspectos más importantes de la diferencia entre la programación orientada a objetos y la programación estructurada. seleccionados a través de otras instancias. almacenar algunos valores en él e imprimir sus valores finales: MiPunto p6 = new MiPunto( 10.1.1.. System.inicia( 30.. Si otros objetos llaman a inicia().println ("p6..out. no se producen efectos laterales.nombre_de_variable_de_instancia referencia_a_objeto. cambiando los valores de las variables de instancia. Un refinamiento habitual es que un constructor llame a otro para construir la instancia correctamente.x.8.y). Y=20 p6. se observa la siguiente salida: p6. Hemos creado un ejemplo completo que combina los operadores new y punto para crear un objeto MiPunto.y) para terminar de iniciar la instancia: MiPunto() { 139 .x + " . System. 40 ). El valor this se refiere al objeto sobre el que ha sido llamado el método actual.2 La referencia this Java incluye un valor de referencia especial llamado this. mediante su referencia a objeto: referencia_a_objeto. X=" + p6. Si hay dos objetos que utilicen el mismo código. que se utiliza dentro de cualquier método para referirse al objeto actual. cada uno tiene su propio valor único de this. Así por ejemplo x se convertirá en p6. 20 ).5. Cuando se llama al método p6.x + " . Se puede utilizar this siempre que se requiera una referencia a un objeto del tipo de una clase actual.out.inicia(). ya que las variables de instancia sobre las que trabajan son distintas. X=" + p6. Y=" + p6.2. y entre una impresión y otra se llama al método inicia(). lo primero que se hace en el método es sustituir los nombres de los atributos de la clase por las correspondientes variables de instancia del objeto con que se ha llamado.

int y ) { x = x. para asegurar que dicho recurso se libera.6.6.y = y. sale del ámbito de utilización. El sistema de recogida de basura se ejecuta periódicamente. o no es referenciado nuevamente). el espacio de memoria de dinámica que utiliza ha de ser liberado. -1 ).6. La destrucción del objeto 7. // Llama al constructor parametrizado } En Java se permite declarar variables locales.2 La destrucción por defecto: Recogida de basura El intérprete de Java posee un sistema de recogida de basura. Esto se 140 . así como los recursos que poseía.8.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS this( -1. no modificamos la variable de instancia!!! this. ocultando la variable de instancia x: void inicia2( int x. A esta acción se la da el nombre de destrucción del objeto. que por lo general permite que no nos preocupemos de liberar la memoria asignada explícitamente. En Java la destrucción se puede realizar de forma automática o de forma personalizada.8. 7. incluyendo parámetros formales de métodos. entonces x se hubiera referido al parámetro formal.8. No se utilizan x e y como nombres de parámetro para el método inicia. Si lo hubiésemos hecho. // Ojo.1 La destrucción de los objetos Cuando un objeto no va a ser utilizado. En este caso sería acertado el utilizar la finalización explícita. que se solapen con los nombres de las variables de instancia. El recolector de basura será el encargado de liberar una zona de memoria dinámica que había sido reservada mediante el operador new.8. 7. buscando objetos que ya no estén referenciados. permitiendo al programa disponer de todos los recursos posibles. // Modificamos la variable de instancia!!! } Lección 35 7.6. en función de las características del objeto. cuando el objeto ya no va a ser utilizado más durante el programa (por ejemplo. porque ocultarían las variables de instancia x e y reales del ámbito del método.3 La destrucción personalizada: finalize A veces una clase mantiene un recurso que no es de Java como un descriptor de archivo o un tipo de letra del sistema de ventanas.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS hace mediante la destrucción personalizada. y otras clases de utilidad.util: Contiene colecciones de datos y clases.8. facilidades horarias.io: Para la entrada y salida a través de flujos de datos. 141 . java. números y mensajes de una manera independiente a los lenguajes naturales. y ficheros del sistema. mediante la recogida de basura. Para especificar una destrucción personalizada se añade un método a la clase con el nombre finalize: class ClaseFinalizada { ClaseFinalizada() { // Constructor // Reserva del recurso no Java o recurso compartido } protected void finalize() { // Liberación del recurso no Java o recurso compartido } } El intérprete de Java llama al método finalize(). el modelo de eventos.math: Clases para realizar aritmética con la precisión que se desee. A continuación se explicara los paquetes basicos de la API de JAVA. Además. fechas. generación aleatoria de números. se acompaña de una serie de bibliotecas con clases estándar que valen como referencia para todos los programadores en Java. Estas clases se pueden incluir en los programas Java. A este conjunto de paquetes (o bibliotecas) se le conoce como la API de Java (Application Programming Interface). 7.text: Clases e interfaces para manejo de texto. sin temor a fallos de portabilidad. Incluye clases como String o StringBuffer. un sistema similar a los destructores de C++.security: Clases e interfaces para seguridad en Java: Encriptación RSA. y organizadas en paquetes y en un gran árbol de herencia. 7. están bien documentadas (mediante páginas Web).1 Paquetes de utilidades  java. java. si existe cuando vaya a reclamar el espacio de ese objeto. Debe observarse que el método finalize() es de tipo protected void y por lo tanto deberá de sobreescribirse con este mismo tipo.8. aunque algunos de ellos tienen subpaquetes. java.7. java.7 Herramientas De Java Con cada una de las versiones que Sun lanza del JDK..lang: Fundamental para el lenguaje. java.

Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma 4. Construye un arreglo donde incluya un método.accesibility: Da soporte a clases de accesibilidad para personas discapacitadas. aunque esté codificados en distintos lenguajes. para conexión de programas Java con Bases de datos. java. SERVLETS. Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm.2 Paquetes para el desarrollo gráfico Para crear applets y clases que las applets utilizan para comunicarse con su contexto. org.rmi: Paquete RMI.applet: Paquete que contiene el JDBC. 7.8. 6.3 Paquetes para el desarrollo en red  java. para localizar objetos remotos. Realice una abstracción jerárquica de su carro donde enuncie el sistema principal y los subsistemas. para conocer el lenguaje de programación JAVA ya que están resueltos solo los puede digitar compilar y ejecutar en la casa o laboratorio de su correspondiente CEAD o CERES. java. java. 4. 5. javax.7.omg. Realice un mapa conceptual con el siguiente tema E/s. Investiga cuales son las herramientas utilizas en java y diga cual es su función. para la conexión entre objetos distribuidos. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley 3.beans: Para el desarrollo de JavaBeans. y para dibujar imágenes y gráficos.9 ACTIVIDADES COMPLEMENTARIAS Parte Uno: 1.sql:  java. 3. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . Escriba los enunciados que ejecuten cada uno de los siguientes: Introduzca el valor en el elemento 4 de un arreglo de punto flotante de un solo subíndice b. comunicarse con ellos e incluso enviar objetos como parámetros de un objeto a otro. 142 .CORBA: Facilita la posibilidad de utilizar OMG CORBA. Parte Dos: Realizar los ejercicos complementarios de Laboratorios de la Guia de Laboratotios y Consultar Bibliografia de Libros Virtual de la Unad y otros Autores 1. Determine e imprima los valores más pequeños y más contenidos en un arreglo de punto flotante w de 99 elementos.7.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 7. Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega Ra-Ma 5. 7.awt: Para crear interfaces con el usuario. JSP tm Editorial Pearson Prentice Hall Quinta Edición.swing: Conjunto de componentes gráficos que funcionan igual en todas las plataformas que Java soporta. 2. 2.8. javax.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 143 .

nos permite definir nuevas clases derivadas de otra ya existente. Herencia 8. Dichas interrelaciones. que se puede mostrar mediante un árbol de herencia. 8.2 Jerarquía La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. al permitir descomponer un problema de cierta magnitud en un conjunto de problemas menores subordinados del primero. Las personas percibimos la realidad como un conjunto de objetos interrelacionados.3 Herencia múltiple 144 . puede ser muy útil para el desarrollo de programas informáticos. La capacidad de descomponer un problema o concepto en un conjunto de objetos relacionados entre sí. Así. los defensores de la programación orientada a objetos afirman que esta técnica se adecua mejor al funcionamiento del cerebro humano. pueden verse como un conjunto de abstracciones y generalizaciones que se han ido asimilando desde la niñez. En Java. además de crear los suyos propios. que la especializan de alguna manera. En todo lenguaje orientado a objetos existe una jerarquía. una clase padre o superclase sobre otras clases hijas o subclases. y cuyo comportamiento es fácilmente identificable. Los descendientes de una clase heredan todas las variables y métodos que sus ascendientes hayan especificado como heredables. Relaciona las clases de manera jerárquica. el punto más alto de la jerarquía es la clase Object de la cual derivan todas las demás clases. mediante la que las clases se relacionan en términos de herencia. 8.1 La Herencia La verdadera potencia de la programación orientada a objetos radica en su capacidad para reflejar la abstracción que el cerebro humano realiza automáticamente durante el proceso de aprendizaje y el proceso de análisis de información. Así logramos definir una jerarquía de clases. La característica de herencia.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Lección 36 CAPITULO 8.

Lección 37 8. que estudiaremos más adelante. simple y múltiple. MiPunto3D( ) { x = 0. como en el siguiente ejemplo: public class SubClase extends SuperClase { // Contenido de la clase } Por ejemplo.5 Limitaciones en la herencia Todos los campos y métodos de una clase son siempre accesibles para el código de la misma clase.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS En la orientación a objetos. se usa el término extends. En el caso de la primera. // Heredado de MiPunto y = 0. Para el segundo tipo. 145 . se consideran dos tipos de herencia. y para controlar la herencia por las subclase. hija de la clase ya mostrada MiPunto: class MiPunto3D extends MiPunto { int z. una clase sólo puede derivar de una única superclase. una clase puede descender de varias superclases. // Nuevo atributo } } La palabra clave extends se utiliza para decir que deseamos crear una subclase de la clase que es nombrada a continuación. private: Los miembros declarados private son accesibles sólo en la propia clase. si bien se compensa de cierta manera la inexistencia de herencia múltiple con un concepto denominado interface. Para controlar el acceso desde otras clases.4 Declaración Para indicar que una clase deriva de otra. en nuestro caso MiPunto3D es hija de MiPunto. heredando sus propiedades (métodos y atributos). creamos una clase MiPunto3D. 8. // Heredado de MiPunto z = 0. para una mayor sencillez del lenguaje. y son heredados por las subclases. los miembros (atributos y métodos) de las clases tienen tres modificadores posibles de control de acceso: public: Los miembros declarados public son accesibles en cualquier lugar en que sea accesible la clase. En Java sólo se dispone de herencia simple.

ni su edad (sería una indiscreción. } private int getSaldo() { return dineroDisponible. ¿no?). nacidoHace. hereda los tres atributos (numeroFavorito. 146 . } } class Hija extends Padre { // Definición } class Visita { // Definición } En este ejemplo. y podrá invocarlos. } protected int getEdad() { return nacidoHace. un objeto de la clase Hija. Cuando se llame al método getEdad() de un objeto de la clase Hija. y no de uno de la clase Padre. se devolverá el valor de la variable de instancia nacidoHace de ese objeto. // Métodos public int getApuesta() { return numeroFavorito. getEdad() y getSaldo() ) de la clase Padre. con lo que se evita que el Hijo conozca el estado de la cuenta corriente de un Padre. nacidoHace y dineroDisponible) y los tres métodos (getApuesta(). Sin embargo. para averiguar el número favorito de un Padre. La clase Visita. dineroDisponible. pero de ninguna manera podrá conocer ni su saldo. solo podrá acceder al método getApuesta(). no podrá invocar al método getSaldo() de un objeto de la clase Padre. un objeto de la clase Hija.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS protected: Los miembros declarados protected son accesibles sólo para sus subclases Por ejemplo: class Padre { // Hereda de Object // Atributos private int numeroFavorito.

} public 147 . que el objeto desde el que se llama al método. protected Object clone() throws CloneNotSupportedException: Devuelve una copia de ese objeto. system. public final Class getClass(): Devuelve el objeto concreto.6. E/S caracteres Organización del código Utilización de Sentencias en Java Sentencias de selección Sentencias de repetición Principios de los applets Lección 38 8. Si se desean comparar dos referencias a objeto se pueden utilizar los operadores de comparación == y !=. que representa la clase de ese objeto. de tipo Class. j.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 8. class A { int i. que hereda todas las variables de instancia y los métodos definidos por a superclase y que añade sus propios elementos. Si al definir una nueva clase.out. dos objetos. public int hashCode(): Devuelve un código hash para ese objeto.1. Subclase Es una versión especializada de una superclase.7. en valor.println (“i y j:”+i+” “+j). protected void finalize() throws Trowable: Realiza acciones durante la recogida de basura.7. directa o indirectamente de ella.1 Composición De Objetos Extendido 8. no aparece la cláusula extends. La clase Object aporta una serie de funciones básicas comunes a todas las clases: boolean equals( Object obj ): Se utiliza para comparar.1.7 Extensión De Clases 8. para poder almacenarlo en una Hashtable. Java considera que dicha clase desciende directamente de Object. Devuelve true si el objeto que recibe por parámetro es igual. void showij(). Todas las clases derivan. en valor. La clase Object La clase Object es la superclase de todas las clases da Java. Ejemplo: Este ejemplo crea una superclase llamada A y una subclase B entonces tenemos: // ejemplo de herencia // crea una superclase.

out. SuperOb. //La superclase se puede usarse así misma.8 K: 9 Suma de i. SuperOb. System. { System. subOb.out. SuperOb. B superOb = new b (). } } La salida de este programa debe ser la siguiente. j y k en subOb: “).println(“k: “+k).sum ( ).out.k = 9. System.2 Relación de tipo de herencia 148 .out. /* la subclase tiene acceso a todos los miembros públicos de la superclase. SuperOb. SuperOb. SuperOb.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS } // crea una subclase extendiendo la clase A class B extendí a { int k.j = 8.out.println (“i+ j+k: “ +(i+j+k)).j = 20.out.println ( “ suma de i.println ( ).i = 7.{ system. System.println (“Contenido de SubOb: ”).showk ( ). System. Contenido de la superOb: I y j: 10 . } void sum().20 Contenido de la subOb: I y j: 7.7.out.showij ( ). SuperOb.println (“Contenido de SuperOb: ”). void show ().*/ SuperOb.showij(). j y k en subOb: I+j+k: 24 8. } } class SimpleInheritance { public static void main (string args[ ]){ A superOb = new A (). System.println().i = 10.

Ejemplo Public class fecha { Int ahora.loadLibrary(“time”). cuando depende de un solo padre y múltiple cuando hereda de varios padres.1 Métodos Forma general de un método: Tipo nombre_de_método(lista_de_parámetros) { //cuerpo_del_método } Aquí. Puede ser cualquier tipo válido. Lección 39 8. entonces la lista de parámetros estará vacía. } private native int time(). Si el método no tiene parámetros. Los métodos que devuelven un tipo distinto de void. static{ system.7. Para definir como funciones C o C++ se utiliza la palabra clave native. se necesitan ejecutar los pasos para poder integrar el código C oC++: Utilizar javah para crear un fichero de cabecera (. Si el método no devuelve ningún valor.h) Utilizar javah para crear un fichero de stubs. Return valor. es decir.2. tipo especifica el tipo de dato devuelto por el método. Java proporciona un mecanismo para la llamada a funciones C y C++ desde nuestro código fuente java. } } una vez escrito el código Java. incluidos los tipos de clase. el tipo devuelto debe ser void.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Existen 2 tipos de herencia simple.. contiene la declaración de las funciones. El nombre del método puede ser cualquier identificador válido distinto de los ya utilizados por otros elementos del ámbito actual. devuelve un valor a la rutina llamante utilizando la siguiente forma de la sentencia return. Public fecha() { Ahora =time(). 149 . La lista de parámetros son variables que reciben el valor de los argumentos que se pasan al método.

al invocar un método sobrecargado. Return a*a. ob.out.20).println (“a: “+a).out. es decir. } // Sobrecarga el método test con un parámetro con dos parámetros //enteros. 150 .println (“ Sin parámetros”). System. ob.so en UniX) Ejecutar la aplicación con el appletviwer Lección 40 8.test ( 10. result = ob.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Escribir el código del método nativo en C o C++. double result.7. Ejemplo: // Ejemplo de sobrecarga de métodos class overloadDemo void test() { System.out.test (10 ). } // sobrecarga del método test con un parámetro double double test(double a) { System. } //Sobrecarga del método test con un parámetro enteros. Void test (int a. completando el trabajo de javah al crear el fichero de stubus Compilar el fichero de stubs y el fichero .2 ).println (“a double: “ +a).println (“a y b: “ +a+” ” + b).2 Sobrecarga De Método Java utiliza la sobrecarga de métodos para implementar polimorfismos. // llama a todas las versiones de test ( ) ob. int b) { System. rellenar el código de la función.test ( ).2. } } class overload { public static void main (string args[ ]) { overloadDemo ob=new overloadDemo( ).out.test (123 . java utiliza el número de argumentos para determinar la versión del método sobrecargado el cual debe llamar.c en una librería de carga dinámica(DLL en Windows ’95 o lobXX.

teniendo en cuenta que las matrices se implementan como las clases una variable de tipo object puede referenciar a una matriz.test(123 . Void finalize ( ): llamada que se realiza antes de que un objeto se reciclado Class get (): obtiene en tiempo de ejecución la clase de un tiempo Int hashCode: Devuelve el código hash asociado al objeto llamante. Out. Println (“Resultado de ob.2 Resultado de ob. 151 . esta clase es la superclase de las demás clases. donde esta clase puede referenciar a un objeto de otra clase.2 Clase object y códigos genéricos: La clase object es definida por java.test(123.2): “ + result). } } EL PROGRAMA GENERA LA SIGUIENTE SALIDA Sin parámetros a : 10 a y b: 10 20 a double: 123 . La clase object define los siguientes métodos: Object clone ( ): crea un nuevo objeto igual al que está siendo duplicado Bolean equeal(object objeto): determina si un objeto es igual a otro.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS system.2): 15178.

que funciona con Java (tiene una VM) interpreta el Bytecode y despliega el applet . este documento tienen una etiqueta app que identifica la referencia a un applet El bytecode (obtenido por compilación de código java) del applet se transfiere al cliente.2 HTML para Java HTML es una forma de definir la organización lógica de la información que a través de enlaces.3 Protocolos Para Trabajo En La Red Un protocolo es un lenguaje que se usa para ejecutar tareas muy específicas. Intranet es una red al interior de una empresa 152 . donde el usuario puede elegir distintos caminos a través de los enlaces.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS CAPITULO 9. Internet es un conexión de varias redes a través de las cuales podemos comunicarnos para obtener información. Cuando un usuario solicita un applet construido con java ocurre: El usuario solicita un documento HTML al servidor de información.1. Este protocolo se denomina TPC/IP. escuchar música o ver videos.1. 9..1 Applets Programas elementales incluidos en páginas HTML a través de la etiqueta app y que se despliega en el visualizador tras cargarse la página. El elemento que define un documento con hipertexto es que se puede leer de una forma no lineal. llamados enlaces de hipertexto e hiperenlaces. Extensión de Clases Lección 41 9. Applest Y Web 9. establecer comunicaciones con otras personas. La única conexión que tiene HTML con java es que proporcional la etiqueta applet que permite ejecutar applest. Por lo tanto. el enlace hipertexto es un enlace a otro documento con hipertexto que puede estar en la máquina local de cualquier otra parte de la red. hacer publicidad. pudiendo acceder a otros documentos relacionados. etc.1. es imposible introducir instrucciones de java en un documento HTML para hacer que se ejecute una applet. El visualizador del cliente. hacer reservaciones en hoteles. El servidor envía el documento al visualizador del cliente. leer noticias.1. Por ejemplo el protocolo para conectar un cliente con un servidor a través de Internet. Como código del applet contiene toda la información necesaria. negocios. enviar y recibir datos. 9. el usuario tiene una interacción total con el applet sin relacionarse de nuevo con el servidor. permite acceder a otra información relacionada.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

para establecer una comunicación entre todos los departamentos u oficinas dentro de una empresa. Script ejecutable: es un archivo ejecutable que se crea para poder ejecutar una applet en Internet. Lección 42 9.1.4 Que Es Un Applet Los applets (miniaplicación) son programas escritos en Java que sirven para "dar vida" a las páginas Web (interacción en tiempo real, inclusión de animaciones, sonidos...), de ahí su potencia. Los applets son programas que se incluyen en las páginas Web y son ejecutados en la máquina cliente, con lo que no existen ralentizaciones por la saturación del módem o del ancho de banda. Permiten cargar a través de la red una aplicación portable que se ejecuta en el navegador. Para que esto ocurra tan sólo hace falta que el navegador sea capaz de interpretar Java. A las páginas que contienen applets se las denomina páginas Java-Powered. Los applets pueden ser visualizadas con la herramienta appletviewer, incluido en el JDK de Java. Los applets no son exactamente aplicaciones Java, ya que presentan las siguientes diferencias respecto a las aplicaciones normales Java: Se cargan mediante un navegador, no siendo lanzados por el intérprete Java. Son cargados a través de la red por medio de páginas HTML y no residen en el disco duro de la máquina que los ejecuta. Poseen un ciclo de vida diferente; mientras que una aplicación se lanza una vez, un applet se arranca (inicia) cada vez que el usuario recarga la página en la que se encuentra la applet. Tienen menos derechos que una aplicación clásica, por razones de seguridad. De modo predeterminado en el puesto que los ejecuta no pueden ni leer ni escribir ficheros, ni lanzar programas, ni cargar DLLs. Sólo pueden comunicarse con el servidor Web en que se encuentra la página Web que las contiene. 9.1.4.1 Consideraciones sobre la seguridad en las applets Los applets tienen una serie de restricciones de programación que los hacen "seguros". Estas restricciones de seguridad son especialmente importantes, ya que evitarán que se cargue por error un applet que destruya datos de la máquina, que obtenga información restringida, o que produzca otros daños inesperados. Los applets no dejan de ser "ejecutables" que funcionan dentro de una aplicación, como puede ser un visualizador de páginas Web (browser). Este ejecutable puede

153

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

obtenerse de una red, lo que significa que hay código posiblemente no fiable que se ejecuta dentro de la aplicación. Java tiene muchas salvaguardas de seguridad que minimizan el riesgo de la ejecución de applets, pero estas salvaguardas también limitan a los programadores de applets en su capacidad de programación. El modelo de seguridad para las applets en Java trata una applet como código no fiable ejecutándose dentro de un entorno fiable. Por ejemplo, cuando un usuario instala una copia de un navegador Web en una máquina se está fiando de que su código será funcional en el entorno. Normalmente los usuarios tienen cuidado de qué instalan cuando proviene de una red. Una applet, por el contrario, se carga desde la red sin ninguna comprobación de su fiabilidad. El lenguaje Java y los applets son escritos para que eviten los applets no fiables. Estas salvaguardas son implementadas para verificar que los códigos de byte de las clases de los applets, no rompen las reglas básicas del lenguaje ni las restricciones de acceso en tiempo de ejecución. Sólo cuando estas restricciones son satisfechas se le permite al applet ejecutar su código. Cuando se ejecuta, se le marca para señalar que se encuentra dentro del intérprete. Esta marca permite a las clases de tiempo de ejecución determinar cuándo a una fracción del código se le permite invocar a cierto método. Por ejemplo, una applet está restringida en los hosts en los que se puede abrir una conexión de red o en un conjunto de URLs a las que puede acceder. En su conjunto estas restricciones constituyen una política de seguridad. En el futuro, Java tendrá políticas más ricas, incluyendo algunas que usen encriptación y autentificación para permitir a las applets una mayor capacidad. La actual política de seguridad afecta a los recursos que una applet puede usar, cuyos principales puntos son: Los accesos que pueden realizar los applets a los ficheros son restringidos. En particular escribir en ficheros y/o leerles no será una capacidad estándar que se pueda realizar en los navegadores que soporten applets de Java. Las conexiones de red serán restringidas a conectar solo con el host del que proviene el applet. Un applet no es capaz de usar ningún método que pueda resultar en una ejecución arbitraria, código no revisado o ambos. Esto incluye métodos que ejecuten programas arbitrarios (métodos nativos) así como la carga de bibliotecas dinámicas. Se anticipa en cualquier caso que en el futuro los modelos de seguridad permitirán a los applets autentificadas superar estas restricciones. 9.1.5 La Clase Applet 9.1.5.1 Situación de la clase Applet en la API de Java

154

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS

La clase Applet Java, de la cual han de heredar todos los programas Java que vayan a actuar como applets, es la única clase que contiene el paquete java.applet de la API de Java. Esta clase hereda de Object (como todas las clases Java), pero además hereda de Component y Container, que son dos clases del paquete gráfico AWT. Esto ya perfila las posibilidades gráficas de este tipo de aplicaciones Java. 9.1.5.2 Métodos del ciclo de vida Como ya se ha indicado una applet no tiene un ciclo de vida tan "sencillo" como el de una aplicación, que simplemente se ejecuta hasta que finaliza su método main(). La siguiente figura modela el ciclo de vida de una applet:

Cada círculo representa una fase en el ciclo de vida de la applet. Las flechas representan transiciones y el texto representa la acción que causa la transición. Cada fase está marcada con una invocación a un método de la applet: void init(); Es invocado cuando se carga la applet. Aquí se suelen introducir las iniciaciones que la applet necesite. void start();Es invocado cuando la applet, después de haber sido cargada, ha sido parada (cambio de página Web, minimización del navegador,...), y de nuevo activada (vuelta a la página, restauración del navegador,...). Se informa a la applet de que tiene que empezar su funcionamiento. void stop(); Es invocado para informar al applet de que debe de parar su ejecución. Así una applet que utilice threads, debería detenerlos en el código de este método. void destroy();Es invocado para informar a la applet de que su espacio está siendo solicitado por el sistema, es decir el usuario abandona el navegador. El applet debe de aprovechar este momento para liberar o destruir los recursos que está utilizando.

155

entonces el applet se detiene invocando a su método stop(). Podemos especificar un URL de manera absoluta: URL URLabsoluto = new URL("http://www.net..host.htm").6 La Clase Url Un URL (Uniform Resource Locator) es una dirección de Internet. y tiene una cierta importancia en el desarrollo de los applets.. se está cargando: 1.) tiene uno propio. puesto que muchos de los métodos de la clase Applet la utilizan para acceder a determinado recurso de Internet o para identificarse.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS void paint(). La clase URL pertenece al paquete java.htm". imagen. debe incluirse entre el código HTML de la página Web una etiqueta <APPLET>.. mediante el método destroy().. mediante su método init(). Si el usuario retorna a la página donde reside el applet. Ambos ejemplos corresponderían al URL "http://www. El applet empieza a ejecutarse. que como mínimo ha de presentar los siguientes tres parámetros: code: Especifica el URL del fichero de clase Java (*. Cuando el usuario sale del navegador el applet tiene un tiempo para finalizar su ejecución y hacer una limpieza final. 9. página Web. 156 . Una instancia de la clase applet es creada. 3. una vez compilada la applet. Cuando un navegador carga una página Web que contiene una applet. O bien podemos especificar un URL de manera relativa: URL URLhost = new URL("http://www. 2. heigth: Especifica la altura inicial de la applet (en pixels). El applet es iniciado...com/"). En Java existe una clase denominada URL que modeliza esta clase de objetos. 9. mediante su método start().Javasoft. Es invocado cada vez que hay que el navegador redibuja el applet.host. ésta vuelve a ejecutarse nuevamente invocando a su método start(). width: Especifica la anchura inicial de la applet (en pixels).com/dir/fich. De hecho habrá applets que no los necesiten.1. "dir/fich. suele mostrar en su parte inferior un mensaje como: initializing.class) que contiene la applet.1. Al crear una applet no es necesario implementar todos estos métodos. que contiene una applet y salta a otra página. URL URLrelativo = new URL( URLhost. Cada recurso (fichero.htm").7 Inclusión de la applet en una página Web Para incluir una applet en una página Web.com/dir/fich. starting. Cuando el usuario se encuentra con una página Web. Esto indica que la applet.

Esto sucede porque HTML es un lenguaje pareado. 9.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Además.1 Obtención de los parámetros de la applet Cuando se incluye una applet en una página Web ha de hacerse mediante la etiqueta HTML <applet>. y la etiqueta <applet> hace lo propio. que como mínimo han de presentar dos parámetros: name: Indica el nombre del parámetro de la applet al que esta etiqueta hace referencia. permitiendo a la applet recibir parámetros de ejecución.1. y obtendría Valor1 y Valor2 respectivamente. mediante los métodos que se describen en el siguiente apartado. 157 . Si por ejemplo se llamase a una applet.7. Se observa que además de la etiqueta <applet> en el código HTML también aparece una etiqueta </applet>.K VKVKKLBKK KV KKLVLV.URL getCodeBase(). en el que casi todas las etiquetas de inicio de elemento (<etiq>) tienen una etiqueta de fin (</etiq>). Devuelve el valor de un parámetro (etiquetas <param>) que aparezca en el documento HTML. tal y como una aplicación los recibe en el parámetro (un vector de cadenas) de su método main(Strings). value: Establece este valor al parámetro indicado en name de la misma etiqueta. Las etiquetas HTML permiten utilizar parámetros. Devuelve el URL del documento que contiene la apple´. de la etiqueta inicial. Así un ejemplo de esto sería: <applet code="AppletDiagonal. una applet puede tener parámetros que se especificarán mediante etiquetas <PARAM>.class" width=200 height=200> <param name=Parametro1 value=Valor1> <param name=Parametro2 value=Valor2> </applet> En este ejemplo la applet puede entender los parámetros Parametro1 y Parametro2. con el código HTML: <applet code="AppletParam. Los siguientes métodos se utilizan para extraer información de los parámetros que recibió el applet cuando fue llamado desde el código HTML: URL getDocumentBase(). Devuelve el URL de la applet. String getParameter(String name).class" width=50 height=50> <param name=Color value="red"> </applet> Una llamada en esta applet al método getParameter("Color") devolverá "red".

Devuelve el Locale de la applet si fue establecido. Devuelve información relativa a la applet como el autor. También permite recibir un único parámetro Dimension. comentario}.applet.1 Código Para crear un applet normalmente será necesario importar al menos las bibliotecas java. String getAppletInfo().awt. void resize( int ancho. Comprueba si la applet está activa. Copyright o versión. 158 . tipo. Locale getLocale(). Para ello se utilizan los métodos: AppletContext getAppletContext()."foreground color"} }. int largo).1. void showStatus(String status). return info. Devuelve un AppletContext. Un ejemplo de como definir este método para una applet que permita un solo parámetro.1. Establece el stub de esta applet. Solicita que se modifique el tamaño de la applet."String". Devuelve un vector que describe algún parámetro específico de la applet. que permite a la applet afectar a su entorno de ejecución.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS 9.1.*. Siempre conviene sobreescribir al menos el método paint() que será llamado por los navegadores que soporten applets para mostrarles por pantalla.3 Manipulación del entorno de una applet Algunas applets pueden afectar al entorno en que están ejecutándose. String[ ][ ] getParameterInfo().1. 9. } 9. color. sería: public String[][] getParameterInfo() { String info[][] = { {"Color".8 Ejemplo De Construcción De Una Applet 9.8.7. Cada elemento en el vector es un vector de tres cadenas que tienen la forma: {nombre. Muestra una cadena del estado en la pantalla.7. void setStub( AppletStub s ). para poder sobreescribir los métodos de la clase Applet.* y la java.2 Obtención de información sobre una applet Algunos métodos de los applet se utilizan para comunicar información o mostrar mensajes en la pantalla referentes al applet: boolean isActive(). La clase que represente a la applet se ha de declarar como una subclase de la clase Applet.

8. Mediante el método setColor() de la clase Graphics se establece el color de primer plano a rojo. mediante drawLine() se dibuja una línea dadas las coordenadas de su esquina superior izquierda y de la inferior derecha.2 Ejecución Para ejecutar el applet. La clase Graphics. getWidth().htm). que es uno de los colores predefinidos de la clase Color.1. introduciendo entre su código HTML lo siguiente: <applet code="AppletDiagonal.class" width=200 height=200> </applet> Cuando se cargue esta página Web en un navegador compatible con Java o mediante el visualizador de applets que viene con el JDK (appletviewer) se verá algo como: 159 . y la esquina inferior derecha se obtiene mediante dos métodos de la clase Dimension (getWidth().*.drawLine(0. Por último. getHeight() ) .UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Vamos a construir un applet denominada AppletDiagonal que simplemente dibuje una línea diagonal.applet. g. import java. incluida en el AWT.0).awt. se introduce el llamado al applet en una página Web (por ejemplo AppletDiagonal. getHeight() ).red ). 0. una vez compilado el archivo. public class AppletDiagonal extends Applet { public void paint(Graphics g) { g. } } Como funciona este código: El método paint() recibe un objeto de la clase Graphics. contiene métodos para mostrar varios tipos de gráficos.*. En este caso se indican la esquina superior izquierda de la applet mediante las coordenadas (0. Un posible código para este applet sería: import java.setColor( Color. 9.

10. Agustin Froute Java 2 Manual Usuario tutorial 3 160 . 9. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley 3. Diseñe un applet donde actualice los colores del primer plano y del fondo y que escriba un texto de 5 renglones. 2.width –20. r. ¿cual es la función principal de los métodos en la programación java? 5. Investigar más sobre anidado de clases y reflexiona sobre cual es la función importante en java. 9. Realiza un mapa conceptual sobre las clases que se manejan en java 2. ¿Cual es la función principal de los protocolos para el trabajo en red? 7.drawRect(10. Parte Uno: Realizar los ejercicos complementarios de Laboratorios de la Guia de Laboratotios y Consultar Bibliografia de Libros Virtual de la Unad y otros Autores 1. ¿Como se controlan las applets? 11. ¿Cuál es la importancia de los códigos genéricos en java? 6. Cuales son las ventajas para utilizar redes a nivel de comunicaciones 8. Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm. ¿Cual es la estructura de una applet? 10. Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma 4. 12. JSP tm Editorial Pearson Prentice Hall Quinta Edición. ¿Dónde se inicia la ejecución de una applet? Explique su respuesta con un ejemplo. ¿Que es una subclase y cual es su función? 4. r.height –20). 3.2 ACTIVIDADES COMPLEMETARIAS Parte Uno: 1. Haga una lista con los protocolos más importantes a nivel de comunicaciones. SERVLETS.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Se podría dibujar un rectángulo con cambiar la línea de código de drawLine() por otra que llamase al método drawRect(): g.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS Edición Editorial Alfaomega Ra-Ma 5. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . 161 . para conocer el lenguaje de programación JAVA ya que están resueltos solo los puede digitar compilar y ejecutar en la casa o laboratorio de su correspondiente CEAD o CERES.

1. BIBLIOGRAFIA  Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC tm. Programación Orientada a Objetos con C++.000.. 2000..Editorial Alfaomega. B. SITIOS WEB 162 . C. Meyer.UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS CAPITULO 10.1. Editorial Prentice Hall. T. Programación JAVA en Linux. L. Mc Graw Hill. para conocer el lenguaje de programación JAVA  Arnow. D. Introducción Orientada a Objetos. Mc Graw Hill. Herbert shildt Fundamentos de Programación Java 2 Editorial Mc Graw Hill . L. 1. Joyanes. Larman. David Arnow Gerald Weiss Introducción a la Programación con Java tm Actualización a la Versión 2 de Java Editorial Addison Wesley Fcd Javier Ceballos Java 2 Curso de Programación 2 Edición Editorial Alfaomega Ra-Ma Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega RaMa 5.2.993 Fco Javier Ceballos. C++ a su alcance un enfoque orientada a objetos. Construcción de software orientado a objetos. Weiss. Mc Graw Hill. Cesar Becerra Santamaría. 2. 2000.. UML y patrones. G. Editorial Mc Graw Hill. 1994 Joyanes.. C++ Una Herramienta para la Programación Orientada a Objetos. Prentice Hall. 1994. Editorial. 1997. Segunda edición. Prentice Hall... Editorial Mc Graw Hill. Introducción a la programación orientada a objetos con Java.                        10. Introducción a la programación con JAVA. Wu. JSP tm Editorial Pearson Prentice Hall Quinta Edición.998 Nathan Meyers. segunda edición. Grez Voss. BIBLIOGRAFIA 10. Addison wesley.. 1998. Programación orientada a objetos. 1998. SERVLETS.

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS www.sun.mx/~jlabreu/CursoJava/ http://www.cl/~mvaras/estprog/cap44.programacion.cimat.mindview.com/java/tutoriales/ http://www.com http://www.lawebdelprogramador.html 163 .udec.com www.com/docs/books/tutorial/ http://programacion.inf.net/Books/TIJ http://java.