Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 亚马逊采访问题:设计一个面向对象的停车场_Oop - Fatal编程技术网

Oop 亚马逊采访问题:设计一个面向对象的停车场

Oop 亚马逊采访问题:设计一个面向对象的停车场,oop,Oop,设计一个面向对象的停车场。它将具有哪些类和函数。它应该说是满的,空的,还可以找到代客泊车的地方。停车场有三种不同类型的停车场:普通停车场、残疾人停车场和小型停车场 谢谢 这里有一个快速开始,让齿轮转动 停车场是一个班级 停车场是一个班级 停车场有一个入口 入口有一个位置,或者更具体地说,距离入口的距离 ParkingLotSign是一个类 停车场有停车标志 停车场有有限的停车空间 ParkingSpace是ParkingSpace的一个子类 RegularParkingSpace是Parking

设计一个面向对象的停车场。它将具有哪些类和函数。它应该说是满的,空的,还可以找到代客泊车的地方。停车场有三种不同类型的停车场:普通停车场、残疾人停车场和小型停车场


谢谢

这里有一个快速开始,让齿轮转动

停车场是一个班级

停车场是一个班级

停车场有一个入口

入口有一个位置,或者更具体地说,距离入口的距离

ParkingLotSign是一个类

停车场有停车标志

停车场有有限的停车空间

ParkingSpace是ParkingSpace的一个子类

RegularParkingSpace是ParkingSpace的一个子类

CompactParkingSpace是ParkingSpace的一个子类

停车场保留了一排停车空间,以及一排单独的空置停车空间,按距离入口的顺序排列

通过调用.full()、.empty()或.normal()可以告诉ParkingLotSign显示“满”、“空”或“空白/正常/部分占用”

帕克是一个班

帕克可以停车

帕克可以说:()

Valet是Parker的一个子类,可以调用ParkingLot.FindVacantSpaceNearestEntrance(),它返回ParkingSpace

帕克有一个停车场

Parker可以调用ParkingSpace.Take()和ParkingSpace.vacue()

Parker调用entry.Entering()和entry.exit(),ParkingSpace会在停车场被占用或腾空时通知停车场,以便停车场可以确定停车场是否已满。如果新满或新空或新不满或新不空,则应更改ParkingLotSign.full()或ParkingLotSign.empty()或ParkingLotSign.Normal()

Parker可以是Parker的子类,CompactParker可以是Parker的子类,RegularParker可以是Parker的子类。(实际上,这可能有点过头了。)


在这个解决方案中,帕克可能被重命名为汽车。

在面向对象的停车场中,将不需要服务员,因为汽车将“知道如何停车”

在停车场上找到一辆可用的汽车将是困难的;最常见的车型要么将其所有运动部件作为公共成员变量公开,要么将其“完全封装”为没有门窗的汽车

我们OO停车场的停车位与汽车的大小和形状不匹配(停车位和汽车之间的“阻抗不匹配”)


我们地块上的许可证标签将在每个字母和数字之间有一个点。残疾人停车场仅适用于以“u”开头的许可证,以“m_u”开头的许可证将被拖走。

您需要一个停车场,该停车场容纳一个“空间”类型的多维数组(在构造器中指定)。停车场可以通过调用填充和清空空间的函数来跟踪占用了多少空间。空间可以容纳一个枚举类型,告诉它是什么类型的空间。空格还有一个take()方法。对于代客泊车,只需找到第一个空位,然后把车停在那里。您还需要在空间中放置一个汽车对象,以容纳残疾人、小型车或普通车


class ParkingLot
{
    Space[][] spaces;

    ParkingLot(wide, long); // constructor

    FindOpenSpace(TypeOfCar); // find first open space where type matches
}

enum TypeOfSpace = {compact, handicapped, regular };
enum TypeOfCar = {compact, handicapped, regular };

class Space
{
    TypeOfSpace type;
    bool empty;
    // gets and sets here
    // make sure car type
}

class car
{
    TypeOfCar type;
}

模型不是孤立存在的。您为模拟进入停车场的汽车、引导您进入空闲空间的嵌入式系统、停车计费系统或停车场常用的自动门/售票机定义的结构都是不同的

