编程基本:基本的面向对象编程(object oriented programming java course)

关于编程基本的问题,在object oriented programming java course中经常遇到, 我目前正在学习 Java,并被要求编写一个程序,处理演员和电影作为类。

我目前正在学习 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,所以这对我来说是一个棘手的任务。

任何意见或在正确的方向点的话将不胜感激。

3

关于您的课程的两个评论...

为什么不宣布这样的演员的电影:

private List<Film>myFilms = new ArrayList<Film>();

这样,您将能够从您的 actor 对象中以 dinamically 方式添加和删除 film 对象引用。例如,您可以为列表实现 getter 和 setter,并从外部操作它。列表 (或一般的集合) 比原始数组更容易操作。

考虑用第一个大写字母声明类,这是一个惯例。例如:ActorFilm

2

考虑将“在电影中扮演的演员”提取到另一个类别,以使电影与演员脱钩(演员也可以表演眼镜,配音等,而不是特殊电影。)

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 中的集合,如ArrayListHashMap,并覆盖equals()hashCode(),以及通常的 OOPSingle responsibility principleClass cohesion

1

您可以在class actor中编写一个自动增量容器,如vector ArrayList等。或者您可以自己实现一个动态数组。

0

如果你有一个数据库,其中有一个表的用户名和电影(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; 
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(991)
网页游戏盒子源码:解决点和盒子游戏是否可行 (dots boxes)
上一篇
J mbbs:j+ = j++在Java中做什么
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(86条)