Java UML 图到 类

Java UML Diagrams to Classes

UML Diagram

我是 Java 的新手,虽然我参加过其他编程课程。我真的很难理解 UML 图中的 class 概念。我有一个 parent class 和两个 child class。我的任务是创建这个 class 结构。不过,我正在为 class 的概念和一般关系而苦苦挣扎。

示例:如果我的 parent class 是 "Animal" 而我的 child class 是 "Monkey" 和 "Bear" - 如果将要实施的唯一选择是 "Monkey" 和 "Bear",这会使 class "Animal" 成为抽象的 class 区别,因为永远不会只有 "Animal",它将始终是 "Monkey" 或 "Bear"。

那么,如果 Animal 是抽象的,我将如何创建三个文件(Animal.java、Monkey.java、Bear.java)?我知道 Animal 的属性和特征是由 Monkey 和 Bear 继承的。例如,假设我有动物的名称和年龄作为属性以及每个动物的 getter 和 setter - 如果 "Animal" class 的名称和年龄是私有的(下面的代码),[=39 如何=]class接名字和年龄是否在自己javafile/class?我的代码如下...

Animal.java

public class Animal {
    private String animalName;
    private int animalAge;

    public void setName (String name) {
        animalName = name;
    }

    public void setAge (int age) {
        animalAge = age;
    }

    public static String getName() {
        return animalName;
    }

    public static String getAge() {
        return animalAge;
    }
}

Bear.java

public class Bear {
    public int weight;

public static int weight() {
     return weight;
    }
}
// This is where I get stuck & don't know where to go from here. 

我知道我正在创建一个 object "Bear",它是 class "Animal" 的一部分,但由于 Bear 是它自己的 class, "Bear" 如何从 Animal 获取赋值?我可以为 "Animal" 和 "Bear" 分配默认值,但我的大脑无法理解它们是如何相互交谈的。

这可能不在本论坛的范围内,但我的教授没有回应,我已经通读了书籍、电子书、课程 material 和几场讲座,这对我来说并不重要,我我现在已经落后两周试图理解这个概念,所以我可以继续使用程序中的实际代码。

提前致谢。

您忘记这样做了:

public class Bear extends Animal {
    // ...
}

我建议您添加构造函数:

public class Animal {
    private String name;
    private int age; 

    public Animal(String name, int age) {
       this.name = name;
       this.age = age;
    }

    public String getName() [ return this.name; }
    public int getAge() { return this.age; }
}

public class Bear extends Animal {
    private int weight;

    public Bear(String name, int age, int weight) {
        super(name, age);
        this.weight = weight;
    }

    public int getWeight() { return this.weight; }
}

你可以这样做,因为 Bear IS-A Animal:

Animal b = new Bear("Smokey", 10, 300);
System.out.println(b.getName()); // prints "Smokey"