From 72c6356540e9e22e2ae6bbc13c4a412c746bc1c1 Mon Sep 17 00:00:00 2001 From: Torstein Stromme <torstein.stromme@uib.no> Date: Fri, 27 Jan 2023 13:59:38 +0100 Subject: [PATCH] =?UTF-8?q?installere=20ls,=20cd,=20pwd=20i=20konstrukt?= =?UTF-8?q?=C3=B8ren,=20ikke=20i=20Main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++-- src/main/java/no/uib/inf101/terminal/SimpleShell.java | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d7fd0c..20279de 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,9 @@ if (command != null) { ### `pwd`, `cd`, og `ls`: kommandoer som trenger kontekst -Vi skal opprette egne klasser for hver av metodene `pwd`, `cd` og `ls`. Dette er kommandoer som har behov for å vite konteksten shellet kjører i. Vi gjør dette ved at SimpleShell gir disse kommandoene en kontekst når de blir installert. +Vi skal opprette egne klasser for hver av metodene `pwd`, `cd` og `ls`. Dette er SimpleShell sine tre kjerne-kommandoer som alltid må være tilgengelig, og som allerede var implementert; men vi ønsker å benytte oss av samme struktur som de andre kommandoene (jo færre ting som håndteres på en spesiell måte, jo bedre). + +Det som skiller disse kommandoene fra echo og exit, er at de har behov for å vite *konteksten* shellet kjører i. Vi løser dette ved at SimpleShell skal gi kommandoene som ønsker det tilgang til Context-objektet når de blir installert. - [ ] I `Command`: legg til en metode-signatur for å sette kontekst. ```java @@ -225,7 +227,7 @@ command.setContext(this.context); Vi er nå klare til å opprette klassene `CmdLs`, `CmdPwd` og `CmdCd` som alle implementerer *Command* -grensesnittet. - [ ] La disse klassene ha en instansvariabel for kontekst, og la dem overskrive `setContext` -metoden slik at denne instansvariabelen bli initiert med en verdi når metoden kalles. - [ ] Kopier funksjonaliteten fra de tilsvarende metodene i SimpleShell inn i run-metodene i de nye klassene. -- [ ] Fjern metodene fra SimpleShell (inkludert sekvensen med else-if i executeCommand), og installer dem i stedet i `Main::main` på samme måte som vi gjorde for echo -kommandoen +- [ ] Fjern metodene fra SimpleShell (inkludert sekvensen med else-if i executeCommand), og installer i stedet kommandoene i *konstruktøren til SimpleShell*. Dette gjøres på samme måte som vi gjorde for echo -kommandoen i Main, men objektet vi kaller installCommand på heter *this* i stedet for *shell*: for eksempel `this.installCommand(new CmdLs())`. - [ ] Sjekk at testene fremdeles passerer og at de fremdeles virker i terminal-gui'en diff --git a/src/main/java/no/uib/inf101/terminal/SimpleShell.java b/src/main/java/no/uib/inf101/terminal/SimpleShell.java index 5da7e08..a235f58 100644 --- a/src/main/java/no/uib/inf101/terminal/SimpleShell.java +++ b/src/main/java/no/uib/inf101/terminal/SimpleShell.java @@ -27,6 +27,10 @@ public class SimpleShell { /// (methods expected to be used by someone outside this class) ////// ////////////////////////////////////////////////////////////////////// + public SimpleShell() { + // TODO: Install core commands SimpleShell supports (pwd, ls, cd) + } + // TODO: rename method to fit new interface, annotate with @Override // Note: methods with @Override generally do not need javadoc comments, // since the javadoc comment is inherited. You should hence remove the -- GitLab