Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  • Enkle java-programmer: Metoden som kalles er ikke en vanlig instansmetode som trenger et objekt, men en metode med signaturen public static void main(String[] args). Denne instansierer det egentlige hovedprogramobjektet og kaller metoder som init() og run() (se eksempel nedenfor).
  • Applets (Java-app'er integrert i nettsider): Klassen er en Applet og metodene som kalles er init() (én gang ved lasting av siden), start() (ved oppstart) og stop() (ved avslutning).
  • Nettapplikasjoner: Klassen er av typen (arver fra) Servlet og metodene som kalles er init() (én gang ved initialisering), service(...) (kalles for hvert anrop, f.eks. get eller post) og destroy() (én gang ved avslutning). Standard-implementasjonen av service(...) kaller metoder som doGet(...) og doPost(...).
  • Eclipse-panel: Klassen er av typen IViewPart og metodene som kalles er init(...) (ved opprettelse), createPartControl(...) (lager panel-innholdet), setFocus() (når panelet er vist frem) og dispose() (når panelet lukkes).
  • Android-app'er:

Image Modified

Poenget er ikke at en Java-programmerer må lære seg alle varianter, det vesentlige er å forstå men at en hovedprogramklass som regel forstår at et hovedprogram inngår i et større system som oppretter en instans av klassen hovedprogramklassen og kaller forhåndsdefinerte metoder på bestemte tidspunkt i applikasjonens livssyklus, typisk oppstart, aktivering og avslutning.

...

Code Block
languagejava
public class CalculatorProgram {

	private Calculator calculator;

	void init() {
		calculator = new Calculator();
	}

	void run() {
		BufferedReader reader        Scanner scanner = new BufferedReaderScanner(new InputStreamReader(System.in));
		        while (scanner.hasNextLine(true)) {
			            String line = readerscanner.readLinenextLine();
			            if (line == null || line.trim().length() == 0) {
				break;
			                System.err.println(calc1);
                break;
            }
			double arg = 0.0, result = 0.0;
			char firstChar = line.charAt(0);
			if (Character.isDigit(firstChar)) {
				arg = Double.valueOf(line);
			else {
				arg = Double.valueOf(line.substring(1)));
			}
			if (Character.isDigit(firstChar)) {
				result = calculator.setValue(arg);
			} else if (firstChar == '+') {
				result = calculator.add(arg);
			} else if (firstChar == '-') {
				result = calculator.subtract(arg);
			} else if (firstChar == '*') {
				result = calculator.multiply(arg);
			} else if (firstChar == '/') {
				result = calculator.divide(arg);
			}
		}
		System.out.println(result);
	}

	public static void main(String[] args) {
		CalculatorProgram calculatorProgram = new CalculatorProgram();
		calculatorProgram.init();
		calculatorProgram.run();
	}
}
PlantUML Macro
class "CalculatorProgram" as hovedprogram {
   init()
   run()
}

class "Calculator" as kalkulator {
   -double value
   +double getValue()
   +void setValue(double)
   +double add(double)
   +double subtract(double)
   +double multiply(double)
   +double divide(double)
}

hovedprogram --> kalkulator: calculator

...

ObjekttilstandsdiagramSekvensdiagram

 

 

PlantUML Macro
object "CalculatorProgram" as calculatorprogram0
object "CalculatorProgram" as calculatorprogram1
calculatorprogram0 -.down-.> calculatorprogram1: init()
object "Calculator" as calculator1 {
   value = 0.0
}
calculatorprogram1 -right-> calculator1: calculator
object "CalculatorProgram" as calculatorprogram2
calculatorprogram1 -.down-.> calculatorprogram2: run()

object "Calculator" as calculator2 {
   value = 0.0
}
calculatorprogram2 -right-> calculator2: calculator

 

 

PlantUML Macro
control main
actor User

main -> CalculatorProgram : init()
main -> CalculatorProgram : run()

User -> CalculatorProgram : "1.0"
CalculatorProgram -> Calculator: setValue(1.0)
CalculatorProgram -> User: "1.0"

User -> CalculatorProgram: "+2.0"
CalculatorProgram -> Calculator: add(2.0)
CalculatorProgram -> User: "3.0"

User -> CalculatorProgram: "*3.0"
CalculatorProgram -> Calculator: multiply(3.0)
CalculatorProgram -> User: "9.0"

 

 

...