Overblog
Seguir este blog Administration + Create my blog
5 mayo 2014 1 05 /05 /mayo /2014 22:45

La Programación Orientada a Objetos.

 

Como todos sabemos, los programas se componen de procedimientos y datos. Los procedimientos son los que se encargan de realizar tareas específicas, como calcular la suma de dos números, o mostrar un Frame en pantalla. Los argumentos (datos que se le pasan a los procedimientos), son generalmente estructuras globales o se pasan como parámetros.

Java, es un lenguaje de programación Orientado a Objetos…mmm… entonces, ¿qué es la programación orientada a objetos?... pues bien, es una técnica de programación, que usa los objetos  como secuencia de construcción.

Y, ¿qué es un objeto?, Un Objeto  es una colección de datos, junto con las funciones asociadas a esos datos y que operan sobre ellos.

Lo importante y fundamental de los objetos, son las propiedades de ellos, y estas son:

·         Herencia

·        Encapsulamiento o Encapsulación

·        Polimorfismo.

 

La programación orientada a objetos es una “filosofía”, un modelo de programación, con su teoría y su metodología, que conviene conocer y estudiar antes de nada. Un lenguaje orientado a objetos es un lenguaje de programación que permite el diseño de aplicaciones orientadas a objetos. Dicho esto, lo normal es que toda persona que vaya a desarrollar aplicaciones orientadas a objetos aprenda primero la “filosofía” (o adquiera la forma de pensar) y después el lenguaje, porque “filosofía” sólo hay una y lenguajes muchos La programación orientada a objetos surge en la historia como un intento para dominar la complejidad que, de forma innata, posee el software. Tradicionalmente, la forma de enfrentarse a esta complejidad ha sido empleando lo que llamamos programación estructurada, que consiste en descomponer el problema objeto de resolución en subproblemas y más subproblemas hasta llegar a acciones muy simples y fáciles de codificar. Se trata de descomponer el problema en acciones, en verbos.

 

La programación orientada a objetos es otra forma de descomponer problemas. Este nuevo método de descomposición es la descomposición en objetos; vamos a fijarnos no en lo que hay que hacer en el problema, sino en cuál es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro programa.

 La programación orientada a objetos es una nueva forma de programar sistemas de la vida real. Es una colección de objetos que interactúan entre si por medio del pase de mensajes. Puede ser descrita como la disciplina de modelaje y desarrollo de software que hace fácil la construcción de sistemas complejos por medio de componentes individuales llamados clases de objetos. El término P.O.O. significa que se organizará al software con una colección de objetos discretos que incorporan tanto una estructura de datos como un conjunto de procedimientos que son los únicos capaces de alterar la estructura de dato del objeto.

La programación orientada a objetos permite:

 

            1. Modelaje de problemas del mundo real de una manera más sencilla por parte del usuario.

            2. Facilidad de interrelación con otros ambientes computacionales.

            3. Construcción de componentes de software que pueden ser reusables y que ofrecen la facilidad de ser extensibles (agregar más componentes).

            4. Facilidad de modificación e implantación extensiva de los componentes del software sin tener que recodificar el sistema que emplee estos componentes.

 

 Los lenguajes de programación tradicionales no orientados a objetos, como C, Pascal, BASIC, o Modula-2, basan su funcionamiento en el concepto de procedimiento o función. Una función es simplemente un conjunto de instrucciones que operan sobre unos argumentos y producen un resultado. De este modo, un programa no es más que una sucesión de llamadas a funciones, ya sean éstas del sistema operativo, proporcionadas por el propio lenguaje, o desarrolladas por el mismo usuario.

En el caso de los lenguajes orientados a objetos, como es el caso de C++ y Java, el elemento básico no es la función, sino un ente denominado precisamente objeto. Un objeto es la representación en un programa de un concepto, y contiene toda la información necesaria para abstraerlo: datos que describen sus atributos y operaciones que pueden realizarse sobre los mismos.

La programación orientada a objetos es una nueva forma de pensar, una manera distinta de enfocar los problemas. Ahí radica la dificultad de aprender un lenguaje totalmente orientado a objetos, como es Java, sin conocer previamente los pilares de la programación orientada a objetos. Hecha esta importante aclaración, conviene destacar que Java, más que un lenguaje orientado a objetos, es un lenguaje de objetos. Java incorpora el uso de la orientación a objetos como uno de los pilares básicos y fundamentales del lenguaje. Esto constituye una importante diferencia con respecto a C++. C++ está pensado para su utilización como lenguaje orientado a objetos, pero también es cierto que con C++ se puede escribir código sin haber oído nada de la programación orientada a objetos. Esta situación no se da en Java, dotado desde las primeras etapas de su diseño de esta filosofía, y donde no cabe obviar la orientación a objetos para el desarrollo de programas, por sencillos que éstos sean. Al contrario que en C++, en Java nada se puede hacer sin usar al menos un objeto.

 

Conceptos Asociados a la Programación Orientada a Objetos (POO)

  Objetos.

 

Definición de Objeto:

