Diagram klas+3 pliki

0

witam, musze zrobic diagram klas, ale mam kod zapisany w trzech plikach i nie bardzo wiem jak mam te klasy polaczyc ze sobą. Czy dla kazdego pliku zrobic osobno, no ae to jest midlet i one sa powiazane...............? Jesli ktos chcialby mi Pomoc udostepnie kod. DZIĘKI DLA CHCĄCYCH POMÓC

0

Udostępnij tutaj. Jak masz rozpisany kod w trzech plikach? 3 klasy w 3 plikach czy co? Jeśli są powiązane to na pewno będzie można połączyć jakimiś asocjacjami, a jak nie to się coś wymyśli :-)

0

te pliki sa pwiazane, tylko nigdy nie robilam diagramu klas rozraczonego na 3 pliki. Jak mozesz to rozrysuj jak TY to widzisz. OTO PIERWSZY PLIK

import javax.microedition.lcdui.Alert; 
import javax.microedition.lcdui.Display;

public class Pilkarz {
    short[][] boisko = new short[15][9]; //tablica odzwierciedlajaca boisko

    boolean czyTrwaGra; //zmienna do przechowywania informacji, czy gra jeszcze trwa (true), czy sie skonczyla (false)
    boolean czyGracz1; //zmienna przechowujaca informacje o tym, który gracz jest przy pilce true - gracz pierwszy, false - gracz drugi
    boolean wygralGracz1; //zmienna zapamietujaca, który gracz wyral, true - racz pierwszy, false -gracz drugi

    String wiadomosc = null; //komunikat do wyswietlenia na ekranie
        String wiadomosc2 = null; //komunikat do wyswietlenia na ekranie
    short temp; //zmienna pomocnicza

    short pozycjaPilkiDlugosc; //aktualne polozenie pilki
    short pozycjaPilkiSzerokosc; //---

        int ileCzerwony=0;
        int ileZielony=0;

        Ekran _e;

      Pilkarz(Ekran e)
          { 
            _e=e;
            zainicjujBoisko();
          }

    void zainicjujBoisko() //inicjowanie boiska
          {
            for(int i = 0; i < 15; i++)
              {
              for(int j = 0; j < 9; j++)
                {
                  boisko[i][j] = 0;
                }
              }

        boisko[1][0]=16+32+64+128+1+2+4; //zabezpieczenie drugiej lini od góry
        boisko[1][1]=64+128+1+2+4;
        boisko[1][2]=64+128+1+2+4;
        boisko[1][3]=64+128+1;
        boisko[1][5]=1+2+4;
        boisko[1][6]=64+128+1+2+4;
        boisko[1][7]=64+128+1+2+4;
        boisko[1][8]=64+128+1+2+4+8+16;//---

        boisko[13][0]=4+8+16+32+64+128+1; //zabezpieczeni drugiej linii od dolu
        boisko[13][1]=4+8+16+32+64;
        boisko[13][2]=4+8+16+32+64;
        boisko[13][3]=16+32+64;
        boisko[13][5]=4+8+16;
        boisko[13][6]=4+8+16+32+64;
        boisko[13][7]=4+8+16+32+64;
        boisko[13][8]=1+2+4+8+16+32+64; //---

        for(int i = 2; i < 13;i++) //zabezpieczenie linii bocznych
                  {
                    boisko[i][0] = 16+32+64+128+1;
                    boisko[i][8] = 1+2+4+8+16;
                  }

        for(int i = 1; i < 8; i++) //zabezpieczenie linii srodkowej
                  {
                    boisko[7][i]+= 4 + 64;
                  }

        boisko[7][0]+=4; //miejsce gdzie linia srodkowa laczy sie z bocznymi
        boisko[7][8]+=64; //---

        czyTrwaGra = true; 
        czyGracz1 = true; 
        wiadomosc = null; 

        pozycjaPilkiDlugosc = 7;
        pozycjaPilkiSzerokosc = 4;
          }

    void zresetujBoisko()
        {
          zainicjujBoisko();
    }

