Witam,
Mamy pola: opona, x, y, z (gdzie x ,y ,z są współrzędnymi półek na magazynie).
Stwórz metodę zabezpieczającą położenie dwóch opon na jednej półce. 1 opona 1 półka.
Jakieś pomysły ?
Mam pomysl, zebys napisal ten kod ;)
No najprościej po prostu sprawdzasz, czy z, y, z
które przychodzą, są już zapisane xd (w pamięci lub bazie)
Przebieg byłby zapewne taki:
- Pojawia się opona A.
- Pojawiają się współrzędne półki, na której chcemy odłożyć oponę.
- Sprawdzamy czy wskazane współrzędne są wolne.
- Jeśli są wolne odkładamy oponę.
- Jeśli nie są wolne prosimy o inne współrzędne / mówimy, że nie ma miejsca.
if (opona.x = 1 and opona.y=3 and opona.z=5) then print('miejsce zajete wypad!')
Tworzysz klasę Shelf
, która zawiera te wspolrzedne. Wsadź to do mapy i podczas próby dodawania opony na półkę walidujesz czy map.containsKey(). Jeśli true
to rzucasz jakimś InvalidArgumentException, zwracasz Failure czy jak tam chcesz to ograć.
public interface CustomMap <Para>
{
public boolean ifCustomMapEmpty();
//check if Map contains item
public boolean ifMapContainsItem(Para para);
//get
public Opona getCustomMapItem(Para para);
//put
public void putItemCustomMap(Para para);
// Pozostale metody ...
}
public static class Opona <K,V>
{
private K polka;
private V marka;
public Opona(K polka, V marka) {
this.polka = polka;
this.marka = marka;
}
public K polka() {
return polka;
}
public V marka() {
return marka;
}
public void polka(K polka) {
this.polka = polka;
}
public void drugi(V marka) {
this.marka = marka;
}
// metoda porownuje wartość atrybutu polka z inna opona
public boolean taSamaPolka(Opona o){
return (this.polka() == o.polka());
}
}
static class Szafka implements CustomMap<Opona>
{
ArrayList<Opona<String,String>> items;
public Szafka(){
items=new ArrayList<Opona<String,String>>();
}
@Override
public boolean ifCustomMapEmpty() {
return items.isEmpty();
}
@Override
public boolean ifMapContainsItem(Opona kvOpona) {
Iterator<Opona<String, String>> customMapIter = items.iterator();
while (customMapIter.hasNext()){
if (customMapIter.next().taSamaPolka(kvOpona))
return true;
}
return false;
}
@Override
public Opona<String, String> getCustomMapItem(Opona kvOpona) {
return items.get(items.indexOf(kvOpona));
}
@Override
public void putItemCustomMap(Opona kvOpona) {
if (!ifMapContainsItem(kvOpona)){
items.add(kvOpona);
}else {
System.out.println("Opona jest juz na polce");
}
}
}
Kluczowe metody to:
- public boolean taSamaPolka(Opona o)
- public boolean ifMapContainsItem(Opona kvOpona)
- public void putItemCustomMap(Opona kvOpona)
W ten sposób zabezpieczasz się przed nieporządanym przepełnieniem jednej półki
Kolejny wątek, że OP odpadł ... gotowca nie dostał, wątek mu zbędny
W sumie to widziałbym to nawet tak:
Stworzenie klasy Magazyn z listą mieszczącą wszystkie obiekty klasy Półka. Klasa półka mieściłaby nie więcej niż jeden obiekt klasy Opona. Jest to rozwiązanie dokładniejsze i według mniej bardziej zgodne z ideą OOP, ale też bardziej czasochłonne.