Un objeto es cualquier cosa, real o abstracta, que posee atributos y un conjunto de operaciones que manipulan esos atributos; atributos y operaciones le dan al objeto un COMPORTAMIENTO particular. Por ejemplo, en una biblioteca podemos distinguir los objetos libros, revistas, fichas, etc. Al conjunto de atributos y procedimientos se les denomina “clase”.


Un objeto es cualquier entidad representable en un programa informático, bien sea real (ordenador) o bien sea un concepto (transferencia). Un objeto en un sistema posee: una identidad, un estado y un comportamiento.


El estado marca las condiciones de existencia del objeto dentro del programa. Lógicamente este estado puede cambiar. Un coche puede estar parado, en marcha, estropeado, funcionando, sin gasolina, etc.


El comportamiento determina como responde el objeto ante peticiones de otros objetos. Por ejemplo un objeto conductor puede lanzar el mensaje arrancar a un coche. El comportamiento determina qué es lo que hará el objeto. La identidad determina que cada objeto es único aunque tengan el mismo valor.


No existen dos objetos iguales. Lo que sí existe es dos referencias al mismo objeto. Los objetos se manejan por referencias, existirá una referencia a un objeto.

De modo que esa referencia permitirá cambiar los atributos del objeto. Incluso puede haber varias referencias al mismo objeto, de modo que si una referencia cambia el estado del objeto, el resto (lógicamente) mostrarán esos cambios.


Los objetos por valor son los que no usan referencias y usan copias de valores concretos. En Java estos objetos son los tipos simples: int, char, byte, short, long, float, double y boolean. El resto son todos objetos (incluidos los arrays y Strings).

 

Características de los Objetos

Los objetos como tales, presentan muchas cualidades  diferentes, respecto a una variable simple. Entre ellas podemos mencionar las siguientes:

1.    Los objetos se pueden agrupar en rubros (o tipos) denominados Clases

2.    El estado de los objetos está determinado por los datos del mismo

3.    Permite lo que se conoce como Ocultación de datos

4.    Pueden heredar propiedades de otros objetos

5.    Por medio de los Mensajes un objeto se puede comunicar con otro

      6.    Los métodos definen el comportamiento de los objetos

Un objeto se puede representar gráficamente de la siguiente manera:



En donde, Nombre, es identificar correspondiente a ese objeto: Por ejemplo Empleados(), Alumnos(), Datos(), etc, etc.

Los atributos, son los datos con los que operan los métodos (o Funciones) del objeto.

Y las Funciones o Métodos, son las que operan sobre esos datos.

Clases

Se puede decir, que son tipos definidos por el usuario, las cuales determinan la estructura de los datos y las funciones asociadas con esos tipos.

Las clases como plantillas (que el programador crea). La clase define las variables y los métodos comunes a los objetos de ese tipo, pero luego, cada objeto tendrá sus propios valores y compartirán las mismas funciones.

Primero deberemos crear una clase antes de poder crear objetos o instancias (ejemplares) de esa clase.

 

Atributo.

Definen las propiedades de un objeto de datos y toman una de las tres características diferentes:

                    1. Se usa para nombrar una ocurrencia del objeto de datos.

                    2. Describen la ocurrencia.

                   3. Hace referencia a otra ocurrencia en otra tabla.

 

            Uno o varios atributos se definen como un identificador. Este atributo identificador supone una clave cuando queremos encontrar una instancia del objeto de dato. Para desarrollar un conjunto de atributos para un objeto, el analista puede estudiar de nuevo la narrativa de proceso para el problema seleccionar aquellos elementos que razonablemente pertenecen al objeto. Para cada objeto deben responderse la siguiente interrogante: ¿Qué elementos (compuestos o simples) definen completamente al objeto en el contexto del problema actual?

 

Mensajes 

Para poder crear una aplicación se necesita más de un objeto, y estos objetos no pueden estar aislados unos de otros, para comunicarse esos objetos se envían mensajes.

Los mensajes son simples llamadas a las funciones o métodos del objeto con él se quiere comunicar para decirle que haga alguna cosa.

 

Herencia

La herencia es un mecanismo que permite crear una clase basándose en una clase existente, y ésta tendrá todas las variables y los métodos de su ‘superclase’, y además se le podrán añadir otras variables y métodos propios.


Se llama ‘Superclase’ a la clase de la que desciende una clase.


La herencia consiste en el compartir atributos y métodos entre clases basándose en una relación jerárquica. Una clase puede definirse ampliamente y redefinirse sucesivamente en subclases más refinadas. Cada subclase que se incorpora, hereda todas las propiedades de su superclase y adiciona sus propias y únicas propiedades. Las propiedades de la superclase no necesariamente deben de repetirse en cada subclase. La habilidad para sacar factor común de las propiedades de una clase dentro de una superclase común y la herencia de propiedades desde la superclase pueden ayudar enormemente en el diseño. Una clase implanta el tipo de objeto. Una subclase hereda propiedades de su clase padre; una sub-subclase hereda propiedades de las subclases; etc. La herencia de la estructura de datos permite la reutilización de la estructura. En la herencia múltiple, una clase puede heredar estructuras de datos y operaciones de más de una superclase.


            La herencia interactúa en combinación con el encapsulado. Si una clase dada encapsula algunos atributos, entonces cualquier subclase tendrá los mismos atributos más cualquiera que actúe como parte de su especialización.

 