      boolean czyKoniecGry()
        {
          if(boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc]==255) // gracz nie ma mozliwosc ruchu - wartosc rozy 255
            {
              if(czyGracz1)
                {
                  wygralGracz1 = false;
                } 
              else 
                {
                  wygralGracz1 = true;
                }
              czyTrwaGra = false;
              return true;
            }

            if( boisko[0][3] + boisko[0][4] + boisko[0][5] > 0 ) //bramke strzelil gracz czerwony
              {
                wygralGracz1 = false;
                czyTrwaGra = false;
                return true;
              }

            if( boisko[14][3] + boisko[14][4] + boisko[14][5] > 0 ) //bramke strzelil gracz zielony
              {
                wygralGracz1 = true;
                czyTrwaGra = false;
                return true;
              }

            return false;
    }

    void koniecGry()
          {
            if(wygralGracz1)
              {
                wiadomosc = "Wygral gracz zielony";
                wiadomosc2= "Wygrałeś wykonując ruchów: "+ileZielony+", \ntwój przeciwnik wykonał ruchów:"+ileCzerwony+".\nGRATULACJE !!!";
              } 
            else 
              {
                wiadomosc = "Wygral gracz czerwony";
                wiadomosc2= "Wygrałeś wykonując ruchów: "+ileZielony+", \ntwój przeciwnik wykonał ruchów:"+ileCzerwony+".\nGRATULACJE !!!";
              }
          }

    void atakujBramkeZielonego() {
        short[] kolejnosc1 = new short[]{1,2,128,4,64,8,32,64};
        short[] kolejnosc2 = new short[]{128,1,2,64,4,32,8,64};
        short[] kolejnosc3 = new short[]{2,1,128,4,64,8,32,64};
        if(pozycjaPilkiSzerokosc > 4){
            kolejnosc1 = kolejnosc2;
        }
        if(pozycjaPilkiSzerokosc < 4){
            kolejnosc1 = kolejnosc3;
        }
        for(short i=0; i < 8; i++){
            if((boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] & kolejnosc1[i]) == 0){
                zrobRuch(kolejnosc1[i]);
                return;
            }
        }
    }

    void zrobRuch(short kierunek)
          {
            if(czyTrwaGra)
              {
                if((boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] & kierunek) > 0) //sprawdzenie czy ruch w danym kierunku nie byl juz wykonany
                  {

                  } 
                else 
                  {

                  if (czyGracz1)
                    {
                      ileCzerwony++;
                    }
                  else
                    {
                      ileZielony++;
                    }

                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] +=kierunek;
                      switch(kierunek)
                        {
                          case 1:   pozycjaPilkiDlugosc --;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 16;
                                    break;
                          case 2:   pozycjaPilkiDlugosc --;
                                    pozycjaPilkiSzerokosc ++;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 32;
                                    break;
                          case 4:   pozycjaPilkiSzerokosc ++;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 64;
                                    break;
                          case 8:   pozycjaPilkiDlugosc ++;
                                    pozycjaPilkiSzerokosc ++;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 128;
                                    break;
                          case 16:  pozycjaPilkiDlugosc ++;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 1;
                                    break;
                          case 32:  pozycjaPilkiDlugosc ++;
                                    pozycjaPilkiSzerokosc --;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 2;
                                    break;
                          case 64:  pozycjaPilkiSzerokosc --;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 4;
                                    break;
                          case 128: pozycjaPilkiDlugosc --;
                                    pozycjaPilkiSzerokosc --;
                                    temp = boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc];
                                    boisko[pozycjaPilkiDlugosc][pozycjaPilkiSzerokosc] += 8;
                                    break;
                        }

                      if(czyKoniecGry())
                        {
                          koniecGry();
                        }

                      if(temp == 0) //jezeli znaleziono sie w polu pustym do gry wchodzi gracz przeciwny
                        {
                          czyGracz1 = !czyGracz1;
                        }

                      int czyDwochGraczy;
                      czyDwochGraczy = _e.getCzyDwochGraczy();

                      if (!czyGracz1) // jezeli gracz czerwony gre przejmuje komputer
                      {
                          if (czyDwochGraczy==0)
                          {
                            atakujBramkeZielonego();
                          }
                      }

                  }
              }
    }

    }

OTO DRUGI PLIK

