初学者到OOP和Java:我的方法是正确的吗?

时间:2015-02-28 10:27:50

标签: java oop arraylist

Java和OOP的新手,并尝试找出ArrayList和ArrayList中的Objects。以下程序有效,但我忍不住感觉到我没有以正确的方式做事(或思考事情)。对我来说,我做事情的方式似乎很笨拙,如果我要说再添加100只狗,我怎么能得到数据而不必多行安装?在我继续前进之前,我热衷于正确地开始并养成良好的习惯。

import java.util.*;
public class Dogprint2 {
    public static void main(String[] args) {

        Dog doggy = new Dog();
        doggy.setbreed("Alsation");
        doggy.setsize(5);

        ArrayList<Dog> dog2 = new ArrayList<Dog>();

        dog2.add(doggy);

        for (Dog d : dog2) {
            System.out.println(d.getsize());
            System.out.println(d.getbreed());
            if (d.getsize() == 5) {
                d.bark();
            }
        }       
    }
}
class Dog {
    private int size;
    private String breed;

    public void setbreed(String breed) {
        this.breed = breed;
    }
    public void setsize(int size) {
        this.size = size;
    }
    public int getsize() {
        return size;
    }
    public String getbreed() {
        return breed;
    }
    public void bark() {
        System.out.println("Bark!");
    }
}

3 个答案:

答案 0 :(得分:4)

我认为您可以包含一个用于初始化类的构造函数。您可以使用方法集将来修改对象值。构造函数如下:public SameNameLikeClass(type parameter1,...,type paramenter n){variables}。初始化将像新的Dog(breedValue,sizeValue)。

答案 1 :(得分:1)

您应该首先将其拆分为两个单独的.java文件,例如Dogprint2.java和Dog.java

Dogprint2.java

import java.util.*;
public class Dogprint2 {
    public static void main(String[] args) {

        Dog doggy = new Dog();
        doggy.setbreed("Alsation");
        doggy.setsize(5);

        ArrayList<Dog> dog2 = new ArrayList<Dog>();

        dog2.add(doggy);

        for (Dog d : dog2) {
            System.out.println(d.getsize());
            System.out.println(d.getbreed());
            if (d.getsize() == 5) {
                d.bark();
            }
        }       
    }
}

和Dog.java

class Dog {
    private int size;
    private String breed;

    public Dog(){
    }

    public Dog(String breed, int size){
        this.breed = breed;
        this.size = size;
    }

    public void setbreed(String breed) {
        this.breed = breed;
    }
    public void setsize(int size) {
        this.size = size;
    }
    public int getsize() {
        return size;
    }
    public String getbreed() {
        return breed;
    }
    public void bark() {
        System.out.println("Bark!");
    }
}

正如您所看到的,我在Dog类中添加了两个名为constructors的方法。 第一个,公共狗()&#39;创造了一只没有大小或品种的新狗。

另一方面,第二个是公共狗(String品种,int size)&#39;将与给定的参数创建一个新的狗。 构造函数是您希望在类中创建的,以便创建给定对象/类的新实例。

使用此功能,您将能够避免使用所有设置器,因为您在创建它时会知道狗的品种和大小。如果您想创建说100只狗并且它们都具有相同的品种和大小,那么您可以将它放在主方法的for循环中。如果他们没有相同的品种和大小,您可以从文件或标准输入中读取它们。在主方法中创建100只不同的狗最终将成为100行代码。

答案 2 :(得分:0)

只需在for循环中执行:

for (int i =0; i<100; i++) {
    Dog doggy = new Dog();
    doggy.setbreed("Alsation");//name you define in an array/list and can keep on repeating like array[i%array.length]
    doggy.setsize(5);//numbers can be random?
    dog2.add(doggy);
}