Polimorfismo


(Poli=muchos; morfo=Formas), Polimorfismo, es la cualidad de tener más de una forma. Java, permite que el código de sus programas tenga  la posibilidad de ser usados con diferentes tipos de datos  u objetos.


Una de las características fundamentales de la P.O.O. es el polimorfismo, que no es otra cosa que la posibilidad de construir varios métodos con el mismo nombre, pero con relación a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto soporta la habilidad de enviar un mismo mensaje a objetos de clases diferentes. Estos objetos recibirán el mismo mensaje global pero responderán de formas diferentes; por ejemplo, un mensaje "+" a un objeto ENTERO significa suma, mientras que para un objeto STRING significa concatenación "pegar" strings uno seguido al otro.


          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.

 


        Polimorfismo significa que la misma operación puede comportarse diferentemente sobre distintas clases. Por ejemplo, la operación "mover" ejemplo puede comportarse diferentemente sobre una clase llamada Ventana y una clase llamada Piezas_ajedrez. Una operación es una acción o transformación que un sujeto ejecuta sobre un objeto, por ejemplo, justifica a la derecha, desplegar, mover. Una implantación específica de un operación para una cierta clase es llamada método. Un operador orientado por objeto o polimórfico puede tener más de un método implantado.


          Clasificación de Polimorfismo.


          1. Polimorfismo Paramétrico: Se obtiene cuando una función trabaja uniformemente sobre un rango de tipos; esos tipos normalmente exhiben una estructura común y puede comportarse de manera distinta para cada tipo.


           2. Polimorfismo de Inclusión: Es un polimorfismo utilizado por modelos de subtipos y herencia. En este tipo de polimorfismo un objeto puede pertenecer a clases diferentes que no necesariamente son disjuntas.


            El polimorfismo paramétrico y de inclusión están clasificados en una categoría mayor llamada polimorfismo universal, el cual contrasta con el polimorfismo no universal o el polimorfismo ad hoc.


             3. Polimorfismo por Overloading: En este caso el mismo nombre de la variable se utiliza para denotar diferentes funciones, y el contexto se utiliza para decidir cuál función se debería ejecutar para una invocación particular del nombre. Puede imaginarse que para el procesamiento de un programa eliminemos el overloading por asignación de nombres distintos a las funciones diferentes, en este caso tendríamos programas con muchos nombres de funciones. El overloading es justamente una abreviación sintáctica conveniente, que permite poseer diferentes funciones con un mismo nombre.


          4. Polimorfismo por Coerción: Es una operación semántica que convierte argumentos a los tipos esperados por una función, en una situación que de otra forma resultaría en un tipo de error. La coerción puede estar dada estáticamente, insertándose automáticamente entre argumentos y funciones a tiempo de compilación o pueden tener que determinarse dinámicamente, con pruebas a tiempos de ejecución sobre los argumentos. 

Abstracción

 

En el sentido más general, una abstracción es una representación concisa de una idea o de un objeto complicado. En un sentido más específico, la abstracción localiza y oculta los detalles de un modelo o diseño para generar y manipular objetos.

Una abstracción tiene un significado más general que la encapsulación, pudiendo hablar de abstracción de datos en lugar de encapsulación de datos.

 

Encapsulación.


Es una técnica que permite localizar y ocultar los detalles de un objeto. La encapsulación previene que un objeto sea manipulado por operaciones distintas de las definidas. La encapsulación es como una caja negra que esconde los datos y solamente permite acceder a ellos de forma controlada.

Las principales razones técnicas para la utilización de la encapsulación son:

1) Mantener a salvo los detalles de representación, si solamente nos interesa el Comportamiento del objeto.

2) Modificar y ajustar la representación a mejores soluciones algorítmicas o a nuevas tecnologías de software.

 

 

Compartir este post
Repost0
28 abril 2013 7 28 /04 /abril /2013 18:47

 

Diapositiva1.JPG

 

Diapositiva2.JPG

 

Diapositiva3.JPG

Diapositiva4.JPG

Diapositiva5.JPG

Diapositiva6.JPG

Diapositiva7.JPG

Diapositiva8.JPG

Diapositiva9.JPG

Diapositiva10.JPG

Diapositiva11.JPG

Compartir este post
Repost0
28 abril 2013 7 28 /04 /abril /2013 18:36

1. En una tienda donde solo hay 10 productos se desea calcular el total de ganancia que produjo dicho negocio este mes. Para ello se cuenta por producto con: Precio del Costo, precio de venta, código y cantidad vendida en ese periodo. Realizar programa que permita calcular las Ganancias de la Tienda.

 

2. Almacenar 50 números en un vector, elevar al cuadrado cada valor almacenado en el vector, almacenar el resultado en otro vector. Imprimir el vector original y el vector resultante

 

