Perché un videogioco ha bisogno di main (String [] args) nella sua stessa classe? [chiuso]

0

Il mio insegnante mi ha appena detto che ogni volta che creo una classe per eseguire qualcosa per una società di videogiochi che utilizza Eclipse, dovrei fare una lezione di corsa con le uscite principale e qualsiasi. Dice che ogni aritmetica dovrebbe essere inserita nella sua stessa classe. Ecco l'esempio che ci ha dato.

//triangle

import java.util.Scanner;
import java.lang.Math.*;
import java.lang.String;
public class Lab03a {  //this class is used to test Triangle
    public static void main( String[] args ) {
        Scanner keyboard = new Scanner(System.in);

        //ask for user input
        System.out.print("Enter side A ::  ");
        int a = keyboard.nextInt();

        System.out.print("Enter side B ::  ");
        int b = keyboard.nextInt();

        System.out.print("Enter side C ::  ");
        int c = keyboard.nextInt();

        Triangle test = new Triangle(a, b, c);
        test.calcPerimeter();
        test.calcArea();
        test.toString();
        System.out.println("Area "+test.toString());

        //ask for user input
        System.out.print("Enter side A ::  ");
        a = keyboard.nextInt();

        System.out.print("Enter side B ::  ");
        b = keyboard.nextInt();

        System.out.print("Enter side C ::  ");
        c = keyboard.nextInt();

        test.setSides(a,b,c);
        test.calcPerimeter();
        test.calcArea();
        test.toString();
        System.out.printf("%.3f\n",(test.toString()));

        //add one more input section

}
}

L'altra classe:

import java.util.Scanner;
import java.lang.Math.*;

public class Triangle {
    private int sideA, sideB, sideC;
    private double perimeter;
    private double theArea;
    private double s;

    public Triangle() {
        setSides(0,0,0);
        perimeter=0;
        theArea=0;
        s=0;
    }

    public Triangle(int a, int b, int c) {
        sideA=a;
        sideB=b;
        sideC=c;
    }

    public void setSides(int a, int b, int c) {
        sideA=a;
        sideB=b;
        sideC=c;
    }

    public void calcPerimeter( ) {
        perimeter=sideA+sideB+sideC;
    }

    public void calcArea() {
         s=perimeter/2;
         theArea=(Math.sqrt(s*(s-sideA)*(s-sideB)*(s-sideC)));
    }

    public String toString() {
        String output = ""+theArea+"\n\n";
        return output;
    }
}

Questo è universalmente vero per le società di gioco? È vero per alcuni? O lo accetterebbe di più?

    
posta Bored915 26.10.2011 - 20:21
fonte

2 risposte

10

Questo è universalmente vero per qualsiasi programma Java.

Poiché una classe non è un programma che non può essere eseguito, pensa alla classe Main ed esegui il metodo come punto di ingresso al programma.

In risposta al tuo commento, leggi su SRP dai principi SOLID: link .

Ad esempio, la tua classe triangolo conterrà tutta la sua logica e nient'altro, dovrebbe essere veramente bravo in quel lavoro e non essere responsabile di nient'altro. Quindi avrai bisogno di una classe per l'entrata / esecuzione per l'applicazione, che è la classe principale.

Inoltre, i simply have the first class with all the methods then have the main at the end , quindi il tuo programma sarebbe un singolo oggetto, questo non è OO ed è un particolare "anti-pattern", vedi: link

Nell'apprendimento di OO, è qui che fai il salto dal pensare alla funzionalità a livello di metodo e inizia a pensare al livello dell'oggetto.

    
risposta data 26.10.2011 - 20:24
fonte
1

Questa è una forma manuale di test dell'unità . Oggigiorno la maggior parte delle persone nell'industria ritiene che se si sta per affrontare il problema di scrivere un codice extra, si può anche fare una sorta di test unitari automatizzati usando un framework di test unitario come JUnit.

    
risposta data 26.10.2011 - 20:45
fonte

Leggi altre domande sui tag