//sekcja importu
import javax.microedition.lcdui.Alert; 
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Ekran extends Canvas{

        Pilkarz pilkarz = new Pilkarz(this); 

    //Alert alert;

     static int czyDwochGraczy;

    public final static int ODL=8; // zmiennka przechowujaca odleglosc punktow d siebie
    public final static int KR=2; //odleglosc pomiedzy rozami

    pilkarz_midlet ms;

    public Ekran(pilkarz_midlet m)
          {
            ms = m;
          }

        protected void paint(Graphics arg0)
          {
            arg0.fillRect(0,0,this.getWidth(), this.getHeight());

            rysujPunkty(arg0);
            rysujLinieBoiska(arg0);
            rysujRuchy(arg0);

            if(pilkarz.czyGracz1)
              {
                arg0.setColor(-16711936);
              } 
            else 
              {
                arg0.setColor(-65536);
              }

            arg0.fillRoundRect(pilkarz.pozycjaPilkiSzerokosc*ODL-2+KR,pilkarz.pozycjaPilkiDlugosc*ODL-2+KR,4,4, 2, 2); //narysowanie pilki

            if(pilkarz.wiadomosc != null)
              {
                arg0.setColor(-16711681);
                //alert = new Alert(pilkarz.wiadomosc); // wyswietlanei komunikatu

              Alert wynik = new Alert(""+pilkarz.wiadomosc+"",""+pilkarz.wiadomosc2+"", null, AlertType.CONFIRMATION );
              wynik.setTimeout(Alert.FOREVER);
              //display.setCurrent(wynik);

                Display.getDisplay(ms).setCurrent(wynik); //----
                pilkarz.wiadomosc = null;
                pilkarz.wiadomosc2 = null;
              }
          }

    private void rysujPunkty(Graphics arg0) 
          {
            arg0.setColor(-256);

          for(int i = 0; i < 9; i++)
            {
              for(int j = 1; j < 14; j++)
                {
                  arg0.fillRoundRect(i*ODL+KR,j*ODL+KR,1,1, 2, 2);
                }
            }
          }

    private void rysujRuchy(Graphics arg0) 
          {
            for(int i = 2; i < 13; i++) //rysowanie dla punktow wewnarz boika
              {    
                for(int j = 1; j < 8; j++)
                  {
                    rysujRoze(arg0, i, j);
                  }
              }

            rysujRoze(arg0,1,4); //rysowanie wewnatrz bramek
            rysujRoze(arg0,13,4); //---

            if( (pilkarz.boisko[2][0] & 2) > 0) //ruchy w naroznikach boiska
              {
                arg0.drawLine(KR,2*ODL+KR,1*ODL+KR,71*ODL+KR);
              }
            if( (pilkarz.boisko[12][0] & 8) > 0)
              {
                arg0.drawLine(KR,312*ODL+KR,ODL+KR,13*ODL+KR);
              }
            if( (pilkarz.boisko[12][8] & 32) > 0)
              {
                arg0.drawLine(8*ODL+KR,12*ODL+KR,7*ODL+KR,13*ODL+KR);
              }
            if( (pilkarz.boisko[2][8] & 128) > 0)
              {
                arg0.drawLine(8*ODL+KR,2*ODL+KR,7*ODL+KR,ODL+KR);
              }                                                   //---

          }

    private void rysujRoze(Graphics arg0, int i, int j) 
          {
        if( (pilkarz.boisko[i][j] & 1) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,j*ODL+KR,(i-1)*ODL+KR);
        }
        if( (pilkarz.boisko[i][j] & 2) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,(j+1)*ODL+KR,(i-1)*ODL+KR);
        }
        if( (pilkarz.boisko[i][j] & 4) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,(j+1)*ODL+KR,i*ODL+KR);
        }
        if( (pilkarz.boisko[i][j] & 8) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,(j+1)*ODL+KR,(i+1)*ODL+KR);
        }
        if( (pilkarz.boisko[i][j] & 16) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,j*ODL+KR,(i+1)*ODL+KR);
        }
        if( (pilkarz.boisko[i][j] & 32) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,(j-1)*ODL+KR,(i+1)*ODL+KR);
        }
        if( (pilkarz.boisko[i][j] & 64) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,(j-1)*ODL+KR,i*ODL+KR);
        }
        if( (pilkarz.boisko[i][j] & 128) > 0){
            arg0.drawLine(j*ODL+KR,i*ODL+KR,(j-1)*ODL+KR,(i-1)*ODL+KR);
        }
          }

    private void rysujLinieBoiska(Graphics arg0) 
          {
        arg0.setColor(-1);
                arg0.drawLine(KR,ODL+KR,3*ODL+KR,ODL+KR);
        arg0.setColor(-16711936);
        arg0.drawLine(3*ODL+KR,ODL+KR,3*ODL+KR,KR);
        arg0.drawLine(3*ODL+KR,KR,5*ODL+KR,KR);
        arg0.drawLine(5*ODL+KR,ODL+KR,5*ODL+KR,KR);
                arg0.drawLine(KR,7*ODL+KR,8*ODL+KR,7*ODL+KR);
                arg0.setColor(-1);
        arg0.drawLine(5*ODL+KR,ODL+KR,8*ODL+KR,ODL+KR);
            arg0.drawLine(KR,ODL+KR,KR,13*ODL+KR);
                arg0.drawLine(8*ODL+KR,ODL+KR,8*ODL+KR,13*ODL+KR);
                arg0.drawLine(KR,13*ODL+KR,3*ODL+KR,13*ODL+KR);
                arg0.drawLine(5*ODL+KR,13*ODL+KR,8*ODL+KR,13*ODL+KR);

                arg0.setColor(-65536);
        arg0.drawLine(3*ODL+KR,13*ODL+KR,3*ODL+KR,14*ODL+KR);
        arg0.drawLine(3*ODL+KR,14*ODL+KR,5*ODL+KR,14*ODL+KR);
        arg0.drawLine(5*ODL+KR,13*ODL+KR,5*ODL+KR,14*ODL+KR);
                arg0.setColor(-1);

          }

    protected void keyPressed(int arg0) {
        super.keyPressed(arg0);
        switch(arg0){
            case KEY_NUM1: pilkarz.zrobRuch((short)128);break;
            case KEY_NUM2: pilkarz.zrobRuch((short)1);break;
            case KEY_NUM3: pilkarz.zrobRuch((short)2);break;
            case KEY_NUM4: pilkarz.zrobRuch((short)64);break;
            case KEY_NUM6: pilkarz.zrobRuch((short)4);break;
            case KEY_NUM7: pilkarz.zrobRuch((short)32);break;
            case KEY_NUM8: pilkarz.zrobRuch((short)16);break;
            case KEY_NUM9: pilkarz.zrobRuch((short)8);break;
            case KEY_POUND: pilkarz.zresetujBoisko(); break;
        }
        repaint();
    }

      public int getCzyDwochGraczy() {
        return ms.getCzyDwochGraczy();
      }

      public Display getDisplay() {
        return Display.getDisplay(ms);
      }

}