3. Una infantería tiene n cantidad de reclutas. Se desea desarrollar un programa mediante arreglos para determinar cuántos infantes están inscritos en cada curso y con cuantas mujeres y cuantos hombres cuenta la nación en estas especialidades dentro de esta fuerza.

 

4. Se tiene dos vectores A y B, diseñe una solución, en la cual, en un tercer vector se guarde la multiplicación de los vectores A y B, y luego se impriman los tres vectores, uno a la par del otro, en forma vertical

 

5. Desarrolle un programa que inicialice  un arreglo bidimensional de dimensión 2 x 3, y que imprime y sume sus elementos.

 

6. Se desea calcular el promedio, mínimo y máximo de una lista de notas correspondientes a un curso. Se recibirá el número de alumnos y la nota correspondiente a c/u, y se entregan los resultados en la pantalla.

 

7. Se desea escribir un programa que permita manejar la información de habitantes de un complejo habitacional. El mismo posee 7 torres; a su vez cada torre posee 20 pisos y cada piso 6 departamentos.

Se desea saber:

a-   Cantidad total de habitantes del complejo

b-   Cantidad promedio de habitantes por piso de cada torre

c-   Cantidad promedio de habitantes por torre

 

8. Elaborar un programa que acepte números enteros como datos de entrada, los almacene en un arreglo y calcule su promedio y el valor máximo de estos datos.

 

Compartir este post
Repost0
4 julio 2010 7 04 /07 /julio /2010 00:54

Muller, P. (1997) en su obra Modelado de Objetos con UML, define a este como un lenguaje de modelado y no como un método o un proceso. Sostiene además que el UML está compuesto por una notación muy específica y por las reglas semánticas relacionadas para la construcción de sistemas de software.

 

 

 

Muller plantea que el UML en sí mismo no prescribe ni aconseja cómo usar esta notación en el proceso de desarrollo o como parte de una metodología de diseño orientada a objetos.

 

 

 

El UML soporta un conjunto rico en elementos de notación gráficos. Describe la notación para clases, componentes, nodos, actividades, flujos de trabajo, casos de uso, objetos, estados y cómo modelar la relación entre esos elementos. El UML también soporta la idea de extensiones personalizadas a través elementos estereotipados.

 

 

 

El UML provee beneficios significativos para los ingenieros de software y las organizaciones al ayudarles a construir modelos rigurosos, trazables y mantenibles, que soporten el ciclo de vida de desarrollo de software completo.

 

 

 

En líneas generales, el UML combina lo mejor de los Conceptos de Modelado de Datos (Diagramas Entidad-Relación), Modelado de Negocios (Flujos de Trabajo), Modelado de Objetos y Modelado de Componentes.

Dentro de este lenguaje se definen nueve (09) tipos de diagramas que representan los diferentes puntos de vista del modelado, a saber:

a-    Diagrama de Clases: Representan la estructura estática en términos de clases y relaciones.

 

b-    Diagrama de Casos de Uso: Representan las funciones de un sistema desde el punto de vista del usuario.

 

c-    Diagrama de Objetos: Representan objetos y sus relaciones.

 

d-    Diagrama de Actividades: Representan el comportamiento de una operación como un conjunto de acciones.

e-    Diagrama de Iteración: Se clasifican en:

-         Diagrama de Secuencia: Son una representación temporal de los objetos y sus relaciones.

-         Diagrama de Colaboración: Son una representación espacial de objetos, uniones e interacciones.

 

  1. Diagrama de Estados: Representan el comportamiento de una clase en términos de estado.
  2.  Diagrama de Implementación: Se clasifican en:

-          Diagrama de Componentes: Representan los componentes físicos de una aplicación.

-          Diagrama de Despliegue: Representan la colocación de componentes en piezas particulares de hardware.

 

Diagrama de Clases. Simbología.

         La terminología empleada en el Diagrama de Clases de UML es muy similar a la vista en la teoría básica de Orientación a Objetos, es decir, se presentarán nuevamente conceptos como Asociación, Relación, Clases, Objetos, Multiplicidad, Herencia, Generalización, Especialización, Agregación, entre otros ya vistos.

 

 

Representación gráfica de una Clase en UML

 1-copia-4.jpg

 

 

Representación gráfica de la Herencia en UML

 

 

3.jpg

 

 

Representación gráfica de las Relaciones entre Objetos y Clases en UML.

 

Son enlaces o conexiones físicas o conceptuales entre Objetos y/o Clases. Desde el punto de vista de la implementación, una asociación es un puntero que apunta desde un objeto a otro

4.jpg

 

Representación de las Multiplicidades en las Relaciones entre Objetos y Clases en UML.

5.jpg

Representación gráfica de la Agregación o Composición entre Objetos y Clases en UML.

 

Indica que una Clase está “compuesta” o “formada” por varias de otra Clases. En el gráfico, la Clase Facturas de Ventas esta “formada” o “compuesta” por varios Producto (Clase Producto.

6.jpg

 

Representación gráfica de la Asociación Atribuida entre Clases en UML.

 

Representa el enlace o intersección entre Clases que presentan multiplicidades “muchos a muchos” a ambos lados de la Relación. Es equivalente al Atributo de Enlace o Clase como Asociación de OMT. Se conecta a la Relación que atribuye a través de una línea punteada o discontinua.

7.jpg

 

Representación gráfica de los Comentarios en UML.

 

Permiten agregar cualquier tipo de comentario adicional, no solo en un Diagrama de Clases, sino en cualquier otro diagrama de UML. En el ejemplo, se conecta al elemento a comentar a través de una línea punteada o discontinua.

 

8.jpg

 

Compartir este post
Repost0
1 julio 2010 4 01 /07 /julio /2010 22:27

Unidad. III

Manejo de Clases-Objetos- Metodos-Constructores-Sobrecarga de Metodos-Excepciones.

 

 

            Instrucciones. Desarrolle las clases, necesarias, con sus diversos atributos, metodos y objetos, a fin de darle solucion  a los siguientes problemas.

 

            1. Se tienen las 50 edades de los empleados de una empresa, de las cuales se desea conocer: a) El número de empleados que tienen menos de 30 año, b) El número de empleados que tienen entre 30 y 50 años, c) El número de empleados que tienen más de 50 años,  y d) La edad promedio de los empleados.

 

            2. Se recibe como entrada el volumen de los arboles  de una plantacion, asumiendo que se desconoce cuantos árboles se van a procesar, se desea calcular el volumen total, y el numero de árboles procesados.

 

            3. En un centro meteorologico se llevan las precipitaciones mensuales caidas en tres zonas del pais: Occidente, Centro y Oriente. Se desea un programa que reciba como datos de entrada las precipitaciones registradas en los 12 mesea de un año para cadaregion y determine: a) precipitacion anual en cada region y b) region con mayor precipitacion anual.

 

            4. Se desea contabilizar una cuenta de ahorros. Como atributos se tiene el nombre del titular de la cuenta y el saldo inicial. Se permite hacer depositos y retiros sucesivos, el usuario de be escribir   “1”si desea depositar o “2” si desea retirar. Cuando es deeposito se incrementa el saldo y  cuando es retiro se resta, luegode cada operación mostrar elsaldo. El programadebe finalizart cuando ya no se deseen hacer más movimientos. Al terminar, el programa debe mostrar el saldo final.

 

            5.¿A una fiesta asistieron personas de diferentes edades y sexos. Construir un programa dadas las edades y sexos de las personas? Calcular :

      -Cuantas personas asistieron a la fiesta

      -Cuantos hombres y cuantas mujeres

      -Promedio de edades por sexo

      -La edad de la persona más joven que asistió

      -No se permiten menores de edad a la fiesta

            -Ingresar datos hasta que se ingrese una edad a cero 

 

            6.Una tienda se dedica a la venta de computadoras, cuenta con 10 vendedores. Cada uno de ellos tiene un sueldo mensual pero además de su sueldo ganan una comisión por venta:

      Si el monto de venta es mayor de 1000 la comisión será del 15%

      Si el monto de venta es mayor ó = a 500 y menor de 1000 la comisión es del 5%

            Si el monto de la venta es menor que 500 no tiene comisión.

            Mostrar como salida el sueldo mensual del vendedor.

 

            7. A un profesor le pagan según sus horas y una tarifa de pago por horas.

            Si la cantidad de horas trabajadas es mayor a 40 horas, la tarifa se incrementa en un 50 % para las horas extras. Calcular el salario del profesor dadas las horas trabajadas y la tarifa.

            8.Una compañía paga a sus empleados en forma semanal. La compañía tiene cuatro tipos de empleados:

 

·         Empleados asalariados que reciben un salario semanal fijo, sin importar el número de horas trabajadas.

·         Empleados por horas, que reciben un sueldo por hora y pago por tiempo extra.

·         Empleados por comisión, que reciben un porcentaje de sus ventas.

·         Empleados asalariados por comisión, que reciben un salario base más un porcentaje de sus ventas.

 

      Para este periodo de pago la compañía ha decidido compensara a los empleados asalariados por comisión, agregando un 10% a sus salarios.

 

            La compañía desea implementar una aplicación en Java que realice sus cálculos de nómina.

 

9. Un negocio mayorista vende Diskette, Discos Compactos y Mouse. Se necesita un programa que acepte como datos de entrada el precio unitario de estos artículos y la cantidad de cada uno de ellos pedida por un cliente. El programa debe mostrar como salida: a) El artículo que se vendió menos, b) Los totales de venta por artículos, c) y el promedio de las ventas totales.

 

10.La Empresa, el porvenir S.A, desea conocer lo que debe pagar en concepto de horas extras a un grupo de n empleados. Se sabe que una hora extra diurna, se paga el doble que una hora normal. Y una hora extra nocturna se paga el doble de una hora normal más el 25%. Además que todos los empleados tienen sueldos diferentes, muestre el nuevo sueldo de cada uno de ellos y lo que tendrá que pagar la empresa en concepto de horas extra.

Compartir este post
Repost0
16 junio 2010 3 16 /06 /junio /2010 04:50

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowListener;
import java.awt.event.WindowEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.ArrayList;

/**
 *
 * @author ProfesorLuisEduardo
 */
public class Ventana extends JFrame {

    // Declaración de variables
private JTextField txtNombre;
private JTextField txtEdad;
private JButton btnGuardar;
private JButton btnSalir;
private ArrayList ar = new ArrayList();

    public static void main(String[] args) {
      new Ventana ("Ejemplo Examen");

    }
public Ventana (String titulo)
{
Container c = this.getContentPane();
c.setLayout(new BorderLayout());
JLabel lblTitulo = new JLabel("Ejemplo de Ventana");
lblTitulo.setFont(new Font("Arial", Font.BOLD, 14));
c.add(lblTitulo, BorderLayout.NORTH);
JLabel lblNombre = new JLabel("Nombre: ");
txtNombre = new JTextField (10);
txtNombre.addKeyListener (new KeyAdapter()
        {
            @Override
public void keyPressed (KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)
txtEdad.requestFocus();
}
});
JLabel lblEdad = new JLabel("Edad: ");
txtEdad = new JTextField (10);
txtEdad.setBackground (Color.BLACK);
txtEdad.setForeground (Color.YELLOW);
txtEdad.setHorizontalAlignment(JTextField.CENTER);
txtEdad.addKeyListener (new KeyAdapter()
{
public void keyPressed (KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_ENTER)
{
// Almacenar la ocurrencia creada en un ArrayList
String nombre = txtNombre.getText();
int edad = Integer.parseInt(txtEdad.getText());
ar.add(new Persona(nombre, edad));
// Limpiamos las cajas de texto
txtNombre.setText("");
txtEdad.setText("");
// Asignamos el foco a la primera caja de texto
txtNombre.requestFocus();
}
}
});
JPanel pnlCentro = new JPanel();
pnlCentro.setLayout(new GridLayout(2,2));
pnlCentro.add (lblNombre);
pnlCentro.add (txtNombre);
pnlCentro.add (lblEdad);
pnlCentro.add (txtEdad);
c.add (pnlCentro, BorderLayout.CENTER);
btnGuardar = new JButton("Guardar el objeto");
btnGuardar.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
{

}
});
btnSalir = new JButton ("Salir de la Aplicación");
btnSalir.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
Ventana.this.dispose();
System.exit(0);
}
});

JPanel pnlSur = new JPanel();
pnlSur.setLayout (new FlowLayout());
pnlSur.add (btnGuardar);
pnlSur.add (btnSalir);
c.add (pnlSur, BorderLayout.SOUTH);
this.setTitle(titulo) ;
this.setResizable(false);
this.pack();
this.setVisible(true);
this.addWindowListener(new WindowAdapter()
{
            @Override
public void windowClosing (WindowEvent e)
{
// Finalizamos la aplicación
Ventana.this.dispose();
System.exit(0);
}
});
}
}

Captura3.PNG

Compartir este post
Repost0
1 junio 2010 2 01 /06 /junio /2010 17:51

   Durante los temas anteriores se han tratado elementos de la construcción de interfaces de usuario. No obstante los paquetes de Java proporcionan clases especiales para crear interfaces de usuario. Además discutiremos también los principales apartados sobre la apariencia.

    La colocación de componentes se realiza con el método add del contenedor en el que va el panel.


Administración de Diseño.

 

      Los administradores de diseño son una parte esencial de la creación de interfaces de usuario, ya que determinan las posiciones de los controles en un contenedor. En lenguajes orientados a una sola plataforma, el problema es menor ya que el aspecto es más fácilmente controlable. Pero la filosofía Java está orientada a la portabilidad del código. Por eso este es uno de los apartados más complejos de la creación de interfaces, ya que las medidas y posiciones dependen de la máquina en concreto.


    En otros entornos los componentes se colocan con coordenadas absolutas. En Java se desaconseja esa práctica porque en muchos casos es imposible prever el tamaño de un componente.


    En su lugar se utilizan administradores de diseño que permiten realizar colocaciones y maquetaciones de forma independiente de las coordenadas.


    El método setLayout dentro de la clase Container es el encargado de proporcionar un administrador de diseño a un determinado panel. Este método tiene como único parámetro un objeto de tipo LayoutManager. LayoutManager, es una
interfaz implementada en diversas clases que sirven para maquetar (FlowLayout, GridLayout, BoxLayout, BorderLayout, GridBagLayout, ...)


    La adición de elementos se puede crear con el método add. A veces no se muestran los cambios en el contenedor, para forzarles hay que utilizar el método validate que poseen los contenedores.

 

Flow Layout.

 

Distribuye los componentes del contenedor de izquierda a derecha y de arriba abajo. Es la distribución más fácil y una de las más efectivas.

 

Pantallazo-2.png

 

 

Pantallazo.png


Grid Layout
     Crea distribuciones en forma de malla que posee una serie de columnas y filas. Estas filas y columnas crean celdas de exactamente el mismo tamaño. Los componentes se distribuyen desde la primer celda a la izquierda de la primera fila; y van rellenando fila a fila toda la malla hasta la celda más a la derecha de la última fila.

Pantallazo-1.png

       El método add de los contenedores admite un segundo parámetro con el que se puede indicar el número de la celda donde se coloca el componente. Ejemplo:

 

       getContentPane().add(boton15,5);


       En el ejemplo el botón llamado boton15 se coloca en la sexta casilla (la primera es la 0). Si había más casillas detrás de esa, entonces se mueven al siguiente hueco.

    Si se añaden más componentes que casillas tenga el contenedor, entonces se amplía el Grid en consecuencia automáticamente.


Border Layout
        Permite colocar componentes alrededor de los bordes de un contenedor. Por defecto es lo que utiliza AWT (y por lo tanto las clases Swing). Los bordes son NORTH. SOUTH,  EAST, WEST y CENTER. Se suele utilizar estas formas en el método add para  colocar componentes en el panel deseado:

Pantallazo-3.png

 

Pantallazo-4.png

BoxLayout.


      Permite distribuir componentes en una fila o columna. Pensado para filas y columnas de botones, pertenece al paquete javax.swing (las anteriores están en java.awt).


       Para facilitar su manejo, Swing incluye un contenedor llamado Box que está pensado para manipular los componentes insertados en el contenedor. Box es una clase que posee diversos métodos estáticos que manipular internamente el administrador BoxLayout. Para crear un contenedor Box:

 

Pantallazo-5.png

 

Métodos de la Clase Box.

 

Pantallazo-6.png

 

Pantallazo-7.png

 

Pantallazo-8.png

Compartir este post
Repost0
1 junio 2010 2 01 /06 /junio /2010 17:10

Eventos.

9.png

10.png

 

Fuentes de Eventos.

 

11.png

 

Mensajes hacia el usuario. clase JOptionPane.

 

12.png

13.png14.png

15.png16.png17.png18.png19.png

Compartir este post
Repost0
1 junio 2010 2 01 /06 /junio /2010 16:10

La interface de usuario es la parte del programa que permite a éste interactuar con el usuario. Las interfaces de usuario pueden adoptar muchas formas, que van desde la simple línea de comandos hasta las interfaces gráficas que proporcionan las aplicaciones más modernas.

 

Las JFC (Java Foundation Classes) son parte de la API de Java compuesto por clases que sirven para crear interfaces gráficas visuales para las aplicaciones y applets de Java.

 

Las JFC contienen dos paquetes gráficos: AWT y Swing.


AWT presenta componentes pesados, que en cada plataforma sólo pueden tener una representación determinada. Está disponible desde la versión 1.1 del JDK como java.awt.


Swing presenta componentes ligeros, que pueden tomar diferente aspecto y comportamiento pues lo toman de una biblioteca de clases.

 

AWT es un conjunto de herramientas GUI (Interfaz Gráfica con el Usuario) diseñadas para trabajar con múltiples plataformas.

1-copia-2.jpg


Component.

Esta clase representa a cualquier objeto que puede ser parte de una interfaz gráfica de usuario. Es la clase padre de muchas de las clases del AWT.


Su propósito principal es representar algo que tiene una posición y un tamaño, que puede ser dibujado en la pantalla y que pueda recibir eventos de entrada (que responda a las interacciones con el usuario).

 

Tamaño y posición del componente

Dimension getSize(); Devuelve la anchura y altura del componente como un objeto de la clase Dimension, que tiene como campos: width (anchura) y heigth (altura).
void setSize(int ancho, int largo); Establece la anchura y altura del componente.
Dimension getPreferredSize(); Devuelve el tamaño que este componente debería tener.

 

ARBOL DE COMPONENTES AWT Y SWING

2

 

Componentes.

 

Los componentes son los elementos básicos de la programación con Swing. Todo lo que se ve en un GUI de Java es un componente. Los componentes se colocan en otros elementos llamados contenedores que sirven para agrupar componentes. Un administrador de diseño se encarga de disponer la  presentación de los componentes en un dispositivo de presentación concreto.


La clase javax.swing.JComponent es la clase padre de todos los componentes. A su vez, JComponent desciende de java.awt.container y ésta de java.awt.component. De esto se deduce que Swing es una extensión de AWT, de hecho su estructura es análoga.

 

Contenedores.

 

Son un tipo de componentes pensados para almacenar y manejar otros componentes.

Los objetos JComponent pueden ser contenedores al ser una clase que desciende de
Container que es la clase de los objetos contenedores de AWT. Swing posee algunos contenedores especiales. Algunos son:
 JWindow. Representa un panel de ventana sin bordes ni elementos visibles.
 JFrame. Objeto que representa una ventana típica con bordes, botones de cerrar, etc.
 JPanel. Es la clase utilizada como contenedor genérico para agrupar componentes.
 JDialog. Clase que genera un cuadro de diálogo.
 JApplet. Contenedor que agrupa componentes que serán mostrados en un navegador.

 

Métodos y Constructores de Contenedores Varios.

 

3

 

 

4

4

 

6

 

7

8

Compartir este post
Repost0
1 junio 2010 2 01 /06 /junio /2010 16:06

1. Dada el peso, la altura y el sexo, de unos estudiantes. Determinar la cantidad de vitaminas que deben consumir estos estudiantes, en base al siguiente criterio:


         >> Si son varones, y su estatura es mayor a 1.60, y su peso es mayor o igual a 150 lb, su dosis, serán: 20% de la estatura y 80% de su peso. De lo contrario, la dosis será la siguiente: 30% de la estatura y 70% de su peso.>> Si son mujeres, y  su estatura es mayor de a 1.50 m y su peso es mayor o igual a 130 lb, su dosis será: 25% de la estatura y 75% de su peso. De lo contrario, la dosis será: 35% de la estatura y 65% de su peso. La dosis debe ser expresada en gramos.

 
            2. En un supermercado, se  realizan descuentos por las compras a partir de unas bolitas de colores. Si el cliente saca una bolita color azul, tiene un descuento del 20%, si la bolita es roja, se aplica un descuento del 30% y si saca una bolita color blanca, no se aplica ningún descuento. Diseñe un programa que a partir del importe de la compra y el color de la bolita, muestre lo que debe pagar dicho cliente.


             3. La empresa “LEAI” es productora de 02 tipos de mallas: Mallas planas y Mallas en rollo. La alta gerencia requiere controlar las ventas por día según las siguientes políticas: si el comprador tiene más de 05 años adquiriendo malla en rollo tendrá un descuento del 8% en esta malla. Si el comprador de malla plana por más de 06 años tendrá un descuento del 6% en esa malla. El costo de la malla plana es de 400 bolívares por metro y de la malla de rollo es de 250 por metro. Elabore un programa en C, que capture los metros a comprar por tipo de malla para un cliente, además del tiempo en años que como comprador ha adquirido los tipos de mallas existentes. La salida del programa será la cantidad total de descuento obtenido por el cliente.


          4.
En un estacionamiento, se cobra de la siguiente manera: los primeros 10 minutos son gratis, los siguientes 30 minutos tiene un valor de $0.30 y la hora $0.60. Diseñe un programa que reciba tanto minutos como horas y muestre lo que debe cancelar el cliente. Tomando en cuenta que si es Martes y Sábado se hace un descuento del 12.56% sobre el  monto total.


            5. Realizar un programa que calcule el importe a pagar por un vehículo al circular por una autopista. El vehículo pude ser una bicicleta, una moto, un carro o un camión. Para definir el conjunto de vehículos deben utilizar una estructura Select Case. El importe se calculara según los siguientes datos:

 

a) Un importe  de 10 BsF  por km para la bicicleta.

b) Las motos y los carros pagaran 30 BsF por Km.

c) Los camiones pagaran 30 BsF por Km. más 25 BsF por toneladas.

6. Diseñe una pequeña calculadora que, al digitar un código realice una operación específica: si el código es 1, la operación es la suma, si es 2, Resta. 3, multiplicación y 4 división.  Si el usuario a escrito otro código inválido, mostrar un mensaje de error.

 

7. Se desea calcular el sueldo de un trabajador, a partir de las horas trabajadas en la semana y la clase a la que pertenece: Trabajadores Clase “A”, se les paga $7 por hora. Trabajadores clase “B”, se paga $5 por hora. Trabajadores clase “C”, se les paga $4 por hora y los de clase “D”, $3.5 por hora.

 

8.Un comerciante se dedica a la venta de sillas únicamente. Vende tres tipos de sillas: tipo A, tipo B y Tipo C los precios son $5.00, $7.00 y $10.00 respectivamente. Por cada cinco sillas compradas del tipo A, del tipo B o del tipo C los clientes reciben un descuento de 3%, 5% y 7%, las demás se cobran a precio normal. Diseñe un programa que imprima en forma de factura, con el nombre, precio unitario, precio total, nombre de la tienda, etc lo que debe cancelar cada cliente en concepto de la compra.


             9. Programa para calcular el precio a pagar por la compra de madera. Los datos de entrada son la cantidad de metros cúbicos  y el tipo de madera. La madera esta clasificada en tres tipos (A, B, C). Si la cantidad a comprar es superior a 30 metros cúbicos, se aplica el siguiente esquema de descuento:

 

Tipo de Madera

Descuento

A

4%

B

8%

C

10%

 

 

10. Desarrolle un programa que almacene los datos de 02 vendedores, y por ambos calcular la comisión que le corresponde de acuerdo a las ventas que hizo. Los criterios  son:

 

Ventas (Bsf)

Comisión (% sobre la venta)

Menor a 500

0.5

Mayor o igual a 500 y Menor que 1000

1

Mayor o igual a 1000 y menor que 1500

2

Mayor o igual a 1500

2.5

Compartir este post
Repost0