【发布时间】:2018-11-26 08:04:17
【问题描述】:
这是我教授的 oo 编程作业。但是我发现婚姻状况可以是Person类中的一个变量,如何通过两个类来实现呢?
假设人们可以有婚姻状况:单身、已婚、寡妇、离婚。创建处理人们婚姻状况的状态 OODP(即 Java、JavaScript、C++、Python 或 Ruby)。您将至少有两个类:Person 和 Marital State。确保遵循以下规则:单身->已婚已婚->离婚|寡妇离婚-> 已婚寡妇-> 已婚创建一个客户端类来测试您的程序。确保您测试有效和无效的婚姻状况变化。
The assignment page
这些是我的代码:
public class AssignmentOOP {
public static void main(String[] args) {
Person p1 = new Person("p1");
Person p2 = new Person("p2");
Person p3 = new Person("p3");
p1.PrintMaritalStatus();
p2.PrintMaritalStatus();
p3.PrintMaritalStatus();
p1.GetMarried(p2);
p1.GetMarried(p3);
p2.Died();
p1.GetMarried(p3);
}
}
class Person {
String maritalstatus;
boolean mateIsAlive;
Person mate;
String name;
Person(String name1) {
maritalstatus = "single";
mate = null;
name = name1;
}
void GetMarried(Person mate) {
if(this.maritalstatus.equals("married")|| mate.maritalstatus.equals("married"))
{
System.out.println("Marital status error! At least one of you are married");
return;
} else {
this.maritalstatus = "married";
this.mate = mate;
mate.maritalstatus = "married";
mate.mate = this;
System.out.println("Congratulations!!! " + this.name + " and " + mate.name + " are married!");
}
}
void GetDivorced(Person mate) {
if(this.maritalstatus.equals("married") && this.mate == mate) {
maritalstatus = "divorced";
System.out.println(this.name+" and "+mate.name+" are getting divorced.");
}else if(this.maritalstatus.equals("single")) {
System.out.println("You are not married and you cannot get divorced before getting married");
}else if(maritalstatus.equals("widow")) {
System.out.println("Your marital status is widow, you cannot get divorced.");
}
}
void Died() {
this.maritalstatus = "dead";
this.mate.maritalstatus = "widow";
System.out.println("Sorry for your loss, " + this.mate.name + " marital status is widow.");
}
void PrintMaritalStatus() {
System.out.println(this.name + " marital status is " + this.maritalstatus);
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow!请拨打tour 并访问我们的help center,了解适合本网站的问题类型。如果您可以edit您的问题符合本网站的要求,请这样做。
-
不相关:阅读 java 命名规则。方法名称应该围绕动词构建,并且它们使用 camelCase()。在 java 中只有类名以大写字母开头。
-
你的教授有没有说你只需要使用 2 个类,或者你可以使用更多的类吗?
标签: java oop design-patterns object-oriented-analysis