Date today
Unario: Un objeto + Un mensaje
Date today
Unario: Un objeto + Un mensaje
3+4
Binario un objeto + mensaje + argumento
2 negated raisedTo: 3 + 2
Tipos de mensajes combinados:
raisedTo:
true | false receiver: true selector: | arguments: false result: true
true
|
(ó lógica o conjunción)false
true
2 * 10 + 2.
Al ejecutar este mensaje en Pharo, se abre un mensaje incrustado mediante un triangulito (ver imagen adjunta), ¿pero que significa este mensaje en la construcción del código? ¿lo debo escribir? o ¿este se construye automáticamente a medida que escribo el mensaje?
Método
En la POO el "método" es importante, ya que, es con esté elemento con el cual se construye el mensaje y se le ordena cómo debe traer la información o lo que debe traer. Según los vídeos analizados de @Anjana-Vakil, se presentan algunos ejemplos de métodos en la POO, tales como: "Send" "do" "es amigo de" entre otros, los cuales podemos ver aquí una representación gráfica de como iría dentro del mensaje https://imgur.com/8VqmLIF
sessions := 1 to: 11
El tipo de mensaje es keyword porque son aquellos mensajes que consisten en uno o más nombres de argumentos precedidos por dos puntos (:). Su composición parte de:
Un receptor (objeto), el mensaje (método a utilizar) y el argumento que son los valores que se pasan al método para que pueda realizar la tarea. En los mensajes keyword, los argumentos están precedidos por dos puntos (:) y separados por comas (,).
Para este caso:
* El objeto es: sessions
.
* El mensaje es: to
* y el argumento pasado por el método to
es el 11
, Esto indica que la secuencia de números enteros debe ir desde 1 hasta 11 inclusive.
27 * 23
Para este ejercicio el tipo de mensaje es binario porque se compone de tres partes: receptor (objeto), selector (mensaje) y argumento.
En concusión, devuelve como resultado.
memories do: [:doc | | fileName | fileName := (doc url asString splitOn: $:) last , '.md'. doc file: folder / fileName. doc exportAsFile. ]
Es un mensaje tipo keyword
memories
do
do
es el bloque proporcionado entre corchetes [:doc | .... ]
aquí el iterador es el do
, el cual se utiliza para recorrer cada elemento de la colección o objeto memories
y ejecutar el bloque proporcionado para cada uno de ellos. Resultado devuelto al ejecutar todo el bloque:
folder := FileLocator documents / 'USemanticas\leidy-palma\Wiki\es\sesiones'.
Este es un tipo de mensaje binario en donde
Objeto:
FileLocator
, que es una clase en Pharo utilizada para ubicar archivos en el sistema de archivos.Mensaje:
Argumento:
'USemanticas\leidy-palma\Wiki\es\sesiones',
que representa la ruta relativa de un directorio en el sistema de archivos.Este ejercicio devuelve como resultado:
memories doWithIndex: [:item :index | item metadata at: 'title' put: 'Unidades semanticas, sesión ', index asString ].
Este mensaje es tipo Keyword y dentro de este el
memories
el cual invoca el método. doWithIndex
: Este es un mensaje de Pharo que se utiliza para iterar sobre una colección y proporciona tanto el elemento actual como su índice en cada iteración.doWithIndex
el cual es un bloque de código que define la acción que se realizará en cada elemento de la colección. En este caso, el bloque es [:item :index | ........ ]
, es decir, todo lo que encierran los corchetes y recibe dos parámetros: item
, que representa cada elemento de la colección, y index
, que representa el índice del elemento en la colección.Dentro del bloque:
* El objeto item
es el elemento actual de la colección memories
.
* El mensaje enviado es metadata
, que es un mensaje enviado al objeto item. Este mensaje obtiene los metadatos asociados con el elemento actual.
* El argumento del mensaje at:put:
es una clave, en este caso 'title'
, y el nuevo valor 'Unidades semanticas, sesión ',
que se asigna a la clave 'title'
en los metadatos del elemento actual.
Al ejecutar todo el código se devuelve el siguiente resultado:
memories := sessions collect: [:session | doc := HedgeDoc new url: commonAddress, session asString; retrieveContents. ]
Este ejemplo en Pharo se refiere a la manipulación de colecciones y al uso de bloques en combinación con mensajes Keyword.
Ahora bien, a continuación se explica las dos partes del ejercicio: En mensaje en keyword es:
1. Objeto es: sessions
2. Mensaje es: collect
<br />
3. Argumento: [:session |
Dentro del bloque el código funciona así:
1. Objeto: para este se crea un nuevo objeto de tipo HedgeDoc
utilizando el mensaje new. Este objeto se asigna a la variable doc
.
2. Ahora el mensajes new envían varios mensajes al objeto doc
: tales como:
* url
: Configura la URL del objeto doc
. Toma como argumento la concatenación de commonAddress
(una dirección común) y la representación de cadena de session
.
* Ahora utiliza retrieveContents
: el cual es un mensaje que permite recuperar el contenido de la URL configurada en el objeto doc
.
En general, el código utiliza el iterador collect
: el cual controla la iteración sobre la colección sessions y aplica el bloque definido [:session |
a cada elemento de la colección.
Al ejecutar todo este código se obtiene el siguiente resultado:
sessions := 1 to: 11
El tipo de mensaje es keyword porque son aquellos mensajes que consisten en uno o más nombres de argumentos precedidos por dos puntos (:). Su composición parte de:
Un receptor (objeto), el mensaje (método a utilizar) y el argumento que son los valores que se pasan al método para que pueda realizar la tarea. En los mensajes keyword, los argumentos están precedidos por dos puntos (:) y separados por comas (,).
Para este caso:
* El objeto es sessions
.
* El mensaje es to
* y el argumento pasado por el método to
es el 11
, Esto indica que la secuencia de números enteros debe ir desde 1 hasta 11 inclusive.
commonAddress := 'https://docutopia.sustrato.red/semanticas:24A'
Para este caso es un tipo de mensaje unario en donde
El objeto es 'https://docutopia.sustrato.red/semanticas:24A', siendo esta un literal de cadena (string).
Seguidamente, el mensaje es la variable commonAddress que al ejecutar esta acción devuelve como resultado
commonAddress := 'https://docutopia.sustrato.red/semanticas:24
Para este caso es un tipo de mensaje unario en donde
'Anita lava la tina' reversed
El mensaje en este contexto es "reversed", y el objeto al que se le envía ese mensaje es la cadena de texto "Anita lava la tina". El resultado de enviar este mensaje al objeto sería la cadena de texto invertida, es decir, "anit al av al atinA".
En conclusión, el tipo de mensaje es unario porque consiste en un sólo término, es decir, no esta acompañado por ningún otro valor al enviar el mensaje.
commonAddress := 'https://docutopia.sustrato.red/semanticas:24A'
Mensaje Unario:
Por lo que al ejecutar el mensaje, arrojará este resultado:
sessions := 1 to: 11
El tipo de mensaje es keyword porque son aquellos mensajes que consisten en uno o más nombres de argumentos precedidos por dos puntos (:). Su composición parte de:
Un receptor (objeto), el mensaje (método a utilizar) y el argumento que son los valores que se pasan al método para que pueda realizar la tarea. En los mensajes keyword, los argumentos están precedidos por dos puntos (:) y separados por comas (,).
Para este caso:
* El objeto es sessions
.
* El mensaje es to
* y el argumento pasado por el método to
es el 11
, Esto indica que la secuencia de números enteros debe ir desde 1 hasta 11 inclusive.
commonAddress := 'https://docutopia.sustrato.red/semanticas:24A'
Para este caso es un tipo de mensaje unario en donde
'Anita lava la tina' reversed
El mensaje en este contexto es "reversed", y el objeto al que se le envía ese mensaje es la cadena de texto "Anita lava la tina". El resultado de enviar este mensaje al objeto sería la cadena de texto invertida, es decir, "anit al av al atinA".
En conclusión, el tipo de mensaje es unario porque consiste en un sólo término, es decir, no esta acompañado por ningún otro valor al enviar el mensaje.
27 * 23
Para este ejercicio el tipo de mensaje es binario porque se compone de tres partes: receptor (objeto), selector (mensaje) y argumento.
1. Objeto: es el receptor del mensaje. En este caso, el objeto es el número 27.
2. Mensaje: es la acción que se le está enviando al objeto. Para este ejemplo, el mensaje es la operación de multiplicación representada por el selector ( * ), que indica que se debe multiplicar el objeto con el argumento.
3. Argumento: es el valor que se pasa al mensaje o con el que se realizar la operación. Para este caso, el argumento es el número 23.
En concusión, devuelve como resultado
collect
mensaje collect: para aplicar un bloque a cada elemento del array.
Date today
Date today se utiliza para obtener la fecha actual del sistema. Esto devuelve un objeto de tipo Date que representa la fecha actual
Character space
Al conjunto de todos los caracteres, es decir Character, le estamos enviando el mensajes space, lo cual nos entrega un conjunto dentro de ese conjunto. En este caso, estamos enviando el mensaje a un conjunto, lo cual se reconoce porque su primera letra es mayúscula. Si fuera minúscula, se la estaria enviando a un elemento de un conjunto. A los conjuntos se les conoce como clases, a los elementos se les conoce como instancias.
A veces puede pasar que le enviemos un mensaje a una clase o una instancia y que el resultado caiga en otra instancia.
1 to: 10
wikiFolder / 'es' / 'ClasesAccesibilidad'
Mensaje Binario
* receptor: wikiFolder/'es'
* operador: /
* argumento: 'ClasesAccesibilidad'
repositoryFolder / 'wiki'
Mensaje Binario
* receptor: repositoryFolder
* operador: /
* argumento: wiki
(daysIndexes collect: [:letter | (Shortener enlarge: commonAddress, letter asString) ])
Mensaje keyword
* receptor: daysIndexes
* mensaje: collect:
* argumento: [:letter |
(Shortener enlarge: commonAddress, letter asString)]
HedgeDoc new url: address;
Mensaje keyword
* receptor: hedgeDoc
* mensaje: url:
* argumento: address;
dataWeekDailyNoteAddresses collectWithIndex: [:address :i | | hedgeDoc | hedgeDoc := HedgeDoc new url: address; retrieveContents. hedgeDoc metadata at: 'title' put: ('acceso23 : sesión ', i asString). hedgeDoc ]
Mensaje keyword
* receptor: dataWeekDailyNoteAddresses
* mensaje: CollectWithIndex:
* argumento: [:address :i | | hedgeDoc |
hedgeDoc := HedgeDoc new
url: address;
retrieveContents.
hedgeDoc metadata
at: 'title' put: ('acceso23 : sesión ', i asString).
hedgeDoc]
wikiSubfolder ensureCreateDirectory
Mensaje Unario
* receptor: wikiSubfolder
* mensaje: ensureCreateDirectory
hedgeDoc exportAsFile
Mensaje Unario
* receptor: hedgeDoc
* mensaje: exportAsFile
wikiSubfolder / ('23-', i asString, '.md').
Mensaje Binario
* receptor: WikiSubfolder
* operador: /
* argumento: ('23-', i asString, '.md').
hedgeDoc := HedgeDoc new url: address; retrieveContents.
Mensaje Unario
* receptor: hedgeDoc new
* mensaje: retrieveContents.
hedgeDoc metadata at: 'title' put: ('Sesión del 17 de marzo').
Mensaje unario:
hedgeDoc
metadada
Mensaje Keword:
hedgeDoc metadata
at: put:
'title'
'Sesión del 17 de marzo'
hedgeDoc := HedgeDoc new url: 'https://docutopia.sustrato.red/accesibilidad:23K?both# '; retrieveContents.
Mensaje unario:
hegeDoc
retrieveContents
Mensaje Keyword:
hegeDoc
url:
https://docutopia.sustrato.red/accesibilidad:23K?both#
repositoryFolder := FileLocator documents / 'Acceso\kathy29-wikilexias\'. wikiFolder := repositoryFolder / 'wiki'. wikiSubfolder := wikiFolder / 'es' / 'RecuperacionClasesAccesibilidad'. wikiSubfolder ensureCreateDirectory
Mensajes keyword:
Mensajes Binarios:
wikiFolder := repositoryFolder / 'wiki',
Mensajes keyword:
wikiSubfolder := wikiFolder / 'es' / 'RecuperacionClasesAccesibilidad',
hedgeDoc file: wikiSubfolder / ('Accesibilidad-K','.md'). hedgeDoc exportAsFile. hedgeDoc asMarkdeep exportAsFile. wikiSubfolder
Mensajes Binarios:
Mensaje Keyword:
hedgeDocs doWithIndex: [:hedgeDoc :i | hedgeDoc file: wikiSubfolder / ('semanti', i asString, '.md').
wikiSubfolder := wikiFolder / 'wiki' / 'es'.
receptor: wikiFolder operador: ¨/¨ argumento: 'wiki' / 'es'
wikiFolder := repositoryFolder / 'felipe-wikifelipe'.
repositoryFolder := FileLocator D / 'semanticas2'.
Character alphabet copyFrom: 1 to: 23
Shortener enlarge: commonAddress, letter asString
Shorterner
enlarge:
commonAddress, letter asString
commonAddress, letter asString
commonAddress
,
letter asString
letter asString
letter
asString
wikiSubfolder
Mensaje unario
hedgeDocs doWithIndex: [:hedgeDoc :i | hedgeDoc file: wikiSubfolder / ('acceso23-', i asString, '.md'). hedgeDoc exportAsFile. hedgeDoc asMarkdeep exportAsFile. ].
Mensaje en cascada
Receptor: hedgeDocs doWithIndex:
Argumento: [:hedgeDoc :i | hedgeDoc file: wikiSubfolder / ('acceso23-', i asString, '.md'). hedgeDoc exportAsFile. hedgeDoc asMarkdeep exportAsFile. ].
Mensaje: exportAsFile.
wikiSubfolder ensureCreateDirectory
Mensaje unario
Receptor: wikiSubfolder
Mensaje: ensureCreateDirectory
wikiSubfolder := wikiFolder / 'es' / 'Acceso2023'.
Mensaje keyword
Receptor: wikiSubfolder :=
Mensaje: wikiFolder
Argumento: 'es' / 'Acceso2023'.
wikiFolder := repositoryFolder / 'wiki'.
Mensaje keyword
Receptor: wikiFolder :=
Mensaje: repositoryFolder
Argumento: 'wiki'.
repositoryFolder := FileLocator documents / 'RepositorioKath/home/'.
Mensaje keyword
Receptor: repositoryFolder :=
Mensaje: FileLocator documents
Argumento: 'RepositorioKath/home/'.
dataWeekDailyNoteAddresses := (daysIndexes collect: [:letter | (Shortener enlarge: commonAddress, letter asString) ]) select: [:each | each beginsWith: 'https' ]
Mensaje en cascada y keyword.
Receptor: dataWeekDailyNoteAddresses :=
Mensaje: (daysIndexes collect: y (Shortener enlarge: commonAddress, letter asString)
Argumento: [:each | each beginsWith: 'https' ]
hedgeDocs := dataWeekDailyNoteAddresses collectWithIndex: [:address :i | | hedgeDoc | hedgeDoc := HedgeDoc new url: address; retrieveContents. hedgeDoc metadata at: 'title' put: ('Acceso 23: día ', i asString). hedgeDoc ]
Mensaje en cascada y keyword.
Receptor: hedgeDocs :=
Argumento: at: 'title' put: ('Acceso 23: día ', i asString).
Mensaje: collectWithIndex: y retrieveContents.
daysIndexes := (Character alphabet copyFrom: 1 to: 12) asUppercase asOrderedCollection. commonAddress := 'https://is.gd/acceso23'.
Mensaje keyword
Receptor: daysIndexes :=
Argumento: (Character alphabet copyFrom: 1 to: 12)y commonAddress := 'https://is.gd/acceso23'.
Mensaje: asUppercase asOrderedCollection.
Mensaje binario
Receptor: commonAddress :=
Argumento: 'https://is.gd/acceso23'.
wikiSubfolder ensureCreateDirectory
Receptor: wikiSubfolder Mensaje: EnsureCreateDirectory