একটি ওও পার্কিংয়ের নকশা করুন। এটি কি ক্লাস এবং ফাংশন থাকবে। এটি বলা উচিত, পূর্ণ, খালি এবং ভ্যালেট পার্কিংয়ের জন্য স্পট সন্ধান করতে সক্ষম। লটে 3 টি বিভিন্ন ধরণের পার্কিং রয়েছে: নিয়মিত, প্রতিবন্ধী এবং কমপ্যাক্ট।
ধন্যবাদ!
একটি ওও পার্কিংয়ের নকশা করুন। এটি কি ক্লাস এবং ফাংশন থাকবে। এটি বলা উচিত, পূর্ণ, খালি এবং ভ্যালেট পার্কিংয়ের জন্য স্পট সন্ধান করতে সক্ষম। লটে 3 টি বিভিন্ন ধরণের পার্কিং রয়েছে: নিয়মিত, প্রতিবন্ধী এবং কমপ্যাক্ট।
ধন্যবাদ!
উত্তর:
গিয়ারগুলি ঘুরিয়ে দেওয়ার জন্য এখানে একটি দ্রুত শুরু ...
পার্কিংলট একটি শ্রেণি।
পার্কিংস্পেস একটি ক্লাস।
পার্কিংস্পেসের একটি প্রবেশিকা রয়েছে।
প্রবেশের একটি অবস্থান বা আরও নির্দিষ্টভাবে রয়েছে, প্রবেশ থেকে দূরত্ব।
পার্কিংলটসাইন একটি ক্লাস।
পার্কিংলোটে একটি পার্কিংলটসাইন রয়েছে।
পার্কিংলটে একটি সীমাবদ্ধ পার্কিংস্পেস রয়েছে।
হ্যান্ডিক্যাপড পার্কিংস্পেস পার্কিংস্পেসের একটি সাবক্লাস।
নিয়মিত পার্কিংস্পেস পার্কিংস্পেসের একটি সাবক্লাস।
কমপ্যাক্ট পার্কিংস্পেস পার্কিংস্পেসের একটি সাবক্লাস।
পার্কিংলট পার্কিংস্পেসের অ্যারে রাখে এবং এর প্রবেশদ্বার থেকে দূরত্বের জন্য খালি পার্কিংস্পেসের একটি পৃথক অ্যারে রাখে।
পার্কিংলটসাইনকে "পূর্ণ", বা "খালি" বা "ফাঁকা / স্বাভাবিক / আংশিকভাবে দখল" প্রদর্শন করে বলা যেতে পারে .ফুল (), কর্মশক্তি () বা সাধারণ ()
পার্কার একটি শ্রেণি।
পার্কার পার্ক করতে পারেন ()।
পার্কার আনপার্ক করতে পারে ()।
ভ্যালেট পার্কারের একটি সাবক্লাস যা পার্কিংলট.ফাইন্ডভ্যাক্যান্টস্পেসনেসরেটসেন্টেন্স () কে কল করতে পারে, যা একটি পার্কিংস্পেস দেয়।
পার্কারের একটি পার্কিংস্পেস রয়েছে।
পার্কার পার্কিংস্পেস.টেক () এবং পার্কিংস্পেস.ভ্যাকেট () কল করতে পারেন।
পার্কার প্রবেশদ্বারকে প্রবেশ করে nএনটারিং () এবং প্রবেশ (এক্সটার্নিং) (এবং) প্রবেশ করে S যদি এটি নতুনভাবে পূর্ণ হয় বা সদ্য খালি বা নতুনটি পূর্ণ বা খালি নয়, তবে এটি পার্কিংলটসাইন.ফুল () বা পার্কিংলটসাইন.এম্পটি () বা পার্কিংলটসাইন.নরমাল () পরিবর্তন করা উচিত।
প্রতিবন্ধী পার্কার পার্কার এবং কমপ্যাক্টপারকারের একটি সাবক্লাস হতে পারে পার্কারের একটি সাবক্লাস এবং রেগুলারপার্কার পার্কারের একটি সাবক্লাস। (আসলে ওভারকিল হতে পারে))
এই সমাধানে, পার্কারের নাম পরিবর্তন করে গাড়ি রাখা সম্ভব।
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,
}
vacantParkingSpaces
আর সাজানো হয় না। আপনাকে এটি বাছাই করতে হবে যাতে findNearestVacant
নিকটতম পার্কিংয়ের জায়গাটি ফিরে আসে।
findNearestVacant
, যখন এর বাস্তবায়ন কেবল একটি খালি স্থান খুঁজে পায়, প্রয়োজনীয়ভাবে "নিকটতম" না? কেন "ফাইন্ডভ্যাক্যান্ট" নয়? যদিও ক্লাসে সঞ্চিত কিছু রাজ্য ব্যবহার করে "নিকটতম" স্থানটি ফিরে দেওয়া ভাল হত। হতে পারে, আমরা "স্পেস" শ্রেণিতে "প্রবেশদ্বার" এবং "প্রস্থান" থেকে দূরত্বগুলি সংরক্ষণ করতে পারি যাতে "নিকটতম" পাশাপাশি গণনা করা যায় বা আমরা কেবল স্থানের স্থানাঙ্কগুলি রাখতে পারি, যাতে সমস্ত প্রবেশদ্বার থেকে দূরত্ব এবং প্রয়োজন অনুসারে প্রস্থান গণনা করা যেতে পারে।
parkVehicle
এমন একটি বুলিয়ান মান প্রদান করবে যা নির্দেশ করে যে গাড়িটি পার্ক করা হয়েছিল কিনা।
বিচ্ছিন্নতায় মডেলগুলির অস্তিত্ব নেই। গাড়ি পার্কে প্রবেশ করে গাড়িগুলির সিমুলেশন, আপনি একটি এম্বেডেড সিস্টেম যা আপনাকে একটি মুক্ত স্থান, গাড়ি পার্কিং বিলিং সিস্টেম বা গাড়ি পার্কগুলিতে স্বয়ংক্রিয়ভাবে গেট / টিকিট মেশিনগুলির জন্য গাইড করে সেগুলির জন্য আপনি যে স্ট্রাকচারগুলি সংজ্ঞায়িত করেছেন সেগুলি আলাদা।
একটি অবজেক্ট ওরিয়েন্টেড পার্কিং লটে, পরিচারকদের প্রয়োজন হবে না কারণ গাড়িগুলি "কীভাবে পার্ক করতে" জানবে will
প্রচুর পরিমাণে ব্যবহারযোগ্য গাড়ি খুঁজে পাওয়া কঠিন হবে; সর্বাধিক প্রচলিত মডেলগুলির হয় তাদের সমস্ত চলমান অংশগুলি পাবলিক সদস্য ভেরিয়েবল হিসাবে প্রকাশিত হবে বা তারা উইন্ডোজ বা দরজাবিহীন "সম্পূর্ণরূপে এনপ্যাপুলেটেড" গাড়ি হবে।
আমাদের ওও পার্কিংয়ের পার্কিংয়ের জায়গাগুলি গাড়ির আকার এবং আকৃতির সাথে মেলে না (স্পেস এবং গাড়ির মধ্যে একটি "প্রতিবন্ধকতা মেলে না")
আমাদের প্রচুর লাইসেন্স ট্যাগগুলিতে প্রতিটি বর্ণ এবং অঙ্কের মধ্যে একটি বিন্দু থাকবে। প্রতিবন্ধী পার্কিং কেবল "_" দিয়ে শুরু লাইসেন্সের জন্য উপলব্ধ থাকবে এবং "এম_" দিয়ে শুরু হওয়া লাইসেন্সগুলি তোলা হবে।
আপনার একটি পার্কিংয়ের দরকার হবে, এটিতে একটি "স্পেস" টাইপের একটি বহুমাত্রিক অ্যারে (কনস্ট্রাক্টরে নির্দিষ্ট) থাকবে। পার্কিং লটটি ফাংশনগুলিতে কলগুলি দিয়ে কতগুলি স্থান নেওয়া হয় তা ট্র্যাক করে রাখতে পারে যা খালি স্থানগুলি পূরণ করে এবং খালি স্থান 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;
}