Zaloguj się
Projekty Kategorie Archiwum
2 sierpnia

Wyobraźmy sobie, że mamy jakąś osobę, której chcemy wręczyć łapówkę. Niestety nasza klasa definiująca osobę nie posiada funkcji służącej do wręczania łapówek:

public class Osoba { }

Rozbudujmy więc naszą klasę (polskie znaki zostały użyte w celu podniesienia przejrzystości kodu):

public class Osoba {
  void dajWŁapę(int kwota) { }
}

Okej... Chwilkę, przecież nie wszystkie osoby muszą być od razu skorumpowne...

Tada! Tak już lepiej. No nie zupełnie... Rokita* mógłby się obrazić (*edit: pisane w 2005 roku...).

public class Polityk extends Osoba {
  void dajWŁapę(int kwota) { }
}

Teraz chyba wszystko jest już w porządku:

public class SkorumpowanyPolityk extends Polityk {
  void dajWŁapę(int kwota) { }
}

Taaa... A co z urzędnikami, lekarzami, etc? Wszyscy biorą w ten sam sposób. Trzeba zdefiniować wspólną metodę (interfejs). Oto nasz "sposób" na wręczanie łapówek dla wszystkich skorumpowanych osób:

public interface Skorumpowany {
  void dajWŁapę(int kwota);
}

1. Teraz możemy wziąć dowolną osobę:
Osoba jakaśOsoba = ...

2. Sprawdzić, czy jest skorumpowana:
if (jakaśOsoba instanceof Skorumpowany)

3. I w końcu wręczyć łapówkę:
Skorumpowany.class.cast(jakaśOsoba).dajWŁapę(1000); // Java 5.0 i nowsza
((Skorumpowany)jakaśOsoba).dajWŁapę(1000); // Java starsza niż 5.0

4. A nasza nowa klasa opisująca skorumpowanego polityka, wygląda tak:

public class SkorumpowanyPolityk extends Polityk implements Skorumpowany {
  void dajWŁapę(int kwota) { }
}

A to przykładowy algorytm zamykający wszystkie skorumpowane osoby w Polsce ;-)

for (Osoba osoba : wszyscyMieszkańcyPolski) {
  if ((osoba instanceof Skorumpowany) && !(osoba instanceof Immunitet))
    doPaki(osoba);
}

Proszę o komentarz

Wtorek 2 sierpnia, 2005 13:06

Hmmm... Obrazowo to wszystko pokazane, nie powiem...

Wtorek 2 sierpnia, 2005 13:09

Chociaż chyba bym trochę zmienił "doPaki(osoba);" na:

if(sąd(osoba).wyrok == 'skazujący')
doPaki(osoba);

No bo jak to, karać bez sądu?

zenon
Wtorek 2 sierpnia, 2005 13:37

Wlasnie sie ucze Javy i musze powiedziec ze ten algorytm bardzo mi pomogl w zrozumieniu kilku rzeczy :P

Wtorek 2 sierpnia, 2005 17:16

heh, właśnie... skąd można zassać jakiś darmowy IDE do javy wraz z kompilatorkiem i podpowiadaniem składni..? bo chciałem się kiedyś javą pobawić.., a Microsoft Visual J++ nie posiadam...

Wtorek 2 sierpnia, 2005 17:19

wszystko fajnie w tej javie, multiplatformowość szczególnie, ale zbyt szybka chyba nie jest np. takie IDE które znalazłem http://www.jcreator.com/, jest napisane w c++, chociaż do javy...

JCreator is written entirely in C++, which makes it fast and efficient compared to the Java based editors/IDE's.

hmmm... IDE do Javy w C++? To przebija nawet IDE do C++ w Delphi :P

Wtorek 2 sierpnia, 2005 17:27

Tu jest NetBeans razem z kompilatorem (120MB) + Dokumentacja API (40MB):
http://java.sun.com/j2se/1.5.0/download.jsp

Prawde mówiąc, to używam NetBeans dopiero od kilku dni. KDevelop też wspiera Javę, ale trochę kuleje przy nowej składni Javy 5.0. Jest też megawypasione(tm) Eclipse :)
Rzeczywiście NetBeans trochę się ślimaczy i długo się uruchamia, ale to pewnie z powodu nadmiaru funkcji :)

Wtorek 2 sierpnia, 2005 17:29

dzięki...
hm... z tego co widzę w tym łapówkowym przykładzie, to java jest podobna do c++, mam nadzieję że nawet bardziej niż mi się zdaje...

Wtorek 2 sierpnia, 2005 17:32

Składnia jest podobna, ale niestety nie ma wielu fajnych rzeczy z C++

Wtorek 2 sierpnia, 2005 17:32

Chociaż niektórzy uznają to za plus

Wtorek 2 sierpnia, 2005 17:33

Ale np. API nie można stosować? Tj. nie można wykorzystać windowsowego API... bo to nie będzie wtedy kontatybilne z innymi systemami operacyjnymi, czy może nie ma w ogóle takiej opcji...

Wtorek 2 sierpnia, 2005 17:35

może nie jasno to powiedziałem... można używać w Javie windowsowe DLL'e..?

Wtorek 2 sierpnia, 2005 17:36

Tak, poprzez JNI :)

Wtorek 2 sierpnia, 2005 17:38

to dobrze... niewiele mi to mówi (wiem Java Native Interface).. ale fajnie że jest taka opcja :P, bo np. taki zlib.dll się czasem może przydać

Wtorek 2 sierpnia, 2005 17:39

Akurat zlib jest wbudowany w Javę :)

