Objektové programování - statická metoda – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Objektové programování - statická metoda – Java – Fórum – Programujte.comObjektové programování - statická metoda – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
CrazyWolf
~ Anonymní uživatel
11 příspěvků
15. 12. 2012   #1
-
0
-

Zdravím,

mám menší problém s metodou, mám napsat program, který zjistí vzdálenost svou bodů. Všechno mi funguje, ale jen je problém s tím, že nevím jak to udělat podle zadání.

 public static double vzdalenost(Bod b1, Bod b2){
       double delkaX, delkaY;
       
       delkaX = b2.getX() - b1.getX();
       delkaY = b2.getY() - b1.getY();
       return Math.sqrt(delkaX*delkaX + delkaY*delkaY);
 }

Metoda main:

public static void main(String[] args){
       Bod bod1 = new Bod(90, 40);
       Bod bod2 = new Bod(50, 10);
}

V zadání je, že metoda vzdalenost je třídní statická metoda, která se oužije přímo na třídu, v main nevytváří žádné instance.

Nevím jak dál, co doplnit do main a co ne.

Díky vám moc!

Nahlásit jako SPAM
IP: 93.187.106.–
Reklama
Reklama
ingiraxo+15
Grafoman
15. 12. 2012   #2
-
0
-

ja nevim nevim co presne chces, ty nevis jak zavolat statickou metodu na ty 2 body v main?



// do main
double v = vzdalenost(bod1, bod2);

Pokud teda ta funkce "vzdalenost" je ve tride s main()

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Jaja
~ Anonymní uživatel
43 příspěvků
15. 12. 2012   #3
-
0
-

Tak tak, když ale tohle hodím do main, tak mi to vypíše, že ta metoda nebyla nalezena.

Nahlásit jako SPAM
IP: 93.187.106.–
ingiraxo+15
Grafoman
15. 12. 2012   #4
-
0
-

no tak tu funkci nemas ve tride s main, dej sem celej kod a ne tuhle cast

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Jaja
~ Anonymní uživatel
43 příspěvků
15. 12. 2012   #5
-
0
-

V main už nemám nic. Čistě jen ty dva body + to co si mi napsal ty.

Metoda Bod:

public class Bod
{
    private double x;
    private double y;
    
    public Bod()
    {
        x=0;
        y=0;
    }
    
    public Bod(double x, double y){
        this.x = x;
        this.y = y;
    }
   
   public String toString()
   {
       String string = "\nx: "+ getX() + " Y: "+ getY();
       return string;
   }
   
   public void tisk()
   {
       System.out.println("Souradnice bodu jsou: "+ this.toString());
   }
   
   public double getX()
   {
       return x;
   }
    
   public void setX(double x)
   {
       this.x = x;
   }
    
   public double getY()
   {
       return y;
   }
    
   public void setY(double y)
   {
       this.y = y;
   }
   
   public double delkaX(Bod bod){
       return Math.abs(getX() - bod.getX());
    }
}

Metoda Vypocet:

public class Vypocet
{
   private Bod bod1;
   private Bod bod2;
   

   public Vypocet(){
       bod1 = new Bod();
       bod2 = new Bod();
   }
   
   public Vypocet(Bod a, Bod b){
       bod1 = a;
       bod2 = b;
   }
   
   public Bod getBod1(){
       return bod1;
   }
   
   public void setBod1(Bod a){
       bod1 = a;
   }
   
   public Bod getBod2(){
       return bod2;
   }
   
   public void setBod2(Bod b){
       bod2 = b;
   }
   
   public static double vzdalenost(Bod b1, Bod b2){
       double delkaX, delkaY;
       
       delkaX = b2.getX() - b1.getX();
       delkaY = b2.getY() - b1.getY();
       return Math.sqrt(delkaX*delkaX + delkaY*delkaY);
   }
   
   public String toString(){
       return String.format("\nBod x: %s,\nBod y: %s,\nDelka usecky: %.10f ", bod1.toString(), bod2.toString(), vzdalenost(bod1, bod2));
   }
   
   public void tisk(){
       System.out.println(this.toString());
   }
}

A metoda s main:

public class VypocetTest
{
   public static void main(String[] args){
       Bod bod1 = new Bod(90, 40);
       Bod bod2 = new Bod(50, 10);
       
       double v = vzdalenost(bod1, bod2);a
   }
}
Nahlásit jako SPAM
IP: 93.187.106.–
ingiraxo+15
Grafoman
15. 12. 2012   #6
-
0
-

no tak, ty tu funkci nemáš v main, pokud ji mas jinde, tak k ni musis pristoupit

funkce se staticka, takze nepotrebujedes initializaci ty tridy, takze staci (uprav v main) 

// pristupujes pres teckovou notaci ke staticky funkci
double v = Vypocet.vzdalenost(bod1, bod2);
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Jaja
~ Anonymní uživatel
43 příspěvků
15. 12. 2012   #7
-
0
-

Fajn, v pořádku, děkuju :)

Nahlásit jako SPAM
IP: 93.187.106.–
xXx
~ Anonymní uživatel
54 příspěvků
16. 12. 2012   #8
-
0
-

A len oprava, to nie su metody, ale triedy(classy). Metody su uz "funkcie" vo vnutri tried.

Nahlásit jako SPAM
IP: 95.170.227.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Staticka metoda — založil jonhnw

Abstraktni staticka metoda — založil Dusan R.

Interface - statická metoda — založil Miloš

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý