एक OO पार्किंग स्थल डिजाइन करें। इसके क्या वर्ग और कार्य होंगे। यह कहना चाहिए, पूर्ण, खाली और भी वैलेट पार्किंग के लिए जगह खोजने में सक्षम होना चाहिए। पार्किंग में 3 अलग-अलग प्रकार की पार्किंग हैं: नियमित, विकलांग और कॉम्पैक्ट।
धन्यवाद!
एक OO पार्किंग स्थल डिजाइन करें। इसके क्या वर्ग और कार्य होंगे। यह कहना चाहिए, पूर्ण, खाली और भी वैलेट पार्किंग के लिए जगह खोजने में सक्षम होना चाहिए। पार्किंग में 3 अलग-अलग प्रकार की पार्किंग हैं: नियमित, विकलांग और कॉम्पैक्ट।
धन्यवाद!
जवाबों:
यहाँ गियर चालू करने के लिए एक त्वरित शुरुआत है ...
पार्किंगलॉट एक वर्ग है।
पार्किंगस्पेस एक वर्ग है।
पार्किंगस्पेस में एक प्रवेश है।
प्रवेश स्थान से एक स्थान या अधिक विशेष रूप से, प्रवेश से दूरी है।
ParkingLotSign एक वर्ग है।
पार्किंगलॉट में एक पार्किंगलॉटसाइन है।
पार्किंगलॉट में पार्किंग की एक सीमित संख्या है।
हैंडीकैप्डपार्किंगस्पेस पार्किंगस्पेस का एक उपवर्ग है।
RegularParkingSpace पार्किंगस्पेस का एक उपवर्ग है।
कॉम्पैक्टपार्किंगस्पेस पार्किंगस्पेस का एक उपवर्ग है।
पार्किंगलॉट पार्किंग की जगह, और अपने प्रवेश द्वार से दूरी के लिए रिक्त पार्किंग की एक अलग सरणी रखता है।
ParkingLotSign को "पूर्ण", या "खाली", या "रिक्त / सामान्य / आंशिक रूप से कब्जे में" प्रदर्शित करके बताया जा सकता है। .Full (), .Empty () या .Normal ()
पार्कर एक वर्ग है।
पार्कर पार्क कर सकते हैं ()।
पार्कर अनपार्क () कर सकते हैं।
वैलेट पार्कर का एक उपवर्ग है जिसे पार्किंगलॉट कह सकते हैं। FindVacantSpaceNearestEntrance (), जो एक पार्किंगस्पेस लौटाता है।
पार्कर में एक पार्किंगस्पेस है।
पार्कर पार्किंगस्पेस को बुला सकते हैं। टेक () और पार्किंग स्पेस।वीकेट ()।
पार्कर प्रवेश कहता है। प्रवेश () और प्रवेश। प्रवेश () और पार्किंग स्थल पार्किंग स्थल को सूचित करता है जब इसे लिया जाता है या खाली किया जाता है ताकि पार्किंगलोट यह निर्धारित कर सके कि यह भरा हुआ है या नहीं। यदि यह नया पूर्ण या नव खाली है या नव पूर्ण या खाली नहीं है, तो इसे पार्किंग लोटसाइन.फूल () या पार्किंग लोटसाइन.इम खाली () या पार्किंग लोटसाइन.नॉर्मल () को बदलना चाहिए।
हैंडीकैप्डपार्क पार्कर का एक उपवर्ग हो सकता है और कॉम्पैक्टपार्क पार्कर का उपवर्ग और पार्कर का उपवर्ग हो सकता है। (वास्तव में overkill हो सकता है।)
इस समाधान में, यह संभव है कि पार्कर का नाम बदलकर कार कर दिया जाए।
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
, जब इसका कार्यान्वयन केवल एक रिक्त स्थान पाता है, जरूरी नहीं कि "निकटतम" एक हो? क्यों नहीं "findVacant"? हालाँकि कक्षा में संग्रहीत कुछ राज्यों का उपयोग करके, "निकटतम" स्थान को वापस करना अच्छा होता। हो सकता है, हम "अंतरिक्ष" वर्ग में "प्रवेश" और "निकास" से दूरियों को संग्रहीत कर सकें, ताकि "निकटतम" की गणना भी की जा सके या हम बस अंतरिक्ष के निर्देशांक, ताकि सभी प्रवेश द्वारों से दूरी बना सकें और बाहर निकलने की जरूरत पर गणना की जा सकती है।
parkVehicle
को यह इंगित करना चाहिए कि वाहन पार्क किया गया था या नहीं , एक बूलियन मान लौटाया जाना चाहिए।
अलगाव में मॉडल मौजूद नहीं हैं। संरचनाएं जिन्हें आप कार पार्क में प्रवेश करने वाली कारों के सिमुलेशन के लिए परिभाषित करेंगे, एक एम्बेडेड सिस्टम जो आपको एक खाली स्थान, एक कार पार्किंग बिलिंग सिस्टम या कार पार्क में सामान्य रूप से स्वचालित गेट / टिकट मशीनों के लिए मार्गदर्शन करता है, सभी अलग हैं।
ऑब्जेक्ट ओरिएंटेड पार्किंग लॉट में, अटेंडेंट की कोई आवश्यकता नहीं होगी क्योंकि कार "पार्क करने के तरीके जानेंगे"।
बहुत पर एक प्रयोग करने योग्य कार खोजना मुश्किल होगा; सबसे सामान्य मॉडल में या तो उनके सभी चलते हुए हिस्से सार्वजनिक सदस्य चर के रूप में सामने आएंगे, या वे बिना खिड़की या दरवाजों वाली "पूरी तरह से अतिक्रमित" कारें होंगी।
हमारे OO पार्किंग स्थल में पार्किंग स्थान कारों के आकार और आकार से मेल नहीं खाएगा (रिक्त स्थान और कारों के बीच एक "प्रतिबाधा बेमेल")
हमारे लॉट पर लाइसेंस टैग प्रत्येक अक्षर और अंक के बीच एक डॉट होगा। विकलांग पार्किंग केवल "_" से शुरू होने वाले लाइसेंस के लिए उपलब्ध होगी, और "m_" से शुरू होने वाले लाइसेंस को रस्सा दिया जाएगा।
आपको एक पार्किंग स्थल की आवश्यकता होगी, जो एक प्रकार के "स्पेस" का एक बहु-आयामी सरणी (निर्माण में निर्दिष्ट) रखता है। पार्किंग स्थल ट्रैक के माध्यम से यह बता सकता है कि रिक्त स्थान को भरने और खाली करने के लिए कॉल के माध्यम से कितने स्थान लिए गए हैं। स्पेस एक एन्यूमरेटेड प्रकार पकड़ सकता है जो बताता है कि यह किस प्रकार का स्थान है। अंतरिक्ष में भी एक विधि है ()। वैलेट पार्किंग के लिए, बस पहले स्थान को खोलें और कार को वहां रखें। आपको अंतरिक्ष में डालने के लिए एक कार ऑब्जेक्ट की भी आवश्यकता होगी, जो धारण करता है कि क्या यह एक विकलांग, कॉम्पैक्ट या नियमित वाहन है।
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;
}