Recapitulação — Fila de Tarefas
Parte da seção Programação Orientada a Objetos do Journey de R da Coddy. Lição 41 de 57.
Desafio
MédioConstrua uma fila de tarefas a partir de duas Classes de Referência. Ambas as definições são envolvidas por suppressMessages().
TaskemTask.R: os campostitle,priority(numérico) edone(lógico);initializetornadoneFALSEquando ele não é fornecido;label()retorna[x] fix (3)para uma tarefa concluída ou[ ] fix (3).TaskQueueemTaskQueue.R: o campotasks(umalist);add(title, priority)acrescenta uma novaTaske retornainvisible(.self);next_task()retorna o título da tarefa aberta com a maior prioridade (a adicionada primeiro em caso de empate) ounothing;complete(title)marca como concluída a primeira tarefa aberta com esse título e retornaTRUE, ouFALSE;report()retorna um rótulo por tarefa na ordem em que foram adicionadas e, em seguida,open: 2.
O código fornecido lê add fix 3, next e done fix, depois adiciona duas tarefas em uma única chamada encadeada e imprime o relatório.
Seu código deve ficar em Task.R e TaskQueue.R. main.R contém o código fornecido de entrada/saída e não pode ser editado.
Experimente você mesmo
source("Task.R")
source("TaskQueue.R")
# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
q <- TaskQueue$new()
for (line in input) {
p <- strsplit(line, " ")[[1]]
if (p[1] == "add") {
q$add(p[2], as.numeric(p[3]))
} else if (p[1] == "next") {
cat("next: ", q$next_task(), "\n", sep = "")
} else if (p[1] == "done") {
cat(if (q$complete(p[2])) "completed " else "no open task ", p[2], "\n", sep = "")
}
}
q$add("late", 1)$add("later", 1)
writeLines(q$report())
Todas as lições de Programação Orientada a Objetos
1Fundamentos do S3
Trabalhando com ArquivosListas com uma ClasseFunções ConstrutorasMétodos de Impressão e FormataçãoValidadores e AuxiliaresRevisão - Temperaturas4Encapsulamento em R
Closures como ObjetosAmbientes como ObjetosFunções de AcessoProtegendo o EstadoRecapitulação - Parquímetro2Genéricos e Métodos S3
Genéricos e UseMethodMétodos padrãoMétodos para genéricos baseFundamentos de NextMethodRevisão - Áreas de formas5Classes S4
Definindo classes S4Slots e acessoVerificações de validadeMétodos showRevisão - Catálogo de produtos8Classes de Referência
Definindo Classes de ReferênciaMétodos e Atualizações de CamposSemântica de CópiaHerança e callSuperRecapitulação — Fila de Tarefas11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de LivrosPratique por conta própria: Compilador de R online