Académique Documents
Professionnel Documents
Culture Documents
ESTNDARES DE
PSEUDOCDIGO ORIENTADO A
OBJETOS Y EVENTOS
oLoop
Pag. 1
oLoop 1.2
Lenguaje de Pseudocdigo Orientado a Objetos y a Eventos
Elaborado por
ngel Augusto Velsquez Nez
rea de Desarrollo de Software
Carrera de Ingeniera Informtica y de Sistemas
Universidad Nacional Mayor de San Marcos
Pag. 2
Contenido
Introduccin.................................................................................................................................. 1
Objetivos.................................................................................................................................. 1
Definicin del Lenguaje de Pseudocdigo....................................................................................2
Pseudocdigo orientado a objetos?......................................................................................2
Expresiones.................................................................................................................................. 3
Sintaxis de las expresiones..................................................................................................... 3
Expresiones simples................................................................................................................ 4
Operadores................................................................................................................................... 5
Sentencias.................................................................................................................................... 6
Sentencias simples.................................................................................................................. 6
Sentencias de asignacin de Valores......................................................................................6
Sentencias de mensaje........................................................................................................... 6
Sentencias de entrada/salida................................................................................................... 7
Sentencias compuestas........................................................................................................... 7
Sentencias de decisin o condicionales..................................................................................7
Iteraciones............................................................................................................................... 8
Clases y Objetos......................................................................................................................... 10
Declarar Clases..................................................................................................................... 10
Declaracin de Instancias de Clases (Objetos).....................................................................11
Declaracin de definicin de Mtodos...................................................................................11
Declaracin de propiedades.................................................................................................. 14
Bibliotecas de clases............................................................................................................. 15
Polimorfismo.......................................................................................................................... 15
Comentarios............................................................................................................................... 17
Jerarqua de Clases predefinidas............................................................................................... 18
La clases Componentes............................................................................................................. 19
Atributos comunes (CComponente)......................................................................................19
Visualizar y editar texto.......................................................................................................... 19
Permitir que el usuario haga elecciones simples...................................................................20
Controles especializados....................................................................................................... 23
Manejo de Listas................................................................................................................... 24
Fichas (CFicha)..................................................................................................................... 25
La clase CFormulario............................................................................................................. 26
La clase CAplicacin............................................................................................................. 26
Tratamiento de Eventos.............................................................................................................. 29
Implantar eventos estndar................................................................................................... 29
Excepciones............................................................................................................................... 31
Proteccin de Sentencias...................................................................................................... 31
Tratamiento de Excepciones................................................................................................. 31
Generacin manual de Excepciones.....................................................................................33
Excepciones predefinidas...................................................................................................... 33
Objetos Especiales..................................................................................................................... 35
Arreglos................................................................................................................................. 35
Apuntadores.......................................................................................................................... 36
Estructuras............................................................................................................................ 37
Enumeraciones...................................................................................................................... 37
Interfaces............................................................................................................................... 38
Archivos................................................................................................................................. 39
Ejemplos de uso de oLoop......................................................................................................... 40
Declaracin de Clases y Mtodos..........................................................................................40
Implantacin de Mtodos............................................................................................................ 41
Herencia y Extensin de Clases................................................................................................. 42
Bibliografa.................................................................................................................................. 46
Sugerencias para la escritura de Pseudocdigo.........................................................................47
Indentacin ........................................................................................................................... 47
Idioma de Trabajo.................................................................................................................. 47
Notacin de Identificadores................................................................................................... 47
Pag. 3
ndice de Tablas
Tabla .1. Precedencia de operadores.......................................................................................... 3
Tabla .2. Atributos comunes para los componentes en general.................................................19
Tabla .3. Atributos de CEtiqueta................................................................................................. 19
Tabla .4. Atributos de CEdicin..................................................................................................20
Tabla .5. Atributos de CCasilla................................................................................................... 21
Tabla .6. Atributos de CBotnRadio............................................................................................22
Tabla .7. Atributos de CBotnAccin..........................................................................................22
Tabla .8. Atributos de CBarraDesp.............................................................................................23
Tabla .9. Atributos de Cficha....................................................................................................... 25
Tabla .10. Eventos estndar comunes a las Clases componentes.............................................29
Tabla .11. Eventos de las Clases componentes estndar..........................................................30
Tabla .12. Eventos clave para las Clases componentes.............................................................30
Tabla .13. Clases derivadas de CExcepcin..............................................................................34
Tabla .14. Ejemplo de uso de Prefijos........................................................................................48
Pag. 4
ndice de Ilustraciones
Ilustracin .1. Sintaxis de factor................................................................................................... 3
Ilustracin .2. Sintaxis de valor constante sin signo.....................................................................3
Ilustracin .3. Sintaxis de trmino................................................................................................. 4
Ilustracin .4. Sintaxis de expresin simple..................................................................................4
Ilustracin .5. Sintaxis de expresin.............................................................................................. 4
Ilustracin .6. Sintaxis de factor de direccin...............................................................................5
Ilustracin .7. Sintaxis de sentencia.............................................................................................. 6
Ilustracin .8. Sintaxis de sentencia simple..................................................................................6
Ilustracin .9. Sintaxis de sentencia de asignacin......................................................................6
Ilustracin .10. Sintaxis de sentencia compuesta........................................................................7
Ilustracin .11. Sintaxis de sentencia condicional. .......................................................................7
Ilustracin .12. Sintaxis de sentencia Si.......................................................................................7
Ilustracin .13. Sintaxis de sentencia Caso.................................................................................8
Ilustracin .14. Sintaxis de sentencia repetitiva o iteracin...........................................................8
Ilustracin .15. Sintaxis de sentencia Mientras.............................................................................8
Ilustracin .16. Sintaxis de sentencia repetir................................................................................8
Ilustracin .17. Sintaxis de sentencia Para..................................................................................9
Ilustracin .18. Sintaxis de declaracin de Clase.......................................................................10
Ilustracin .19. Sintaxis de declaracin de Objeto......................................................................11
Ilustracin .20. Sintaxis de declaracin de definicin de Mtodo................................................11
Ilustracin .21. Sintaxis de Lista formal de Parmetros..............................................................12
Ilustracin .22. Sintaxis de Envo de Mensaje.............................................................................14
Ilustracin .23. Ejemplo de Etiqueta............................................................................................ 19
Ilustracin .24. Ejemplo de Caja de edicin................................................................................20
Ilustracin .25. Ejemplo de Casilla de verificacin......................................................................21
Ilustracin .26. Ejemplos de Botn de radio................................................................................21
Ilustracin .27. Ejemplos de Botn de accin.............................................................................22
Ilustracin .28. Ejemplo de Barra de desplazamiento.................................................................23
Ilustracin .29. Ejemplo de Barra de dial....................................................................................24
Ilustracin .30. Ejemplo de Control Arriba Abajo.........................................................................24
Ilustracin .31. Ejemplo de Lista desplegable.............................................................................24
Ilustracin .32. Ejemplo de Ficha................................................................................................ 25
Ilustracin .33. Ejemplo de un Formulario en blanco..................................................................26
Pag. 5
Introduccin
Objetivos
Este documento tiene por finalidad que establecer los estndares de programacin
y nomenclatura de objetos de programacin en pseudocdigo a utilizar en las
sesiones de clase y los proyectos de desarrollo de software.
Pag. 1
Pag. 2
Expresiones
Las expresiones estn compuestas por operadores y operandos. La mayora de
operadores son binarios, es decir utilizan dos operandos. Los dems son unarios y
necesitan slo un operando. Los operadores binarios utilizan la forma algebraica que
conocemos (por ejemplo, A + B). Los operadores unarios siempre preceden a sus
operandos (por ejemplo, -B).
En expresiones ms complejas, las reglas de precedencia de operadores aclaran el
orden en que se realizan las operaciones.
Operadores
@, No
*, /, div, mod, Y
+, -, O
=, <>, <, >, <=, >=
Precedencia
Categoras
primera (ms alta) operadores unarios
segunda
operadores de multiplicacin/divisin
tercera
operadores de suma/resta
cuarta (ltima)
operadores relacionales
Tabla .1. Precedencia de operadores.
X
@X
15
(X + T + Z)
Seno(X/2)
No Fin
Expresiones simples
Las expresiones simples aplican los operadores de suma/resta a los trminos:
ExpresinSimple --> [+ | -] Trmino [ OperadorTrmino Trmino]
OperadorTrmino --> + | - | O
Pag. 4
Operadores
A nivel de pseudocdigo, podemos dividir a los operadores en operadores numricos,
lgicos, de texto, apuntadores y relacionales.
Los operadores numricos son muy conocidos por nosotros (+, -, *, /, div, mod); de
stos, el operador + tambin se usa para concatenar textos (cadenas). Los operadores
numricos + y - tambin pueden ser operadores unarios. Los operadores + y - tambin
se aplican a variables o constantes que contienen valores de direcciones, obteniendo
como resultado otro valor de direccin.
El valor de I div J es el cociente de I / J redondeado. Ocurre un error en ambos tipos de
divisin si J es cero.
El operador mod retorna el resto de la divisin de sus operandos, es decir:
I mod J = I - (I div J) * J
Pag. 5
Sentencias
Las sentencias describen las acciones que puede ejecutar el algoritmo. Hay dos tipos
principales de sentencias: las sentencias simples y las sentencias compuestas.
Sentencia --> SentenciaSimple | SentenciaCompuesta
Sentencias simples
Una sentencia simple es aquella que no puede contener otras sentencias. Tenemos los
siguientes tipos: sentencias de entrada/salida, sentencias de asignacin de valores y
sentencias de mensaje.
SentenciaSimple --> SentenciaAsignacin | SentenciaEntradaSalida |
SentenciaRetorno | Mensaje | Retorno
Sentencias de mensaje
Una sentencia de mensaje activa un mtodo especificado por un identificador de
mtodo, si la declaracin del mtodo contiene una lista de parmetros formales,
entonces la sentencia de mensaje debe tener una lista concordante de parmetros (en
la seccin de declaracin, a los parmetros se les conoce como parmetros formales,
al momento del paso de mensajes se les conoce como parmetros reales). Trataremos
este tipo de sentencias en la seccin de Mensajes.
Pag. 6
Sentencias de entrada/salida
Todo lenguaje de pseudocdigo debe permitir mecanismos que comuniquen nuestra
solucin con el usuario. La mayora de aplicaciones necesitan una interaccin con el
usuario de la misma. Nuestro lenguaje cuenta con dos primitvas bsicas para dicho fin.
La primitiva Leer permite recibir un valor del exterior y almacenarlo en la variable con el
nombre que se coloca en la seccin de interfaz. La primitiva Escribir nos proporciona un
mecanismo para emitir expresiones y resultados para que puedan ser apreciados por
nuestro usuario. La manera como se escriben es la siguiente:
leer ( Identificador )
escribir ( Identificador | Expresin )
Como veremos ms adelante, stos son mtodos de dominio pblico, por tanto entran
en la categora de mtodos de biblioteca.
Sentencias compuestas
Las sentencias compuestas son construcciones compuestas por otras sentencias que
se ejecutarn en secuencia, condicionalmente (sentencias condicionales), o
repetidamente (sentencias iterativas).
SentenciaCompuesta --> SentenciaCondicional |
SentenciaRepetitiva | Excepcin
Pag. 7
Iteraciones
SentenciaRepetitivas --> SentenciaRepetir |
SentenciaMientras | SentenciaPara
Pag. 8
Pag. 9
Clases y Objetos.
Una clase es, al igual que los nmeros, el texto y los booleanos, un tipo especial de
datos. En su caso consiste de un nmero fijo de componentes. Una clase puede estar
compuesta por atributos y mtodos.
Una instancia de una clase es conocida comnmente como objeto. Los objetos se
crean utilizando los constructores y se destruyen utilizando los destructores. Cada
objeto tiene su copia de los atributos declarados en la clase, pero todos comparten los
mismos mtodos.
Declarar Clases.
Las clases se declaran de la siguiente manera:
Clase IdentificadorClase
[viene-de IdentificadorClase { , IdentificadorClase }]
Atributos
IdentificadorAtributo { IdentificadorAtributo }
Mtodos
secuencia de m declaraciones de mtodos
fclase
IdentificadorMtodo [ ( ListaFormalParmetros ) ] [ --> ]
[ abstracto | sobreescribir |
sobrecargar | esttico | sincronizado ]
Constructor [ ( ListaFormalParmetros ) ]
Destructor
ListaFormalParmetros
}
Una clase descendiente contiene en forma implcita todos los componentes definidos
por sus clases ancestro. Una clase descendiente puede agregar nuevos componentes
a los ya heredados. Sin embargo, no puede eliminar la definicin de un componente
declarado en una clase ancestro.
Seleccionar atributos
La manera como podemos accesar a los atributos de una clase es similar a lo
anteriormente visto con las variables, excepto que necesitamos especificar a que clase
pertenece este atributo.
Identificador_de_Clase.Identificador_Atributo
Esta herramienta del lenguaje de pseudocdigo nos es til para accesar a los atributos
de una clase dentro de la definicin de un mtodo amigo de sta. Llamamos mtodo
amigo al mtodo que recibe como parte de su interfaz un identificador de otra clase del
cual se puede accesar directamente a los valores de los atributos de la clase. El
concepto de amigo se entiende como un grado de confianza entre clases, pues una
clase confa su intimidad (se supone que los atributos deben encapsularse para el
exterior) a otra esperando que la receptora no de un uso indebido a los valores de sus
atributos.
Dentro de los mtodos de una clase, el acceso a sus atributos propios y heredados no
necesita la especificacin del identificador de clase, pues la pertenencia est
sobreentendida.
Parmetros (Interfaz)
La declaracin de un mtodo especifica una lista formal de parmetros o interfaz. Cada
parmetro que se declara en una lista formal de parmetros es local al mtodo en que
se declara y se le puede hacer referencia utilizando su identificador en el bloque
asociado con el mtodo.
ListaFormalParmetros
[ @ ]Identificador }
--> [ @ ] Identificador {,
Pag. 12
Constructores y destructores
Como hemos adelantado, los constructores y destructores son mtodos que controlan
la construccin y destruccin de objetos de una clase. Ellos se especifican como
componentes de la clase como un mtodo estndar, excepto que la palabra constructor
se utiliza como identificador del mtodo. Al igual que los mtodos, stos se pueden
heredar.
Los constructores se usan para crear e inicializar nuevos objetos. Por lo general, la
inicializacin se basa en los valores que se pasan como parmetros al constructor.
Normalmente la primera accin que realiza un constructor es invocar al constructor
heredado de su padre.
Los destructores se usan para retirar del entorno objetos. Cuando se invoca a un
destructor, se ejecutan las acciones definidas por el usuario para el destructor y luego
se libera los recursos asignados al objeto. Por lo general las acciones de un destructor
son destruir cualquier objeto contenido en l y liberar cualquier recurso solicitado por el
objeto. Tpicamente la ltima accin que realiza un destructor es llamar al destructor
heredado para deshacerse de los atributos heredados del objeto.
Clase CFigura viene-de CObjeto
Atributos
Largo
Ancho
Objeto Lpiz ejemplar-de Clpiz
Objeto Brocha ejemplar-de Cbrocha
Mtodos
Constructor(QueLargo, QueAncho)
Destructor
fClase
Mtodo CFigura.Constructor(QueLargo, QueAncho)
heredado Constructor
Ancho <-- QueLargo
Largo <-- QueAncho
Lpiz.Constructor
Brocha.Constructor
fmtodo
Mtodo CFigura.Destructor
Lpiz.Destructor
Brocha.Destructor
heredado Destructor
fmtodo
Pag. 13
Envo de Mensajes
Un mtodo se activa mediante el envo de un mensaje a un objeto consistente de un
identificador de mtodo seguido por una lista real de parmetros. Este tipo de llamada
se conoce como invocar un mtodo enviar un mensaje.
IdentificadorObjeto.
IdentificadorObjeto.IdentificadorMtodo [(
[(ListaRealParmetros)
ListaRealParmetros)]
Declaracin de propiedades
Las propiedades son una caracterstica presente en muchos lenguajes de
programacin. Para declarar propiedades en oLoop se utiliza la siguiente sintaxis.
Propiedad IdentificadorPropiedad
[ obtener IdentificadorAtributo | IdentificadorMtodo ]
[ colocar IdentificadorAtributo | IdentificadorMtodo ]
Por ejemplo:
Clase CCliente
Atributos
Nombres
Apellidos
fechaltimaCompra
Mtodos
ObtenerNombres ->
ColocarNombres(pNombres)
ObtenerApellidos ->
ColocarApellidos(pApellidos)
ObtenerNombreCompleto ->
Propiedad NombreCompleto
obtener ObtenerNombreCompleto
Propiedad ltimaCompra
Pag. 14
obtener fechaltimaCompra
colocar fechaltimaCompra
fclase
Bibliotecas de clases
Las clases en una aplicacin pueden organizarse en bibliotecas. oLoop permite la
especificacin y uso de bibliotecas de clases en el pseudocdigo.
Especificacin de bibliotecas
Para especificar que una clase pertenece a un biblioteca determinada, basta con utilizar
la sentencia Biblioteca.
Biblioteca IdentificadorBiblioteca
Esta sentencia se coloca como primera lnea de la declaracin de clase, indicando que
la clase a declarar estar formando parte de la biblioteca indicada. Varias clases
pueden pertenecer a la misma biblioteca.
En la nomenclatura de identificadores de biblioteca, puede utilizarse el smbolo de punto
para delimitar los niveles de organizacin en el nombre de la biblioteca.
Por ejemplo:
Biblioteca com.empresa.aplicacioncompras.entidadesnegocio
fclase
Uso de bibliotecas
Para indicar que una clase puede hacer uso de las clases pblicas en una biblioteca, se
utiliza la sentencias Usar.
Usar IdentificadorBiblioteca
La sentencia Usar se aplica para cada biblioteca cuyas clases e interfaces vaya a
utilizar la clase a declarar. Por ejemplo:
Biblioteca com.empresa.aplicacioncompras.cliente
Usar com.empresa.aplicacioncompras.entidadesnegocio
Usar com.empresa.utilidades
Clase CComprasAplicacion viene-de CAplicacion
fclase
Polimorfismo
Una de las caractersticas importantes del paradigma orientado a objetos es el
polimorfismo. El mismo nombre nos da una idea clara del concepto de polimorfismo,
pues poli significa mltiple y morfismo viene de formas, esto implica que un mismo
objeto puede tomar diversas formas. En oLoop, el polimorfismo se contempla en la
instancia de objetos y en la consulta de tipos.
Pag. 15
Consulta de tipo
oLoop implementa la consulta de tipo de un objeto por medio de la palabra reservada
es-instancia-de.
IdentificadorObjeto es-instancia-de IdentificadorClase
La combinacin de estos elementos constituye una expresin booleana que puede ser
verdadera o falsa. Por lo general se utiliza en combinacin con la sentencia
Si..entonces.
En el siguiente ejemplo, se asume la existencia de tres clases, una clase genrica
CEmpleado y dos clases descendientes denominadas CEmpleadoTiempoParcial y
CEmpleadoTiempoCompleto. La variable Empleado se declara como ejemplar de la
clase CEmpleado, pero al momento de crear la instancia, se utiliza el mtodo
constructor de la clase CEmpleadoTiempoCompleto. Posteriormente, se consulta en
una sentencia Si para saber si el objeto es una instancia del tipo
CEmpleadoTiempoCompleto.
Objeto Empleado ejemplar-de CEmpleado
fsi
Casting de tipo
El trmino casting proviene de la palabra cast que significa en espaol molde, por lo
que una traduccin literal nos llevara a algo como hacer un molde. oLoop implementa
en su sintaxis la especificacin de casting de un objeto, anteponiendo al identificador de
objeto el nombre de la clase cuya forma se desea que asuma, encerrada entre
parntesis.
(IdentificadorClase) IdentificadorObjeto
Esto puede ser de utilidad en las operaciones de asignacin. En caso se desee invocar
a un mtodo que pertenece a la clase objeto del casting, se encierra la expresin de
casting entre parntesis y se invoca al mtodo deseado.
((IdentificadorClase) IdentificadorObjeto).IdentificadorMtodo
salario ((CEmpleadoTiempoCompleto)Empleado).obtenerSalario
Pag. 16
Comentarios
Los comentarios son construcciones que no forman parte de la descripcin de la lgica,
pero son valiosos elementos para explicar y hacer ms claro nuestro algoritmo. Para
insertar un comentario, basta con escribir dos smbolos de divisin seguidos (//) y a
continuacin el texto que se desee colocar. Se considera comentario hasta el final de la
lnea.
// Este es un ejemplo de un comentario
// que ocupa varias lneas.
Pag. 17
Pag. 18
La clases Componentes
Atributos comunes (CComponente)
La lista de atributos vara entre componentes, pero algunos son comunes a todos:
Atributo
Activado
Visible
Funcin
Determina si el componente reaccionar ante las acciones del usuario.
Determina si el componente se mostrar sobre el formulario durante la
ejecucin.
Tabla .2. Atributos comunes para los componentes en general.
Clase CComponente viene-de CObjeto
Atributos
Activado
Visible
Mtodos
ObtenerActivado -->
ObtenerVisible -->
ColocarActivado
ColocarVisible
fclase
Existen, como veremos ms adelante, dos clases que definen dos niveles de
profundidad en la jerarqua, CControl y su hijo, CControlWindows. Las clases que
describiremos a continuacin son descendientes directas de CControlWindows.
Funcin
Contiene el texto que muestra la Etiqueta
Tabla .3. Atributos de CEtiqueta.
Clase CCEtiqueta viene-de CControlWindows
Atributos
Pag. 19
Ttulo
Mtodos
ObtenerTtulo -->
ColocarTtulo
fclase
Funcin
Contiene el texto que visualiza la caja de Edicin o que ingresa el
usuario.
Indica si el texto ha sido modificado por el usuario. Esta propiedad
puede verificarse para ver si se necesita algn procesamiento para
el texto.
Si est en Verdadero, prohibe al usuario la edicin del texto.
Tabla .4. Atributos de CEdicin.
Mtodos
ObtenerTexto -->
ColocarTexto
ObtenerModificado -->
ColocarModificado
ObtenerSloLectura -->
ColocarSloLectura
fclase
Pag. 20
Verificar ortografa
Activar guiones
Autocorreccin
Funcin
Determina el texto que aparece junto a la casilla.
Determina si el usuario activ la casilla de verificacin.
Tabla .5. Atributos de CCasilla.
Clase CCasilla viene-de CControlWindows
Atributos
Ttulo
Verificada
Mtodos
ObtenerTtulo -->
ColocarTtulo
ObtenerVerificada -->
ColocarVerificada
fclase
Impresora local
Impresora de red
Un Archivo en disco...
Funcin
Determina el texto que aparece junto al Botn de Radio.
Determina si el usuario eligi esta alternativa.
Tabla .6. Atributos de CBotnRadio.
Configurar los Botones de Radio es tan simple com con las Casillas de Verificacin.
Basta con establecer el atributo Ttulo para que el usuario conozca la alternativa
representada por el Botn. Durante la ejecucin examinamos el atributo Verificada de
cada Botn para determinar cul fue seleccionada por el usuario.
Clase CBotnRadio viene-de CControlWindows
Atributos
Ttulo
Verificada
Mtodos
ObtenerTtulo -->
ColocarTtulo
ObtenerVerificada -->
ColocarVerificada
fclase
Next >
OK
Cancel
Funcin
Contiene el texto que muestra el Botn de Accin
En Verdadero si se desea que que el Botn reaccione cuando el
usuario presione Esc.
En Verdadero si queremos que la tecla Enter haga que el Botn
reaccione, an si ste no tiene el foco.
Tabla .7. Atributos de CBotnAccin.
Mtodos
ObtenerTtulo -->
ColocarTtulo
ObtenerCancelar -->
ColocarCancelar
Pag. 22
ObtenerPorDefecto
ColocarPorDefecto
fclase
Controles especializados
Los siguientes controles proporcionan alternativas para la captura de datos.
La Barra de Desplazamiento se utiliza para seleccionar valores en un rango
continuo.
La Barra de Dial es til para dar un mayor efecto de barra de
desplazamiento.
El Arriba Abajo ayuda a conectar un spinner con una caja de edicin.
Mn/Mx
Posicin
Funcin
Determina cuanto se mueve cuando el usuario hace clic
sobre la barra a cualquiera de los lados.
Determina cuanto se mueve cuando el usuario hace clic
sobre las flechas a los extremos de la barra o utiliza las
flechas de desplazamiento en el teclado. Su valor por
defecto es 1.
Indican cuntas posiciones estn disponibles en la barra de
desplazamiento.
Informan de cunto se ha desplazado en la barra.
Tabla .8. Atributos de CBarraDesp.
Mtodos
ObtenerVariacinGrande -->
ColocarVariacinGrande
ObtenerVariacinPequea -->
ColocarVaricinPequea
ObtenerMn -->
ColocarMn
ObtenerMx -->
ColocarMx
ObtenerPosicin -->
ColocarPosicin
fclase
Pag. 23
Longitud:
33.40
Manejo de Listas
Estilo:
Normal
Pag. 24
Fichas (CFicha)
Grabar
Compilador
Funcin
Especifica cul es la ficha seleccionada en ese
momento.
Es Verdadero si hay varias lneas de fichas.
Especifica el nmero de pginas.
Nos permite acceso a las fichas.
Tabla .9. Atributos de Cficha.
Pag. 25
La clase CFormulario
Formulario en Blanco
La clase CAplicacin
Todo algoritmo que representa una aplicacin utiliza una clase que desciende de
CAplicacin. Cuando ejecuta su aplicacin, se invoca al mtodo Principal. El mtodo
Terminar finaliza la ejecucin de la aplicacin. El atributo FormularioPrincipal es una
apuntador que debe tener el valor de la direccin del formulario que aparece como base
de la aplicacin.
Dado que los entornos actuales existe la propiedad de minimizar y restaurar la
aplicacin, hemos incluido estos mtodos para que puedan invocarse por
programacin. As mismo los puede extender para que realice otras acciones aparte.
Pag. 26
Observe que el mtodo constructor tiene dos parmetros: aEntorno y nEntorno. Estos
son respectivamente un arreglo de cadenas de texto y un nmero respectivamente.
Contienen los parmetros que nos enva el entorno del sistema y el nmero de
parmetros que estamos recibiendo.
El siguiente ejemplo es un uso muy sencillo de esta clase. El objetivo de esta aplicacin
es mostrar un mensaje en la pantalla.
Clase CMiAplicacin viene-de CAplicacin
Mtodos
Constructor(aEntorno, nEntorno)
Principal
fclase
Mtodo Constructor(aEntorno, nEntorno) de CMiAplicacin
Heredado Constructor(aEntorno, nEntorno)
Ttulo <-- Aplicacin de Ejemplo
FormularioPrincipal <-- Nulo
fmtodo
Mtodo Principal de CMiAplicacin
heredado Principal
MostrarMensaje(Pertenezco a la clase CMiAplicacin)
fmtodo
Pag. 27
Pag. 28
Tratamiento de Eventos
Los eventos son parte importante de las clases, aunque el desarrollador por lo general
no necesita mayor esfuerzo con ellos. Un evento es un enlace entre una ocurrencia en
el sistema (como una accin del usuario o un cambio en el foco) a la que una clase
podra necesitar responder y una seccin de cdigo que responde a esa ocurrencia. El
bloque de cdigo de respuesta es el gestor del evento, y mayormente lo escribe el
creador de la clase.
Al utilizar los eventos, los desarrolladores de aplicaciones pueden personalizar el
comportamiento de las clases sin tener que cambiar las clases en s. Como creadores
de clases, utilizamos los eventos para que los desarrolladores de aplicaciones
personalicen el comportamiento de nuestras clases.
Los eventos para la mayora de las acciones del usuario (como por ejemplo las
acciones del ratn) ya estn incorporadas en las clases predefinidas de nuestro
lenguaje, pero proporcionamos los mecanismos para definir nuevos eventos y
asociarlos con las clases.
En nuestro lenguaje de pseudocdigo, las clases predefinidas tiene incorporados
mtodos que responden a cietros eventos estndares. Por ejemplo la clase
CBotnAccin tiene un mtodo AlClic. La capa de administracin de eventos es el
conjunto de mecanismos que toda herramienta de desarrollo orientada a objetos y
eventos tiene y que debemos suponer como existente. El lenguaje de pseudocdigo
proporciona los mecanismos para la escritura del cdigo que responde a los eventos,
pero es durante la ejecucin que se va transfiriendo el control a los mtodos
correspondientes, y esta labor la realiza la capa de administracin de eventos, la cual
est fuera del contexto de nuestro lenguaje.
Ocurre cuando
Mtodo asociado
El usuario presiona una vez el botn
AlClic
izquierdo del ratn.
DobleClic
El usuario presiona dos veces seguidas el
AlDobleClic
botn izquierdo del ratn.
ArrastrarSoltar
El usuario arrastra el objeto con el ratn.
AlArratrarSoltar
FinArrastrar
Finaliza la oparcin de arrastrar, es decir,
AlFinArrastrar
suelta el ratn.
MoverRatn
Se desplaza por la pantalla el puntero del
AlMoverRatn
ratn.
ArratrarSobre
El puntero del ratn est pasando sobre un AlArrastrarSobre
objeto.
UndirRatn
Presionar el botn del ratn.
AlUndirRatn
SoltarRatn
Levantar el dedo del botn del ratn.
AlSoltarRatn
Tabla .10. Eventos estndar comunes a las Clases componentes.
Todos los eventos estndar tienen sus correspondientes mtodos declarados en la
clase CControl, con el mismo nombre que el evento, pero precedidos por el prefijo Al.
Aqu expresamos de otra manera lo anteriormente dicho:
Pag. 29
Eventos clave
Clase
CEdicin
CBotnAccin
CCasilla
Evento
Cambiar
Clic
Clic
Ocurre cuando
El usuario modifica el texto en la Caja.
El usuario hace clic sobre el Botn.
El usuario hace clic sobre la Casilla de
Verificacin.
CBotnRadio
Clic
El usuario hace clic sobre el Botn de radio
Tabla .12. Eventos clave para las Clases componentes.
De todos estos eventos clave, el nico que no est ya contemplado por las clases es el
evento Cambiar. Para este evento, el mtodo asociado en la clase CEdicin sera
AlCambiar.
Pag. 30
Excepciones
Una excepcin es por lo general una condicin de error u otro evento que interrumpe el
flujo normal de ejecucin en una aplicacin. Cuando se provoca una excepcin, sta
hace que el control se transfiera del punto actual de ejecucin a un gestor de
excepciones. El soporte de manejo de excepciones del lenguaje de pseudocdigo
proporciona una manera estructurada de separar la lgica normal del algoritmo de la
lgica de manejo de errores, facilitando as el mantenimiento y fortaleciendo la solucin.
Para representar las excepciones optamos por utilizar objetos. Las ventajas principales
son:
Las excepciones se pueden agrupar en jerarquas utilizando la herencia.
Se pueden introducir nuevas excepciones sin afectar el cdigo existente.
Un objeto de excepcin puede llevar informacin (como un mensaje de error
o un cdigo de error) desde el punto donde se provoc hasta el punto donde
se maneja.
Proteccin de Sentencias
Las excepciones se manejan usando la sentencia ProtegerExcepcin.
Proteger
lista de sentencias protegidas
Excepcin
Bloque de excepciones
Sino
Bloque a ejecutar cuando no coincide con las listadas
fproteger
Tratamiento de Excepciones
Cuando identificador-clase-excepcin
Hacer
Secuencia de acciones para tratar la excepcin
fcuando
Excepcin
Cuando CDivisinPorCero
Hacer
ManejarDivisinPorCero
fcuando
Cuando CSobreflujo
Hacer
ManejarSobreflujo
fcuando
fproteger
Excepcin
Cuando Objeto E ejemplar-de CExcepcin
Hacer
MostrarMensaje(ObtenerMensaje de E)
fcuando
fproteger
Excepcin
Cuando CDivisinPorCero
Hacer
ManejarDivisinPorCero
fcuando
Cuando CSobreflujo
Hacer
ManejarSobreflujo
fcuando
Sino
ManejarOtras
fproteger
Pag. 32
Excepcin
ManejarExcepcin
fproteger
Aqu cualquier excepcin que ocurra como resultado de la ejecucin de las sentencias
de las sentencias entre Proteger y Excepcin sern manejadas por el mtodo
ManejarExcepcin.
Excepciones predefinidas
Para el lenguaje de pseudocdigo propuesto hemos definido ciertas clases de
excepcin, incluyendo una clase CExcepcin que sirve de raz para todas las clases de
excepcin. Debemos tomar en cuenta que al tratarse de un lenguaje para especificar
algoritmos, hay ciertas excepciones que no aparecern a este nivel (por ejemplo las de
acceso a direcciones de memoria invlida).
Clase CExcepcin viene-de CObjeto
Atributos
Mensaje
ContextoDeAyuda
Mtodos
Constructor(UnMensaje, UnContextoDeAyuda)
ObtenerMensaje -->
ObtenerContextoDeAyuda -->
fclase
Pag. 33
Descripcin
Surge cuando no hay suficiente memoria para una
operacin en particular.
CErrorES
Surge cuando una operacin de entrada/salida genera un
error.
CErrorMatemtico
La clase padre de todas las excepciones de operaciones
matemticas.
CDivisinPorCero
Surge cuando se intenta una divisin que tiene por divisor
un valor de cero. Desciende de CErrorMatemtico.
CSobreflujo
Surge cuando una operacin produce un sobreflujo
(overflow). Est ms orientada a la implantacin, pero es
tan frecuente que cabe su inclusin. Desciende de
CErrorMatemtico.
CSobreflujoDePila
Aparece cuando la pila de nuestra aplicacin no puede
expandirse, o si el tamao de la pila alcanza su lmite
superior. Esta excepcin presupone un lmite en la pila,
una restriccin fsica, pero su frecuencia amerita incluirla.
Tabla .13. Clases derivadas de CExcepcin.
Pag. 34
Objetos Especiales
Arreglos
Los arreglos tienen un nmero fijo de componentes del mismo tipo de valor.
Declarar
Para declarar un arreglo en el pseudocdigo, necesitamos especificar un nombre o
identificador para el arreglo. As mismo tenemos que indicar el rango de valores para
cada una de las dimensiones del arreglo. Para indicar el rango de valores de uno de los
subndices, simplemente especificamos los lmites inferior y superior del rango y
colocamos entre ellos puntos suspensivos (). El nmero de elementos del arreglo es
el producto de los valores mximos de cada subndice.
nomb_de_arreglo [ Dimensin rango1, ..... , rangon ] Ejemplar-de
CArreglo
Por ejemplo:
aMatriz1 Dimensin 110, 120 Ejemplar-de Carreglo
Aqu definimos un arreglo llamado aMatriz1 cuyo nmero de elementos es 10*20. Noten
que estamos colocando el prefijo a en el nombre del arreglo, lo que indica que el
identificador corresponde a un arreglo.
Referencia
Podemos acceder a uno de los componentes proporcionando el identificador del arreglo
con el ndice correspondiente encerrado entre corchetes. Si no incluimos la referencia a
un componente en particular, el identificador del arreglo referencia a la totalidad de
ste.
nombre_de_arreglo [ndice] // Un elemento del arreglo
nombre_de_arreglo
// Todo el arreglo
Por ejemplo:
objeto arregloPersonas ejemplar-de CArregloPersonas
...
Pag. 35
Apuntadores
Los apuntadores son variables que almacenan un tipos especial de valor: direcciones
de memoria. En esas direcciones se guardan valores relevantes para nuestro algoritmo.
Reservar espacio
La operacin de reservar espacio para el apuntador podra compararse con la accin de
declarar al sistema que el identificador especificado se referir a un apuntador.
Reservar identificador_apuntador |
Reservar identificador_apuntador*Cantidad_Elementos
Asignar valor
Los apuntadores pueden recibir direcciones como valores vlidos. Para obtener la
direccin de una variable basta con colocar el smbolo @ antes del identificador de la
variable y esto denotar su direccin de memoria. Otra manera de asignar valor es
colocar direcciones especficas ya sea en notacin decimal o hexadecimal (ambas muy
conocidas por nosotros), o en su defecto utilizando nulo.
identificador_apuntador <-- @ identificador
identificador_apuntador <-- expresin_de_direccin
Liberar espacio
La sentencia Liberar nos permite devolver al sistema el bloque de memoria que fuera
asignado al apuntador con la sentencia Reservar.
Liberar identificador_apuntador
Por ejemplo:
Liberar pCuenta
Por ejemplo:
pCuenta <-- '15307863'
Pag. 36
Por ejemplo:
pNumeros <-- pNumeros + 15 // Se desplaza 15 bloques
Estructuras
A fin de cubrir la existencia de tipos estructura existentes en algunos lenguajes (struct
en C++ o C#), oLoop permite la declaracin de estructuras, muy similares a las clases,
pero con la diferencia de que no poseen constructor ni son capaces de participar en
una jerarqua. Son bsicamente un tipo de valor compuesto para declaracin de
variables, ms que una clase que pueda aceptar creacin de instancias.
La sintaxis para declarar estructuras se presenta a continuacin.
Estructura IdentificadorEstructura
Atributos
IdentificadorAtributo { IdentificadorAtributo }
Mtodos
secuencia de m declaraciones de mtodos
festructura
Por ejemplo:
Estructura SFigura
Atributos
Largo
Ancho
Objeto Lpiz ejemplar-de CLpiz
Objeto Brocha ejemplar-de CBrocha
Mtodos
ObtenerLargo -->
ObtenerAncho -->
ColocarLargo(NuevoLargo)
ColocarAncho(NuevoAncho)
festructura
Por ejemplo:
Estructura SInformacinPedido
Atributos
NmeroPedido
FechaPedido
festructura
...
informacinPedido ejemplar-de SInformacinPedido
informacinPedido.NmeroPedido <-- 450
Enumeraciones
En muchos lenguajes de programacin se implementa el concepto de enumeraciones o
tipos enumerados. En oLoop se puede declarar tipos para enumeraciones con la
siguiente sintaxis.
Enumeracin IdentificadorEnumeracin [ valor1 {, valor2,..,
valorN }]
Enumeracin EEstadoPedido [ PENDIENTE, APROBADO, RECHAZADO ]
Por ejemplo:
pedido ejemplar-de EEstadoPedido
pedido <-- EEstadoPedido.Pendiente
Interfaces
Para declarar interfaces en oLoop se utiliza la siguiente sintaxis.
Interfaz IdentificadorInterfaz
Atributos
IdentificadorAtributo { IdentificadorAtributo }
Mtodos
secuencia de m declaraciones de mtodos
finterfaz
IdentificadorMtodo [ ( ListaFormalParmetros ) ] [ --> ]
[ virtual | virtual abstracto | sobreescribir |
sobrecargar ]
ListaFormalParmetros
Identificador }
--> [ @ ] Identificador {, [ @ ]
Por ejemplo:
Interfaz IManejadorCliente
Mtodos
obtenerInstancia ->
registrarCliente(cliente) ->
fclase
Para declarar que una clase implementa una interfaz, se utiliza la siguiente sintaxis.
Clase IdentificadorClase implementa IdentificadorInterfaz
Atributos
IdentificadorAtributo { IdentificadorAtributo }
Mtodos
secuencia de m declaraciones de mtodos
fclase
Por ejemplo:
Clase CClienteNegocio implementa IManejadorCliente
Metodos
obtenerInstancia ->
registrarCliente(cliente) ->
fclase
Mtodo CClienteNegocio.obtenerInstancia ->
Objeto cliente ejemplar-de CClienteNegocio
cliente.constructor
retornar cliente
fmtodo
Mtodo CClienteNegocio.registrarCliente(cliente)
IAccesoDatos facade =
InfraestructuraFacade.obtenerInstancia
retornar facade.insertarCliente(
cliente.obtenerCodigo,
cliente.obtenerNombre,
cliente.obtenerUsuario,
cliente.obtenerContrasena,
Pag. 38
cliente.obtenerCorreo,
cliente.obtenerTelefono,
cliente.obtenerFax,
cliente.obtenerPais)
fmtodo
Archivos
oLoop permite el uso de archivos secuenciales o aleatorios. Para ello cuenta con la
clase predefinida CArchivo. Esta clase encapsula la funcionalidad genrica para el
manejo de archivos. La declaracin de la clase CArchivo se especifica a continuacin.
Clase CArchivo
Atributos
Nombre
Ruta
ModoAcceso
//
//
//
//
//
Tipo
Mtodos
Crear ->
Abrir ->
Cerrar ->
Leer ->
Leer(pPosicion) ->
Escribir(Objeto)
Escribir(Posicion, Objeto)
ObtenerNombre ->
ColocarNombre(NuevoNombre)
ObtenerRuta ->
ColocarRuta(NuevaRuta)
ObtenerModoAcceso ->
ColocarModoAcceso(NuevoModoAcceso)
ObtenerTipo ->
ColocarTipo(NuevoTipo)
FinDeArchivo ->
fclase
Pag. 39
Pag. 40
Implantacin de Mtodos
Continuando con nuestro ejemplo del punto, demostramos como declarar las
definiciones de los mtodos de la clase arriba definida.
Mtodo CPunto.Constructor(NuevoX, NuevoY)
X <-- NuevoX
Y <-- NuevoY
fmtodo
Mtodo CPunto.ObtenerX
Retornar X
fmtodo
Mtodo CPunto.ObtenerX
Retornar Y
fmtodo
Pag. 41
Pag. 42
Y <-- QueY
Mostrar
fmtodo
// Muestra el punto
//
Este sencillo ejemplo nos muestra la simulacin de una pequea (muy pequea)
conversacin entre dos objetos de la Clase CPersona.
Clase CSegmento
Atributos
Lugar
nuSegmento
Mtodos
Constructor(NuevoSegmento, NuevoLugar)
ImprimirEncabezado
Accin
ImprimirCorte
Pag. 43
fclase
Mtodo CSegmento.Constructor(NuevoNmero, NuevoLugar)
Lugar <-- NuevoLugar
nuSegmento <-- NuevoSegmento
fmtodo
Mtodo CSegmento.ImprimirEncabezado
LneaTexto <-- Segmento # + nuSegmento +
+ Lugar
Escribir(LneaTexto)
fmtodo
Mtodo CSegmento.Accin
fmtodo
Mtodo CSegmento.ImprimirCorte
Escribir(------------------)
fmtodo
Clase CPersona
Atributos
nmPersona
// Nombre de persona
LneaEtiqueta
Mtodos
Constructor(NuevoNombre, NuevaLnea)
ColocarLneaEtiqueta(QueLnea)
ObtenerLneaEtiqueta -->
Decir(Lnea)
fclase
Mtodo CPersona.Constructor(NuevoNombre, NuevaLnea)
nmPersona <-- NuevoNombre
LneaEtiqueta <-- NuevaLnea
fmtodo
Mtodo CPersona.ObtenerLneaEtiqueta
Retornar LneaEtiqueta
fmtodo
Mtodo CPersona.ColocarLneaEtiqueta(QueLnea)
LneaEtiqueta <-- QueLnea
fmtodo
Mtodo CPersona.Decir(Lnea)
LneaTexto <-- nmPersona + : + Lnea +
Escribir(LneaTexto)
fmtodo
Clase CDilogo viene-de CSegmento
Atributos
Objeto PersonaA ejemplar-de CPersona
Objeto PersonaB ejemplar-de CPersona
Mtodos
Constructor(NuevoNmero, NuevaLnea,
nmActor1, nmActor2)
Accin
Saludos
Conversar
Despedirse
fclase
Mtodo CPersona.Constructor(NuevoNmero, NuevoLugar, nmActor1,
nmActor2)
Heredado Constructor(NuevoNmero, NuevoLugar)
PersonaA.Constructor(nmActor1, )
PersonaB.Constructor(nmActor2, )
fmtodo
Mtodo CDilogo.Accin
Pag. 44
Agradecimientos
Conversar
Despedirse
fmtodo
Mtodo CDilogo.Saludos
PersonaA.Decir(Hola)
PersonaB.Decir(Que tal)
PersonaA.ColocarLneaEtiqueta(Si que hace calor)
PersonaB.ColocarLneaEtiqueta(Y que lo digas)
fmtodo
Mtodo CDilogo.Conversar
PersonaA.Decir(PersonaA.ObtenerLneaEtiqueta)
PersonaB.Decir(PersonaB.ObtenerLneaEtiqueta)
fmtodo
Mtodo CDilogo.Despedirse
PersonaA.Decir(Chau)
PersonaB.Decir(Nos vemos)
fmtodo
Pag. 45
Bibliografa
RUBENKING, Neil (1995); Delphi Programming Problem Solver. IDG Books Worldwide
Inc. ISBN 1-56884-795-5.
Pag. 46
Idioma de Trabajo
La nomenclatura de identificadores de variables, acciones, funciones, estructuras, etc.,
debe estar regida por un idioma nico para lograr la uniformidad en el pseudo-cdigo.
Esto produce una sensacin de armona y ayuda a la fcil comprensin del mismo.
Algunos autores utilizan el idioma ingls porque les brinda mayor versatilidad en la
nomenclatura (una expresin en espaol puede significar una sola palabra en ingls) o
armona con el lenguaje de programacin en que implementarn el pseudo-cdigo.
Otros prefieren el espaol por comodidad y para lograr una mayor claridad y
comprensin por parte del lector. Para elegir el idioma de nomenclatura debe tenerse
en cuenta la comodidad personal, el grado de difusin del pseudo-cdigo (en el caso de
trabajo en grupo o para presentarlo a terceros) y la fluidez que poseemos sobre un
idioma. Esta ltima nos permitir utilizar el trmino exacto que ayude a captar el
significado del valor, accin o funcin.
Notacin de Identificadores
Los identificadores son cadenas de texto que permiten hacer referencia a valores
determinados. Muchas veces, por falta de costumbre o por "rapidez", no aprovechamos
las propiedades informativas de los identificadores. El nombre de una variable nos
puede dar informacin sobre el significado del valor al que referencia (nombre de una
persona, contador, acumulador de totales, etc.), el tipo de valor (numrico, cadena de
caracteres, estructura, etc.) o la categora de valor (posibles estados civiles por
ejemplo).
Notacin Hngara
Un tipo de notacin muy conocida en el ambiente informtico es el de la notacin
hngara, en el cual una letra denota el tipo de valor con que trabaja la variable, as:
Pag. 47
Prefijo
b
n
a
ch
c
p
S
m_
Descripcin
Valor booleano
Valor numrico
Arreglo o Matriz
Carcter
Cadena de caracteres
Apuntador
Estructura
Miembro de la Estructura
Tabla .14. Ejemplo de uso de Prefijos.
Ejemplo
bEsCasado
nEdad
aAlumnos
chRespuesta
cNombre
pNodo
SPersona
m_cNombre
Notacin de Constantes
Para la notacin de constantes, es decir identificadores asociados a valores que no
cambian en el tiempo, existen la notacin de prefijos, que consiste en la utilizacin de
uno o dos caracteres que se anteponen al identificador e indican el tipo de valor (con
respecto al significado) asociado. Por ejemplo:
Prefijo
ec
ev
cm
Descripcin
Ejemplo
Tipo de Estado Civil
ecSoltero, ecCasado, ...
Evento de interfaz
evRatn, evTeclado, ...
Comando de Aplicacin
cmSalir, cmAbrir, ...
Tabla .15. Ejemplos de Prefijos en Constantes.
Pag. 48