Librería Estándar Interna de Zero |
Este manual documenta los objetos de la librería estándar de
la máquina virtual Zero. Para cada objeto, se explica brevemente su
función, su árbol de herencia, sus atributos y sus métodos.
La notación empleada para los métodos se basa vagamente en la
del lenguaje de programación C estándar:
<objeto_base_retorno>
<nombre_método>([<objeto_base_argumento1>
[<nombre_argumento2>] [,<objeto_base_argumento2>
[<nombre_argumento2>]] ...]])
Ejemplo:
String toString() ; Método que convierte la info de un objeto en texto
Sin embargo, en Zero no existe comprobación estática de tipos como tal. Símplemente, la sintaxis empleada es una forma de sugerir los objetos que un método espera, y los objetos que un método devuelve.
En realidad, todos los métodos devuelven una referencia a un objeto,
pero aquellos que no precisan devolver ningún dato de valor,
símplemente devuelven una referencia a Nothing
, de una
manera similar a cómo en C estándar se indica con "void" la
falta de retorno de valores de una función.
A continuación se ofrece un diagrama orientativo. No todos los objetos de la librería aparece reflejados en este diagrama (como Map), que sin embargo es bastante autoexplicativo a cómo está organizada la librería.
Object es equivalente a Object
en Java. Concretamente, se trata de un objeto que siempre está
presente, y que es la raiz de la jerarquía de objetos en Zero.
It is the root of the inheritance hierarchy in Zero, being always
available.
Herencia:
No hereda de ningún otro objeto.
Sus métodos son los siguientes:
Object createChild(String
nombreNuevoObjeto)
Object copy(String
nombreNuevoObj)
Conditional isTheSameAs(Object)
Conditional isEqualTo(Object)
Conditional isLessThan(Object)
String getName()
Int getNumberOfMethods()
Object callMethodNumber(Int x)
Object deleteMethodNumber(Int x)
MethodInfo
getInfoOnMethodNumber(Int x)
Int getMethodNumberByName(String name)
String
getNameOfMethodNumber(Int x)
Vector getListOfMethods()
Object callByName(String
mthName)
Nothing addMethod(String
mthName, Vector vFormalArgs)
Object compileToMethod(Int mthNumber, String
listOfOpcodes)
String
getOpcodesOfMethodNumber(Int
mthNumber)
Int getNumberOfAttributes()
Int
getNumberOfParentAttribute()
Object getAttributeNumber(String x)
Object addAttribute(String
name, Object obj)
Object
deleteAttributeNumber(Int x)
AttributeInfo
getInfoOnAttributeNumber(Int x)
Int getAttributeNumberByName(String name)
String
getNameOfAttributeNumber(Int x)
Vector
getListOfAttributes()
Object getAttributeByName(String atrName)
Nothing finalize()
String toString()
Nothing es equivalente a NULL
en C y C++. Concretamente, se trata de un objeto que siempre está
presente, y que tan solo sirve para indicar que no se señala a
ningún otro objeto.
It is the object meaning that something is empty, or void. It just
only means that no other object is being pointed. It is the same as
NULL in C and C++.
Hereda de:
Métodos:
No existen métodos propios de este objeto.
DefaultConsole Proporciona la
funcionalidad que tiene que ver con la consola estándar. Debe
emplearse a través del atributo console
en System
.
Provides the funcionality which has to do with the standard console.
It must be used by the attribute console
in the System
object.
Hereda de:
Sus métodos son los siguientes:
Nothing open()
Nothing write(Object
obj)
String read()
Nothing close()
System
Proporciona la funcionalidad que tiene que ver con la comunicación
con la plataforma subyacente.
Provides the functionality which has to do with communication with
the underlying platform.
Hereda de:
Sus atributos son los siguientes:
console
stack
internalException
internalTrue
internalFalse
internalFloat
internalInt
internalTime
internalString
internalVector
internalEObjNotFound
internalEMthNotFound
internalInfoAtr
internalInfoMth
Points to the
object meant to hold attribute information.
String getHiVersionNumber()
String getLoVersionNumber()
Int getLoPlatformCode()
Int getHiPlatformCode()
String getPlatformName()
<hardware_id> / <os_id>
Time getCurrentTime()
Time
Proporciona la posibilidad de manejar fecha y hora, en un solo objeto.
Provides the possibility of managing time and date values, in a
sole object.
Hereda de:
Sus atributos son los siguientes:
instantInDay
year
month
day
Nothing assign(Int)
Conditional isEqualTo(Float)
Conditional isLessThan(Float)
String toString()
Int getInstantInDay()
Int putInstantInDay(Int
s, Int m, Int
h)
isValidTime()
.
isValidInstant()
.
Nothing putDate(Int
y, Int m, Int
d)
isValidDate()
. isValidDate()
.
Conditional isValidDate()
Conditional
isValidInstant()
Conditional isValid()
Conditional isLeapYear()
Int getDaysOfMonth()
Int getHour()
instantInDay
. instantInDay
. Int getMinute()
instantInDay
..
instantInDay
.
Int getSecond()
instantInDay
..
instantInDay
.
LiteralTime es un objeto que
siempre está presente, y que proporciona una base común para
los objetos que proporcionan infomación.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
No existen métodos propios en este objeto
Info es un objeto que siempre
está presente, y que proporciona una base común para los
objetos que proporcionan infomación.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
No existen métodos propios en este objeto
AttributeInfo es un
objeto que siempre está presente, y que es empleado para reflejar
información sobre un atributo de un objeto. Así, cuando el
método getInfoOnAttributeNumber()
es invocado para
un objeto, se crea un objeto AttributeInfo
que refleja toda la información relativa a él.
This object is always available, and it is used in order to reflect
all known information about an attribute. This way, when the method
getInfoO nAttributeNumber()
is invoked, a copy of AttributeInfo
is created with the appropriate information, as shown below.
Hereda de:
Inherits from:
Sus atributos son los siguientes:
owner
access
name
references
ordinal
Sus métodos son los siguientes:
MethodInfo es un objeto
que siempre está presente, y que es empleado para reflejar
información sobre un método de un objeto. Así, cuando
el método getInfoOnMethodNumber()
es invocado para
un objeto, se crea un objeto MethodInfo
que refleja toda la información relativa a él.
This object is always available, and it is used in order to reflect
all known information about a method. This way, when the method getInfoOnMethodNumber()
is invoked, a copy of MethodInfo is
created with the appropriate information, as shown below.
Hereda de:
Inherits from:
Sus atributos son los siguientes:
owner
access
name
parameters
ordinal
opcodeList
Sus métodos son los siguientes:
Processor es un objeto que
siempre está presente, y que proporciona una base común para
todos los objetos que se emplearán para procesar los elementos de
una estructura de datos (objeto descendiente de DataStructure).
It is always available, and gives a common base for all
objects which will be employed in order to process the elements a
data structure (any object derived from DataStructure).
Hereda de:
Inherits from:
Sus métodos son los siguientes:
Conditional
doIt(Objeto)
process()
de un objeto descendiente de DataStructure
.
Así, se le pasarán a este objeto, uno a uno, todos
los elementos de la estructura de datos. Si el método doIt()
devuelve False
, el
procesamiento se detiene. En otro caso, sólo se detiene
si se alcanza el último elemento de la estructura de
datos. process()
method of an
object deriving from DataStructure
.
This way, all the elements of the data structure will be
passed to this object, one by one. If the method doIt()
returns False
, then
the process is stopped. In other case, it is only stopped
when the last element is reached.. OutputProcessor es
un objeto que siempre está presente, y que proporciona una base
común para todos los objetos que se emplearán para
procesar los elementos de una estructura de datos (objeto
descendiente de DataStructure)
hacia una salida.
It is always available, and gives a common base for all objects
which will be employed in order to process the elements a data
structure (any object derived from DataStructure)
for output.
Hereda de:
Inherits from:
Sus atributos son los siguientes:
out
Conditional
doIt(Objeto)
process()
de un objeto descendiente de DataStructure
.
Así, se le pasarán a este objeto, uno a uno, todos
los elementos de la estructura de datos. Si el método doIt()
devuelve False
, el
procesamiento se detiene. En otro caso, sólo se detiene
si se alcanza el último elemento de la estructura de
datos. process()
method
of an object deriving from DataStructure
.
This way, all the elements of the data structure will be
passed to this object, one by one. If the method doIt()
returns False
,
then the process is stopped. In other case, it is only
stopped when the last element is reached.. Nothing setOutput(Output
obj)
DisplayByConsoleProcessor
es un objeto que siempre está presente, y que proporciona
un ejemplo de uso de los procesadores de estructuras de datos.
La funcionalidad que ofrece es bastante básica: permite
que, mediante el uso del método process()
,
todos los elementos de un objeto derivado de DataStructure
sean mostrados por pantalla, cada uno separado por una
línea en blanco, mediante la llamada a sus métodos toString()
.
This object is always available. It is a widely-used example
of a Processor
:
this Processor
displays by the console all objects inside a DataStructure
(by invoking their toString()
methods). Each one
of them is followed by a line feed..
Hereda de:
Inherits from:
Object
Processor
OutputProcessor
Sus métodos son los siguientes:
Conditional
doIt(Objeto)
process()
de un objeto
descendiente de DataStructure
.
Así, se le pasarán a este objeto, uno a uno,
todos los elementos de la estructura de datos. El
método doIt()
nunca devuelve False
, por lo que se
procesan todos los elementos de la estructura de datos. El
efecto es que la representación textual de los
objetos guardados en la estructura de datos es mostrada
por pantalla. process()
method
of an object deriving from DataStructure
.
This way, all the elements of the data structure will
displayed on the console, one by one. The method doIt()
will never return False
,
so it is only stopped when the last element is reached..
DataType es un
objeto que siempre está presente, y que proporciona una
base común para todos los "tipos" de datos. Todos sus
métodos provocan una excepción si se invocan.
It is always present. It presents a common base for all data
"types" All its methods throw an exception if invoked.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
Nothing assign(Object)
Conditional
isEqualTo(DataType)
Conditional
isGreaterThan(DataType)
Conditional
isLessThan(DataType)
String
toString()
Float es un
objeto que siempre está presente, y que proporciona la
funcionalidad de los números flotantes en Zero. Se
trata de una interfaz que define las operaciones
mínimas.
It is always available. It provides with the funcionality
for floating point numbers.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
Float zero()
Float
multiplyBy(Float)
Float divideBy(Float)
Float sum(Float)
Float substract(Float)
Float abs()
Float
parseString(String)
String
toString()
Int toInt()
Nothing
assign(Float)
Conditional
isEqualTo(Float)
Conditional
isLessThan(Float)
LiteralFloat
es un objeto que siempre está presente, y que
proporciona la funcionalidad de los números
flotantes en Zero. Se trata ya de un objeto que puede
almacenar valores.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
No existen métodos propios de
este objeto
Int es un
objeto que siempre está presente, y que proporciona
la funcionalidad de los números enteros en Zero.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
Int zero()
Int
multiplyBy(Int)
Int divideBy(Int)
Int sum(Int)
Int substract(Int)
Int abs()
Int
parseString(String)
Int toString()
Float
toFloat()
Nothing
assign(Int)
Conditional
isEqualTo(Float)
Conditional
isLessThan(Float)
LiteralInt
es un objeto que siempre está presente, y que
proporciona la funcionalidad de los números
enteros en Zero. Se trata ya de un objeto que puede
almacenar valores.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
No existen métodos propios de
este objeto
String
permite manejar cadenas de texto en Zero. Se trata
de una interfaz que define las tareas mínimas.
Hereda de:
Inherits from:
Sus métodos son:
String
left(Int)
String
getPosition(Int)
String
right(Int)
String
sub(Int begin, Int
numberOfCharacters)
Conditional
empty()
Int
length()
String
toString()
copy()
para crear una copia de la cadena. copy()
if you
would prefer a copy of the String.
LiteralString
permite manejar cadenas de texto en Zero. Un LiteralString
es ya una cadena real.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos propios
en este objeto.
DataStructure
es un objeto que siempre está presente, y que
proporciona la funcionalidad básica para
cualquier estructura de datos en Zero.
It is always present, providing the basic
funcionaliy for any data structure in Zero,
Hereda de:
Inherits from:
Sus métodos son los siguientes:
Int
size()
Int
process(Processor)
doIt()
a todos
los elementos de la estructura. Devuelve
el número de elementos procesados.
Véase Process
para
más detalles. doIt()
method. Returns the number of elementos
processed. Please refer to Process
for details. toString()
de cada uno de los elementos de la
estructura de datos. toString()
to each elements in the data structure.
Map
es un objeto que siempre está presente, y
que proporciona la funcionalidad de los vectores
asociativos en Zero. El índice de estos
vectores asociativos siempre es una
cadena.
It is always present. It provides the
funcionality of associative vectors.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
Map
add(String, Object)
Int
size()
Int
process(Processor)
Map
modify(String, Object)
delete()
, y otra a add()
.
delete()
,and
then add()
. Object
lookUp(String)
Map
delete(String)
String
toString()
MapInstance
permite manejar vectores asociativos en Zero. Un
MapInstance es
ya un vector asociativo real.
Hereda de:
Inherits from:
Métodos:
Este método no contiene
métodos propios.
Vector
es un objeto que siempre está presente, y
que proporciona la funcionalidad de los vectores
en Zero.
Hereda de:
Inherits from:
Sus métodos son los siguientes:
No existen métodos
propios de este objeto
Los métodos redefinidos son los siguientes:
Vector
add(Object)
Int
size()
Int
process(Processor)
Vector
get(Int)
Vector
put(Int, Object)
Vector
modify(Int, Object)
put()
. put()
.
Vector
delete(Int)
Vector
insert(Int, Object)
Vector
erase(Int)
Vector
clear()
Int
seqFind(Object, Int)
isEqualTo()
para
cada elemento, pasándole el objeto a
buscar como parámetro. Devuelve el
número de posición si encuentra el
objeto, o Nothing, si no lo encuentra. isEqualTo()
for each element, passing the object to be
found as argument. Returns an object
containing the Int
number wit the position or Nothing if not
found. Int
seqFindLast(Object,
Int)
isEqualTo()
para
cada elemento, pasándole el objeto a
buscar como parámetro. Devuelve el
número de posición si encuentra el
objeto, o Nothing, si no lo encuentra. isEqualTo()
for each element, passing the object to be
found as argument. Returns an object
containing the Int
number wit the position or Nothing if not
found. String
toString()
Conditional
isEqualTo(Vector)
isEqualTo()
para todos y cada uno de los elementos de un
vector, pasando como parámetro al
elemento en la misma posición en el
otro, devuelve True.
En otro caso, devuelve False.
isEqualTo()
for
each element in one Vector,
passing the element in the same position
in the other Vector,
results in all of them returning True.
Otherwise, returns False.
VectorInstance
permite manejar vectores en Zero. Un VectorInstance
es ya un vector real.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
propios en este objeto.
Conditional
permite manejar condiciones en Zero, sobre
todo debido a sus objetos derivados, True
y False.
Allows managing conditions in Zero, due to
its derived objects, True
and False.
Hereda de:
Inherits from:
Sus métodos son:
Este objeto no contiene
métodos propios.
True
permite manejar condiciones en Zero, en
concreto aquellas que son verdaderas.
Allows to manage conditions, specifically
those being true.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
propios de este objeto.
False
permite manejar condiciones en Zero,
concretamente en relación con aquellas
que son falsas.
Allows to manage conditions, specifically
those being false.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
propios de este objeto.
Exception:
cuando se lanza una excepción, el objeto
enviado es una copia de uno de los objetos que
derivan de éste.
When an exception is thrown, the object
sent is a copy of one the objects derived
from this one. Actually, any object can be
sent as an Exception,
but the use of these ones is encouraged.
Hereda de:
Inherits from:
Sus atributos son:
exceptionType
thrower
object
methodNumber
details
ESemantic:
Cuando se lanza una excepción que tiene
que ver con errores semánticos en la
ejecución de un método, el objeto
enviado es una copia de uno de los objetos que
derivan de éste.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
EMemory:
cuando se lanza una excepción, y
ésta tiene que ver con la gestión de
memoria, el objeto enviado es una copia de uno
de los objetos que derivan de éste.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
EUser:
cuando se lanza una excepción, y
ésta tiene que ver con errores definidos
por el usuario, el objeto enviado es una copia
de uno de los objetos que derivan de
éste. Así, el usuario puede definir
sus propios errores, simplemente derivando de
este objeto.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
EConditional:
Este objeto es enviado cuando ocurre
algún problema con una estructura de toma
de decisiones. Por ejemplo, cuando CND
se ejecuta, si ésta no encuentra True">True
o False">False en el
acumulador, entonces, se genera una
excepción de este tipo.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
EConditional:
Este objeto es enviado cuando ocurre
algún problema con una estructura de toma
de decisiones. Por ejemplo, cuando CND
se ejecuta, si ésta no encuentra True
o False en el
acumulador, entonces, se genera una
excepción de este tipo.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
ETypeMismatch:
Este objeto es enviado cuando ocurre
algún problema relacionado con que un no
deriva del objeto que se esperaba. Por
ejemplo, cuando MSG se ejecuta, si se le pasa
un objeto que deriva de Float, y requería
un objeto que deriva de String, entonces, se
genera una excepción de este tipo.
Hereda de:
Inherits from:
Sus métodos son:
EObjectNotFound:
Este objeto es enviado cuando ocurre
algún problema relacionado con encontrar
un objeto. Por ejemplo, cuando MSG se ejecuta,
si ésta no encuentra el objeto
señalado, entonces, se genera una
excepción de este tipo.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
EMethodNotFound:
Este objeto es enviado cuando ocurre
algún problema relacionado con encontrar
un método en un objeto. Por ejemplo,
cuando MSG se ejecuta, si ésta no
encuentra el método señalado en el
objeto, entonces, se genera una excepción
de este tipo.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
EInternalError:
Este objeto se genera cuando ocurre algún
error que no se encuandra en ninguna
categoría.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
Emath: Este objeto se
genera cuando ocurre algún error
relaciondo con el cálculo. Por ejemplo,
podría ocurrir cuando a un objeto Float se le manda el
mensaje "divideBy", con argumento 0.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
ENotEnoughMemory:
Este objeto se genera cuando ocurre algún
error relaciondo con la memoria. Por ejemplo,
podría ocurrir cuando se ejecuta el
método new de algún objeto y no hay
memoria suficiente para crear la ocpia del
objeto especificado.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
EAccessViolation:
Este objeto se genera cuando se intenta
acceder a alguna parte de la memoria con
privilegios inadecuados.
Hereda de:
Inherits from:
Sus métodos son:
No existen métodos
para este objeto.
Sus métodos son:
No existen métodos
para este objeto.
J. Baltasar García Perez-Schofield jbgarcia@uvigo.es |