x,y,z - pólki , opona, metoda.

x,y,z - pólki , opona, metoda.
KA
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 2 lata
  • Postów:27
0

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 ?

p_agon
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:96-230
  • Postów:953
6

Mam pomysl, zebys napisal ten kod ;)


Reasumując wszystkie aspekty kwintesencji tematu, dochodzę do fundamentalnej konkluzji: To by nic nie dało, nie dałoby nic! Przez 10 minut można, przy 2h to już jakaś zemsta pagona.
p_agon
No kod ktory opisales wyzej :]
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
2

No najprościej po prostu sprawdzasz, czy z, y, z które przychodzą, są już zapisane xd (w pamięci lub bazie)

Sandra
  • Rejestracja:ponad 8 lat
  • Ostatnio:około rok
  • Postów:223
2

Przebieg byłby zapewne taki:

  1. Pojawia się opona A.
  2. Pojawiają się współrzędne półki, na której chcemy odłożyć oponę.
  3. Sprawdzamy czy wskazane współrzędne są wolne.
  4. Jeśli są wolne odkładamy oponę.
  5. Jeśli nie są wolne prosimy o inne współrzędne / mówimy, że nie ma miejsca.
CH
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:449
0
Kopiuj
if (opona.x = 1 and opona.y=3 and opona.z=5) then print('miejsce zajete wypad!')
Skoq
  • Rejestracja:około 6 lat
  • Ostatnio:około miesiąc
  • 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ć.


I tak to właśnie jest
PG
Jeszcze prościej będzie napisać do tego własny interfejs implementujący mapę. Implementować będzie go klasa Półka
Skoq
A po co interfejs z jedna implementacja?
PG
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:10
0
Kopiuj
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
ZN
opona posiada półkę zamiast szafki ?? this.polka() == o.polka() ??
PG
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.
ZN
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ę
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
6

Kolejny wątek, że OP odpadł ... gotowca nie dostał, wątek mu zbędny


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
PG
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.