Está en la página 1de 32

TOPICOS AVANZADOS DE PROGRAMACIN

3.1. Definicion conceptual de componentes paquetes librerias - See more at: http://mitecnologico.com/sistemas/Main/TopicosAvanzadosDeProgramacion#sthas h.btPHSYbn.dpuf

INSTITUTO TECNOLGICO DE LZARO CRDENAS

JOSUE JONATHAN PEALOZA PIEDRA MATERIA: TOPICOS AVANZADOS DE PROGRAMACIN 4TO SEMESTRE PROFA: MARY SANDRA RODRIGUEZ CHAVEZ 19 DE MARZO DE 2012

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 1

TOPICOS AVANZADOS DE PROGRAMACIN

INDICE:

DEFINICIN CONCEPTUAL DE COMPONENTES, PAQUETES/LEBRERAS 3

USO DE COMPONENTES (VISUALES Y NO VISUALES) PROPORCIONADOS POR EL LENGUAJE.4

USO DE LIBRERIAS PROPORCIONADAS POR EL LENGUAJE11

CREACIN DE COMPONENTES (VISUALES Y NO VISUALES) DEFINIDOS POR EL USUARIO18

CREACIN Y USO DE PAQUETES/LIBRERAS DEFINIDAS POR EL USUARIO24

BIBLIOGRAFA32

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 2

TOPICOS AVANZADOS DE PROGRAMACIN

DEFINICIN CONCEPTUAL DE COMPONENES, PAQUETES/LIBRERIAS

Componente: Es una clase abstracta que representa todo lo que tiene una posicin, un tamao, puede ser pintado en pantalla y puede recibir eventos. Los Objetos derivados de la clase Componente que se incluyen en el Abstract Windows Toolkit son los que aparecen a continuacin:

Button Canvas Checkbox Choice Label List Scrollbar

Container Panel Windows o Dialog o Frame

TextComponent TextArea TextField

Un paquete en Java es lo que su nombre lo indica, un paquete o conjunto de clases, lgicamente, que tienen cosas en comn. Lgicamente un programado puede agruparlas con o sin criterio, pero lo ideal es que se dediquen a funciones especficas. Tambin los paquetes definen una jerarqua de directorios, que permiten igualmente agrupas las clases, cosa de desplegar los archivos mas ordenadamente.
JOSUE JONATHAN PEALOZA PIEDRA Pgina 3

TOPICOS AVANZADOS DE PROGRAMACIN

LIBRERAS La utilizacin de objetos dinmicos supone dejar pendiente en el montaje de la aplicacin el enlace de dichos objetos. Cuando la aplicacin est en ejecucin, y slo entonces, se produce el enlace (dinmico) con los objetos contenidos en la librera. La creacin de libreras dinmicas corre a cargo del enlazador o montador (en nuestro caso el ld) aunque tambin es posible indicar al compilador las opciones necesarias para el montaje y de ese modo, ser l quien se encargue de pasrselas al montador. Cuando se crea un objeto dinmico es necesario que dicho cdigo objeto sea independiente de la posicin, para conseguir este tipo de cdigo debe especificarse al compilador la opcin -fPIC (Position IndependentCode). Dicho flag debe indicarse tanto en la compilacin como en el montaje de la librera. Para montar los objetos es necesario adems indicar la opcin -shared para que el resultado sea un fichero objeto compartible.

USO

DE

COMPONENTES

(VISUALES

NO

VISUALES)

PROPORCIONADOS POR EL LENGUAJE.

Un componente desde el punto de vista de programacin esta compuesto por varias secciones y el conjunto de todas ellas dan lugar a la creacin de dichocomponente. Por tanto, primero para no perder el norte, vamos a empezar definiendo elconvenio que es utilizado para organizar dichas secciones por TinyOs. En general, uncomponente posee tres grandes secciones que son:

Configuration, Implementation,Modul e. Estas tres secciones han de estar obligatoriamente presentes en cualquiercomponente aunque puedan estar vacas. El estndar de T i n y O s determina, que las secciones de Configuration eImplementatin han de ir en un fichero que recibir el nombre del componente con laextensin .nc y la tercera seccin de Module deber de ir en otro fichero
JOSUE JONATHAN PEALOZA PIEDRA Pgina 4

TOPICOS AVANZADOS DE PROGRAMACIN


aparte querecibir el nombre del componente concatenado con un M mayscula (la M da elsignificado al fichero, es el significado de Module) , este ltimo fichero tambin poseera extensin .nc. Otra buena costumbre consiste en crear un fichero de header o cabecera con extensin .h que contenga todas las enumeraciones, registros o tipos de datos creadospor el usuario de los que hace uso la aplicacin, y cuando se realiza esto la forma deligar dicho fichero con los otros dos es utilizando al principio de los otros fichero ladirectiva includesheader; aunque como mencin especial decir que si nos fijamosmejor en este directiva se puede ver que no se

incorpora la extensin .h en la misma. Ahora que ya sabes cuales son las secciones que va a contener cada ficherovamos a empezar a explicar cada una de ellas. ImplementatinEsta seccin se va a encargar de definir las conexiones que hay entre losdiferentes componentes que utiliza la aplicacin, esto es debido a que si recordamos unpoco, se ha comentado que la programacin de un componente (que se llevar a cabo en la seccin de module) se hace utilizando interfaces y dichas interfaces para poderutilizarlas las ha de proporcionar un componente, entonces bsicamente es esta seccinse definen cuales son los componentes que proporcionan las interfaces a

nuestraaplicacin (por lo general sern componentes primitivos). Una vez que conocemos la finalidad de esta seccin y llegados a este punto, vamos a insertar un concepto nuevo que es la diferencia que existe entre una aplicacinque esta ya disponible para ser ejecutada en un sensor y un componente cualquiera. Ladiferencia es muy poca, y consiste en que una aplicacin es un componente comocualquier cosa en este lenguaje que en su seccin de implementacin hace uso de uncomponente especial denominado Main. BOTONES Creacin de botones como objetos. Se pueden crear objetos Button con el operador new como se muestra a continuacin:

SINTAXIS: Buttonbotn; Botn = new Button (Baton");


JOSUE JONATHAN PEALOZA PIEDRA Pgina 5

TOPICOS AVANZADOS DE PROGRAMACIN

La cadena utilizada en la creacin del botn aparecer en el botn cuando se visualice en pantalla. Esta cadena tambin se devolver para utilizarla como identificacin del botn cuando ocurra un evento.

EVENTOS BUTTON Cada vez que el usuario pulsa un botn, se produce un evento. Los eventos de pulsacin de un botn se pueden capturar sobrecargando el mtodo action ():

SINTAXIS: public Boolean action (Event evt, Object obj) { if (evt.targetinstanceof Button) System.out.println( (String)obj ); else System.out.println( "Evento No-Button" ); }

La distincin entre todos los botones existentes se puede hacer utilizando el objeto destino, pasado por el objeto Event y comparndolo con los objetos botn que se colocaran en la interfaz.

BOTONES DE PULSACIN Los botones presentados en el applet son los botones de pulsacin estndar; no obstante, para variar la representacin en pantalla y para conseguir una interfaz ms limpia, AWT ofrece a los programadores otros tipos de botones como los que se muestran a continuacin:

BOTONES DE SELECCIN Los botones de seleccin se pueden agrupar para formar una interfaz de botn de radio (CheckboxGroup), que son agrupaciones de botones Checkbox en las que siempre hay un nico botn activo.
JOSUE JONATHAN PEALOZA PIEDRA Pgina 6

TOPICOS AVANZADOS DE PROGRAMACIN

BOTONES AUTOCONTENIDOS La naturaleza orientada a objetos de Java nos da la posibilidad de crear botones completamente auto contenido. En este tipo de botn, se construye el manejador de eventos dentro de la propia clase extendida de botn. Se pueden aadir estos botones a la aplicacin, sin tener que preocuparse de los eventos que pudieran generar.

CANVAS Si tenemos un applet que trabaja con imgenes directamente, ya sea un applet grfico o de dibujo, los lienzos o zonas de dibujo llamados Canvas resultan muy tiles.

Los Canvas son un Componente bsico que captura eventos de exposicin (expose). La clase base Canvas no responde a los eventos, sin embargo se puede crear una subclase que sea la encargada de manipular los eventos.

Al permitir saltarse el manejo normal de eventos, y junto con los mtodos de representacin grfica, los Canvas simplifican la produccin de applet que necesitan una nica funcionalidad para distintas reas.

BOTON DE MARCACION Los botones de marcacin llamados Checkbox se utilizan frecuentemente como botones de estado. Proporcionan informacin del tipo S o No (true o false). El estado del botn se devuelve en el argumento Objeto de los eventos Checkbox; el argumento es de tipo booleano: verdadero (true) si la caja se ha seleccionado y falso (false).

Tanto el nombre como el estado se devuelven en el argumento del evento, aunque se pueden obtener a travs de los mtodos getLabel () y getState () del objeto Checkbox.
JOSUE JONATHAN PEALOZA PIEDRA Pgina 7

TOPICOS AVANZADOS DE PROGRAMACIN

BOTONES DE LISTA Los botones de seleccin en una lista son llamados Choice y estos permiten el rpido acceso a una lista que contenga una determinada cantidad de elementos.

CONTAINER

PANELES La clase Panel es el ms simple de los Contenedores de Componentes grficos. Se crea una clase no-abstracta Conteiner que sirva de base a los applet y a otras pequeas aplicaciones. La clase Panel consta de dos mtodos propios:

Constructor: cuyo fin es crear un nuevo Panel con un LayoutManager de tipo FlowLayout que es el de defecto. Mtodo addNotify () que, sobrecargando la funcin del mismo nombre en la clase Conteiner el cual llama al mtodo createPanel () del Toolkit adecuado el cual, creando as un PanelPeer.

El AWT enviar as al Panel al applet y todos los eventos que sobre l ocurran. El uso de Paneles permite que las aplicaciones puedan utilizar mltiples layouts, es decir, que la disposicin de los componentes sobre la ventana de visualizacin pueda modificarse con mucha flexibilidad. Permite que cada Contenedor pueda tener su propio esquema de fuentes de caracteres, color de fondo, zona de dilogo, etc.

VENTANAS Una Ventana genrica, Windows, puede utilizarse simplemente para que sea la clase padre de otras clases y se puede intercambiar por un Dilogo (Dialog) sin prdida de funcionalidad.
JOSUE JONATHAN PEALOZA PIEDRA Pgina 8

TOPICOS AVANZADOS DE PROGRAMACIN

MARCO DE UNA APLICACION El Contenedor de los Componentes es el Frame. Tambin es la ventana principal de la aplicacin, lo que hace que para cambiar el icono o el cursor de la aplicacin no sea necesario crear mtodos nativos; al ser la ventana un Frame, ya contiene el entorno bsico para la funcionalidad de la ventana principal. Al crear un Frame, extiende la clase principal y hereda todas sus caractersticas. Tiene un mtodo el constructor, que no admite parmetros. Adems, se hace una llamada explcita al constructor utilizado es decir, al constructor de la clase padre, para pasarle como parmetro la cadena que figurar como el ttulo de la ventana. La llamada a show() es necesaria, ya que por defecto, los contenedores del AWT se crean ocultos y hay que mostrarlos. La llamada a pack() hace que los componentes se ajusten a sus tamaos correctos en funcin del Contenedor en que se encuentren situados.

ETIQUETAS Las etiquetas llamadas Label proporcionan una forma de colocar texto esttico en un panel, para mostrar informacin que no vara o que no puede ser modificada por el usuario.

LISTAS Las listas (List) aparecen en las interfaces de usuario para facilitarles la manipulacin de muchos elementos. Se crean utilizando mtodos similares a los de los botones Choice. La lista es visible todo el tiempo, utilizndose una barra de desplazamiento para visualizar los elementos que no caben en el rea que aparece en la pantalla. Para acceder a los elementos seleccionados se utilizan los mtodos getSelectedItem() o getSelectedItems(). Para listas de seleccin simple, cualquier seleccin con doble-click en la lista disparar el mtodo action() de la misma forma que con los eventos de seleccin en mens.
JOSUE JONATHAN PEALOZA PIEDRA Pgina 9

TOPICOS AVANZADOS DE PROGRAMACIN

BARRAS DE DESPLAZAMIENTO Es muy comn que se utilicen en determinados applet que necesiten realizar el ajuste de valores lineales en pantalla, resulta til el uso de barras de desplazamiento (Scrollbar). Las barras de desplazamiento proporcionan una forma de trabajar con rangos de valores o de reas como el Componente TextArea, proporcionando las barras automticamente.

Este tipo de interfaz proporciona al usuario un punto de referencia visual de un rango y al mismo tiempo la forma de cambiar los valores. Por ello, las barras de desplazamiento son Componentes un poco ms complejos que los dems, reflejndose esta complejidad en sus constructores. indicar: Su orientacin. Su valor inicial. Los valores mnimo y mximo que puede alcanzar. Porcentaje de rango que estar visible. Al crearlos hay que

Las barras de desplazamiento generan eventos; pero se debe utilizar el mtodo handleEvent() directamente, en lugar del mtodo action(). El destino del evento ser un objeto de la clase Scrollbar, a partir de ste se obtiene la posicin de la barra de desplazamiento.

SINTAXIS: JScrollPane scroll = new JScrollPane( tab, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

AREAS DE TEXTO

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 10

TOPICOS AVANZADOS DE PROGRAMACIN


Java a travs del AWT, permite incorporar texto multilnea dentro de zonas de texto (TextArea). Los objetos TextArea se utilizan para elementos de texto que ocupan ms de una lnea, como puede ser la presentacin tanto de texto editable como de slo lectura, para las reas de texto hay que especificar el nmero de columnas. Se puede permitir que el usuario edite el texto con el mtodo setEditable(). Para acceder al texto actual de una zona de texto se utiliza el mtodo getText(), las reas de texto no generan eventos por s solas, por lo que hay que utilizar eventos externos, para saber cuando tenemos que acceder a la informacin contenida en el TextArea.

CAMPOS DE TEXTO Para la entrada directa de datos se suelen utilizar los campos de texto, que aparecen en pantalla como pequeas cajas que permiten al usuario la entrada por teclado. Los campos de texto o TextField se pueden crear vacos con una longitud determinada, rellenos con texto predefinido.

USO DE LIBRERAS PROPORCIONADAS POR EL LENGUAJE Java es un lenguaje de programacin desarrollado para una multitud de plataformas y procesadores. Consideremos los dos tipos de aplicaciones grficas ms comunes. Modelos de Frames y Applets, se pueden construir usando cualquiera de las dos galeras de componentes visuales, son: JAVA AWT: Es la librera visual ms antigua de java usando esta librera, se podrn construir los tres tipos de programas mas comunes como son FRAME, WINDOW y APPLET. JAVA SWING: Es la librera de componentes visuales ms nueva que proporciona java, usando esta librera se podrn construir los tres tipos de programas o aplicaciones que son JFRAME, WINDOW Y JAPPLET. Un applet es un programa en java que se mandan a una mquina o PC remota para que los ejecuten o lo corra, cuando este applet de llegada a las mquinas remotas va browser, dicho browser es quien activa la mquina virtual de java que da la orden de compilacin y ejecucin, es decir java programa.applet.

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 11

TOPICOS AVANZADOS DE PROGRAMACIN


Entonces es importante que la mquina virtual de java, que se encuentra en la PC remota,tenga capacidad de incluir todas las libreras de java, como la de match, la de AWT, la de lang.etc. Existen diferentes libreras en java, entre las cuales se encuentra.

Java. lang

Coleccin de tipo bsico siempre importados a cualquier unidad de compilacin. Aqu estn las declaraciones de objetos, clases, wrappers.

Interfaces Clases. Cloneables Boolean Comparable Byte Runnable Character ClassLoader Compiler Double Float InheritableThreadLocal Interger Long Math Number Object System Thread VoidString, etc...

Java.io Archivos de stream y acceso aleatorio. Librera estndar de entrada y salida. Interfaces Clases DataInputBufferedInputStream DataOutputBufferedOutputStream ExternalizableBufferedReader FilefilterBufferedwrite FilenameFilterByteArrayInputStream OdjectInputByteArrayOutputStream SerializableDataOutputStream File
JOSUE JONATHAN PEALOZA PIEDRA Pgina 12

TOPICOS AVANZADOS DE PROGRAMACIN


InputStream reader Writer,etc..

Java.net Librera que apoya interfaces con telnet y URL.

Interfaces Clases ContentHandlerFactory Authenticator DatagramSocketImplFactoryContentHandler FileNameMapDatagramPacket SocketOptionsDatagramSocketImpl URLStreamHanlerFactoryHttpURKConnection URL, etc..

Java.util Clase como de diccionarios, tabla de hash, stack, tcnica de codificacin hora, fecha, etc.

Interfaces Clases Collection AdstractCollection Comparator AdstracList Enumeration AdstrectMap EventListenerAdstrectSecquentialList InteratorAdstractSet List ArreyList Observer Collection SortedSetEventObject Random Stack Timer Vector Date,etc.

Java.Awt AbstractWindowingToolkit que proporciona una capa abstracta que permita llevar una aplicacin en java de un sistema de ventanas a otro. Contiene clases para componentes bsicos de la interfaz, tales como eventos, colores, tipos de letra, botones, campos de texto.

Estructura del awt.


JOSUE JONATHAN PEALOZA PIEDRA Pgina 13

TOPICOS AVANZADOS DE PROGRAMACIN


La estructura de la versin actual del AWT en la plataforma Java 2 se puede resumir en los puntos siguientes:

Los contenedores contienen componentes, que son los controldores bsicos. No se usan posiciones fijas de los componentes, si no estan situados a traves de una disposicin controlado (layouts) El comn denominador de mas bajo nivel se acerca al teclado, ratn y manejo de eventos. Alto nivel de abstraccin respecto al entorno de ventanas en que se ejecute la aplicacin (no hay reas clientes, ni llamadas a X ). La arquitectura de la aplicacin es dependiente del entorno de ventanas, en vez de tener un tamao fijo. Carece de un formato de recursos. No se puede separar el cdigo de lo que es propiamente interfaz. No hay ningn diseador de interfaz toda va. Interfaces Clases ActiveEventAlphaComposite AdjustableAWTEvent

Java.applet El paquete java.applet permite la creacin de appletsatraves de la clase Applet, proporciona interfaces para conectar un applet a un documento web y para audicin de audio. Interfaces Clases AppletContext Applet AppletStub AudiClip

Java.math Proporciona clculos en entero grande y real grande. Clases Bigdecimal Biginteger Adems de la clase Math.

Esta es la clase que representa la librera matemtica de Java. Las funciones que contiene son las de todos los lenguajes, parece que se han metido en una clase solamente a propsito de agrupacin, por eso se encapsulan en Math, y lo mismo sucede con las dems clases que corresponde a objetos que tiene un tipo equivalente (carcter, Float, etc.)
JOSUE JONATHAN PEALOZA PIEDRA Pgina 14

TOPICOS AVANZADOS DE PROGRAMACIN


La clase Math es public para que se pueda llamar desde cualquier sitio y static para que no haya que iniciarla.

Java.rmi Este paquete hace posible que un objeto se ejecute en una maquina virtual Java invoque mtodos de otro objeto que se ejecuta en la mquina virtual distinta; dicha mquina virtual pueden encontrarse en ordenadores diferentes conectados a travs de una red TCP/IP.

Interfaces Clases RmoteMarshalledObject Naming RMISecurityManager

Java.text Contiene clase que permiten dar formato especializado a fechas, nmeros y mensajes. Interfaces Clases AttributedChacterIterator Annotation CharacterIteratorAttibutedCharacterIterator ChoceFormat DateFormat Format MessageFormat NumberFormat ParsePosition

Java.sound.midi Paquete con clase e interfaces que permitan la captura, procesamiento y reproduccin de msica MIDI. Interfaces Clases ControllerEventListener Instrument MataEventListenerMeteMessage MidiChannel MidiDevice.info MidiDeviceMidiEvent Receiver MidiFileFormat SequecerMidemessage

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 15

TOPICOS AVANZADOS DE PROGRAMACIN


JAVA .SQL Junto con el paquete javax.sql, incluido en java 2 SDK Edicin para la empresa, forma parte del API de java 2.0 (conexin Java a Base de Datos), y permite la conexin de base de datos, el envi de sentencias SQL y la interpretacin de los resultados de las consultas.

IntefacesClases Array Date Blob DriverManager CallabeStatementDriverPropertyInfo ClobSQLPermission Connecction Timer DatabaseMetaDate Timestamp Driver Type Ref SQLData SQLInput SQLOutput Struct

JAVA.SWING Paquete que mejora e AWT, proporcionando un conjunto de componentes que se ejecutan de manera uniforme en todas las plataformas. Interfaces Clases Action AbstractAction ComboBoxEditorActonMap Icon Box.Filler ListModelCellRendererPane MenuElementDebugGraphics WindowsConstantsDefaulListSelectionModel JApplet Jbutton JCheckBox JFrameJMenu JLabel JPanel JTextField JTree JWindows
JOSUE JONATHAN PEALOZA PIEDRA Pgina 16

TOPICOS AVANZADOS DE PROGRAMACIN


Temer UIManager, etc..

EJEMPLOS DONDE PODEMOS NOTAR EL USO DE LAS LIBRERAS. importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; public class AparienciaVisual extends JFrame { private final String cadenas[] = { "Metal", "Motif", "Windows" }; privateUIManager.LookAndFeelInfoapariencias[]; privateJRadioButtonopcin[]; privateButtonGroupgrupo; privateJButtonbotn; privateJLabeletiqueta; privateJComboBoxcuadroCombinado; String s1=""; publicAparienciaVisual() { super( "apariencia visual" ); Container contenedor = getContentPane(); // establecer panel para regin NORTH de esquema BorderLayout JPanelpanelNorte = new JPanel(); panelNorte.setLayout( new GridLayout( 3, 1, 0, 5 ) ); // estableceretiquetapara panel NORTH etiqueta = new JLabel( "sta es la apariencia visual Metal seleccionada",

// CREA UN ARCHIVO DE ACCESO ALEATORIO, ESCRIBIENDO 100 REGISTROS VACOS EN EL DISCO. import java.io.*; importjavax.swing.*; public class CrearArchivoAleatorio { private static final int NUMERO_REGISTROS = 100; // permitir al usuario seleccionar el archivo a abrir privatevoidcrearArchivo() { // mostrar cuadro de dilogo para que el usuario pueda seleccionar el archivo JFileChooserselectorArchivo = new JFileChooser();
JOSUE JONATHAN PEALOZA PIEDRA Pgina 17

TOPICOS AVANZADOS DE PROGRAMACIN


selectorArchivo.setFileSelectionMode(JFileChooser.FILES_ONLY ); int resultado = selectorArchivo.showSaveDialog( null ); // si el usuario hizo clic en el botn Cancelar del cuadro de dilogo, regresar if ( resultado == JFileChooser.CANCEL_OPTION ) return; // obtener el archivo seleccionado File nombreArchivo = selectorArchivo.getSelectedFile(); // mostrar error si el nombre del archivo es invlido if ( nombreArchivo == null || nombreArchivo.getName().equals( "" ) )

CREACION DE COMPONENTES (VISUALES Y NO VISUALES) DEFINIDOS POR EL USUARIO. Se puede establecer muchas clasificaciones para los componentes. Una de ellas es la de visuales o controles, frente a no visuales. Un componente es visual cuando tiene una representacin grfica en tiempo de diseo y ejecucin (botones, barras de scroll, cuadros de edicin, etc.), y se dice no visual en caso contrario (temporizadores, cuadros de dilogo-no visibles en la fase de diseo, etc). Por lo dems no existen ms diferencias entre ellos, excepto, claro est, las derivadas de la visualizacin del componente. Los componentes no visuales se pueden colocar en los formularios de la misma manera que los controles, aunque en este caso su posicin es irrelevante. Para empezar, los componentes visuales podemos dividirlos a su vez en dos tipos: -Componentes interactivos: permiten que el usuario final los manipule, ya sea introduciendo datos, seleccionado elementos, etc. De forma que estos componentes pueden recibir el foco (con SetFocus) as como los eventos propios del teclado y del ratn. Normalmente, el propio sistema operativo es el encargado de dibujar el aspecto del componente, haciendo el componente las llamadas correspondientes para que este aspecto cambie. -Componente grficos: el propio componente es el encargado de dibujar en la pantalla lo que crea oportuno, bien a travs de las funciones bsicas del API de Windows (con el objeto TCanvas) o bien a travs de otras libreras grficas, como OpenGL, DirectX, etc. Estos componentes, no suelen recibir eventos del usuario final, aunque si eventos del propio programador, ya que su cometido no suele ir ms all de mostrar ciertos grficos o imgenes en la pantalla. Si tuviramos que crear un componente interactivo desde el principio, sera demasiado complejo, ya que tendramos que luchar encontrar el propio API del sistema operativo, gestionando sus mensajes, las llamadas las funciones a bajo nivel, etc. Sin embargo, podemos aprovechar la mayora del trabajo hecho
JOSUE JONATHAN PEALOZA PIEDRA Pgina 18

TOPICOS AVANZADOS DE PROGRAMACIN


por Borland en la VCL, y crear componentes interactivos a partir de otros ya existentes, aplicado la tcnica de herencia. Dado que un componente es un objeto como otro cualquiera, podremos aplicar en el todas las tcnicas de la orientacin a objetos: encapsulacin, herencia y polimorfismo. La encapsulacin ya la hemos utilizado sin apenas darnos cuenta, simplemente definiendo ciertos atributos como privados, para que no puedan ser accedidos desde fuera de la clase, y otros pblicos o publicados (pulished) para ser usados por el programador que utilice el componente. La herencia nos permite reutilizar cdigo, haciendo que una clase dada (que llamaremos clase hija) adquirida a todos los atributos y mtodos pblicos y protegidos de otra, llamada clase padre. De este mtodo, podemos aprovechar mucho cdigo escrito, simplemente heredando de una clase ya escrita. Por si fuera poco, tambin es posible que una clase hijo tenga a su vez mas descendencia, adquiriendo estos las caractersticas del padre y del "padre del padre", es decir: del abuelo. La tcnica de la herencia, aplicada a los componentes, nos permite personalizar cualquier componente, o porque queremos ampliar las posibilidades del componente. La propia VCL utiliza la herencia continuamente, bien para utilizar cdigo de clases padre, o bien para ofrecernos clases padre de las que nosotros podemos heredar. Muchas "suites de componentes" hacen tambin esto, proporcionando un componente heredando a partir de cada uno de los bsicos, y aadiendo en estas nuevas caractersticas. Para explicar cmo crear un componente interactivo, vamos a hacerlo a travs de un ejemplo prctico: supongamos que necesitamos mostrar un rbol que muestre los directorios a partir de una carpeta dada, incluso pongamos que necesitamos mostrar el tpico rbol de "MI PC", mostrando todas las unidades y las carpetas de cada una. Para ello, podramos escribir un componente desde cero, gestionando todo lo referente a la estructura en rbol, el dibujo en pantalla, la gestin de mensajes,etc. Podramos utilizar la herencia para utilizar el cdigo ya escrito, concretamente basndose en el componente ATTreeVienw, que es el que nos permite mostrar en un formulario estructuras del tipo rbol. Sin embargo, el TTreeVienw que viene por defecto en el Delphi, es muy genrico, y sirve para mostrar cualquier ripo de rbol. Nuestro caso es mas especfico: necesitamos mostrar un rbol, s, pero ms concretamente un rbol de directorios. Llamaremos a nuestra nueva creacin TArbolDirectorios. Slo vamos a fijarnos a partir TComponent:
JOSUE JONATHAN PEALOZA PIEDRA Pgina 19

TOPICOS AVANZADOS DE PROGRAMACIN


TComponent: este nos resulta familiar, ya que es la clase a partir de la que hemos creado en nuestro conversor de monedas de anteriores nmeros. Los componentes no-visuales deben heredar directamente de TComponent, ya que este proporciona las caractersticas bsicas. TControl: se trata de la clase padre para todos los componentes visuales, ya sean grficos o no. TWinControl: de esta clase descendern todos los componentes dibujados directamente por Windows. La principal caracterstica de estos objetos (llamados ventanas o Windows) es que estn identificados por un nmero nico llamado descriptor o manejador de ventana (en ingls handle). TCustomTreeView: se trata de la clase que permite mostrar un rbol dentro de un formulario de Delphi. La peculiaridad es que esta clase no contiene ningn mtodo ni propiedad en la seccin published, por lo que puedes ser manejada desde el entorno de Delphi. TTreeView: esta ya es la clase o componente final, que aparece registrado en la paleta de componentes, y que puede ser configurado en tiempo de diseo. En realidad, todo el trabajo de esta clase se limita a publicar las propiedades y eventos que han sido programados en la clase TCustomTreeVienw. Ahora que ya sabemos quen va a ser el padre de nuestro componente, tenemos que decir qu propiedades y eventos vamos a proporcionar a nuestros usuarios del componente. CarpetaRaiz: se trata de una cadena que contendr la carpeta a partir de que se crear el rbol de directorios. Puede ser la carpeta raz de una unidad de disco(p.e."C:\") para mostrar los directorios de toda la unidad, o bien una carpeta cualquiera, para mostrar las subcarpetas de esta. Un caso se dar cuando esta propiedad contenga el valor "Mi PC", con en el que mostraremos cada una de las unidades disponibles en nuestro sistemas, pudiendo expandir estas unidades para mostrar sus carpetas. CarpetaActual: es el valor de tipo cadena que contiene la ruta de la carpeta seleccionada en el rbol, por ejemplo. Si, por ejemplo, tenemos seleccionada la carpeta de primer nivel "Datos", y el nodo raz es "C:\Temporal", esta propiedad contendr el valor "C:\Temporal\Datos". Tambin se puede modificar su valor, seleccionndose en ese caso el modo correspondiente en el rbol (si el valor establecido es correcto). MostarPadre: es un valor booleano (true o false) que nos permite configurar la aparicin no del nodo padre. Es decir: si en la propiedad "CarpetaRaiz" hemos introducido el valor "C:\Delphi", en el rbol aparecer un nodo raz llamado "Delphi", y colgado de l, todas las dems subcarpetas. Si establecemos esta propiedad a falso, el nodo raz desaparecer, mostrndose todas las subcarpetas en un primer nivel, sin colgar de ningn nodo padre. Una interfaz grafica est construida en base a elementos grficos bsicos, los componentes. Tpicos ejemplos de estos componentes son los botones, barras de desplazamientos, etiquetas, listas, cajas de seleccin o campos de textos.
JOSUE JONATHAN PEALOZA PIEDRA Pgina 20

TOPICOS AVANZADOS DE PROGRAMACIN


Los componentes permiten al usuario a interactuar con la aplicacin y proporcionar informacin desde el programa al usuario sobre el estado del programa. En el AWT, todos los componentes de la interfaz de usuario son instancias de la clase componente o uno de sus subtipos. Los componentes no se encuentran aislados, si no agrupados dentros de contenedores. Los contenedores contienen y organizan la situacin de los componentes y como tales pueden ser situados dentro de otros contenedores. Tambin contienen el cdigo necesario para el control de eventos, cambiar la forma del cursor o modificar el icono de la aplicacin. En el AWT todos los contenedores son instancias de la clase Container o uno de sus subtipos. La clase componente es una clase abstracta que representa todo lo que tiene una posicin, un tamao, puede ser pintado en pantalla y puede recibir eventos. No tiene constructores pblicos, ni puede ser instanciada. Sin embargo, la clase Component puede ser extendida para proporcionar una nueva caracterstica incorporada a java, conocida como componentes ligeros o Lightweight. Los objetos derivados de la clase Component que se incluyen en el abstractwindowToolkit son los que aparecen a continuacin: Button Canvas Checkbox Choice Container Panel Window Dialog Frame Label List Scrollbar TextComponent TextArea TextField

Sobre estos componentes se podrn hacer ms agrupaciones y quiz la ms significativa fuese la que diferencie a los componentes segn el tipo de entrada. A si habra componentes con entrada de tipo no-textual como los botones de pulsacin (Button), las listas (List), botones de marcacin (checkbox), botones de seleccion (Choice), y botones de comprobacin (CheckboxGroup); componentes de entrada y salida textual como los campos de texto (TextField), las reas de texto (TextArea) y las etiquetas (Label); y, otros componentes sin acomodo fijo en ningn lado, en donde se encontraran componentes como las barras de desplazamiento(Scrollbar), zonas de dibujo (Canvas) e incluso los contenedores (Panel, Window, Dialog y Frame), que tambin pueden considerarse como componentes.
JOSUE JONATHAN PEALOZA PIEDRA Pgina 21

TOPICOS AVANZADOS DE PROGRAMACIN


La clase Button es aquella que produce un componente de tipo boton con un titulo.El constructor mas utilizado es el que permite pasarle como parametrouna cadena, que ser la que aparezca como titulo e identificador del botn en la interfaz de usuario. Botones de seleccin Los botones de seleccin (Choice) permiten el rpido acceso a una lista de elementos, presentndose como titulo en el item que se encuentre seleccionado. La clase choice extiende la clase component e implementa la interfaz ItemSelectable, que es aquella que mantiene un conjunto de items en los que puede haber, o no, alguno seleccionado. Botones de comprobacin La clase CheckBox extiende la clase Componet e implementa la interfaz ItemSelectable, que es aquella que contiene un conjunto de tems entre los que puede haber o no alguna seleccionado. Los botones de comprobacin (Checkbox) se puede agrupar para formar una interfaz de botn de radio (CheckboxGroup),que son agrupaciones de botones de comprobacin de exclusin mltiple es decir, en la que siempre hay un nico botn activo. PROGRAMA: importjava.awt.*; importjava.awt.event.*; importjava.util.*; public class Java1403{ public static void main( String args[] ){ //Se instancia un objeto Interfaz Hombre-Mquina IHM ihm = new IHM(); } } // Clase de la Interfaz grfica Class IHM { // Constructor de la clase public IHM() { // Se creaunobjetoCheckboxGroup CheckboxGroupmiCheckboxGroup = new CheckboxGroup(); //Ahora se crea un objeto Button y se registra un objeto //ActionListenersobrel Button miBoton = new Button( "Aceptar" );
JOSUE JONATHAN PEALOZA PIEDRA Pgina 22

TOPICOS AVANZADOS DE PROGRAMACIN


miBotton.addActionListener( newMiActionListener ( miCheckboxGroup ) ); // Se crea un objeto Frame para contener los objetos Checkbox y el // objetoButton. Se fija un Flowlayout, se incorporan a l los // objetos, se fija el tamao y se hace visible Frame miFrame = new Frame ( " Tutorial de Java, AWT " ); miFrame.setLayout( new FlowLayout() ); miFrame.add( new Checkbox( "A", true,miCheckboxGroup ) ); miFrame.add( new Checkbox( "B", false,miCheckboxGroup ) ); miFrame.add( new Checkbox( "C", false,miCheckboxGroup ) ); miFrame.add( new Checkbox( "D", false,miCheckboxGroup ) ); miFrame.add(miBoton ); miFrame.setSize( 250,100 ); miFrame.setVisible( true ); //Instanciamos y registramos un receptor para terminar la //ejecucin de la aplicacin, cuando el usuario cierre la //ventana miFrame.addWindowListener( new Conclusion() ); } } // Esta clase indica la caja de seleccin que esta seleccionada // cuando se pulsa el botn de Aceptar classMiActionListener implements ActionListener { CheckboxGroupoCheckBoxGroup; MiActionListener(CheckboxGroupcheckBGroup ) { oCheckBoxGroup = checkBGroup; } public void actionPerformed( ActionEventevt ) { System .out.println(oCheckBoxGroup.getSelectedCheckbox().getName()+ " " + oCheckBoxGroup.getSelectedCheckBox().getLabel () ); } } //Concluye la aplicacin cuando el usuario cierra la ventana class Conclusion extends WindowAdapter { public void windowClosing( WindowEventevt ) { System.exit( 0 ); } }
JOSUE JONATHAN PEALOZA PIEDRA Pgina 23

TOPICOS AVANZADOS DE PROGRAMACIN


CREACIN Y USO DE PAQUETES/LIBRERIAS DEFINIDAS POR EL USUARIO

Los paquetes son grupos de clases relacionadas; ayudan a organizar su cdigo y proporcionan otra capa encapsulamiento. En programacin, los paquetes, con frecuencia son tiles para agrupar las piezas relacionadas de un programa. Un paquete sirve para dos propsitos: primero, suministra un mecanismo por el cual piezas relacionadas de un programa pueden ser organizadas como una unidad. Se debe tener acceso a las clases definidas dentro de un paquete a travs de su nombre de paquete. As, un paquete proporciona la manera de nombrar una coleccin de clases. Segundo, un paquete participa en los mecanismos de control de acceso en java. Las clases definidas dentro de un paquete pueden hacerse privadas a ese paquete y no accesibles por cdigo fuera del paquete. De este modo, el paquete suministra un medio por el cual las clases pueden ser encapsuladas.

DEFINIR UN PAQUETE:

Todas las clases en Java pertenecen a algn paquete. Como se mencion anteriormente, cuando no se especifica la declaracin package se usa el

paquete predeterminado (o global). Adems, el paquete predeterminado no tiene nombre, lo que lo hace transparente. Aunque el paquete predeterminado es vlido para programas de prueba cortos, es inadecuado para aplicaciones reales.

Para crear un paquete, coloque un comando package en la parte superior del archivo fuente de java. Las clases declaradas dentro de ese archivo pertenecern al paquete especificado. Puesto que un paquete define un espacio de nombre, los nombres de las clases que coloque dentro del archivo se convierten en parte de ese espacio del nombre del paquete.

La siguiente es la forma general de la declaracin package:


JOSUE JONATHAN PEALOZA PIEDRA Pgina 24

TOPICOS AVANZADOS DE PROGRAMACIN


packagepkg; Aqu, pkg es el nombre del paquete. Por ejemplo, el siguiente enunciado crea un paquete de nombre Project1.

package Project1;

Java usa el sistema de archivo para manejar los paquetes con cada paquete almacenado en su propio directorio. Por ejemplo, los archivos .class para las clases que usted declare sean partes de Project1 debe guardarse en un directorio llamado Project1.

Puede crear una jerarqua de paquetes. Para hacerlo, simplemente, separe cada nombre de paquete del inmediatamente anterior, por medio de un punto. A continuacin, la forma general de una declaracin de paquete multinivel:

package pack1.pack2.pack3....packN;

Por supuesto, debe crear directorios que soporten la jerarqua del paquete que crea. Por ejemplo:

paquetex.y.z;

Debe almacenarse en ...../X/Y/Z, donde ... especifica la ruta a los directorios especficos.

ENCONTRAR PAQUETES Y CLASSPATH:

Como se explic, los paquetes son reflejados por los directorios. Esto provoca una pregunta importante: Cmo sabe el sistema en tiempo de ejecucin de java dnde buscar los paquetes que usted cre? La respuesta tiene dos partes. Primero, por defecto: el sistema de tiempo de ejecucin de java busca en el directorio un curso como su punto de partida. As, si sus archivos de clase estn en el directorio actual, o en un subdirectorio del directorio actual, ellos se

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 25

TOPICOS AVANZADOS DE PROGRAMACIN


encontrarn. Segundo, puede especificar una ruta o rutas de directorios colocando la variable ambiental CLASSPATH. Por ejemplo considere la siguiente especificacin de paquete:

packageMyPack;

Para que un programa encuentre MyPack, una de estas opciones debe ser cierta: el programa es ejecutado desde un directorio inmediatamente anterior a MyPack, o CLASSPATH debe crearse para incluir la ruta a MyPack. La primera alternativa es la mas fcil (y no requiere un cambio a CLASSPATH), pero la segunda le permite a su programa encontrar MyPack sin importar en cual directorio esta el programa.

UN EJEMPLO BREVE DE UN PAQUETE:

Teniendo en cuenta la discusin anterior pruebe este ejemplo breve de paquete. ste crea una base de datos simple de libro que esta contenido dentro del paquete BookPack.

//Demostracin del uso de un paquete packageBookPack; class Book{ private String title; private String author; privateintpubDate; Book (String t, String a, int d){ title= t; author= a; pubDate= d; } void show( ) { System.out.println (title); System.out.println (author); System.out.println (pubDate);
JOSUE JONATHAN PEALOZA PIEDRA Pgina 26

TOPICOS AVANZADOS DE PROGRAMACIN


System.out.println ( ); } }

classBookDemo { public static void main ( String args[ ] ){ Book book [ ] = new Book [5]; book[0] = new Book ("java Beginners Guide", "Schildt", 2001); book[1] = new Book ("java 2 programers Reference", "Schildt", 2000); book[2] = new Book ("HTML Programers Reference", "Powell and Whitworth", 1998); book[3] = new Book ("Red Storm Rising", "Clancy", 1986); book[4] = new Book ("On the Road", "Kerouac", 1955); for (int i=0; i <book.length; i++) book[ i ].show( ); } }

Llame este archivo BookDemo.java y colquelo en un directorio de nombre BookPack. Luego, compile el programa. Asegrese de que el archivo resultante .class est tambin en el directorio BookPack. Luego trate de ejecutar la clase, usando la siguiente linea de comando:

javaBookPack. BookDemo

Recuerde, necesitar estar en el directorio anterior de BookPack cuando ejecute este comando o hacer que su variable ambiental CLASSPATH, este configurada apropiadamente. Como se dijo, BookDemo y Book ahora son parte del paquete BookPack. Esto quiere decir que BookDemo no puede ser ejecutado por s mismo. Es decir, usted no puede usar esta lnea de comando.

javaBookDemo

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 27

TOPICOS AVANZADOS DE PROGRAMACIN


En cambio, BookDemo debe calificar con su nombre de paquete.

PAQUETES Y ACCESO A MIEMBROS

La visibilidad de un elemento est determinada por su especificacin de accesos, private, public. protected o por defecto, y el paquete en el que ste resida.De este modo, la visibilidad de un elemento est determinada por su visibilidad dentro de la clase y su visibilidad dentro del paquete. Si un miembro de una clase no tiene especificador de acceso explcito, entonces ste sera visible desde dentro de su paquete pero no por fuera de l. Por esto debe usar como la especificacin de acceso por defecto para los elementos que quiera mantener como privados en un paquete, pero |pblico| dentro de ese paquete. Los miembros declarados public explcitamente son visibles en todas partes, incluidas en clases y paquetes diferentes. No hay restriccin en su uso o acceso.

La siguiente tabla resume los variados niveles de acceso a miembros.

Un miembro private es accesible slo para otro miembro de su clase y no es afectado por su afiliacin a un paquete. Un miembro especificado como protected es accesible dentro de su paquete y a todas las subclases. incluidos. subclases en otros paquetes. Una clase tiene slo dos posibles niveles de acceso : por defecto y pblico. Cuando una clase se declare como prublic, sta es accesible por cualquier otro cdigo. Si una clase tiene acceso por defecto, puede tener acceso a ella slo

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 28

TOPICOS AVANZADOS DE PROGRAMACIN


por otro cdigo dentro de su mismo paquete. Tambin, una clse que se declare public debe residir en un archivo del mismo nombre.

IMPORTAR PAQUETES:

Cuando use una clase de otro paquete, puede calificar completamente el nombre de la clase cuete.on el nombre de su paquete. Sin embargo, tal aproximacin puede fcilmente llegar a ser aburrida y complicada, si las clases que est calificando son profundamente anidadas en la jerarqua del paquete. Usando import puede traer uno o ms miembros de un paquete a la vista. Esto le permite usar directamente aquellos miembros, sin hacer explcita las calificaciones del paquete. A continuacin, la forma general de la declaracin import:

importpkg.nombre de clase;

Donde pkg es el nombre del paquete, que puede incluir su ruta (path) completa y nombre de clase el de la clase importada. Si desea importar todo el

contenido de un paquete, use un asterisco (*) para el nombre de clase. A continuacin, ejemplos de las dos formas:

importMyPack.MyClass importMyPack.*;

En el primer caso, la clase MyClass es importada de MyPack. En el segundo,todas las clases en MyPack son importadas. En un archivo fuente de java, las declaraciones import ocurren en seguida de la declaracin package (si existe) y antes de cualquier definicin de clase. Usted puede usar import para traer el paquete BookPack a la vista, de modo que la clase Book pueda usarse sin calificacin. Para hacer esto, slo adicione la declaracin import sobre cualquier archivo que use Book.

importBookPack,*;
JOSUE JONATHAN PEALOZA PIEDRA Pgina 29

TOPICOS AVANZADOS DE PROGRAMACIN

Por ejemplo, a continuacin est la clase UseBook recodificada para usar import

//muestra la senctenciaimport packageBookPack; importBookPack;

//usodel book desdeBookPack classUseBook { public static void main ( String args []) {

Book book [] =new Book [5]; book[0] = new Book ("Java Beginners Guide", "Schildt", 2001); book[1] = new Book ("Java 2 programmer Reference", "Schildt", 2000); book[2] = new Book ("HTML Programmer Reference", "Pawell and Whitworth", 1998); book[3] = new Book ("Red Storm Rising ", "Clancy", 1986); book[4] = new Book ("On the Road", "Kerouac", 1955); for (int i=0; i <book.length; i++) book[i].show(); } }

LA LIBRERIA DE CLASE JAVA ESTA CONTENIDA EN PAQUETES:

Esta libreria de clase con frecuencia se refiere a la Interfaz de Programacin de Aplicaciones de java (Java API, ApplicationProgramming Interface). La Java API se almacena en paquetes. En la parte superior de la jerarqua del paquete est java. Descendiendo desde java hay varios subpaquetes, incluidos estos:

java.lang: contiene un gran nmero de clases de propsito general java.io: contiene las clases de E/S
Pgina 30

JOSUE JONATHAN PEALOZA PIEDRA

TOPICOS AVANZADOS DE PROGRAMACIN


java.net: contiene aquellas clases que soportan redes java.applet: contiene clases para crear applets java.awt: contiene clases que soportan las herramientas abstractas para

trabajar con ventanas de java

El paquete java.lang es nico porque es importado automticamente dentro de cada programa java.

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 31

TOPICOS AVANZADOS DE PROGRAMACIN

BIBLIOGRAFA:
http://itslmg.wordpress.com/category/unidad-ii-creacion-de-componentes-y-libreriasdinamicas/

http://topicos-selectosdeprogramacion-itiz.blogspot.mx/p/creacion-de-componentes.html

http://www.mitecnologico.com/Main/DefinicionCreacionPaquetesLibreria

http://progitca.blogspot.mx/2012/03/instituto-tecnologico-de-cerroazul.html

http://msdn.microsoft.com/es-es/library/9a81d32x(v=vs.80).aspx

http://progitca.blogspot.mx/2012/03/cerro-azul-ver-instituto-tecnologico-de.html

http://progitca.blogspot.mx/2012/03/35-creacion-y-uso-de-paqueteslibrerias.html

JOSUE JONATHAN PEALOZA PIEDRA

Pgina 32

También podría gustarte