公共级停车场
public class ParkingLot 
{
    Vector<ParkingSpace> vacantParkingSpaces = null;
    Vector<ParkingSpace> fullParkingSpaces = null;

    int parkingSpaceCount = 0;

    boolean isFull;
    boolean isEmpty;

    ParkingSpace findNearestVacant(ParkingType type)
    {
        Iterator<ParkingSpace> itr = vacantParkingSpaces.iterator();

        while(itr.hasNext())
        {
            ParkingSpace parkingSpace = itr.next();

            if(parkingSpace.parkingType == type)
            {
                return parkingSpace;
            }
        }
        return null;
    }

    void parkVehicle(ParkingType type, Vehicle vehicle)
    {
        if(!isFull())
        {
            ParkingSpace parkingSpace = findNearestVacant(type);

            if(parkingSpace != null)
            {
                parkingSpace.vehicle = vehicle;
                parkingSpace.isVacant = false;

                vacantParkingSpaces.remove(parkingSpace);
                fullParkingSpaces.add(parkingSpace);

                if(fullParkingSpaces.size() == parkingSpaceCount)
                    isFull = true;

                isEmpty = false;
            }
        }
    }

    void releaseVehicle(Vehicle vehicle)
    {
        if(!isEmpty())
        {
            Iterator<ParkingSpace> itr = fullParkingSpaces.iterator();

            while(itr.hasNext())
            {
                ParkingSpace parkingSpace = itr.next();

                if(parkingSpace.vehicle.equals(vehicle))
                {
                    fullParkingSpaces.remove(parkingSpace);
                    vacantParkingSpaces.add(parkingSpace);

                    parkingSpace.isVacant = true;
                    parkingSpace.vehicle = null;

                    if(vacantParkingSpaces.size() == parkingSpaceCount)
                        isEmpty = true;

                    isFull = false;
                }
            }
        }
    }

    boolean isFull()
    {
        return isFull;
    }

    boolean isEmpty()
    {
        return isEmpty;
    }
}

public class ParkingSpace 
{
    boolean isVacant;
    Vehicle vehicle;
    ParkingType parkingType;
    int distance;
}

public class Vehicle 
{
    int num;
}

public enum ParkingType
{
    REGULAR,
    HANDICAPPED,
    COMPACT,
    MAX_PARKING_TYPE,
}
{ 向量vacantparkingspace=null; 向量fullparkingspace=null; int parkingSpaceCount=0; 布尔是满的; 布尔等空; ParkingSpace FindNearestSpank(ParkingType类型) { 迭代器itr=vacantparkingspace.Iterator(); while(itr.hasNext()) { ParkingSpace ParkingSpace=itr.next(); if(parkingSpace.parkingType==类型) { 返回停车空间; } } 返回null; } 无效驻车(驻车类型,车辆) { 如果(!isFull()) { ParkingSpace ParkingSpace=FindNearestSpank(类型); 如果(驻车空间!=null) { parkingSpace.vehicle=车辆; parkingSpace.ispensible=false; 真空停车空间。移除(停车空间); fullparkingspace.add(parkingSpace); if(fullParkingSpaces.size()==ParkingSpacesCount) isFull=true; isEmpty=false; } } } 无效释放车辆(车辆) { 如果(!isEmpty()) { 迭代器itr=fullparkingspace.Iterator(); while(itr.hasNext()) { ParkingSpace ParkingSpace=itr.next(); if(驻车空间车辆等于(车辆)) { 完全驻车空间。删除(驻车空间); vacantparkingspace.add(parkingSpace); parkingSpace.ispensible=true; parkingSpace.vehicle=null; if(vacantParkingSpaces.size()==parkingSpaceCount) isEmpty=true; isFull=false; } } } } 布尔isFull() { 返回已满; } 布尔isEmpty() { 返回是空的; } } 公共停车场 { 布尔值是空的; 车辆; ParkingType ParkingType; 整数距离; } 公车 { int-num; } 公共枚举ParkingType { 有规律的 残疾人,, 契约 最大停车位类型, }
请不要忘记汽车。为什么停车场必须是一个班级?我认为没有必要为它创建对象?任何时候,任何停车位都必须是残疾人、普通或紧凑型停车位。停车空间应该是一个界面,而不是