Wtorek 2 sierpnia, 2005 17:40

ty, faktycznie to całkiem możliwe... znowu się głupotą popisałem w końcu pliki *.jar to zwykłe zipy... ;)

Wtorek 2 sierpnia, 2005 20:07

Java ma działać Wszędzie(TM) a weź uruchom windowsianą DLLkę na Solarisie na SPARCu ;)

Wtorek 18 października, 2005 22:18

GRATULUJĘ !!! Bardzo polski przykład :)

krytyk
Środa 6 czerwca, 2007 08:13

Pisze się „WZIĄĆ”!

Poza tym średnio śmieszne, ale starasz się ;)

CRC
Czwartek 13 marca, 2008 10:17

Niestety, do przeczytania tego artykułu myślałem,że rozumiem interfejsy.
Co dzieje sie z wartością [kwota].
Więcej pytań niż odpowiedzi.

Marcin
Czwartek 26 marca, 2009 18:27

Nie no rewelacyjnie szukałem o co chodzi w interfejsach—>„międzymordziach” w Javie a tutaj jest extra napisane i wyjaśnione

tataoposa
Poniedziałek 11 maja, 2009 23:30

!(osoba implements Immunitet)) <— w javie nie ma takiej konstrukcji.

Wtorek 12 maja, 2009 15:27

@tataoposa: nie wiem skąd mi się to wzięło :) Poprawione, dzięki

Niedziela 3 stycznia, 2010 18:05

Faktycznie dobrze wytłumaczone ;-) Trafiłem tutaj przypadkiem, Javy nigdy nie tykałem, a już zobaczyłem, jak rozwiązuje się w niej pewne rzeczy.

SLaw
Czwartek 21 stycznia, 2010 11:18

Jakoś do tej pory nikt nie potrafił mi wytłumaczyć interfejsów a tu... Chyba to polska mentalność i przyzwyczajenie do tego że łapówki to coś normalnego.

Sobota 10 marca, 2012 11:36

tam jest chyba błąd powinno być:
public class SkorumpowanyPolityk extends Polityk implements Skorumpowany(tutaj Skorumpowana zamiast Skorumpowany ;)) {
void dajWŁapę(int kwota) { }
}

KrzysikG
Sobota 7 kwietnia, 2012 01:46

I już wiem o co chodzi z interfejsami;P Dzięki!

Misiek
Sobota 21 kwietnia, 2012 16:36

Nie wiem skąd wzięła się metoda: weźJakąśOsobę(); nie jest nigdzie zdefiniowana. Mam do zaimplementowania metody interfejsu, które w samym interfejsie są puste i są definiowane poza interfejsem gdzieś indziej i dalej nie wiem jak ich użyć w mojej aplikacji. :/ Nie powiem, że wiem mniej niż wiedziałem ale dalej nic nie wiem :) Masło maślane o pośladek wsmarowane .. i tyle na ten temat ..

Napisz komentarz

Dodaj komentarz

Formatowanie komentarza

Kategorie

Ewolucja Internetu 8 | Fail 40 | Gry 46 | Humor 129 | Idiotyzm 50 | Java 110 | KDE 85 | KShutDown 22 | Linux 84 | Makagiga 58 Muzeum 3 | Ogólne 819 | Polityka 76 | Programowanie 51 | Reklamy 4 | Techblog 19 | Teorie Spiskowe 12 | TV 59 | UI 9 | Użyteczność 30 | WWW 90 | Wyrwane z Kontekstu 34 | X Files 14

Archiwum

Maj 2012 | Kwiecień 2012 | Marzec 2012 | Luty 2012 | Styczeń 2012 | Grudzień 2011 | Listopad 2011 | Październik 2011 | Wrzesień 2011 | Sierpień 2011 | Lipiec 2011 | Czerwiec 2011 | Maj 2011 | Kwiecień 2011 | Styczeń 2011 | Listopad 2010 | Październik 2010 | Wrzesień 2010 | Sierpień 2010 | Lipiec 2010 | Czerwiec 2010 | Kwiecień 2010 | Marzec 2010 | Luty 2010 | Styczeń 2010 | Grudzień 2009 | Listopad 2009 | Październik 2009 | Wrzesień 2009 | Sierpień 2009 | Lipiec 2009 | Czerwiec 2009 | Maj 2009 | Kwiecień 2009 | Marzec 2009 | Styczeń 2009 | Grudzień 2008 | Listopad 2008 | Październik 2008 | Wrzesień 2008 | Sierpień 2008 | Lipiec 2008 | Czerwiec 2008 | Maj 2008 | Kwiecień 2008 | Marzec 2008 | Luty 2008 | Styczeń 2008 | Grudzień 2007 | Listopad 2007 | Październik 2007 | Wrzesień 2007 | Sierpień 2007 | Lipiec 2007 | Czerwiec 2007 | Maj 2007 | Kwiecień 2007 | Marzec 2007 | Luty 2007 | Styczeń 2007 | Grudzień 2006 | Listopad 2006 | Październik 2006 | Wrzesień 2006 | Sierpień 2006 | Lipiec 2006 | Czerwiec 2006 | Maj 2006 | Kwiecień 2006 | Marzec 2006 | Luty 2006 | Styczeń 2006 | Grudzień 2005 | Listopad 2005 | Październik 2005 | Wrzesień 2005 | Sierpień 2005 | Lipiec 2005 | Czerwiec 2005 | Maj 2005 | Kwiecień 2005 | Marzec 2005 | Luty 2005 | Styczeń 2005