Klasa posiadająca 2 konstruktory?

Sinus007
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 18 sie 2009, o 21:51
Płeć: Mężczyzna

Klasa posiadająca 2 konstruktory?

Post autor: Sinus007 »

witam. jestem zielony z programowania w Javie a na studiach mam takie coś dlatego prosiłbym o rozwiązanie poniższego, czysto teoretycznego problemu: Napisać klase Complex opisująca liczby zespolone, mająca 2 konstruktory, metody dodającą, odejmującą, mnożącą i do dzielenia, przesłonić to String, hashCode i equals.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Klasa posiadająca 2 konstruktory?

Post autor: soku11 »

Czysto teoretycznego? Przecież trzeba kod wyprodukować, więc teorią to nie jest... Napisz z czym masz konkretnie problem, bo dawać od tak sobie gotowca nie wypada.

Pozdrawiam.
Sinus007
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 18 sie 2009, o 21:51
Płeć: Mężczyzna

Klasa posiadająca 2 konstruktory?

Post autor: Sinus007 »

czysto teoretycznego to znaczy że mam to napisać na kartce na egzaminie czyli nie musi to sie kompilować bezblędnie, chodzi tylko o merytoryczną poprawność
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Klasa posiadająca 2 konstruktory?

Post autor: soku11 »

No ok, teraz rozumiem. Nadal jednak nie widzę chociażby pytania o coś... I to, że ma być na kartce nie znaczy, że MUSI mieć błędy

Pozdrawiam.
Sinus007
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 18 sie 2009, o 21:51
Płeć: Mężczyzna

Klasa posiadająca 2 konstruktory?

Post autor: Sinus007 »

omg... pytanie brzmi: NAPISAĆ KLASE Complex OPISUJĄCA LICZBY ZESPOLONE O 2 KONSTRUKTORACH ITP co napisałem wcześniej. chodzi mi o całość
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Klasa posiadająca 2 konstruktory?

Post autor: soku11 »

To nie jest pytanie, a twoje polecenie... Jeśli liczysz na gotowca - nie wiem czy komuś będzie się za darmo chciało odwalić za ciebie pracę domową. Mogę napisać wstęp:

Kod: Zaznacz cały

class Complex
{
  private float Re;
  private float Im;

  // ...
Btw. Mam chociaż nadzieję, że nie studiujesz informatyki...

Pozdrawiam.
Sinus007
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 18 sie 2009, o 21:51
Płeć: Mężczyzna

Klasa posiadająca 2 konstruktory?

Post autor: Sinus007 »

no dobra, to inaczej...
jeśli chodzi o przesłanianie to musze użyć "super" tylko w jaki dokładnie sposób to działa? czy np:

public toString(){
super.toString();
+jakieś instrukcje;
}

załatwia sprawe?
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

Klasa posiadająca 2 konstruktory?

Post autor: Dedemonn »

Metoda toString() jest wywoływana niejawnie podczas dołączania obiektu Twojej klasy (czyli jakaś liczba zespolona) do łańcucha znaków. Ładnie by było jeśli np. bezpośrednie wypisanie takiej liczby na konsolę (czyli System.out.println( mojaLiczba ) ) przedstawiało się w postaci część rzeczywista + część urojona.

Do przesłaniania warto użyć adnotacji (informacja i dla kompilatora i dla samego siebie, że tę metodę właśnie przesłaniasz) @Override w sposób:

Kod: Zaznacz cały

@Override public String toString()
{
     ...
}
Nie ma potrzeby wywoływać toString() nadklasy, bo i po co? (sprawdź co nieprzesłonięta Ci wydrukuje)

Taka przesłonięta metoda ma zwrócić łańcuch znaków w takiej postaci, w jakiej chciałbyś ujrzeć swoją liczbę zespoloną. (zwrócić za pomocą return oczywiście)


A co do konstruktorów - w czym problem? To tylko prosta inicjalizacja pól Re oraz Im podanych już przez soku11.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Klasa posiadająca 2 konstruktory?

Post autor: soku11 »

A co do hashcode i equals, to przejrzyj to:


Jest tam przykładowy kod, z którego powinieneś zrozumieć ideę tych metod.
Pozdrawiam.
Sinus007
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 18 sie 2009, o 21:51
Płeć: Mężczyzna

Klasa posiadająca 2 konstruktory?

Post autor: Sinus007 »

ok problem z przesłanianiem został rozwiązany ale oto pojawił sie następny, otóż potrzebuje napisać metody real() zwracającą część rzeczywsitą i img() zwracającą część urojoną liczby zespolonej. czy rozwiązaniem byłoby zwrócenie wartości pola Re?

Kod: Zaznacz cały

           
      public class Complex{
         int Re;
         int Im;
         public int real(Complex c){
              return c.Re;
         }
      }
Awatar użytkownika
Dedemonn
Użytkownik
Użytkownik
Posty: 689
Rejestracja: 21 lut 2007, o 19:40
Płeć: Mężczyzna
Lokalizacja: Z kompa
Podziękował: 26 razy
Pomógł: 137 razy

Klasa posiadająca 2 konstruktory?

Post autor: Dedemonn »

No prawie.

Po pierwsze, każdy obiekt klasy Complex jest właśnie liczbą urojoną, więc wywołując metodę jakaśLiczba.real() nie ma potrzeby podawać jako parametru kolejnej liczby. Po prostu zwróć Re.
Do tego, jak sama nazwa wskazuje, część rzeczywista powinna być typu rzeczywistego. (tak samo urojona)
ODPOWIEDZ