অ্যামাজন সাক্ষাত্কার প্রশ্ন: একটি ওও পার্কিংয়ের নকশা করুন [বন্ধ]


114

একটি ওও পার্কিংয়ের নকশা করুন। এটি কি ক্লাস এবং ফাংশন থাকবে। এটি বলা উচিত, পূর্ণ, খালি এবং ভ্যালেট পার্কিংয়ের জন্য স্পট সন্ধান করতে সক্ষম। লটে 3 টি বিভিন্ন ধরণের পার্কিং রয়েছে: নিয়মিত, প্রতিবন্ধী এবং কমপ্যাক্ট।

ধন্যবাদ!


39
আপনি কি লাফিয়ে উঠে "এই বইয়ের সাথে কী করার আছে?" বলে দোষ দিয়েছিলেন? এবং ঝড় আউট?
জেপি আলিওটো

আমি জিজ্ঞাসা করেছি যে একটি লোক যিনি অন্য পরিস্থিতিতে গিয়েছিলেন by আমি যখন প্রায় পাঠ্যপুস্তক গ্যাং অফ ফোর প্যাটার্নটি যথাযথভাবে ব্যবহার করি তখন তিনি বলেছিলেন "কমপক্ষে আপনি বহুকর্ম জানেন" " তারপরে আমাকে আসার জন্য ধন্যবাদ জানানো হয়েছিল, এবং তারা আমাকে জানিয়েছিল told আমি মুগ্ধ হইনি।
ডেভিড থর্নলি

এই মেমরি পরিচালনার সমস্যা না?
সঞ্জীব কুমার ডাঙ্গী

1
যখন এই প্রশ্নটি জিজ্ঞাসা করা হয়েছিল, তখন আপনাকে আসলে কোলাবডিটে ক্লাস এবং ফাংশনগুলি লিখতে হয়েছিল বা আপনার কেবল তাদের সম্পর্কে কথা বলতে হবে?
প্রতিশ্রুতিবদ্ধ

এটির দিকে একবার তাকাও। github.com/shanshaji/parking-lot , আশা করি এটি সাহায্য করবে
শান

উত্তর:


159

গিয়ারগুলি ঘুরিয়ে দেওয়ার জন্য এখানে একটি দ্রুত শুরু ...

পার্কিংলট একটি শ্রেণি।

পার্কিংস্পেস একটি ক্লাস।

পার্কিংস্পেসের একটি প্রবেশিকা রয়েছে।

প্রবেশের একটি অবস্থান বা আরও নির্দিষ্টভাবে রয়েছে, প্রবেশ থেকে দূরত্ব।

পার্কিংলটসাইন একটি ক্লাস।

পার্কিংলোটে একটি পার্কিংলটসাইন রয়েছে।

পার্কিংলটে একটি সীমাবদ্ধ পার্কিংস্পেস রয়েছে।

হ্যান্ডিক্যাপড পার্কিংস্পেস পার্কিংস্পেসের একটি সাবক্লাস।

নিয়মিত পার্কিংস্পেস পার্কিংস্পেসের একটি সাবক্লাস।

কমপ্যাক্ট পার্কিংস্পেস পার্কিংস্পেসের একটি সাবক্লাস।

পার্কিংলট পার্কিংস্পেসের অ্যারে রাখে এবং এর প্রবেশদ্বার থেকে দূরত্বের জন্য খালি পার্কিংস্পেসের একটি পৃথক অ্যারে রাখে।

পার্কিংলটসাইনকে "পূর্ণ", বা "খালি" বা "ফাঁকা / স্বাভাবিক / আংশিকভাবে দখল" প্রদর্শন করে বলা যেতে পারে .ফুল (), কর্মশক্তি () বা সাধারণ ()

পার্কার একটি শ্রেণি।

পার্কার পার্ক করতে পারেন ()।

পার্কার আনপার্ক করতে পারে ()।

ভ্যালেট পার্কারের একটি সাবক্লাস যা পার্কিংলট.ফাইন্ডভ্যাক্যান্টস্পেসনেসরেটসেন্টেন্স () কে কল করতে পারে, যা একটি পার্কিংস্পেস দেয়।

পার্কারের একটি পার্কিংস্পেস রয়েছে।

পার্কার পার্কিংস্পেস.টেক () এবং পার্কিংস্পেস.ভ্যাকেট () কল করতে পারেন।

পার্কার প্রবেশদ্বারকে প্রবেশ করে nএনটারিং () এবং প্রবেশ (এক্সটার্নিং) (এবং) প্রবেশ করে S যদি এটি নতুনভাবে পূর্ণ হয় বা সদ্য খালি বা নতুনটি পূর্ণ বা খালি নয়, তবে এটি পার্কিংলটসাইন.ফুল () বা পার্কিংলটসাইন.এম্পটি () বা পার্কিংলটসাইন.নরমাল () পরিবর্তন করা উচিত।

প্রতিবন্ধী পার্কার পার্কার এবং কমপ্যাক্টপারকারের একটি সাবক্লাস হতে পারে পার্কারের একটি সাবক্লাস এবং রেগুলারপার্কার পার্কারের একটি সাবক্লাস। (আসলে ওভারকিল হতে পারে))

এই সমাধানে, পার্কারের নাম পরিবর্তন করে গাড়ি রাখা সম্ভব।


32
দয়া করে গাড়িটি ভুলে যাবেন না।
ojblass

5
পার্কিংস্পেসকে কেন ক্লাস করতে হবে? আমি এটির জন্য কোনও বস্তু তৈরি করার কোনও প্রয়োজন দেখছি না? সর্বদা, যে কোনও পার্কিংয়ের জায়গা হ'ল হয় প্রতিবন্ধী, নিয়মিত বা কমপ্যাক্ট। পার্কিংস্পেস পরিবর্তে একটি ইন্টারফেস হওয়া উচিত।
নাম_মাস্ক

11
সম্ভবত আমরা পার্কিং
ব্যারি

13
কেন পার্কিংলটসাইন ক্লাস বিদ্যমান? কোনও বৈশিষ্ট্য (বলুন, বুল ইজ ফুল;) কাজ করবে না?
চিন্মায় নেরুরকার

3
পার্কিং স্পটকে কেন এক্সটেনসিবল করবেন? পার্কিং স্পটের কাছে কেন কেবল একটি হ্যান্ডিক্যাপেড ক্ষেত্র এবং একটি কমপ্যাক্ট ফিল্ড নেই?
প্রতিশ্রুতিবদ্ধ

67
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,
}

6
দক্ষতার জন্য কী হিসাবে যানবাহনের নম্বর সহ তালিকার পরিবর্তে হ্যাশম্যাপ ব্যবহার করুন
সনথ_পি

5
আপনি ভেহিকল রিলিজ করার পরে vacantParkingSpacesআর সাজানো হয় না। আপনাকে এটি বাছাই করতে হবে যাতে findNearestVacantনিকটতম পার্কিংয়ের জায়গাটি ফিরে আসে।
লাইক

1
কেন ফাংশনটির নামকরণ করা হয় findNearestVacant, যখন এর বাস্তবায়ন কেবল একটি খালি স্থান খুঁজে পায়, প্রয়োজনীয়ভাবে "নিকটতম" না? কেন "ফাইন্ডভ্যাক্যান্ট" নয়? যদিও ক্লাসে সঞ্চিত কিছু রাজ্য ব্যবহার করে "নিকটতম" স্থানটি ফিরে দেওয়া ভাল হত। হতে পারে, আমরা "স্পেস" শ্রেণিতে "প্রবেশদ্বার" এবং "প্রস্থান" থেকে দূরত্বগুলি সংরক্ষণ করতে পারি যাতে "নিকটতম" পাশাপাশি গণনা করা যায় বা আমরা কেবল স্থানের স্থানাঙ্কগুলি রাখতে পারি, যাতে সমস্ত প্রবেশদ্বার থেকে দূরত্ব এবং প্রয়োজন অনুসারে প্রস্থান গণনা করা যেতে পারে।
নওয়াজ

