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 ?

- Rejestracja:ponad 9 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:96-230
- Postów:953
6
Mam pomysl, zebys napisal ten kod ;)

- Rejestracja:ponad 8 lat
- Ostatnio:12 miesięcy
- Postów:223
2
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.
- Rejestracja:ponad 4 lata
- Ostatnio:prawie 2 lata
- Postów:449
0
if (opona.x = 1 and opona.y=3 and opona.z=5) then print('miejsce zajete wypad!')

- Rejestracja:około 6 lat
- Ostatnio:dzień
- Lokalizacja:Kraków
- Postów:255
2
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ć.

- Rejestracja:około 6 lat
- Ostatnio:około rok
- Postów:10
0
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
opona posiada półkę zamiast szafki ?? this.polka() == o.polka() ??

Obiekt Szafka (szafka składa się z półek) zawiera ArrayList na której, odkładane są obiekty Opona. Opony posiadają dwa atrybuty "marka" i "polka". Ten ostatni będzie służył za identyfikator obiektu - możesz to sobie wyobrazić jako naklejkę z oznaczeniem półki w szafce na przykład.
możesz to sobie wyobrazić jako naklejkę z oznaczeniem półki w szafce
dokładnie o to mi chodzi, w szafce, czyli to półka powinna mieć swój identyfikator, a nie opona, zmieniając jej miejsce, przesuwasz obiekt opona na inna półkę, a nie modyfikujesz oponę
- Rejestracja:ponad 6 lat
- Ostatnio:około 12 godzin
- Postów:3561
6
Kolejny wątek, że OP odpadł ... gotowca nie dostał, wątek mu zbędny
edytowany 1x, ostatnio: AnyKtokolwiek

- Rejestracja:około 6 lat
- Ostatnio:około rok
- Postów:10
0
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.
p_agon