首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OOP航空公司预订

OOP航空公司预订
EN

Stack Overflow用户
提问于 2015-02-08 07:44:45
回答 1查看 2K关注 0票数 0

我正在航空公司预订系统上创建一个OOP。飞机将有头等舱(2排,每排4席(座位为A、B、C、D))和经济舱(20排,每排6席(座位为A、B、D、E、F)。这一排由一条过道隔开。

用户将输入他的名字,类别规格,和座位偏好(窗口,过道,中心),它将找到第一个可用的座位,让用户进入。

例如。

名称:约翰·史密斯级:经济舱座位选择:中心

结果:

第三排B座名叫约翰·史密斯

我的问题是,怎样才能在适当的座位安排下,产生第一位和经济型的建筑工人?我能用一张排列表吗?或者是一个二维排列,每排都有座位和座位?或者完全是别的什么?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-02-08 08:38:43

从班级座位开始,属性位置:窗口,中间,过道和位置'A','B',.

代码语言:javascript
复制
public enum Location { WINDOW, CENTER, AISLE }
public class Seat {
    private Location loc;
    private char pos;  // A, B, C...
    public Seat( Location loc, char pos ){...}
    //...
}

创建类行,在商业和经济中创建子类:构造函数负责创建适当的席位。座位可以列在列表中,并添加编号作为行的属性。

代码语言:javascript
复制
public abstract class Row {
    private int number;
    private List<Seat> seats = new ArrayList<>();
    protected Row( int number ){ ... }
    public void addSeat( Seat seat ){...}
    public Seat findSeat( Location loc ){...}
}

public class Business extends Row {
    public Business( int number ){
        super( number );
        addSeat( Location.WINDOW, 'A' ); // continue as required
    }
}
public class Economy extends Row {
    public Economy( int number ){
        super( number );
        addSeat( Location.WINDOW, 'A' ); 
        addSeat( Location.CENTER, 'B' ); // continue as required
    }
}

创建使用Business填充其List<Row>的类平面,设置行号(确保省略第13行)。

代码语言:javascript
复制
public class Plane {
    private static final NUM_BUSINESS = 2;
    private static final NUM_ECONOMY = 20;
    private List<Row> rows = new ArrayList<>();
    public Plane(){
        int iRow = 1;
        for( int i = 0; i < NUM_BUSINESS; ++i ){
            rows.add( new Business( iRow++ ) );
        }
        // similar for Economy
    }
    public Seat findSeat( boolean business, Location loc ){
        // ...
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28391748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档