Assignment4的总结

本次作业中,需要创建多个 Agency 来申请航空公司的航班。在创建的TravelAgency这个类当中,由于每个Agency可以选择自己需要的航空公司的航班,所以我们需要给TravelAgency中添加 AirlinerDir,AirlinerDir是用来保存Airliner对象的ArrayList。并且需要注意,在每一次new一个 TravelAgency 以后,都需要创建一个这个Agency对应的AirlinerDir。所以使用再Constructor里新建的方式来避免NullPointerException. 代码如下。


public class TravelAgency {

    private String agencyName;

    private AirlinerDir airlinerDir;

    public TravelAgency() {

        this.airlinerDir = new AirlinerDir();

    }


最刚开始犯了一个错误,如下:


   private TravelAgencyDir travelAgencyDir;

    private AirlinerDir airlinerDir;

    private FlightDir flightDir;


    public MainJFrame() {

        initComponents();

        travelAgencyDir = new TravelAgencyDir();

        airlinerDir = new AirlinerDir();

        flightDir = new FlightDir();

    }


在主界面JFrame中,最初我希望把所有的Directory:TravelAgencyDir、AirlinerDir、FlightDir都作为属性放入到JFrame中,然后在constructor中把它们都实体化。但是,当我在反复调试程序中发现,本程序需要多个相同的Directory,例如很多个AirlinerDir(因为有很多个TravelAgency),固然之前的设定是错误的。于是我只把第一个主界面到它的直接第二页面的Directory:TravelAgencyDir创建出来用来保存最重要的Agency,其他的Dir都在之后的页面再创建。

在添加AirLiner的时候,我选择的是对表格中的Agency选中,进入到这个代理商的页面进行添加,这样做的目的是可以让代理商和航空公司对应上:

TravelAgency ta = (TravelAgency)tblDirectory.getValueAt(selectedRow, 0);

 AirlinerCreateJPanel acPanel = new AirlinerCreateJPanel(userProcessContainer, ta);

把被选中的Agency ta从TA DIR中拿出来,并传入到航空公司创建页面,这样就可以完成两个Dir的连接。当我进入到航空公司创建页面的时候,我只需要在Create BUTTON下用如下的代码:

Airliner airliner = travelAgency.getAirlinerDir().addAirliner();

airliner.setAirlinerName(txtAirlinerName.getText());

JOptionPane.showMessageDialog(null, "Created Successfully!");

加粗的代码是使用TA中嵌套的AirlinerDir的属性,来完成一个实体化,最终实现信息保存进去。

你可能感兴趣的:(Assignment4的总结)