我目前正在学习 Java,并被要求编写一个程序,处理演员和电影作为类。
演员类具有以下属性:Name, Address, age, myFilm
(一个数组或数组列表,用于保存特定演员主演的所有电影。
电影类具有以下属性:Name, Code
(String,String)
我已经使用 getter 和 setter 方法实现了这些类来处理数据:
到目前为止,我的 actor 类:
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 对象中以 dinamically 方式添加和删除 film 对象引用。例如,您可以为列表实现 getter 和 setter,并从外部操作它。列表 (或一般的集合) 比原始数组更容易操作。
考虑用第一个大写字母声明类,这是一个惯例。例如:Actor
,Film
。
考虑将“在电影中扮演的演员”提取到另一个类别,以使电影与演员脱钩(演员也可以表演眼镜,配音等,而不是特殊电影。)
class ActorRole {
private Actor actor;
private Movie movie;
private int dollarsSallary;
private int scenesPlayed;
// etc.
}
如果你不想,我几乎可以肯定从电影到演员比从演员到电影更好地创建依赖关系,因为电影几乎肯定有动作:
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>
将演员映射到他们播放的时间计数器。
这可能是一个漫长的操作,所以你可以考虑兑现结果(如在上面的地图)-解决方案可以是地图,ActorStatistics 类,简单的 timesPlayed 字段在演员等。
不要害怕物体
不要做一个困难的解决方法来将电影映射到 id(比如你的id
,它可能与你的电影代码String
有关,它添加了另一个类型不兼容性问题。尝试使用更多的对象引用而不是变通方法,以及List
而不是数组。
通常,阅读 Java 中的集合,如ArrayList
和HashMap
,并覆盖equals()
和hashCode()
,以及通常的 OOPSingle responsibility principle和Class cohesion
您可以在class actor
中编写一个自动增量容器,如vector ArrayList
等。或者您可以自己实现一个动态数组。
如果你有一个数据库,其中有一个表的用户名和电影(ID)& amp;等,你可以创建一个类如下,
Class Film{
private String actorName;
private String filmCode;
private String filmName;
....getter & setter methods
...
}
那么 u 可以创建一个方法来获取 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;
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(86条)