jak uzywać interfejs

Odpowiedz Nowy wątek
2006-12-01 23:27
kapitan_rzbik
0

o co chodzi z tymi interfejsami ?
mam taki kod z ksiażki o javie:

public interface Series { 
  int getNext(); // return next number in series 
  void reset(); // restart 
  void setStart(int x); // set starting value 
}

// Implement Series. 
class ByTwos implements Series { 
  int start; 
  int val; 

  ByTwos() { 
    start = 0; 
    val = 0; 
  }  

  public int getNext() { 
    val += 2; 
    return val; 
  } 

  public void reset() { 
    start = 0; 
    val = 0; 
  } 

  public void setStart(int x) { 
    start = x; 
    val = x; 
  } 
}

class SeriesDemo { 
  public static void main(String args[]) { 
    ByTwos ob = new ByTwos(); 

    for(int i=0; i < 5; i++) 
      System.out.println("Next value is " + 
                         ob.getNext()); 

    System.out.println("\nResetting"); 
    ob.reset(); 
    for(int i=0; i < 5; i++) 
      System.out.println("Next value is " + 
                         ob.getNext()); 

    System.out.println("\nStarting at 100"); 
    ob.setStart(100); 
    for(int i=0; i < 5; i++) 
      System.out.println("Next value is " + 
                         ob.getNext()); 
  } 
}

nie daje sie skompiować, co z robić żeby zadziało jesli ktoś wie jak poprawić ten kod to prosze o poprawienie
bo nie rozumiem tego

Pozostało 580 znaków

2006-12-02 01:19
0

Napisz jakie bledy wyskakuja przy kompilowaniu.


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-12-02 02:53
0

W tym kodzie źródłowym nie ma żadnych błędów (sprawdziłem - kompiluje się bez problemu).

Pamiętaj, że plik z kodem źródłowym powinien się nazywać dokładnie tak samo, jak publiczna klasa - o ile taka występuje (i że w jednym pliku może się znajdować tylko jedna klasa publiczna). Tak więc powinieneś nazwać swój plik z kodem źródłowym Series.java ponieważ tak właśnie nazywa się jedyna publiczna klasa (a dokładniej rzecz biorąc interfejs) w twoim kodzie źródłowym.

Tak więc, żeby przetestować ten kod, zapisz go w pliku o nazwie Series.java, następnie skompiluj poleceniem javac Series.java. Powinny się utworzyć trzy pliki: ByTwos.class, Series.class oraz SeriesDemo.class. Żeby odpalić ten trzeci, wystarczy, że wpiszesz java SeriesDemo (bez żadnego rozszerzenia - argumentem polecenia java jest nazwa klasy, a nie pliku!)

Pozostało 580 znaków

2006-12-02 16:15
kapitan_rzbik
0
johny_bravo napisał(a)

Napisz jakie bledy wyskakuja przy kompilowaniu.

"C:\Program Files\Xinox Software\JCreator LE\MyProjects\SeriesDemo.java:1: class Series is public, should be declared in a file named Series.java
public interface Series {
^
1 error"

nie sie nie kompiluje

Pozostało 580 znaków

2006-12-02 16:16
kapitan_rzbik
0

przepraszam za kłopot już działa

Pozostało 580 znaków

2006-12-02 16:25
kapitan_rzbik
0

nie widze jaką funkce pełni w tym programie interfejs Series bo w main tworzy sie obiekt ByTwos, skoro interfejs jest jak klasa abstrakcyjna to powinno sie uzyskoiwać dostęp do metod przez interfejs

Pozostało 580 znaków

2006-12-03 16:49
0

Jedna z zasad dobrego programowania mowi - uzalezniaj obiekt od abstrakcji, nie od implementacji. Interfejs jest wlasnie ta abstrakcja.
spojrz na ten przyklad:
przypuscmy ze tworzysz sobie klase hmm Sniadanie (glodny jestem ;) ) ktora ma metody takie jak przygotuj, zjedz itp

teraz w swoim programie tworzysz Sniadanie s=new Sniadanie()
i np ze czterdziesci razy uzywasz w kodzie s.zrobCos(), albo jeszcze gorzej jesli masz metody statyczne to Sniadanie.metodaS()

nagle wpadles na pomysl, ze chcesz tez miec klase Obiad i co robisz? zamieniasz wszystkie linijki gdzie odnosisz sie do Sniadania. a gdyby tak stworzyc interfejs posilek? wtedy zmiana posilku moglaby sie odbywac w czasie dzialania programu a nie w czasie kompilacji! np. przy uzyciu metody zmienPosilek(Posilek p)

teraz wszystko co musisz zrobic, to
Posilek p=new Sniadanie();

wykozystanie interfejsow pozwala Ci takze budowac bardziej uniwersalne metody takie jak zmienPosilek
mam nadzieje, ze Ci sie przyda

pozdrawiam

Pozostało 580 znaków

2006-12-03 16:50
0

Jedna z zasad dobrego programowania mowi - uzalezniaj obiekt od abstrakcji, nie od implementacji. Interfejs jest wlasnie ta abstrakcja.
spojrz na ten przyklad:
przypuscmy ze tworzysz sobie klase hmm Sniadanie (glodny jestem ;) ) ktora ma metody takie jak przygotuj, zjedz itp

teraz w swoim programie tworzysz Sniadanie s=new Sniadanie()
i np ze czterdziesci razy uzywasz w kodzie s.zrobCos(), albo jeszcze gorzej jesli masz metody statyczne to Sniadanie.metodaS()

nagle wpadles na pomysl, ze chcesz tez miec klase Obiad i co robisz? zamieniasz wszystkie linijki gdzie odnosisz sie do Sniadania. a gdyby tak stworzyc interfejs posilek? wtedy zmiana posilku moglaby sie odbywac w czasie dzialania programu a nie w czasie kompilacji! np. przy uzyciu metody zmienPosilek(Posilek p)

teraz wszystko co musisz zrobic, to
Posilek p=new Sniadanie();

wykozystanie interfejsow pozwala Ci takze budowac bardziej uniwersalne metody takie jak zmienPosilek
mam nadzieje, ze Ci sie przyda

pozdrawiam

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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