你好今天,我想体验良好OOP设计的概念,并尝试为一家电影商店编写一个应用程序,让客户可以从电影商店购买电影。我有三节课。代表电影商店的类,以及针对客户和电影的类。
现在我的问题是:让客户无需从电影商店购买电影就可以自己创建电影实例吗?我应该相信编写客户类的程序员吗?这个问题与封装有关吗?
答案 0 :(得分:3)
封装意味着将Data成员声明为私有成员,并通过setter和getter之类的公共方法访问它们。例如,在您的方案中,您想要一个类型为Movie的私有变量。您可以通过public get方法访问Movie,在该方法中您可以在访问Movie对象之前获得某种授权。 setter方法也是如此。这称为封装。例如,请参见基本实现:
class MovieStore{
private Movie currentPlaying;
public Movie getCurrentPlayingMovie(){ //Get method
if(authorizationMethod()){
return currentPlaying;
}
//Authorization failed
notifyAuthorizationFailed();
return null;
}
public void setCurrentPlayingMovie(Movie m){ //Set method
//Same like above
}
}
如果您已将Movie对象声明为公共对象,则任何人都可以直接访问movie对象,并且您没有任何授权。在开发软件时,似乎数据成员不需要任何保护。但是将来可能需要这样做,因此最好始终执行Encapsulation(通过将其声明为私有并向该成员添加setter和getters)来实现,以便您可以在需要时编辑方法。