[英]Basic Object Oriented Programming
我目前正在学习Java,并被要求编写一个程序,将演员和电影作为课程处理。
actor类具有以下属性:
Name, Address, age, myFilm
(一个数组或者是一个阵容或者是一个阵容Name, Address, age, myFilm
特定演员所出演的所有电影。
电影类有以下属性:
Name, Code
(字符串,字符串)
我用getter和setter方法实现了这些类来处理数据:
到目前为止我的演员班:
public class actor {
private String name;
private String address;
private int age;
int[] myFilms = new int[3];
public actor (String name, String address, int age) {
}
public void setName (String name) {
this.name = name;
}
public void setAddress (String address) {
this.address = address;
}
public void setAge (int age) {
this.age = age;
}
public void setFilm () {
}
public String getName () {
return name;
}
public String getAddress () {
return address;
}
}
我的电影课:
public class film {
private String name;
private String code;
//Constructor
public film () {
}
public void setName (String name) {
this.name = name;
}
public String getName (){
return name;
}
public String getCode (String name) {
//Get code:
//Split Function
String[] words = name.split("\\s+");
String code = "";
for (int i=0; i < words.length; i++) {
code = code + words[i].charAt(0);
code = code.toUpperCase();
}
return code;
}
}
我正在打砖墙,如何使程序动态化,以显示每个演员的整部电影。 这是一个大学辅导,我也需要在某些时候做一个深刻的阵列副本。 我对OO几乎是全新的,所以这对我来说是一个棘手的任务。
任何建议或正确方向的观点都将受到极大的赞赏。
关于你班级的两条评论......
为什么不宣布像这样的演员的电影:
private List<Film> myFilms = new ArrayList<Film>();
这样,您就可以从actor对象中添加和删除电影对象引用。 例如,您可以为列表实现getter和setter,并从外部对其进行操作。 列表(或一般的集合)比原始数组更容易操作。
考虑用第一个大写字母来声明类,这是一个约定。 例如: Actor
, Film
。
考虑将“在电影中扮演的角色”提取到另一个班级,将电影与演员分离(演员也可以做眼镜,vioce dubbig等,而不是特定的电影。)
class ActorRole {
private Actor actor;
private Movie movie;
private int dollarsSallary;
private int scenesPlayed;
// etc.
}
如果你不想,我几乎可以肯定, 从电影到演员比从演员到电影更好地创造依赖 ,因为电影几乎肯定有actos:
class Movie {
private List<Actor> actors = new ArrayList<Actor>();
}
这使得统计演员统计数据变得更加困难(你必须遍历所有电影),但我认为这是一个更好的设计。
计算单个演员表演:
for ( Movie movie : listOfAllMovies ) {
if ( movie.getActors().contains( myActor ) ) { // read about equals() in Java !
timesPlayed++;
}
}
如果你想为更多演员制作排名,可以使用Map<Actor,Integer>
将演员映射到他们玩过的计时器。
这可能是一个漫长的操作,所以你可以考虑兑现结果(如上图所示) - 解决方案可以是map,ActorStatistics类,actor中的简单timesPlayed字段等。
不要害怕物体
不要做一个困难的解决方法来将电影转换成id(就像你的id
,它可以与你的电影代码String
相连,添加另一个类型不兼容的问题。尝试使用更多的对象引用而不是变通方法,而不是使用List
而不是数组。
通常,请阅读Java中的集合 ,如ArrayList
和HashMap
,并重写equals()
和hashCode()
,以及一般OOP 单一责任原则和类内聚
您可以在class actor
组合自动增量容器,如vector ArrayList
等。 或者您可以自己实现动态数组。
如果你有一个包含用户名和电影(ID)等的表的数据库,你可以创建一个类如下,
Class Film{
private String actorName;
private String filmCode;
private String filmName;
....getter & setter methods
...
}
那么你可以创建一个方法来获取Film类的数据列表。 例如:
List<Film> filmList = new ArrayList<Film>();
String actorName = "Arnold";
filmList = dbCon.getFilmListByActor(actorName);
你的getFilmListByActor方法应该是这样的,
public List<Film> getFilmListByActor(String actorName){
List<Film> filmList = new ArrayList<Film>();
//Query for get film list by actor
//assigne filmList to result set
enter code here
return filmList;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.