OTO TRZECI PLIK

import javax.microedition.lcdui.Alert; 

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class pilkarz_midlet extends MIDlet implements CommandListener{

      private Command exitCommand = new Command("Wyjście", Command.EXIT, 2);
      private Command backCommand = new Command("Wróć", Command.BACK, 1);
      private Display display;

      private Form info = new Form("Info");
      private Form zasady = new Form("Zasady gry");
      private Form jak = new Form("Jak grać");

      private Ekran ekran = new Ekran(this);

      private List list = new List("Pilkarzyki - midlet", List.IMPLICIT);

      Alert alert2;

      private int czyDwochGraczy;

      public int getCzyDwochGraczy() {
        return czyDwochGraczy;
      }

      public pilkarz_midlet() 
      {
        display = Display.getDisplay(this);

        //Definiuję wygląd listy (głównego menu)
        list.setTicker(new Ticker("Wybierz jedną z opcji poniżej:"));
        list.append("Rozpocznij grę z automatem", null);
        list.append("Rozpocznij grę dla dwóch graczy", null);
        list.append("Jak grać", null);
        list.append("Zasady gry", null);
        list.append("Info", null);
        list.addCommand(exitCommand);
        list.setCommandListener(this);

        //info
        info.append("Midlet ten powstał na potrzeby pracy magisterskiej: 'Gry na platformy mobilne, przegląd i implementacja' bronionej na Politechnice Wrocławskiej w 2007 roku. Autor Elżbieta Pustelnik.");
        info.addCommand(backCommand);
        info.setCommandListener(this);  

        //zasady
        zasady.append("Gra polega na strzleniu bramki przeciwnkowi.\n\n Gracz może poruszać się tylko po narysowanych punktach na boisku. Ruch w danym kierunku może być wykonany tylko raz.\nJeśli gracz dojdzie do punktu w którym piłka się jeszcze nie znajdowała podczas tej rozgrywki, grę rozpoczyna gracz drugi.\nJeśli gracz dojdzie do punktu w którym odbyły się wczesniej ruchy i ma możliwość dalszego ruchu, może wykonywać ruchy dalej.\n\nNie można poruszać się po liniach boiska\n\n\n\nWygrywa ten gracz, który pierwszy zdobędzie bramkę.");
        zasady.addCommand(backCommand);
        zasady.setCommandListener(this);  

          //jak grać
        jak.append("Klawisze i ich funkcje:\n- klawisz 1 - ruch po skosie góra-lewo\n- klawisz 2 - ruch do góry\n- klawisz 3 - ruch po skosie góra-prawo \n- klawisz 4 - ruch w lewo\n- klawisz 6 - ruch w prawo\n- klawisz 7 - ruch po skosie dół-lewo\n- klawisz 8 - ruch do dołu\n- klawisz 9 - ruch po skosie dół-prawo\n\n- klawisz # - Kasowanie boiska podczas gry \n\nKolor piłki mówi, który gracz ma teraz wykonać ruch.");
        jak.addCommand(backCommand);
        jak.setCommandListener(this);  

    }

    public void startApp() 
    {
        display.setCurrent(list);
    }

    public void pauseApp() {}

    public void destroyApp(boolean unconditional) {}

    public void commandAction(Command c, Displayable s) //pozwala reagowac na opcje menu
      {
        if (c == List.SELECT_COMMAND) 
          {
            if (list.getString(list.getSelectedIndex()) == "Rozpocznij grę z automatem") 
              {
                czyDwochGraczy=0;
              //ekran.zmienwartosc(0);
                display.setCurrent(ekran);
              }
            else if (list.getString(list.getSelectedIndex()) == "Rozpocznij grę dla dwóch graczy") 
              {
                czyDwochGraczy=1;
              //ekran.zmienwartosc(1);
                display.setCurrent(ekran);
              }

            else if (list.getString(list.getSelectedIndex()) == "Jak grać") 
              {
                display.setCurrent(jak);
              }
            else if (list.getString(list.getSelectedIndex()) == "Zasady gry") 
              {
                display.setCurrent(zasady);
              }
            else if(list.getString(list.getSelectedIndex()) == "Info") 
              {
                display.setCurrent(info);
              }

          }
        else if (c == backCommand) 
          {
            display.setCurrent(list);
          }
        else if (c == exitCommand) 
          {
            destroyApp(false);
            notifyDestroyed();
          }
      }
    }
0

po co dajesz ciała funkcji? wystarczą same nagłówki (nie wiem jak to tam w javie jest, ale w c++ wystarczają same pliki *.h)

0

wiem, ale wkleilam caly kod zebys wiedzoial jak sa wykorzystywane wzajemnie

0

inżynieria programowania nie zajmuje się ciałem metod. Wzajemne wykorzystanie to przede wszystkim typy atrybutów ( czyli np wskaźnik na obiekt innej klasy w systemie )

0

Rysując diagram klas nie ma znaczenia w ilu plikach znajduje się kod źródłowy. No, może w Javie, gdzie każda klasa musi być w osobnym pliku (pomijam klasy wewnętrzne). Ale to przypadek.

Masz tutaj po prostu 3 klasy, który musisz połączyć odpowiednimi "strzałkami". Jeśli wcześniej robiłaś diagramy klas (tak jak piszesz), to nie powinnaś mieć z tym problemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0