1
এছাড়াও, ফাংশনটি parkVehicleএমন একটি বুলিয়ান মান প্রদান করবে যা নির্দেশ করে যে গাড়িটি পার্ক করা হয়েছিল কিনা।
নওয়াজ

নাল চেক নেই।
এনপিই

10

বিচ্ছিন্নতায় মডেলগুলির অস্তিত্ব নেই। গাড়ি পার্কে প্রবেশ করে গাড়িগুলির সিমুলেশন, আপনি একটি এম্বেডেড সিস্টেম যা আপনাকে একটি মুক্ত স্থান, গাড়ি পার্কিং বিলিং সিস্টেম বা গাড়ি পার্কগুলিতে স্বয়ংক্রিয়ভাবে গেট / টিকিট মেশিনগুলির জন্য গাইড করে সেগুলির জন্য আপনি যে স্ট্রাকচারগুলি সংজ্ঞায়িত করেছেন সেগুলি আলাদা।


6

একটি অবজেক্ট ওরিয়েন্টেড পার্কিং লটে, পরিচারকদের প্রয়োজন হবে না কারণ গাড়িগুলি "কীভাবে পার্ক করতে" জানবে will

প্রচুর পরিমাণে ব্যবহারযোগ্য গাড়ি খুঁজে পাওয়া কঠিন হবে; সর্বাধিক প্রচলিত মডেলগুলির হয় তাদের সমস্ত চলমান অংশগুলি পাবলিক সদস্য ভেরিয়েবল হিসাবে প্রকাশিত হবে বা তারা উইন্ডোজ বা দরজাবিহীন "সম্পূর্ণরূপে এনপ্যাপুলেটেড" গাড়ি হবে।

আমাদের ওও পার্কিংয়ের পার্কিংয়ের জায়গাগুলি গাড়ির আকার এবং আকৃতির সাথে মেলে না (স্পেস এবং গাড়ির মধ্যে একটি "প্রতিবন্ধকতা মেলে না")

আমাদের প্রচুর লাইসেন্স ট্যাগগুলিতে প্রতিটি বর্ণ এবং অঙ্কের মধ্যে একটি বিন্দু থাকবে। প্রতিবন্ধী পার্কিং কেবল "_" দিয়ে শুরু লাইসেন্সের জন্য উপলব্ধ থাকবে এবং "এম_" দিয়ে শুরু হওয়া লাইসেন্সগুলি তোলা হবে।


5

আপনার একটি পার্কিংয়ের দরকার হবে, এটিতে একটি "স্পেস" টাইপের একটি বহুমাত্রিক অ্যারে (কনস্ট্রাক্টরে নির্দিষ্ট) থাকবে। পার্কিং লটটি ফাংশনগুলিতে কলগুলি দিয়ে কতগুলি স্থান নেওয়া হয় তা ট্র্যাক করে রাখতে পারে যা খালি স্থানগুলি পূরণ করে এবং খালি স্থান S স্পেসটি একটি গণিত টাইপ করতে পারে যা এটি বলে যে এটি কোন ধরণের স্থান। স্পেসেও একটি পদ্ধতি নেওয়া হয়েছে ()। ভ্যালেট পার্কিংয়ের জন্য, প্রথম স্থানটি খোলা আছে এবং গাড়িটি সেখানে রাখুন। স্পেসে রাখার জন্য আপনার একটি গাড়ী অবজেক্টেরও দরকার পড়বে, এতে এটি প্রতিবন্ধী, কমপ্যাক্ট বা নিয়মিত যানবাহন কিনা তা ধারণ করে holds


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;
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.