Como o nome mesmo diz, temos uma coleção ordenada de dados. Pode ser usado como um pequeno arquivo. Depois de alterações, o projeto tem que ser re-salvo, o que pode não ser simples para determinados usuários.
Pode também ser usado para receber dados de um arquivo lido do "disco" (repositório) Flash do micro OLPC. Vamos ver como fazer isso, em breve.
Para criar um objeto Ordered Collection precisamos escrever o usual "new". Qualquer coisa como:
|oC|
oC := OrderedCollection new.
Como na lição anterior temos alguns mini-exercícios para mostrar os métodos:
add: 'x'
Para adicionar o string x depois do último elemento da coleção.
addFirst: 'x'
Para adicionar o string x como primeiro elemento da coleção.
size
Retorna a qunatidade de elementos.
asString
Converte um elemento da coleção para ser um objeto String.
at:n
Retorna o string da posição n.
Exemplo
| oC | oC:= OrderedCollection new. oC add: 'Mary'. oC addFirst: 'John'. oC add: 'Carl'. 1 to: oC size do: [ :i | i+1. Transcript show: ((oC at: i),'\')withCRs . ]
IMPORTANTE: Veja como fizemos um loop lendo todos os elementos da coleção. Nós vimos essa "fórmula" numa lição anterior:
1 to: last do: [
:i | i+1.
"fazer alguma coisa"
]
Nós usamos também dois métodos da Classe String (um elemento da OrderedCollection é um objeto String) para concatenar uma '\" e fazer o carriage return.
Resultado
John Mary Carl
Substitui o elemento da posição n pelo string 'x'.
Exemplo
| oC | oC:= OrderedCollection new. oC add: 'John'. oC add: 'Mary'. oC add: 'Carl'. oC at: 2 put: 'Peter'. 1 to: oC size do: [ :i | i+1. Transcript show: ((oC at: i),'\')withCRs . ]
Resultado
John Peter Carl
Exemplo
| oC | oC:= OrderedCollection new. oC add: 'John'. oC add: 'Mary'. oC add: 'Carl'. oC add:'Peter' afterIndex: 1 . oC add:'Hans' after: 'Mary' . oC add:'Primo' before: 'John' . 1 to: oC size do: [ :i | i+1. Transcript show: ((oC at: i),'\')withCRs . ].
Resultado
Primo John Peter Mary Hans Carl
Adiciona a nova Ordered Collection oC depois dessa Ordered Collection.
addAllFirst: oC
Adiciona a nova Ordered Collection oC antes dessa Ordered Collection.
Exemplo
| oC1 oC2 | oC1 := OrderedCollection new. oC1 add: 'John'. oC1 add: 'Mary'. oC1 add: 'Carl'. oC2 := OrderedCollection new. oC2 add: 'Hans'. oC2 add: 'Peter'. oC2 add: 'Andre'. oC1 addAllFirst: oC2. 1 to: oC1 size do: [ :i | i+1. Transcript show: ((oC1 at: i),'\')withCRs . ].
Resultado
Hans Peter Andre John Mary Carl
Retorna a Ordered Collection desde a posição i1 até i2.
Exemplo
| oC1 oC2 | oC1 := OrderedCollection new. oC1 add: 'John'. oC1 add: 'Mary'. oC1 add: 'Carl'. oC2:= oC1 copyFrom: 1 to: 2. 1 to: oC2 size do: [ :i | i+1. Transcript show: ((oC2 at: i),'\')withCRs . ].
Resultado
John Mary
Retorna a Ordered Collection tendo os elementos em ordem reversa.
Exemplo
| oC1 oC2 | oC1 := OrderedCollection new. oC1 add: 'John'. oC1 add: 'Mary'. oC1 add: 'Carl'. oC2:= oC1 reversed. 1 to: oC2 size do: [ :i | i+1. Transcript show: ((oC2 at: i),'\')withCRs . ].
Resultado
Carl Mary John
Remove o elemento na posição.
Exemplo
| oC | oC:= OrderedCollection new. oC add: 'John'. oC add: 'Mary'. oC add: 'Carl'. oC removeAt: 2. 1 to: oC size do: [ :i | i+1. Transcript show: ((oC at: i),'\')withCRs . ].
Resultado
John Carl
LIÇÃO ANTERIOR PRÓXIMA LIÇÃO