类/对象/方法组织混淆

时间:2014-03-14 19:43:52

标签: java class object methods arraylist

我是从Java开始的,所以组织我的代码背后的思想是如此的凝聚力并不是真的自然而然。从本质上讲,我有一个ArrayList,它有一个填充它的方法,另一个调整它,然后是一个测试程序,看看它是否工作。我的问题在于组织它。根据我的经验,方法无法真正看出彼此之间有什么关系,所以我把它组织起来就像这样:

Class
    ArrayList (named al)

    Tester Method

    Shuffle Method

    ArrayList Population Method

因此我的麻烦;我如何在测试器方法中使ArrayList经历在方法中为其定义的操作。我曾经使用过构造函数和对象,但它们似乎并不适用,至少是我到目前为止所做的。我认为它会像

al.Shuffle();

但它在整个地方都犯了错误。有没有人有任何见解?

编辑:根据要求,这是代码

package deckofcards;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Deck{
    ArrayList<String> al = new ArrayList<String>();
    //test method
    public void main(String[] args){
         Scanner input = new Scanner(System.in);
         al.Deck();
         //didn't get any further, that threw a "cannot find symbol" error
         }
    }
    private void Shuffle(){
         Collections.shuffle(al);
    }
    private void Deck(){
         al.add(0, "Ace of Spades");
         //and this goes on for a deck of cards
    }
 }

2 个答案:

答案 0 :(得分:1)

定义另一个扩展ArrayList

的类
public class MyArrayList extends ArrayList<Object> {

    public MyArrayList(){
        super();
    }

    public MyArrayList shuffle(MyArrayList mal){
        Collections.shuffle(mal);
        return mal;
    }

}

然后将所有内容定义为MyArrayList。这基本上与ArrayList完全相同,具有您想要的额外功能。


public class Deck {
    static MyArrayList al = new MyArrayList();
        //test method
        public static void main(String[] args){
             Scanner input = new Scanner(System.in);
             Deck();
             al = al.shuffle(al);
             //didn't get any further, that threw a "cannot find symbol" error

             for(Object i : al)
                 System.out.println(i);
        }
        private static void Deck(){
             al.add(0, "Ace of Spades");
             al.add(1, "1");
             al.add(2, "2");
             al.add(3, "3");
             //and this goes on for a deck of cards
        }
}

答案 1 :(得分:1)

在您的组件中,类是保存组件其余部分的主要组件,然后方法是类可以执行的任务或操作。

ArrayList是一种数据结构,用于保存具有特定结构的数据。班级可以使用它。

所以你的组织可能是这样的:

class MyClass {

    private ArrayList<String> list = new ArrayList<String>();

    public static void main(String[] args) {//Tester Method is the main method, because the execution began from here
    }


    private void populate() {
        //
    }        

    private void shuffle() {
        //
    }
}