Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
iii
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
iv
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
v
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
vi
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
vii
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
viii
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
1
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 2
1.3. Cada objeto tiene un conjunto de características o atributos que lo hacen
diferente a los demás.
Por ejemplo una planta difiere notablemente de un animal y de un edificio. Cada uno
de ellos presentan características y comportamientos muy diferentes, mas aun
aunque dos objetos sean exactamente iguales, son distintos entre si, por ejemplo dos
carros recién salidos de la fabrica, que tienen la misma marca, el mismo modelo, la
misma línea, las mismas características, son dos objetos distintos pues cada uno
tiene una identificación diferente, aunque pertenecen a la misma clase.
1.4. Inicialmente podríamos decir que un objeto es algo que tiene atributos y
comportamientos propios.
Una planta es un ser viviente, vegetal que a primera vista esta construido por hojas,
tallos, frutos, raíz, etc. Además respira por sus hojas, se alimenta por su raíz, elabora
clorofila etc. Son algunas de las características y comportamiento que podemos
percibir superficialmente de una planta.
Un diccionario es un libro especial que contiene un conjunto de palabras y
definiciones, también podemos encontrar en el graficas, tablas, ilustraciones, etc. Y su
utilidad la percibimos cuando necesitamos consultar alguna palabra, leer su
significado, verificar su ortografía, o de pronto investigar sobre algún tema especifico.
Lección 3
1.5. ¿Podríamos hacer la representación de un objeto del mundo real?
2
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?. Quizá nos sea difícil en los objetos abstractos,
pero de una u otra forma lograríamos hacerlo. Desde el punto de vista computacional
es posible representar lógicamente cualquier objeto del mundo real.
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.
ESTRUCTURA DE
DATOS
ESTRUCTURA
FUNCIONAL
Lección 4
1.7. Características de datos: Por ejemplo hora, minutos y segundos
3
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 como un tipo abstracto de datos.
Quedaría de la siguiente forma:
ESTRUCTURA DE DATOS
Hora
Minutos
Segundos
ESTRUCTURA FUNCIONAL
Leer hora
Mostrar hora
Sumar hora
Restar hora
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 5
1.9. Que es un mensaje?
En el ejemplo del reloj podemos enviarle un mensaje para que nos muestre la hora:
MENSAJE: “Mostrar hora”, es un mensaje identificable por el objeto por que puede
invocar una operación propia del mismo. MENSAJE: “Mostrar fecha”, resulta
desconocido para el objeto por que no existe ninguna operación asociada a el.
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. A esta puerta de entrada se le
denomina “interfaz de 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
6
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
7
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 6
2.1. Introducción
8
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
La falta de portabilidad del código, su reusabilidad, la modificación (que antes era
difícil de lograr), ciclos de desarrollo largo, técnicas de programación no intuitivas.
9
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.
Si la programación se considera una simulación, 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.
Algunas personas también diferencian la POO sin clases, la cual es llamada a veces
programación basada en objetos.
10
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. Un TAD es un tipo
definido por el programador junto con un conjunto de operaciones que se pueden
realizar sobre ellos. Se denominan abstractos para diferenciarlos de los tipos de datos
fundamentales o básicos.
Lección 7
2.4 Ventajas de POO
Comprensión. Tanto los datos que componen los objetos, como los procedimientos
que los manipulan, están agrupados en clases, que se corresponden con las
estructuras de información que el programa trata.
Flexibilidad. Al tener relacionados los procedimientos que manipulan los datos con
los datos a tratar, cualquier cambio que se realice sobre ellos quedará reflejado
automáticamente en cualquier lugar donde estos datos aparezcan.
Reusabilidad. 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. De esta forma, 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.
Lección 8
2.5. Desventajas de la tecnología orientada a objetos.
11
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Velocidad de ejecución. Esto tiene que ver, en cierto modo, con el punto anterior, 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.
Lección 9
2.6 Evolución de la programación
12
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 10
2.7. Comparación entre la Programación orientada a Objetos y la 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.
13
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Los procesos son la parte central de este modelo pues a partir de estos se manejan
las variantes (datos) que solucionarán el problema.
14
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Dado que un problema macro puede ser dividido en objetos, estos pueden ser
tratados por diferentes personas que luego lo integraran para dar la solución final.
Los datos (estados) son la parte central del modelo y los métodos que los modifican
muestran el comportamiento del objeto.
15
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
El modelo orientado a objetos evita la redundancia en los procesos luego los códigos
son más entendibles y resumidos.
La integridad que dan los objetos a los datos evita ambigüedades en su uso, dando
mayor seguridad en los resultados.
16
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.8 ACTIVIDADES COMPLEMENTARIAS
Pate Uno:
Parte Dos:
17
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
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.
18
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
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
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.
19
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
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.
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.
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
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.
Lección 14
3.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. Por ejemplo, un perro es un
mamífero, y los mamíferos son animales, y los animales seres vivos...
21
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. 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.
Lección 5
3.5 Polimorfismo
22
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
3.6 Herencia
La herencia en la POO permite a una clase heredar las propiedades de una clase de
objetos, donde la clase padre sirve como patrón a la clase derivada. si un objeto
hereda sus atributos de un único padre, esto recibe el nombre de herencia simple, y si
hereda atributos de múltiples padres es herencia múltiple, la ventaja de la herencia es
permitir la reutilización de código.
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.
Utilizando la herencia, un objeto sólo necesita definir aquellas cualidades que lo hacen
único dentro de una clase. Este objeto puede heredar sus atributos generales de su
padre. 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.
Por ejemplo al hacer una descripción de los animales de forma abstracta, se puede
decir que estos tiene atributos tales como: tamaño, inteligencia, y el tipo de esqueleto.
Los animales tienen diferentes clase de comportamiento esta puede ser una definición
de la clase de los animales.
23
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Herencia múltiple: Un objeto puede extender las características de uno o más objetos,
es decir, puede tener varios padres. En este aspecto hay discrepancias entre los
diseñadores de lenguajes. Algunos de ellos han preferido no admitir la herencia
múltiple por las posibles coincidencias en nombres de métodos o datos miembros. Por
ejemplo C++ admite herencia múltiple, Java y Ada sólo herencia simple.
Autoevaluación
3.7 ACTIVIDADES COMPLEMENTARIAS
Parte Uno:
24
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Parte Dos:
25
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
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. Los tipos de objetos se definen en base a la comprensión
del analista de nuestro mundo. Un objeto puede categorizarse de variadas formas.
Es importante modelar la forma como los objetos se asocian entre sí. 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).
Representación para la Asociación entre dos Tipos de Objetos. 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.
26
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 edificio se compone de a lo menos un objeto del tipo piso. A su vez
un objeto del tipo piso se compone de a lo menos un objeto del tipo pasillo, podría
tener varios (o ninguno) objetos del tipo baño y oficina.
Los tipos de objetos están relacionados con otros tipos de objeto. Por ejemplo, un
empleado trabaja en una sucursal, o un cliente realiza un pedido de varios productos.
27
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, y un objeto
del tipo pedido es ordenado por un y sólo un objeto del tipo cliente. Un objeto del tipo
producto está en muchos o ningún objeto del tipo pedido, mientras que un objeto del
tipo pedido tiene al menos un objeto del tipo producto.
Lección 17
4.2 Análisis del comportamiento de objetos 2
Un objeto puede existir en varios estados. Por ejemplo, un objeto reservación aérea
puede ser una instancia de alguno de los siguientes tipos de objeto:
Reservación solicitada,
Reservación en lista de espera,
Reservación confirmada,
Reservación cancelada,
Reservación satisfecha,
Reservación archivada.
Tales tipos de objetos suelen percibirse como estados posibles del ciclo vital de un
objeto. Sin embargo, un objeto puede tener una gran variedad de perspectivas de
ciclos vitales. Por ejemplo, el mismo objeto reservación aérea también puede tener los
siguientes estados relacionados con el pago:
Reservación no liquidada,
Reservación con un pago de depósito,
Reservación totalmente pagada,
28
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.
Así, el estado de un objeto es la colección de asociaciones que tiene un objeto.
4.2.2 Eventos.
El mundo está lleno de eventos: una coneja tiene conejitos, llega el pesado del vecino
en forma inesperada, un cliente solicita un préstamo, el servidor se cae, se termina la
tarea, etc.
El analista no necesita conocer cada evento que ocurra en una organización: sólo los
tipos de eventos.
Los tipos de eventos indican los cambios sencillos en el estado de un objeto; por
ejemplo, cuando se deposita dinero en una cuenta bancaria o se actualiza el sueldo
de un trabajador. Básicamente, los tipos de eventos describen las siguientes formas
de cambios de estado:
Los objetos pueden asociar un objeto con otro. Por ejemplo, en la mayoría de las
organizaciones, cuando un objeto se clasifica como empleado, debe estar asociado
con un departamento. Un evento clasificará al objeto como empleado.
29
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. Por ejemplo, antes de cerrar un
departamento, todos los empleados deben ser asignados a otra parte, las oficinas que
ocupaban deben tener otro uso, etc.
Por ejemplo, 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. Dibujamos la operación como un cuadro
con esquinas redondeadas, puesto que los eventos indican los puntos en el tiempo en
que se da el cambio de estado de un objeto. Los tipos de eventos se representan
como triángulos negros llenos, generalmente unidos a la caja de operación.
Según el área que se modele, puede ocurrir más de un evento al terminar una
operación, y cada uno de estos puede activar operaciones independientes.
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.
30
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.
En esta otra figura, se desarrolla el diagrama anterior para mostrar las operaciones
necesarias.
31
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
4.2.6 Operaciones.
En el análisis OO, una operación se refiere a una unidad de procesamiento que puede
ser solicitada. El procedimiento se implanta mediante un método. El método es la
especificación de cómo llevar a cabo la operación. A nivel de programa, el método es
el código que implanta la operación.
Los eventos son cambios de estado que un sistema debe conocer y reaccionar ante
ellos de algún modo. Muchas de las operaciones que producen estos eventos son
externas al sistema.
Las reglas de activación definen la relación entre la causa y el efecto. Siempre que
ocurra un evento de cierto tipo, la regla de activación invoca a una operación ya
definida.
Un tipo de evento puede tener varias reglas de activación, cada una de las cuales
invoca a su operación en paralelo. Las operaciones paralelas pueden producir
diferentes cambios de estado en forma simultánea.
Una operación puede ser invocada por una o varias reglas de activación. Sin
embargo, antes de invocar de hecho a la operación se puede verificar una condición
de control. Si el resultado de evaluación de la condición es verdadera se invoca su
operación, en otro caso no.
32
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
La operación revisar tarea produce dos eventos: tarea aceptada o tarea rechazada.
Sólo se puede dar uno de estos tipos de evento al revisar una tarea.
33
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, que son los
subtipos. Siempre se entiende que existe una relación de exclusividad entre los
subtipos.
Lección 18
4.3 Diseño de la Estructura y Comportamiento de un Objeto
4.3.1 Objeto
34
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Una instancia de una clase, almacena sus datos dentro de él. Se tiene acceso a los
datos y se les modifica sólo mediante operaciones que son permitidas. Esta
restricción al acceso se debe al encapsulado. El encapsulado protege los datos del
35
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Las clases son declaraciones o abstracciones de objetos, lo que significa, que una
clase es la definición de un objeto. Cuando se programa un objeto y se definen sus
características y funcionalidades, realmente se programa una clase.
4.3.2.1 Componentes
Variables miembro
Las propiedades o atributos que son características de los objetos. Cuando definimos
una propiedad normalmente especificamos su nombre y su tipo. 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.
Habitualmente, 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. Suelen denominarse con
nombres.
Propiedades
Las propiedades son un tipo especial de métodos. Debido a que suele ser común que
las variables miembro sean privadas para controlar el acceso y mantener la
coherencia, surge la necesidad de permitir consultar o modificar su valor mediante
pares de métodos: GetVariable y SetVariable.
36
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, C#, 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, el compilador se encarga de crear el código apropiado que llame
a la cláusula get o set según se necesite.
Lección 19
4.3.3 Diferencia entre operación y método.5
Las operaciones son procesos que se pueden solicitar como unidades. Losmétodos
son especificaciones del procedimiento de una operación dentro de una clase. Es
decir, la operación es el tipo de servicio solicitado y el método es su código de
programación.
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.
Para esto, el método podría obtener el precio de cada artículo del pedido al enviar una
solicitud a los objetos artículo asociados. A su vez, cada objeto artículo regresaría su
precio al método pedido mediante un método de la clase artículo.
Los métodos de una clase controlan solamente a los objetos de esa clase. No pueden
tener acceso directo a las estructuras de datos de un objeto en una clase distinta.
Para utilizar las estructuras de datos en una clase diferente, deben enviar una
solicitud a ese objeto.
37
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 supóngase que existe un tipo de objeto cuenta, que tiene como subtipos
a los tipos de objetos cuenta de cliente y cuenta vencida. A su vez, 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.
Lección 20
4.3.6 Selección del Método.
Cuando se envía una solicitud a un objeto, el software selecciona los métodos por
utilizar. El método no se almacena en el objeto, pues esto causaría una réplica
múltiple y pérdida de espacio. En vez de esto, el método se asocia con la clase. El
método puede no estar en la clase de la que el objeto es una instancia, sino en una
superclase.
De esta forma, los usuarios sólo deben especificar lo que se debe hacer, dejando que
sea el mecanismo de selección el que determine la forma de localizar la operación y la
ejecute. El mecanismo de selección deja en manos de la aplicación OO el problema
de localizar la operación y la ejecute.
4.3.7 Polimorfismo
Uno de los objetivos principales de las técnicas OO es utilizar otra vez el código.
38
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
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. Estos detalles de la
implantación quedan ocultos para el usuario; la responsabilidad descansa en el
mecanismo de selección de la implantación OO.
4.3.8 Notación.
class Nombre_de_la_clase
{
datos y funciones privados
public:
datos y funciones publicas
}
lista de objetos;
La sintaxis típica de una clase es:
class Nombre
{
// Variables miembro (habitualmente privadas)
39
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
4.4 ACTIVIDADES COMPLEMENTARIAS
Parte Uno:
1. Crear el siguiente objeto de la figura:
Parte Dos:
40
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
41
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. FUNDAMENTOS DE JAVA
5.1 Introducción
A finales del siglo XX, Java llegó a ser el lenguaje de mayor acogida para programas
de servidor. Utilizando una tecnología llamada JSP (basada en ASP de Microsoft), se
hizó muy fácil escribir páginas dinámicas para sitios de Internet. Sumado a esto, la
tecnología de JavaBeans, al incorporarse con JSP, permitía utilizar el patrón MVC
(Modelo-Vista-Controlador) que ya tanto se había aplicado a interfaces gráficas.
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, 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. Con este nuevo estándar, empresas
como BEA, IBM, Sun Microsystems, Oracle y otros crearon nuevos "servidores de
aplicaciones" que tuvieron gran acogida en el mercado.
42
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Microsystems, líder en servidores para Internet, 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).
Es quien ha desarrollado el lenguaje Java, 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, tanto entre las diferentes máquinas como
entre los diversos sistemas operativos y sistemas de ventanas que funcionaban sobre
una misma máquina, añadiendo la dificultad de crear aplicaciones distribuidas en una
red como Internet.
El mercado inicialmente previsto para los programas de FirstPerson eran los equipos
domésticos: microondas, tostadoras y, fundamentalmente, televisión interactiva. Este
mercado, dada la falta de pericia de los usuarios para el manejo de estos dispositivos,
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, como C o C++, deben ser compilados para un chip, y si se
cambia el chip, todo el software debe compilarse de nuevo. Esto encarece mucho los
desarrollos y el problema es especialmente acusado en el campo de la electrónica de
consumo. La aparición de un chip más barato y, generalmente, más eficiente,
conduce inmediatamente a los fabricantes a incluirlo en las nuevas series de sus
cadenas de producción, por pequeña que sea la diferencia en precio ya que,
multiplicada por la tirada masiva de los aparatos, supone un ahorro considerable. Por
tanto, Gosling decidió mejorar las características de Oak y utilizarlo.
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. Para ello se construyó un ordenador experimental denominado
*7 (Star Seven). 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. En el sistema aparecía Duke, la actual mascota de Java.
43
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
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.
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.
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
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 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.
46
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
El código anterior se guarda en un fichero texto cuya extensión es .java (Aplicación
Escencial. java).
Este se compila llamando a javac. El resultado de esta compilación es un fichero con
el nombre de la clase contenida y la extensión .class (AplicacionEsencial.class). El
nombre del fichero fuente (.java podrá ser cualquiera pero dado que el resultado de la
compilación adquiere el nombre de la clase contenida en el mismo, es buena practica
el llamar al fichero fuente con el mismo nombre.
El fichero obtenido puede ser llamado como argumento del interprete para su
ejecución:
$ javac AplicacionEsencial.java
$ java AplicacionEsencial.class
Hola Mundo
$
_ Comentarios: desde "/*" hasta que aparece "*/", son ignorados por el compilador.
_ 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.
_ La línea: "Public static void main (String args[]) {" da comienzo al método main, las
palabras clave que anteceden al nombre indican formas especificas para este y su
explicación se hará a posteriori.
_ 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. Esta
47
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, pero todos los métodos main han de
declarar tal lista, ya que representa la teórica línea de comandos que podría
acompañar a la llamada a la clase:
_ Entre las llaves de apertura y cierre se encuentra en cuerpo del método o lista de
sentencias que le implementan, en nuestro caso una única llamada al método println.
Los métodos en java le dan mucho poder y flexibilidad debido a su gran utilidad.
METODO DESCRIPCIÓN
El incluyen parámetros por valor 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, int b){
Return x+b }
48
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; a = a/10; }
Return f; }
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.
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. Java tiene un conjunto
de palabras clave más rico que C o que C++, por lo que sí está aprendiendo Java con
conocimientos de C o C++, asegúrese de que presta atención a las palabras clave de
Java.
Lección 22
5.3.2 Tipos de datos y declaraciones
49
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.
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. La sintaxis de
declaración de variables es la siguiente:
Esta sentencia indica al compilador que reserve memoria para dos variables del tipo
simple TipoSimple con nombres Identificador1 e Identificador2. Los tipos de datos en
Java pueden dividirse en dos categorías: simples y compuestos. Los simples son tipos
nucleares que no se derivan de otros tipos, como los enteros, de coma flotante,
booleanos y de carácter. Los tipos compuestos se basan en los tipos simples, e
incluyen las cadenas, las matrices y tanto las clases como las interfaces, en general.
Cada tipo de datos simple soporta un conjunto de literales que le pueden ser
asignados, para darles valor. En este apartado se explican los tipos de datos simples
(o primitivos) que presenta Java, así como los literales que soporta (sintaxis de los
valores que se les puede asignar).
Se usan para representar números enteros con signo. Hay cuatro tipos: byte, short, int
y long.
Tipo Tamaño
Literales enteros
50
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, un literal entero para el número decimal 12 se representa en Java como
12 en decimal, como 0xC en hexadecimal, y como 014 en octal.
Los literales enteros se almacenan por defecto en el tipo int, (4 bytes con signo), o si
se trabaja con números muy grandes, con el tipo long, (8 bytes con signo), añadiendo
una L ó l al final del número.
Se usan para representar números con partes fraccionarias. Hay dos tipos de coma
flotante: float y double. 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.
Tipo Tamaño
Float 4 Byte (32 bits)
Doublé 8 Bytes (64 bits)
De forma predeterminada son del tipo double (8 bytes). Existe la opción de usar un
tipo más corto (el tipo float de 4 bytes), especificándolo con una F ó f al final del
número.
Se realiza un moldeado a temperatura, porque todos los literales con decimales por
defecto se consideran double.
51
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, que serán
representados por los valores true y false. Representan valores bi-estado,
provenientes del denominado álgebra de Boole.
Literales Booleanos
Java utiliza dos palabras clave para los estados: true (para verdadero) y false
(para falso). Este tipo de literales es nuevo respecto a C/C++, lenguajes en los que
el valor de falso se representaba por un 0 numérico, y verdadero cualquier número
que no fuese el 0.
Para declarar un dato del tipo booleano se utiliza la palabra reservada boolean:
boolean reciboPagado = false; // ¡¿Aun no nos han pagado?!
Tipo de datos carácter
Literales carácter
52
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
char c = (char)System.in.read();
El tamaño de los tipos que queremos convertir es muy importante. No todos los tipos
se convertirán de forma segura. Por ejemplo, al convertir un long en un int, el
compilador corta los 32 bits superiores del long (de 64 bits), de forma que encajen en
los 32 bits del int, con lo que si contienen información útil, esta se perderá.
Por ello se establece la norma de que "en las conversiones el tipo destino siempre
debe ser igual o mayor que el tipo fuente":
Un operador es un símbolo especial que indica al compilador que debe efectuar una
operación matemática o lógica, java reconoce los siguientes operadores.
OPERADOR OPERACIÓN
+ SUMA
- RESTA
* MULTIPLICACIÓN
/ DIVISIÓN
53
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
Dividir--_13/5---_el resultado es 2
Para resolver los problemas de potencias y raíces, se usan ciertas instrucciones
especiales que proporcionan el lenguaje, llamadas funciones matemáticas, en java
existe toda una librería de instrucciones o funciones matemáticas.
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,lang.math :
Esta función ocupa dos valores o datos (base y exp) ambos de tipo double, y regresa
un resultado también de tipo double, ejemplo;
Resolver el problema de calcular 53
import java,io.*;
import java,lang.math :
public class ejemplo1
{
public static void man(String args[ ])
{
double base=5;
double exponente=3;
double potencia = 0 ;
potencia = Math.pow(base, exponente);
System.out.println(“potencia=”+potencia);
} // cerrar main
} // cerrar clase
Es decir una raíz cualquiera se puede transformar a una potencia con un exponente
fraccionario ejemplo:
54
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 ejemplo no funcional se esta dando por supuesto que no interesa el tipo de
dato que requiere la función pow () para trabajar correctamente.
Para realizar operaciones con objetos numéricos, es importante tener en cuenta que
no se pueden hacer directamente operaciones con ellos ni tampoco pueden recibir
resultados en ellos, lo que se debe hacer es usar una variable temporal de tipo
apropiado, hacer operaciones con dicha variable y al final si se quiere convertir esta
variable al objeto numérico apropiado ejemplo:
Como se observa se crearon dos objetos numéricos, luego dos variables numéricas
normales, luego estas dos últimas variables se cargan con los objetos numéricos que
emplean métodos propios para convertirlos a datos normales.
Class Math
Public final class java.lang.math
extends java.Objet
{
// fields
public final static double E
public final static double PI;
// Metodos
public static double abs(double a);
public static float abs(float a);
public static int abs(int a);
public static long abs(long a);
public static double acos(double a);
public static double asin(double a);
public static double atan(double a);
public static double atan2(double a, double b);
public static double ceil(double a);
public static double cos(double a);
public static double exp(double a);
public static double floor(double a);
55
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 23
5.3.4 E/S caracteres:
Estas clases definen los métodos read( ) y write( ) que respectivamente leen y
escriben bytes de datos, 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.
56
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Ejemplo:
{
char c;
system.out.println(“ introduzca caracteres, ‘q’ para salir.”);
// lee caracteres
do {
c = (char) System. In.read(); } while(c = != ‘q’); } }
Cuando ejecute el programa el resultado debe ser el siguiente:
Introduzca caracteres, ‘q’ para salir 123abcq
1
2
3
a
b
c
q
Lección 24
5.3.5 Estructuras De Control
in.read();
in.read();
in.read();
Este código además de poco elegante sería inviable para una repetición de 3000
lecturas. Por eso aparecen las estructuras de control, que facilitan que determinadas
acciones se realicen varias veces, mientras que una condición se cumpla, y en
definitiva, 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.
57
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;
for ( i=0 ; i <= 3 ; i++ )
in.read();
Donde bastaría cambiar el 3 por cualquier otro número para que la lectura se repitiese
ese número de veces.
Sentencia Clave
Toma de decisión if-else, switch-case
Bucle for, while, do-while
Misceláneo break, continue, label:, return, goto
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
If (respuesta == Aceptar)
{
// código para realizar la acción Aceptar
System.out.println( "Su peticion esta siendo atendida" );
}
else
{
// código para realizar la acción Cancelar
System.out.println( "Cancelando accion" );
58
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. Esto es lo que se suele denominar como sentencias else if.
Por ejemplo, supongamos que se desea escribir un programa que clasifique según el
contenido de una variable valor, asigne una letra a una variable clasificacion: A para
un valor del 100-91, B de 90-81, C para 80-71 y F si no es ninguno de los anteriores:
int valor;
char clasificacion;
if (valor > 90)
{
clasificacion='A';
}
else
if (valor > 80)
{
clasificacion='B';
}
else
if (valor > 70)
{
clasificacion='C';
}
else
{
clasificacion='F';
}
Se pueden escribir los if en las mismas líneas que los else, pero se recomienda
utilizar la tabulación (como se ha podido ver en el ejemplo), pues es más clara para el
lector.
switch ( expresionMultivalor )
{
case valor1 : conjuntoDeSentencias; break;
case valor2 : conjuntoDeSentencias; break;
case valor3: conjuntoDeSentencias; break;
default: conjuntoDeSentencias; break;
59
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
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.
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. Las
sentencias break son necesarias porque sin ellas se ejecutarían secuencialmente las
sentencias case siguientes. Existen ciertas situaciones en las que se desea ejecutar
secuencialmente algunas o todas las sentencias case, para lo que habrá que eliminar
algunos break.
Finalmente, se puede usar la sentencia default para manejar los valores que no son
explícitamente contemplados por alguna de las sentencias case. Su uso es altamente
recomendado.
Por ejemplo, supongamos un programa con una variable entera meses cuyo valor
indica el mes actual, y se desea imprimir el nombre del mes en que estemos. Se
puede utilizar la sentencia switch para realizar esta operación: int meses;
switch ( meses )
{
case 1: System.out.println( "Enero" ); break;
case 2: System.out.println( "Febrero" ); break;
case 3: System.out.println( "Marzo" ); break;
//Demas meses
// . . .
case 12: System.out.println( "Diciembre" ); break;
default: System.out.println( "Mes no valido" ); break;
}
Por supuesto, se puede implementar esta estructura como una sentencia if else if: int
meses;
if ( meses == 1 )
{
System.out.println( "Enero" );
}
else
if ( meses == 2 )
{
System.out.println( "Febrero" );
}
60
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. Se puede
decidir cuál usar basándonos en la legibilidad, aunque se recomienda utilizar switch
para sentencias con más de tres o cuatro posibilidades.
El bucle while es el bucle básico de iteración. Sirve para realizar una acción
sucesivamente mientras se cumpla una determinada condición.
while ( expresiónBooleana )
{
sentencias;
};
Se utiliza, por ejemplo para estar en un bucle del que no hay que salir hasta que no se
cumpla una determinada condición. Por ejemplo, multiplicar un número por 2 hasta
que sea mayor que 100:
int i = 1;
while ( i <= 100 )
{
i = i * 2;
}
Con él se podrían eliminar los bucles do-while y for por ser extensiones de éste, pero
que se incluyen en el lenguaje para facilitar la programación.
61
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, cuando se lee información de un archivo, se sabe que siempre se debe
leer por lo menos un carácter:
Int c;
do
{
c = System.in.read( );
// Sentencias para tratar el carácter c
} while ( c != -1 ); // No se puede leer más (Fin fichero)
Mediante la sentencia for se resume un bucle do-while con una iniciación previa.
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, inmediatamente antes de comenzar los bucles. Por
eso el bucle for está tan extendido.
Ejemplo:
Import java.io.* ;
Import javax.servlet.* ;
Import javax.servlet.http* ;
Public class prog7 extends Http.*;
{
public void doGet(HttpServetRequest request,HttpSerletResponse response)
throws ServletException,IOException
{
62
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.getWriter();
response.setContentType(“text/html”);
pagina.println(“<HTML>”);
int x;
for(x=1;x<=10;x++)
{pagina.printl(“x=”+x+”<br>”);
pagina.println(“</HTML>”);
pagina.close();
pagina.flusch();
};
public void destroy(){sper.destroy();};
}
Lección 25
5.3.5.3 Sentencias de salto: break, continue y return
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, llevando el flujo
del programa al final de la sentencia de programa que indique:
break nombreSentencia2;
void gotoBreak()
{
System.out.println("Ejemplo de break como 'goto' ");
a: for( int i=1; i<10; i++ )
{
System.out.print(" i="+i);
for( int j=1; j<10; j++ )
{
if ( j==5 )
break a; //Sale de los dos bucles!!!
System.out.print(" j="+j);
}
System.out.print("No llega aquí");
}
}
63
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, no solo se rompe la ejecución del bucle interior (el de j), sino
que se salta al final del bucle i, obteniéndose:
Del mismo modo que en un bucle se puede desear romper la iteración, también se
puede desear continuar con el bucle, pero dejando pasar una determinada iteración.
Se puede usar la sentencia continue dentro de los bucles para saltar a otra sentencia,
aunque no puede ser llamada fuera de un bucle.
Del mismo modo que break, en las sentencias continue se puede indicar una etiqueta
de bloque al que hace referencia. Con ello podemos referirnos a un bloque superior, si
estamos en bucles anidados. Si dicha etiqueta no es indicada, se presupone que nos
referimos al bucle en el que la sentencia continue aparece.
void gotoContinue( )
{
f for ( int i=1; i <5; i++ )
{
for ( int j=1; j<5; j++ )
{
if ( j>i )
{
System.out.println(" ");
continue f;
}
System.out.print( " " + (i*j) );
64
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
}
}
}
1
24
369
4 8 12 16
La última de las sentencias de salto es la sentencia return, que puede usar para salir
del método en curso y retornar a la sentencia dentro de la cual se realizó la llamada.
Para devolver un valor, simplemente se debe poner el valor (o una expresión que
calcule el valor) a continuación de la palabra return. El valor devuelto por return debe
coincidir con el tipo declarado como valor de retorno del método.
Cuando un método se declara como void se debe usar la forma de return sin indicarle
ningún valor. Esto se hace para no ejecutar todo el código del programa:
int contador;
boolean condicion;
int devuelveContadorIncrementado()
{
return ++contador;
}
void metodoReturn()
{
//Sentencias
if ( condicion == true )
return;
//Más sentencias a ejecutar si condición no vale true
}
Parte Uno:
65
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Parte Dos:
66
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
El método showMessageDialog
Este método nos permite mostrar diálogos que muestran un mensaje y contienen un botón de
aceptación. Los parámetro mínimos necesarios dependen del carácter del mensaje aunque general
mente son la ventana padre, el mensaje a mostrar, el título del diálogo y el tipo de mensaje que se
mostrará. En las siguientes figuras podremos ver algunos ejemplos junto al código que lo genera.
JOptionPane.showMessageDialog( null, “Diálogo de información”);
El método showInputDialog
Este método nos permite mostrar diálogos estandarizados que nos piden que introduzcamos algún
dato. Al igual que en los métodos anteriores los argumentos que utilizan principalmente son el
mensaje a mostrar, el título, etc. A continuación vemos un ejemplo de uso de este método.
String n = JOptionPane.showInputDialog(null, "Introduce el dato");
67
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.
import javax.swing.*;
public class Interfaz
{
public static void main(String args[])
{
JOptionPane.showMessageDialog( null, "Diálogo de información");
JOptionPane.showMessageDialog( null, "Diálogo de advertencia", "Título del Mensaje",
JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog( null, "Diálogo de error", "Título del Mensaje",
JOptionPane.ERROR_MESSAGE);
String n = JOptionPane.showInputDialog(null, "Introduce el dato");
}
}
donde las cajas de Dialogo están en el paquete de clases javax.swing, por eso, en la cláusula
import javax.swing.*;
68
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
1. Declaración de un arreglo:
2. Creación de un arreglo
Subindicación de un arreglo:
3. Modificación de un arreglo:
A[3]= 8;
4. Tamaño de un arreglo:
A.length // correcto
A.length() // error, sin paréntesis
5. Inicialización de un arreglo:
int B[];
B= A; // A y B son el mismo arreglo
if (A==B) // Comparación de punteros
// true!
...
A[0]= 10;
B[0] // también 10
7. Copia de un arreglo:
B= (int[])A.clone();
69
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,i,j,aux;
int A[];
n=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite la dimension: "));
A=new int[n];
for(i=0;i<A.length;i++)
{
A[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite A["+i+"]: "));
}
System.out.println("Vector Leido");
for(i=0;i<A.length;i++)
{
System.out.print(A[i]+" ");
}
System.out.println();
System.exit(0);
}
}
70
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,i,j,aux;
int A[];
n=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite la dimension: "));
A=new int[n];
for(i=0;i<A.length;i++)
{
A[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite A["+i+"]: "));
}
System.out.println("Vector Leido");
for(i=0;i<A.length;i++)
{
System.out.print(A[i]+" ");
}
System.out.println();
for(i=0;i<A.length-1;i++)
for(j=i+1;j<A.length;j++)
if(A[i]>A[j])
{
aux=A[i];
A[i]=A[j];
A[j]=aux;
}
System.out.println("Vector Ordenado");
for(i=0;i<A.length;i++)
{
System.out.print(A[i]+" ");
}
System.out.println();
}
}
71
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];
A[j]=A[j+1];
A[j+1]=aux;
}
System.out.println("Vector Ordenado");
for(i=0;i<A.length;i++)
{
System.out.print(A[i]+" ");
}
System.out.println();
}
}
72
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
System.out.println("Existe: "+j+" en la Posicion: "+i);
else
System.out.println("No Existe ");
System.exit(0);
}
}
73
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
System.out.println("Existe: "+j+" en la Posicion: "+mitad);
else
System.out.println("No Existe ");
System.exit(0);
}
}
74
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;i<n && A[i]>x;i++);
if(i<n && A[i]==x)
return true;
else
return false;
}
75
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];
A[i]=A[j];
A[j]=aux;
}
}
}
76
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
System.exit(0);
}
}
}
}
class CasoVector2
{
StringBuffer P=new StringBuffer("Vector de Entrada: Vector de Salida: ");
StringBuffer Q;
77
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,j,aux;
int A[]=new int[10];
Random R=new Random();
public CasoVector2()
{
for(i=0;i<A.length;i++)
A[i]=Math.abs(R.nextInt()%99+1);
j=new String(P.toString()).indexOf(':');
insertar(j);
ordenar();
j=new String(P.toString()).lastIndexOf(':');
insertar(j);
}
void insertar(int k)
{
Q=new StringBuffer();
for(i=0;i<A.length;i++)
{
Q.append(" ");
Q.append(A[i]);
}
P.insert(k+1,Q.toString());
}
void ordenar()
{
for(i=0;i<A.length-1;i++)
for(j=i+1;j<A.length;j++)
if(A[i]>A[j])
{
aux=A[i];
A[i]=A[j];
A[j]=aux;
}
}
String impresion()
{
return P.toString();
}
}
public class VectorCasos
{
public static void main(String[] args)
{
CasoVector1 X=new CasoVector1();
CasoVector2 Y=new CasoVector2();
JOptionPane.showMessageDialog(null," Caso Vector 1:
\n"+X.impresion().toString());
JOptionPane.showMessageDialog(null," Caso Vector 2:
\n"+Y.impresion().toString());
System.exit(0);
}
}
78
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,j,k;
void pasar(char C[],String S)
{
j=-1;
for(i=S.length()-1;i>=0;i--)
{
j++;
C[j]=S.charAt(i);
}
}
String pasar(String S)
{
char C[]=new char[S.length()];
j=-1;
for(i=S.length()-1;i>=0;i--)
{
j++;
C[j]=S.charAt(i);
}
return new String().valueOf(C).toString();
}
/* String pasar(String S)
{
StringBuffer B=new StringBuffer();
for(i=S.length()-1;i>=0;i--)
B.append(S.charAt(i));
return B.toString();
}*/
void pasar(int C[],int n)
{
j=-1;
while(n>0)
{
j++;
C[j]=n%10;
n/=10;
}
}
int pasar(int n)
{
int m=n;
k=0;
while(m>0)
{
if(k==0)
k=1;
else
k*=10;
m/=10;
}
m=0;
while(n>0)
{
m=m+((n%10)*k);
79
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;
k/=10;
}
return m;
}
}
public class PasoInverso
{
public static void main(String[] args)
{
Inverso I=new Inverso();
String S;
int n;
do
{
n=0;
S=JOptionPane.showInputDialog(null," Digite Valor a Invertir: ");
try
{
n=Integer.parseInt(S);
}
catch(NumberFormatException e){n=0;}
}
while(n==0);
char C[]=new char[S.length()];
int A[]=new int[S.length()];
StringBuffer B=new StringBuffer();
int i;
I.pasar(C,S);
I.pasar(A,n);
JOptionPane.showMessageDialog(null," Valor Inverso de String a char[]: "+new
String().valueOf(C).toString());
for(i=0;i<A.length;i++)
B.append(A[i]);
JOptionPane.showMessageDialog(null," Valor Inverso de un Entero a int[]: "+B.toString());
JOptionPane.showMessageDialog(null," Valor Inverso de String a String "+new
String().valueOf(I.pasar(S)).toString());
JOptionPane.showMessageDialog(null," Valor Inverso de String a int "+B.toString());
}
}
Lección 27
6.10. PROGRAMACION AVANZADA. USO DE MATRICES
6.10.1. Programa Lectura y Escritura de Matrices
import java.util.*;
import javax.swing.*;
class LecturaEscrituraMatriz
{
public static void main(String[] args)
{
int filas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite las Filas: "));
int columnas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite las columnas: "));
int i,j;
Random R=new Random();
int A[][]=new int[filas][columnas];
80
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;i<filas;i++)
for(j=0;j<columnas;j++)
A[i][j]=Math.abs(R.nextInt()%99+1);
//Escritura
System.out.println(" ------ Matriz Leida -------");
for(i=0;i<filas;i++)
{
System.out.println();
for(j=0;j<columnas;j++)
{
if(A[i][j]>=10)
System.out.print(A[i][j]+" ");
else
System.out.print(A[i][j]+" ");
}
}
System.out.println();
System.exit(0);
}
}
import java.util.*;
import javax.swing.*;
class SumaDiagTran
{
public static void main(String[] args)
{
int filas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite las Filas: "));
int columnas=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite las columnas: "));
int i,j,k;
int d=0,t=columnas-1;
int sumad=0,sumat=0;
Random R=new Random();
int A[][]=new int[filas][columnas];
//Lectura()
for(i=0;i<filas;i++)
for(j=0;j<columnas;j++)
A[i][j]=Math.abs(R.nextInt()%10+1);
for(i=0;i<filas;i++)
{
sumad=sumad+A[i][d];
sumat=sumat+A[i][t];
d++;
t--;
}
//Escritura
System.out.println(" ------ Matriz Leida -------");
for(i=0;i<filas;i++)
{
System.out.println();
for(j=0;j<columnas;j++)
{
if(A[i][j]>=10)
System.out.print(A[i][j]+" ");
else
System.out.print(A[i][j]+" ");
81
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
}
}
System.out.println();
System.out.println("Suma de Diagonal: "+sumad+" Suma Transversal: "+sumat);
System.exit(0);
}
}
82
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.parseInt(JOptionPane.showInputDialog(null,"Digite Dimension: "));
int i,j,k;
int d=0,t=n-1;
int A[][]=new int[n][n];
//Lectura()
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j)
A[i][j]=1;
else
A[i][j]=0;
//Escritura
System.out.println(" ------ Diagonal -----");
for(i=0;i<n;i++)
{
System.out.println();
for(j=0;j<n;j++)
System.out.print(A[i][j]+" ");
}
System.out.println();
System.exit(0);
}
}
83
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
{
System.out.println();
for(j=0;j<n;j++)
{
if(A[i][j]==0)
System.out.print(" ");
else
System.out.print("*");
}
}
System.out.println();
System.exit(0);
}
}
84
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;
A[pos][3]=A[pos][3]+cant;
}
else
JOptionPane.showMessageDialog(null,"No se puede realizar la venta...no hay
existencia");
}
void compra(int cant,int pos)
{
A[pos][1]=A[pos][1]+cant;
A[pos][2]=A[pos][2]+cant;
}
String impresion()
{
StringBuffer P=new StringBuffer();
P.append(" CODIGO SALDO ENTRADA SALIDA");
for(i=0;i<n;i++)
{
P.append("\n ");
for(j=0;j<4;j++)
{
P.append(A[i][j]);
if(A[i][j]<10)
P.append(" ");
if(A[i][j]<100)
P.append(" ");
P.append(" ");
}
}
return P.toString();
}
}
public class Kardex
{
public static void main(String[] args)
{
Inventario X=new Inventario();
Object[] Opcion={"1. Compra","2. Venta","3. Consulta","4.Cierre"};
int opc,pos;
String S;
do
{
S=(String) JOptionPane.showInputDialog(null,"Opciones: "," Almacen
Doris",JOptionPane.QUESTION_MESSAGE,null,Opcion,Opcion[2]);
opc=Character.digit(S.charAt(0),10);
switch(opc)
{
case 1:
pos=X.existe(Integer.parseInt(JOptionPane.showInputDialog(null," Digite Codigo ")));
if(pos==-1)
JOptionPane.showMessageDialog(null,"No existe Codigo");
else
85
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
X.compra(Integer.parseInt(JOptionPane.showInputDialog(null," Digite Cantidad a Comprar
")),pos);
break;
case 2:
pos=X.existe(Integer.parseInt(JOptionPane.showInputDialog(null," Digite Codigo ")));
if(pos==-1)
JOptionPane.showMessageDialog(null,"No existe Codigo");
else
X.venta(Integer.parseInt(JOptionPane.showInputDialog(null," Digite Cantidad a Venta
")),pos);
break;
case 3:
JOptionPane.showMessageDialog(null," Inventario
\n"+X.impresion().toString());
}
}while(opc!=4);
System.exit(0);
}
}
Lección 28
6.10.6. Programa Simulación de un Parqueadero
import javax.swing.*;
import java.util.*;
class Parqueo
{
int n=10,i,j,k;
int h,m,ha,hf;
int Militar[][]=new int[10][10]; // Hora Militar de Entrada de Vehiculo
int Entrada[][]=new int[10][10]; // Hora de Entrada Vehiculo AM/PM
int Placa[][]=new int[10][10]; // Placa del Vehiculo
int hora=5,minuto=59;
Random R=new Random();
boolean lleno()
{
k=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(Entrada[i][j]!=0)
k++;
if(k==n*n)
return true;
else
return false;
}
void reloj()
{
int hi=hora+2;
ha=(hora*60)+minuto;
do
{
do
{
h=Math.abs(R.nextInt()%21+hora);
}
86
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);
m=Math.abs(R.nextInt()%59+0);
hf=(h*60)+m;
}
while(hf<=ha);
hora=h;
minuto=m;
}
boolean noatiende()
{
if(hora>=20)
return true;
else
return false;
}
87
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();
hf=(hora*60)+minuto;
ha= (hora*100)+minuto;
k=(hf-Entrada[i][j])*10;
JOptionPane.showMessageDialog(null,"Placa: "+placa+"\n Hora de Entrada:
"+leerReloj(Militar[i][j]).toString()+" \n Hora de Salida: "+leerReloj(ha).toString()+" \n Pago:"+k);
Entrada[i][j]=0;
Placa[i][j]=0;
Militar[i][j]=0;
}
else
{
JOptionPane.showMessageDialog(null,"No existe la placa:"+placa);
k=0;
}
return k;
}
String impresion()
{
StringBuffer P=new StringBuffer();
P.append(" PLACA ENTRADA");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(Placa[i][j]!=0)
{
P.append("\n ");
P.append(Placa[i][j]);
P.append(" ");
P.append(Militar[i][j]);
}
return P.toString();
}
}
public class Parqueadero
{
public static void main(String[] args)
{
Object[] Opcion={"1. Entrada","2. Salida","3. Consulta","4. Cierre"};
int opc,placa;
String S;
Parqueo P=new Parqueo();
do
{
S=(String) JOptionPane.showInputDialog(null,"Opciones: "," Parqueadero
Doris",JOptionPane.QUESTION_MESSAGE,null,Opcion,Opcion[0]);
opc=Character.digit(S.charAt(0),10);
switch(opc)
{
case 1:
if(!P.noatiende() && !P.lleno())
{
88
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.parseInt(JOptionPane.showInputDialog(null,"Digite Placa: "," Parqueadero
Doris",JOptionPane.QUESTION_MESSAGE));
if(P.existe(placa))
JOptionPane.showMessageDialog(null,"Placa: "+placa+" Ya Esta en el Parqueadero");
else
P.asignar(placa);
}
break;
case 2:
if(!P.noatiende())
{
placa=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite Placa: "," Parqueadero
Doris",JOptionPane.QUESTION_MESSAGE));
P.salida(placa);
}
break;
case 3:
JOptionPane.showMessageDialog(null," Parqueadero Doris \n"+P.impresion().toString());
}
}
while(opc!=4);
System.exit(0);
}
}
Lección 29
89
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.llena())
JOptionPane.showMessageDialog(null,"No se Puede Atender Mas");
else
{
C.nomCliente=JOptionPane.showInputDialog(null,"Digite Nombre");
C.telefono=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite Telefono"));
A.adicion(C);
}
break;
case 2:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atencion Vacia");
else
{
A.borra(C);
if(!B.llena())
B.adicion(C);
}
break;
case 3:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atencion Vacia");
else
JOptionPane.showMessageDialog(null,A.imprime(" Atencion "));
break;
case 4:
if(B.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atendidos Vacia");
else
JOptionPane.showMessageDialog(null,B.imprime(" Atencion "));
}
}
while(opc!=5);
}
}
class Cliente
{
int nit;
String nomCliente;
int telefono;
}
class Cola
{
int min,max,n;
Cliente A[];
int i;
public Cola(int n)
{
min=-1;
max=-1;
this.n=n;
A=new Cliente[n];
}
boolean vacia()
{
90
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;
else
return false;
}
boolean llena()
{
if(max==n-1)
return true;
else
return false;
}
void adicion(Cliente C)
{
if(min==-1)
min++;
max++;
A[max]=new Cliente();
A[max].nit=C.nit;
A[max].telefono=C.telefono;
A[max].nomCliente=C.nomCliente;
}
void borra(Cliente C)
{
C.nit=A[min].nit;
C.telefono=A[min].telefono;
C.nomCliente=A[min].nomCliente;
if(min==max)
min=max=-1;
else
min++;
}
boolean existe(int nit)
{
boolean esta=false;
if(!vacia())
for(i=min;i<=max && ! esta;i++)
if(A[i].nit==nit)
esta=true;
return esta;
}
String imprime(String Aviso)
{
String S=" Elemenos de la Cola de: "+Aviso.toString()+"\n";
for(i=min;i<=max;i++)
{
S=S+" "+new String().valueOf(A[i].nit).toString();
S=S+" "+A[i].nomCliente;
S=S+" "+new String().valueOf(A[i].telefono).toString()+"\n";
}
return S.toString();
}
91
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.swing.*;
import java.io.*;
import java.lang.Math.*;
import java.util.*;
public class Cola2
{
public static void main(String[]args)
{
int i,opc,nit;
BiCola A=new BiCola(10);
Info C=new Info();
Object [] valores = {"1. Adicion Mas Reciente","2. Adicion Menos Reciente","3.
Borrar Menos Reciente","4. Borrar Mas Recientes","5. Consulta","6.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:
if(A.llena())
JOptionPane.showMessageDialog(null,"No se Puede Atender Mas");
else
{
C.nit=Integer.parseInt(JOptionPane.showInputDialog(null,"Escriba el número de Nit"));
C.nomCliente=JOptionPane.showInputDialog(null,"Digite Nombre");
C.telefono=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite Telefono"));
A.adicion_max(C);
}
break;
case 2:
if(A.llena())
JOptionPane.showMessageDialog(null,"No se Puede Atender Mas");
else
if(!A.tope() && !A.minimo())
{
C.nit=Integer.parseInt(JOptionPane.showInputDialog(null,"Escriba el número de Nit"));
C.nomCliente=JOptionPane.showInputDialog(null,"Digite Nombre");
C.telefono=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite Telefono"));
A.adicion_min(C);
}
break;
case 3:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atencion Vacia");
else
{
A.borra_min();
}
break;
case 4:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atencion Vacia");
92
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.borra_max();
}
break;
case 5:
if(A.vacia())
JOptionPane.showMessageDialog(null,"BiCola Vacia");
else
JOptionPane.showMessageDialog(null,A.imprime());
}
}
while(opc!=6);
}
}
class Info
{
int nit;
String nomCliente;
int telefono;
}
class BiCola
{
int min,max,n;
Info A[];
int i;
public BiCola(int n)
{
min=-1;
max=-1;
this.n=n;
A=new Info[n];
for(i=0;i<n;i++)
A[i]=new Info();
}
boolean vacia()
{
if(min==-1)
return true;
else
return false;
}
boolean llena()
{
if(min==0 && max==n-1)
return true;
else
return false;
}
boolean tope()
{
if(max==n-1)
return true;
else
return false;
}
93
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;
else
return false;
}
void adicion_max(Info C)
{
if(min==-1)
min=0;
max++;
A[max].nit=C.nit;
A[max].telefono=C.telefono;
A[max].nomCliente=C.nomCliente;
}
void adicion_min(Info C)
{
min--;
A[min].nit=C.nit;
A[min].telefono=C.telefono;
A[min].nomCliente=C.nomCliente;;
}
void borra_min()
{
if(min==max)
min=max=-1;
else
min++;
}
void borra_max()
{
if(min==max)
min=max=-1;
else
max--;
}
String imprime()
{
String S=" Elemenos de la Cola \n";
for(i=min;i<=max;i++)
{
S=S+" "+new String().valueOf(A[i].nit).toString();
S=S+" "+A[i].nomCliente;
S=S+" "+new String().valueOf(A[i].telefono).toString()+"\n";
}
return S.toString();
}
}
import javax.swing.*;
import java.io.*;
import java.lang.Math.*;
94
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.util.*;
public class Cola3
{
public static void main(String[]args)
{
int i,opc,nit;
ColaCir A=new ColaCir(3);
Info C=new Info();
Object [] valores = {"1. Adicion","2.Eliminar","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:
if(A.llena())
JOptionPane.showMessageDialog(null,"No se Puede Atender Mas");
else
{
C.nit=Integer.parseInt(JOptionPane.showInputDialog(null,"Escriba el número de Nit"));
C.nomCliente=JOptionPane.showInputDialog(null,"Digite Nombre");
C.telefono=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite Telefono"));
A.adicion(C);
}
break;
case 2:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atencion Vacia");
else
{
A.borrar();
}
break;
case 3:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola Vacia");
else
JOptionPane.showMessageDialog(null,A.imprime());
}
}
while(opc!=4);
}
}
class Info
{
int nit;
String nomCliente;
int telefono;
}
class ColaCir
{
int min,max,n;
Info A[];
95
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;
String S=" ";
public ColaCir(int n)
{
min=-1;
max=-1;
this.n=n;
A=new Info[n];
for(i=0;i<n;i++)
A[i]=new Info();
}
boolean vacia()
{
if(min==-1)
return true;
else
return false;
}
boolean llena()
{
if((min==0 && max==n-1) || (max==min-1))
return true;
else
return false;
}
void adicion(Info C)
{
if(min==-1)
min=0;
if(max==n-1)
max=0;
else
max++;
A[max].nit=C.nit;
A[max].telefono=C.telefono;
A[max].nomCliente=C.nomCliente;;
}
void borrar()
{
if(min==max)
min=max=-1;
else
if(min==n-1)
min=0;
else
min++;
}
String imprime()
{
S=" Elemenos de la Cola \n";
if(max<min)
{
consulta(min,n-1);
consulta(0,max);
}
else
96
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,max);
return S.toString();
}
void consulta(int inf,int sup)
{
for(i=inf;i<=sup;i++)
{
S=S+" "+new String().valueOf(A[i].nit).toString();
S=S+" "+A[i].nomCliente;
S=S+" "+new String().valueOf(A[i].telefono).toString()+"\n";
}
}
Lección 29
6.14. Ejemplo Cola 3 Archivos
import javax.swing.*;
import java.io.*;
import java.lang.Math.*;
import java.util.*;
public class ColaArch
{
static double SALDO=0;
public static void main(String[]args)
{
int i,opc,nit;
Cola A=new Cola(10);
if(A.salir())
System.exit(1);
A.cargar();
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:
if(A.llena() || !A.hayMas())
JOptionPane.showMessageDialog(null,"No se Puede Atender Mas");
else
A.adicion();
break;
case 2:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atencion Vacia");
else
A.borrar();
break;
case 3:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Cola de Atencion Vacia");
97
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.showMessageDialog(null,A.imprime());
break;
}
}
while(opc!=4);
A.cerrar();
System.exit(1);
}
}
class Cola
{
ArchivoBase P=new ArchivoBase();
int min,max,n,d,numreg=-1;
int A[];
int i;
public Cola(int n)
{
min=-1;
max=-1;
this.n=n;
A=new int[n];
}
void cargar()
{
P.tabla();
}
boolean salir()
{
if(!P.lectura("cliente.txt"))
return true;
cargar();
if(P.tope()==0)
return true;
return false;
}
boolean vacia()
{
if(min==-1)
return true;
else
return false;
}
boolean llena()
{
if(max==n)
return true;
else
return false;
}
boolean hayMas()
{
if(numreg<P.tope())
return true;
else
return false;
98
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++;
max++;
numreg++;
A[max]=numreg;
}
void borrar()
{
if(min==max)
min=max=-1;
else
min++;
}
String imprime()
{
String S=" Elemenos de la Cola de: \n";
for(i=min;i<=max;i++)
{
S=S+P.consulta(A[i])+"\n";
}
return S.toString();
}
String Consulta()
{
return P.Consultabla();
}
void cerrar()
{
P.cerrar();
}
}
class ArchivoBase
{
long longreg=34;
StringBuffer linea=new StringBuffer();
RandomAccessFile arch;
long pos=-1; //Numero de Registro
long k;
int numreg=-1;
Hashtable H=new Hashtable();
boolean lectura(String Nom)
{
try
{
arch=new RandomAccessFile(Nom.toString(),"r");
}
catch(FileNotFoundException e)
{
System.out.println("No Existe Archivo");
return false;
}
return true;
}
99
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;
numreg=-1;
try
{
do
{
numreg++;
H.put(new String().valueOf(numreg),new String().valueOf(pos));
pos=pos+(longreg*2);
}
while(pos<arch.length());
}
catch(IOException e)
{
}
}
void bajar()
{
try
{
arch.seek(pos);
for(k=pos;k<pos+longreg;k++)
{
if(k==7 || k==27)
linea.append(" ");
linea.append(arch.readChar());
}
}
catch(IOException e)
{
}
}
String consulta(int n)
{
String S=new String().valueOf(n);
linea=new StringBuffer();
pos=Long.parseLong((String) H.get(S));
bajar();
return linea.toString();
}
long longitud()
{
long k=0;
try
{
k=arch.length();
}
catch(IOException e){}
return k;
}
int tope()
{
return numreg;
}
100
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.keys();
String S=null;
linea=new StringBuffer();
linea.append(" Codigo Nombre Telefono \n");
while(codigo.hasMoreElements())
{
S=(String) codigo.nextElement();
pos=Long.parseLong((String) H.get(S))*longreg;
bajar();
linea.append("\n");
}
return linea.toString();
}
void cerrar()
{
try
{
arch.close();
}
catch(IOException e){}
}
}
Lección 20
6.15. Ejemplo de Lista
import javax.swing.*;
class Nodo {
int info;
Nodo(int info) {
this.info = info;
}
Nodo sig;
}
class Listas
{
Nodo p,q,r;
Nodo cab=null;
boolean busca_ant(int x)
{
p=q=cab;
while(p!=null && p.info!=x)
{
q=p;
p=p.sig;
}
if(p!=null)
return true;
else
return false;
}
void recorre_ant()
{
101
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;
while(p!=null)
{
q=p;
p=p.sig;
}
}
void adicion(int x)
{
if(!busca_ant(x))
{
r=new Nodo(x);
if(cab==null)
cab=r;
else
q.sig=r;
r.sig=null;
}
}
void borrar(int x)
{
if(busca_ant(x))
{
if(p==cab)
cab=cab.sig;
else
q.sig=p.sig;
}
}
String consulta()
{
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();
}
}
public class Lista
{
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)
{
102
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.parseInt(JOptionPane.showInputDialog(null," Digite Info a
Adicionar:"));
L.adicion(info);
break;
case 2:
info=Integer.parseInt(JOptionPane.showInputDialog(null," Digite Info a
Borrar:"));
L.borrar(info);
break;
case 3:
JOptionPane.showMessageDialog(null,L.consulta());
break;
}
}
while(opc!=4);
System.exit(1);
}
}
import javax.swing.*;
class Nodo {
int info;
Nodo(int info) {
this.info = info;
}
Nodo sig;
}
class Listas
{
Nodo p,q,r;
Nodo cab=null;
Nodo ult=null;
boolean vacia()
{
if(cab==null)
return true;
else
return false;
}
void adicion(int x)
{
r=new Nodo(x);
if(cab==null)
cab=r;
else
ult.sig=r;
ult=r;
r.sig=cab;
}
void borrar()
{
if(cab==ult)
103
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;
else
{
cab=cab.sig;
ult.sig=cab;
}
}
String consulta()
{
String S="C O N S U L T A \n" ;
p=cab;
do
{
S+=p.info+"\n";
p=p.sig;
}
while(p!=cab);
return S.toString();
}
}
public class ListaCircular
{
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:
if(!L.vacia())
JOptionPane.showMessageDialog(null,L.consulta());
break;
}
}
while(opc!=4);
System.exit(1);
}
}
104
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.swing.*;
class Alumno {
int Cod;
String Nombre;
Alumno(int Cod,String Nombre) {
this.Cod = Cod;
this.Nombre = Nombre;
}
Alumno sig;
}
class Programa
{
int Id;
String Nombre;
Programa sig;
Alumno p,q,r;
Alumno cab=null;
Alumno ult=null;
Programa(int Id,String Nombre) {
this.Id = Id;
this.Nombre = Nombre;
}
boolean vacia()
{
if(cab==null)
return true;
else
return false;
}
void adicion(int x,String y)
{
r=new Alumno(x,y);
if(cab==null)
cab=r;
else
ult.sig=r;
ult=r;
r.sig=null;
}
void borrar()
{
if(cab==ult)
cab=ult=null;
else
cab=cab.sig;
}
String consulta()
{
String S="C O N S U L T A \n" ;
p=cab;
while(p!=null)
{
S+=p.info+"\n";
p=p.sig;
105
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);
}
}
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
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.ant;
}
return S.toString();
}
}
public class ListaEncadenada
{
public static void main(String[]args)
{
int i,opc,info;
Listas L=new Listas();
Object [] valores = {"1. Adicion","2. Borrar","3. Consulta Ascendente","4. Consulta
Descendente","5.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:
info=Integer.parseInt(JOptionPane.showInputDialog(null," Digite Info a
Borrar:"));
L.borrar(info);
break;
case 3:
JOptionPane.showMessageDialog(null,L.consulta_asc());
break;
case 4:
JOptionPane.showMessageDialog(null,L.consulta_desc());
break;
}
}
while(opc!=5);
System.exit(1);
}
}
import javax.swing.*;
class Nodo {
int info;
Nodo(int info) {
this.info = info;
}
Nodo sig;
}
class Listas
{
109
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,r;
Nodo cab=null;
boolean vacia()
{
if(cab==null)
return true;
else
return false;
}
void adicion(int x)
{
r=new Nodo(x);
r.sig=cab;
cab=r;
}
void borrar()
{
cab=cab.sig;
}
String consulta()
{
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();
}
}
public class ListaPila
{
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:
110
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,L.consulta());
break;
}
}
while(opc!=4);
System.exit(1);
}
}
import javax.swing.*;
class Alumno {
int Cod;
String Nombre;
Alumno(int Cod,String Nombre) {
this.Cod = Cod;
this.Nombre = Nombre;
}
Alumno sig;
}
class Programa
{
int Id;
String Nombre;
Programa sig;
Alumno p,q,r;
Alumno cab=null;
Alumno ult=null;
Programa(int Id,String Nombre) {
this.Id = Id;
this.Nombre = Nombre;
}
boolean vacia()
{
if(cab==null)
return true;
else
return false;
}
void adicion(int x,String y)
{
r=new Alumno(x,y);
if(cab==null)
cab=r;
else
ult.sig=r;
ult=r;
r.sig=null;
}
void borrar()
{
if(cab==ult)
cab=ult=null;
else
111
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.sig;
}
String consulta()
{
String S="C O N S U L T A D E A L U M N O S \n" ;
p=cab;
while(p!=null)
{
S+=p.Cod+" "+p.Nombre+"\n";
p=p.sig;
}
return S.toString();
}
}
class Facultad
{
Programa p,q,r;
Programa cab=null;
Programa ult=null;
boolean vacia()
{
if(cab==null)
return true;
else
return false;
}
void adicion(int x,String y)
{
r=new Programa(x,y);
if(cab==null)
cab=r;
else
ult.sig=r;
ult=r;
r.sig=null;
}
void borrar()
{
if(cab==ult)
cab=ult=null;
else
cab=cab.sig;
}
boolean existe(int id)
{
p=cab;
while(p!=null && p.Id!=id)
p=p.sig;
if(p==null)
return false;
else
return true;
}
void borrarAlumno()
{
112
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.vacia())
p.borrar();
}
void adicionAlumno(int x,String y)
{
p.adicion(x,y);
}
String consulta()
{
String S="C O N S U L T A D E P R O G R A M A S \n" ;
p=cab;
while(p!=null)
{
S+=p.Id+" "+p.Nombre+"\n";
p=p.sig;
}
return S.toString();
}
String consultaTodo()
{
String S="C O N S U L T A D E P R O G R A M A S \n" ;
S+=p.Id+" "+p.Nombre+"\n";
S+=p.consulta();
return S.toString();
}
}
public class MultiLista
{
public static void main(String[]args)
{
int i,opc,cod,id;
String Nombre;
Facultad L=new Facultad();
Object [] valores = {"1. Adicion Programa","2. Borrar Programa","3. Consulta
Programa","4.Adicion Alumno","5.Borrar Alumno","6. Consulta","7.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:
cod=Integer.parseInt(JOptionPane.showInputDialog(null," Digite Programa a
Adicionar:"));
Nombre=JOptionPane.showInputDialog(null," Digite Nombre A Adicionar:");
L.adicion(cod,Nombre);
break;
case 2:
if(!L.vacia())
L.borrar();
break;
case 3:
JOptionPane.showMessageDialog(null,L.consulta());
break;
113
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.parseInt(JOptionPane.showInputDialog(null," Digite Programa:"));
if(L.existe(cod))
switch(opc)
{
case 4:
cod=Integer.parseInt(JOptionPane.showInputDialog(null," Digite Alumno a Adicionar:"));
Nombre=JOptionPane.showInputDialog(null," Digite Nombre A
Adicionar:");
L.adicionAlumno(cod,Nombre);
break;
case 5:
L.borrarAlumno();
break;
case 6:
JOptionPane.showMessageDialog(null,L.consultaTodo());
}
}
}
while(opc!=7);
System.exit(1);
}
}
import javax.swing.*;
import java.io.*;
import java.lang.Math.*;
import java.util.*;
public class Pila1
{
static double SALDO=0;
public static void main(String[]args)
{
int i,opc,nit;
Pila A=new Pila(10);
Info C=new Info();
Object [] valores = {"1. Apilar","2. Desempila","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:
if(A.llena())
JOptionPane.showMessageDialog(null,"No se Puede Atender Mas");
else
{
114
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
C.nit=Integer.parseInt(JOptionPane.showInputDialog(null,"Escriba el número de
Nit"));
C.nomCliente=JOptionPane.showInputDialog(null,"Digite Nombre");
C.telefono=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite Telefono"));
A.apila(C);
}
break;
case 2:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Pila de Atencion Vacia");
else
{
A.desempila();
}
break;
case 3:
if(A.vacia())
JOptionPane.showMessageDialog(null,"Pila Vacia");
else
JOptionPane.showMessageDialog(null,A.imprime());
}
}
while(opc!=4);
}
}
class Info
{
int nit;
String nomCliente;
int telefono;
}
class Pila
{
int cab,n;
Info A[];
int i,k;
public Pila(int n)
{
cab=-1;
this.n=n;
A=new Info[n];
for(i=0;i<n;i++)
A[i]=new Info();
}
boolean vacia()
{
if(cab==-1)
return true;
else
return false;
}
boolean llena()
{
if(cab==n-1)
return true;
115
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;
}
void apila(Info C)
{
cab++;
A[cab].nit=C.nit;
A[cab].telefono=C.telefono;
A[cab].nomCliente=C.nomCliente;
}
void desempila()
{
cab--;
}
String imprime()
{
String S=" Elemenos de la Pila\n";
for(i=cab;i>=0;i--)
{
S=S+" "+new String().valueOf(A[i].nit).toString();
S=S+" "+A[i].nomCliente;
S=S+" "+new String().valueOf(A[i].telefono).toString()+"\n";
}
return S.toString();
}
}
import javax.swing.*;
import java.util.*;
class ArbolBin
{
NodoArbol raiz=null;
NodoArbol p,q,r;
Stack Pila=new Stack();
int fila=0;
boolean existe(int x)
{
q=p=raiz;
while(p!=null && x!=p.info)
{
q=p;
if(x<p.info)
{
p=p.izq;
}
else
{
p=p.der;
}
}
if(p==null)
return false;
else
116
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;
}
boolean adicion(int x)
{
if(existe(x))
return false;
// System.out.println("adicion de: "+x+"raiz: "+raiz+" q:"+q+" p: "+p);
r=new NodoArbol(x);
r.izq=r.der=null;
if(raiz==null)
{
raiz=r;
}
else
{
if(x<q.info)
{
q.izq=r;
}
else
{
q.der=r;
}
}
return true;
}
boolean masderecha(NodoArbol s)
{
Pila=new Stack();
while(s!=null)
{
Pila.push((Object) s);
s=s.der;
}
if(Pila.empty())
return false;
s=(NodoArbol) Pila.pop();
if(p==raiz)
raiz=s;
else
{
if(q.izq==p)
q.izq=s;
else
q.der=s;
}
if(Pila.empty())
return true;
r=(NodoArbol) Pila.pop();
r.der=s.izq;
s.izq=p.izq;
s.der=p.der;
return true;
}
boolean masizquierda(NodoArbol s)
{
117
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;
while(s!=null)
{
Pila.push((Object) s);
s=s.izq;
}
if(Pila.empty())
return false;
s=(NodoArbol) Pila.pop();
if(p==raiz)
raiz=s;
else
{
if(q.izq==p)
q.izq=s;
else
q.der=s;
}
if(Pila.empty())
return true;
r=(NodoArbol) Pila.pop();
r.izq=s.der;
s.izq=p.izq;
s.der=p.der;
return true;
}
void caso1Borrado()// P. Es Nodo Terminal
{
if(p==raiz)
raiz=null;
else
{
if(q.izq==p)
q.izq=null;
if(q.der==p)
q.der=null;
}
}
void caso2Borrado()//Hijo Unico. P.der es Null ó P.izq es Null
{
if(p==raiz)
{
if(p.izq==null)
raiz=p.der;
else
raiz=p.izq;
}
else
{
if(p.izq==null)
{
if(q.izq==p)
q.izq=p.der;
else
q.der=p.der;
}
118
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.der==null
{
if(q.izq==p)
q.izq=p.izq;
else
q.der=p.izq;
}
}
}
void caso3Borrado()// Dos Hijos. P.der y P.izq no es null
{
if(!masderecha(p.izq))
if(!masizquierda(p.der))
System.out.println(" No se pudo Borrar");
}
boolean borrar(int x)
{
if(!existe(x))
return false;
if(p.izq!=null && p.der!=null)
caso3Borrado();
else
if(p.izq==null && p.der==null)
caso1Borrado();
else
caso2Borrado();
return true;
}
void preorden(NodoArbol p)
{
if(p!=null)
{
System.out.println(p.info);
preorden(p.izq);
preorden(p.der);
}
}
void inorden(NodoArbol p)
{
if(p!=null)
{
inorden(p.izq);
System.out.println(p.info);
inorden(p.der);
}
}
void posorden(NodoArbol p)
{
if(p!=null)
{
posorden(p.izq);
posorden(p.der);
System.out.println(p.info);
}
}
void conteoNodo(NodoArbol p,int A[])
119
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]++;
conteoNodo(p.izq,A);
conteoNodo(p.der,A);
}
}
void contarNodos()
{
int A[]=new int[2];
p=raiz;
conteoNodo(p,A);
System.out.print("El numero de nodos: "+A[0]);
}
void imprimirInorden()
{
System.out.println("Impresion de Arbol en InOrden");
p=raiz;
inorden(p);
}
void imprimirPreorden()
{
System.out.println("Impresion de Arbol en PreOrden");
p=raiz;
preorden(p);
}
void imprimirPosorden()
{
System.out.println("Impresion de Arbol en PosOrden");
p=raiz;
posorden(p);
}
}
class NodoArbol
{
int info;
NodoArbol(int x)
{
info=x;
}
NodoArbol izq,der;
}
public class Arbol
{
static double SALDO=0;
public static void main(String[]args)
{
int info,opc;
ArbolBin A=new ArbolBin();
Object [] valores = {"1. Adicion","2. Borrar","3. Consulta En PreOrden","4. Consulta
en InOrden","5. Consulta en PosOrden","6. Conteo de Nodos","7.Salir"};
do
120
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.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,"Escriba info a
Borrar: "));
if(!A.adicion(info))
JOptionPane.showMessageDialog(null,"Existe Info");
break;
case 2:
info=Integer.parseInt(JOptionPane.showInputDialog(null,"Escriba info a
Adicionar: "));
if(!A.borrar(info))
JOptionPane.showMessageDialog(null,"No Existe Info");
break;
case 3:
A.imprimirPreorden();
break;
case 4:
A.imprimirInorden();
break;
case 5:
A.imprimirPosorden();
break;
case 6:
A.contarNodos();
break;
}
}
while(opc!=7);
System.exit(0);
}
}
121
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Encapsulación. Las clases pueden ser declaradas como públicas (public) y como
package (accesibles sólo para otras clases del paquete). Las variables miembro y los
métodos pueden ser public, private, protected y package. De esta forma se puede
controlar el acceso y evitar un uso inadecuado.
Herencia. Una clase puede derivar de otra (extends), y en ese caso hereda todas sus
variables y métodos. Una clase derivada puede añadir nuevas variables y métodos y/o
redefinir las variables y métodos heredados.
Un objeto (en inglés, instance) es un ejemplar concreto de una clase. Las clases son
como tipos de variables, mientras que los objetos son como variables concretas de un
tipo determinado.
Classname unObjeto;
ClassnameotroObjeto;
122
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Todas las variables y funciones de Java deben pertenecer a una clase. No hay
variables y funciones globales.
Si una clase deriva de otra (extends), hereda todas sus variables y métodos.
Java tiene una jerarquía de clases estándar de la que pueden derivar las clases que
crean los usuarios.
Una clase sólo puede heredar de una única clase (en Java no hay herencia múltiple).
Si al definir una clase no se especifica de qué clase deriva, por defecto la clase deriva
de Object. La clase Object es la base de toda la jerarquía de clases de Java.
En un archivo se pueden definir varias clases, pero en un archivo no puede haber más
que una clase public. Este archivo se debe llamar como la clase public que contiene
con extensión *.java. Con algunas excepciones, lo habitual es escribir una sola clase
por archivo.
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.
Las clases se pueden agrupar en paquetes, introduciendo una línea al comienzo del
archivo (paquete Nombrepaquete;). Esta agrupación en paquetes está relacionada
con la jerarquía de directorios y archivos en la que se guardan las clases.
En algunos aspectos los nombres de las interfaces pueden utilizarse en lugar de las
clases. Por ejemplo, las interfaces sirven para definir referencias a cualquier objeto de
cualquiera de las clases que implementan esa interface. Con ese nombre o referencia,
sin embargo, sólo se pueden utilizar los métodos de la interface. Éste es un aspecto
importante del polimorfismo.
Una interface puede derivar de otra o incluso de varias interfaces, en cuyo caso
incorpora las declaraciones de todos los métodos de las interfaces de las que deriva
(a diferencia de las clases, las interfaces de Java sí tienen herencia múltiple).
123
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
// archivo Circulo.java
public class Circulo extends Geometria
{
static int numCirculos = 0;
public static final double PI=3.14159265358979323846;
public double x, y, r;
public Circulo(double x, double y, double r) {
this.x=x;
this.y=y;
this.r=r;
numCirculos++;
}
public Circulo(double r)
{
this(0.0, 0.0, r);
}
public Circulo(Circulo c)
{
this(c.x, c.y, c.r);
}
public Circulo()
{
this(0.0, 0.0, 1.0);
}
public double perimetro()
{
return 2.0 * PI * r;
}
public double area()
{
return PI * r * r;
}
124
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;
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. Dichas variables y métodos
pueden ser de objeto o de clase (static). Se puede ver también cómo el nombre del
archivo coincide con el de la clase public con la extensión *.java.
Cada objeto, es decir cada ejemplar concreto de la clase, tiene su propia copia de las
variables miembro. Las variables miembro de una clase (también llamadas campos)
pueden ser de tipos primitivos (boolean, int, long, double, ?) o referencias a objetos de
otra clase (composición).
Cada objeto que se crea de una clase tiene su propia copia de las variables miembro.
Por ejemplo, cada objeto de la clase Circulo tiene sus propias coordenadas del centro
x e y, y su propio valor del radio r.
Los métodos de objeto se aplican a un objeto concreto poniendo el nombre del objeto
y luego el nombre del método, separados por un punto. A este objeto se le llama
argumento implícito. Por ejemplo, para calcular el área de un objeto de la clase
Circulo llamado c1 se escribirá: c1.area();. Las variables miembro del argumento
125
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Volatile: indica que esta variable puede ser utilizada por distintas threads
sincronizadas que el compilador no debe realizar optimizaciones con esta variable.
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. 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, un contador de objetos creados como numCirculos en la clase Circulo).
Las variables de clase son lo más parecido que Java tiene a las variables globales de
C/C++.
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, en cuanto se llama a un método
static o en cuanto se utiliza una variable static de dicha clase. Lo importante es que
las variables miembro static se inicializan siempre antes que cualquier objeto de la
clase.
126
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. Puede ser considerada como una constante, y
equivale a la palabra const de C/C++.
Además de las variables miembro, también las variables locales y los propios
argumentos de un método pueden ser declarados final.
Declarar como final un objeto miembro de una clase hace constante la referencia,
pero no el propio objeto, que puede ser modificado a través de otra referencia. En
Java no es posible hacer que un objeto sea constante.
7.4 Abstracción
Ejemplo:
127
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, una vez dentro podemos ver esta
compuesto por varios subsistemas: las nubes, los árboles, etc.
7.5 Encapsulado
128
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Cada dato dentro del arreglo se le conoce como elemento del arreglo y se simboliza y
procesa (captura, 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, sólo recordar que en vcpp la primera posición elemento o
renglón es el 0(cero).
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, capturarlos, hacer operaciones con ellos, compilarlos, etc.,
Java proporciona una E/s completa y flexible para archivos y redes. El sistema de E/S
de java es coherente y consistente a la vez que se entienden sus fundamentos, el
resto del sistema de E/s es bastante sencillo.
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, los flujos se comportan de la misma
forma aunque estén relacionados con diferentes dispositivos físicos.
Por esta razón se pueden aplicar las mismas clases y métodos de E/S al cualquier
tipo de dispositivo, donde el flujo de entrada puede abstraer distintos tipos de entrada
desde un archivo de disco a un teclado de conexión de red. Del mismo modo el
destino de salida puede ser una consola, un archivo de disco. 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.
Java implementa los flujos dentro de una jerarquía de clases definida en el paquete
java.io. En la parte superior de la jerarquía hay dos clases abstracta.
129
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 32
7.8 Gestión De Excepciones Y Errores
if ( error == true )
return ERROR;
130
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Todas las excepciones tienen como clase base la clase Throwable, que está incluida
en el paquete java.lang, y sus métodos son:
7.8.2 Funcionamiento
try
{
// Código posiblemente problemático
}
Pero lo importante es cómo controlar qué hacer con la posible excepción que se cree.
Para ello se utilizan las clausulas catch, 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
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Pero, ¿y si quiero realizar una acción común a todas las opciones?. Para insertar
fragmentos de código que se ejecuten tras la gestión de las excepciones. Este código
se ejecutará tanto si se ha tratado una excepción (catch) como sino. Este tipo de
código se inserta en una sentencia finally, que será ejecutada tras el bloque try o
catch:
try
{
} catch( Exception e ) {
} finally {
// Se ejecutara tras try o match }
if ( condicion_de_excepcion == true )
Aquellos métodos que pueden lanzar excepciones, deben cuáles son esas
excepciones en su declaración. Para ello se utiliza la sentencia throws:
132
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, conviene ver al menos un
pequeño ejemplo, que ilustre al lector en el uso de las excepciones:
class Excepciones
{
public static void main( String[] args )
{
// Para leer un fichero
Lanzadora lanza = new Lanzadora();
FileInputStream entrada = null;
int leo;
try
{
entrada = new FileInputStream( "fich.txt" );
while ( ( leo = entrada.read() ) != -1 )
lanza.lanzaSiNegativo( leo );
entrada.close();
System.out.println( "Todo fue bien" );
} catch ( MiExcepcion e ){ // Personalizada
System.out.println( "Excepcion: " + e.getMessage() );
} catch ( IOException e ){ // Estándar
System.out.println( "Excepcion: " + e.getMessage() );
}finally
{
if ( entrada != null )
try
133
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
{
entrada.close(); // Siempre queda cerrado
} catch ( Exception e )
{
System.out.println( "Excepcion: " + e.getMessage() );
}
System.out.println( "Fichero cerrado." );
}
}
}
class Excepciones
{
public static void main( String[] args )
{
// Para leer un Archivo
FileInputStream entrada = null;
Lanzadora lanza = new Lanzadora();
int leo;
try
{
entrada = new FileInputStream("fich.txt");
while ( ( leo = entrada.read() ) != -1 )
80
lanza.lanzaSiNegativo( leo );
System.out.println( "Todo fue bien" );
} catch ( MiExcepcion e ){ // Personalizada
System.out.println( "Excepcion: " + e.getMessage() );
} catch ( IOException e ){ // Estándar
System.out.println( "Excepcion: " + e.getMessage() );
}
finally
{
entrada.close(); // Así el fichero siempre queda cerrado
System.out.println( "Fichero cerrado" ); }
}
}
Además gestiona la excepción IOException, 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.
134
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, al leer el primer número, sería:
Excepción: java.io.IOException
Archivo cerrado
Los métodos son subrutinas que definen la interfaz de una clase, sus capacidades y
comportamiento.
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, de sintaxis tipo identificador separadas por comas.
La forma general de una declaración de método es:
void metodoVacio( ) { };
Los métodos son llamados indicando una instancia individual de la clase, que tendrá
su propio conjunto único de variables de instancia, por lo que los métodos se pueden
referir directamente a ellas.
El método inicia() para establecer valores a las dos variables de instancia sería el
siguiente:
135
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.8.4 La instanciación de las clases: Los objetos
Los tipos simples de Java describían el tamaño y los valores de las variables.
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. Por ello al declarar una nueva variable, se puede utilizar
un nombre de clase como tipo. A estas variables se las conoce como referencias a
objeto.
Todas las referencias a objeto son compatibles también con las instancias de
subclases de su tipo. Del mismo modo que es correcto asignar un byte a una variable
declarada como int, se puede declarar que una variable es del tipo MiClase y guardar
una referencia a una instancia de este tipo de clase:
MiPunto p;
7.8.4.2 Constructores
136
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
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.
Se muestra en la pantalla:
p1.- x = 10 y = 20
Para crear un programa Java que contenga ese código, se debe de crear una clase
que contenga un método main(). El intérprete java se ejecutará el método main de la
clase que se le indique como parámetro.
El operador new crea una instancia de una clase (objetos) y devuelve una referencia a
ese objeto. Por ejemplo:
MiPunto p2 = new MiPunto(2,3);
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. De esta forma se pueden crear múltiples referencias al mismo objeto,
como por ejemplo:
MiPunto p3 =p2;
137
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, hay dos variables (p2 y p3) que lo
referencian. Cualquier cambio realizado en el objeto referenciado por p2 afectará al
objeto referenciado por p3. La asignación de p2 a p3 no reserva memoria ni modifica
el objeto.
Aunque se haya asignado null a p2, p3 todavía apunta al objeto creado por el
operador new.
Cuando ya no haya ninguna variable que haga referencia a un objeto, Java reclama
automáticamente la memoria utilizada por ese objeto, a lo que se denomina recogida
de basura.
p4.- x = 10 y = 20
p5.- x = 42 y = 99
Lección 34
7.8.5. Acceso al objeto
138
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, mediante su referencia a objeto:
referencia_a_objeto.nombre_de_variable_de_instancia
referencia_a_objeto.nombre_de_método( lista-de-parámetros );
Hemos creado un ejemplo completo que combina los operadores new y punto para
crear un objeto MiPunto, almacenar algunos valores en él e imprimir sus valores
finales:
Java incluye un valor de referencia especial llamado this, que se utiliza dentro de
cualquier método para referirse al objeto actual. El valor this se refiere al objeto sobre
el que ha sido llamado el método actual. Se puede utilizar this siempre que se
requiera una referencia a un objeto del tipo de una clase actual. Si hay dos objetos
que utilicen el mismo código, seleccionados a través de otras instancias, cada uno
tiene su propio valor único de this.
MiPunto()
{
139
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 35
7.8.6. La destrucción del objeto
140
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
class ClaseFinalizada
{
ClaseFinalizada() { // Constructor
// Reserva del recurso no Java o recurso compartido
}
protected void finalize()
{
// Liberación del recurso no Java o recurso compartido
}
}
Debe observarse que el método finalize() es de tipo protected void y por lo tanto
deberá de sobreescribirse con este mismo tipo.
Con cada una de las versiones que Sun lanza del JDK, 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, sin temor a fallos de
portabilidad. Además, están bien documentadas (mediante páginas Web), y
organizadas en paquetes y en un gran árbol de herencia.
141
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Parte Uno:
1. Investiga cuales son las herramientas utilizas en java y diga cual es su función.
2. Construye un arreglo donde incluya un método.
3. Realice un mapa conceptual con el siguiente tema E/s.
4. Realice una abstracción jerárquica de su carro donde enuncie el sistema principal y
los subsistemas.
5. 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.
6. Determine e imprima los valores más pequeños y más contenidos en un arreglo de
punto flotante w de 99 elementos.
Parte Dos:
142
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
143
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. Herencia
8.1 La Herencia
8.2 Jerarquía
Los descendientes de una clase heredan todas las variables y métodos que sus
ascendientes hayan especificado como heredables, además de crear los suyos
propios.
En todo lenguaje orientado a objetos existe una jerarquía, mediante la que las clases
se relacionan en términos de herencia. En Java, el punto más alto de la jerarquía es la
clase Object de la cual derivan todas las demás clases.
144
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
8.4 Declaración
Para indicar que una clase deriva de otra, heredando sus propiedades (métodos y
atributos), se usa el término extends, como en el siguiente ejemplo:
Por ejemplo, creamos una clase MiPunto3D, hija de la clase ya mostrada MiPunto:
La palabra clave extends se utiliza para decir que deseamos crear una subclase de la
clase que es nombrada a continuación, en nuestro caso MiPunto3D es hija de
MiPunto.
Lección 37
8.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.
Para controlar el acceso desde otras clases, y para controlar la herencia por las
subclase, 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, y son heredados por las subclases.
private: Los miembros declarados private son accesibles sólo en la propia clase.
145
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, nacidoHace, dineroDisponible;
// Métodos
public int getApuesta()
{
return numeroFavorito;
}
protected int getEdad()
{
return nacidoHace;
}
private int getSaldo()
{
return dineroDisponible;
}
}
En este ejemplo, un objeto de la clase Hija, hereda los tres atributos (numeroFavorito,
nacidoHace y dineroDisponible) y los tres métodos (getApuesta(), getEdad() y
getSaldo() ) de la clase Padre, y podrá invocarlos.
La clase Visita, solo podrá acceder al método getApuesta(), para averiguar el número
favorito de un Padre, pero de ninguna manera podrá conocer ni su saldo, ni su edad
(sería una indiscreción, ¿no?).
146
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 Object es la superclase de todas las clases da Java. Todas las clases
derivan, directa o indirectamente de ella. Si al definir una nueva clase, no aparece la
cláusula extends, Java considera que dicha clase desciende directamente de Object.
La clase Object aporta una serie de funciones básicas comunes a todas las clases:
public boolean equals( Object obj ): Se utiliza para comparar, en valor, dos objetos.
Devuelve true si el objeto que recibe por parámetro es igual, en valor, que el objeto
desde el que se llama al método. Si se desean comparar dos referencias a objeto se
pueden utilizar los operadores de comparación == y !=.
public int hashCode(): Devuelve un código hash para ese objeto, para poder
almacenarlo en una Hashtable.
protected Object clone() throws CloneNotSupportedException: Devuelve una copia
de ese objeto.
public final Class getClass(): Devuelve el objeto concreto, de tipo Class, que
representa la clase de ese objeto. protected void finalize() throws Trowable: Realiza
acciones durante la recogida de basura.
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.7 Extensión De Clases
8.7.1.1. Subclase
Es una versión especializada de una superclase, que hereda todas las variables de
instancia y los métodos definidos por a superclase y que añade sus propios
elementos.
Ejemplo:
Este ejemplo crea una superclase llamada A y una subclase B entonces tenemos:
// ejemplo de herencia
// crea una superclase.
class A
{
int i, j;
void showij();
system.out.println (“i y j:”+i+” “+j);
}
147
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;
void show ();{
system.out.println(“k: “+k);
}
void sum();
{
System.out.println (“i+ j+k: “ +(i+j+k));
}
}
class SimpleInheritance
{
public static void main (string args[ ]){
A superOb = new A ();
B superOb = new b ();
//La superclase se puede usarse así misma.
SuperOb.i = 10;
SuperOb.j = 20;
System.out.println (“Contenido de SuperOb: ”);
SuperOb.showij();
System.out.println();
/* la subclase tiene acceso a todos los miembros públicos de la superclase.*/
SuperOb.i = 7;
SuperOb.j = 8;
SuperOb.k = 9;
System.out.println (“Contenido de SubOb: ”);
SuperOb.showij ( );
SuperOb.showk ( );
System.out.println ( );
System.out.println ( “ suma de i, j y k en subOb: “);
subOb.sum ( );
}
}
Contenido de la subOb:
I y j: 7,8 K: 9
Suma de i, j y k en subOb:
I+j+k: 24
148
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 39
8.7.2.1 Métodos
Tipo nombre_de_método(lista_de_parámetros)
{
//cuerpo_del_método
}
Aquí, tipo especifica el tipo de dato devuelto por el método. Puede ser cualquier tipo
válido, incluidos los tipos de clase. Si el método no devuelve ningún valor, el tipo
devuelto debe ser void.
El nombre del método puede ser cualquier identificador válido distinto de los ya
utilizados por otros elementos del ámbito actual. La lista de parámetros son variables
que reciben el valor de los argumentos que se pasan al método. Si el método no tiene
parámetros, entonces la lista de parámetros estará vacía..
Los métodos que devuelven un tipo distinto de void, devuelve un valor a la rutina
llamante utilizando la siguiente forma de la sentencia return.
Ejemplo
149
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 40
8.7.2.2 Sobrecarga De Método
Ejemplo:
class overload
{
public static void main (string args[ ])
{
overloadDemo ob=new overloadDemo( );
double result;
// llama a todas las versiones de test ( )
ob.test ( );
ob.test (10 );
ob.test ( 10,20);
result = ob.test (123 .2 );
150
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Clase object y códigos genéricos: La clase object es definida por java, esta clase es
la superclase de las demás clases, donde esta clase puede referenciar a un objeto de
otra clase; teniendo en cuenta que las matrices se implementan como las clases una
variable de tipo object puede referenciar a una matriz.
Object clone ( ): crea un nuevo objeto igual al que está siendo duplicado
Bolean equeal(object objeto): determina si un objeto es igual a otro.
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.
151
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 41
9.1. Applest Y Web
9.1.1 Applets
El visualizador del cliente, que funciona con Java (tiene una VM) interpreta el
Bytecode y despliega el applet .
Como código del applet contiene toda la información necesaria, el usuario tiene una
interacción total con el applet sin relacionarse de nuevo con el servidor.
El elemento que define un documento con hipertexto es que se puede leer de una
forma no lineal, donde el usuario puede elegir distintos caminos a través de los
enlaces, pudiendo acceder a otros documentos relacionados.
La única conexión que tiene HTML con java es que proporcional la etiqueta applet
que permite ejecutar applest. Por lo tanto, es imposible introducir instrucciones de java
en un documento HTML para hacer que se ejecute una applet.
Un protocolo es un lenguaje que se usa para ejecutar tareas muy específicas. Por
ejemplo el protocolo para conectar un cliente con un servidor a través de Internet.
152
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:
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.
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.
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.
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.
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.
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
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(); Es invocado cada vez que hay que el navegador redibuja el applet. Al
crear una applet no es necesario implementar todos estos métodos. De hecho habrá
applets que no los necesiten.
Cuando un navegador carga una página Web que contiene una applet, suele mostrar
en su parte inferior un mensaje como:
initializing... starting...
Cuando el usuario se encuentra con una página Web, que contiene una applet y salta
a otra página, entonces el applet se detiene invocando a su método stop(). Si el
usuario retorna a la página donde reside el applet, ésta vuelve a ejecutarse
nuevamente invocando a su método start().
Cuando el usuario sale del navegador el applet tiene un tiempo para finalizar su
ejecución y hacer una limpieza final, mediante el método destroy().
Para incluir una applet en una página Web, una vez compilada la applet, debe
incluirse entre el código HTML de la página Web una etiqueta <APPLET>, que como
mínimo ha de presentar los siguientes tres parámetros:
code: Especifica el URL del fichero de clase Java (*.class) que contiene la applet.
width: Especifica la anchura inicial de la applet (en pixels). heigth: Especifica la altura
inicial de la applet (en pixels).
156
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
name: Indica el nombre del parámetro de la applet al que esta etiqueta hace
referencia.
Cuando se incluye una applet en una página Web ha de hacerse mediante la etiqueta
HTML <applet>. Las etiquetas HTML permiten utilizar parámetros, y la etiqueta
<applet> hace lo propio, permitiendo a la applet recibir parámetros de ejecución, tal y
como una aplicación los recibe en el parámetro (un vector de cadenas) de su método
main(Strings).
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:
157
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
Un ejemplo de como definir este método para una applet que permita un solo
parámetro, color, sería:
Algunas applets pueden afectar al entorno en que están ejecutándose. Para ello se
utilizan los métodos:
void resize( int ancho, int largo); Solicita que se modifique el tamaño de la applet.
9.1.8.1 Código
Para crear un applet normalmente será necesario importar al menos las bibliotecas
java.awt.* y la java.applet.*.
Siempre conviene sobreescribir al menos el método paint() que será llamado por los
navegadores que soporten applets para mostrarles por pantalla.
158
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.awt.*;
import java.applet.*;
public class AppletDiagonal extends Applet
{
public void paint(Graphics g)
{
g.setColor( Color.red );
g.drawLine(0, 0, getWidth(), getHeight() );
}
}
Por último, mediante drawLine() se dibuja una línea dadas las coordenadas de su
esquina superior izquierda y de la inferior derecha. En este caso se indican la esquina
superior izquierda de la applet mediante las coordenadas (0,0), y la esquina inferior
derecha se obtiene mediante dos métodos de la clase Dimension (getWidth(),
getHeight() )
.
9.1.8.2 Ejecución
Para ejecutar el applet, una vez compilado el archivo, se introduce el llamado al applet
en una página Web (por ejemplo AppletDiagonal.htm), 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
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.drawRect(10, 10, r.width –20, r.height –20);
Parte Uno:
Parte Uno:
160
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
161
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
10.1. BIBLIOGRAFIA
Autor: Deitel y Deitel Introducción DOO con UML y los Patrones de Diseño JDBC
tm, SERVLETS, JSP tm Editorial Pearson Prentice Hall Quinta Edición.
Agustin Froute Java 2 Manual Usuario tutorial 3 Edición Editorial Alfaomega Ra-
Ma 5.
162
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD
ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
CONTENIDO MODULO DEL CUSO: 301403 – PROGRAMACION ORIENTADA A OBJETOS
www.lawebdelprogramador.com
www.programacion.com
http://www.cimat.mx/~jlabreu/CursoJava/
http://www.mindview.net/Books/TIJ
http://java.sun.com/docs/books/tutorial/
http://programacion.com/java/tutoriales/
http://www.inf.udec.cl/~mvaras/estprog/cap44.html
163