Ajutor Java OOP - preluare metodă


(Alex Coliba) #1

Salut incerc de ceva timp sa iau o metoda dintr-o clasa si sa o pun in alta clasa …ceva de genul called method.

Nu reusesc precizez ca amandoua clasele nu contin main. Ma poate ajuta cineva?


(cosmos) #2

Salut !

Poti incepe prin posta codul aici .
Poti folosi Pastebin


(Ionuț Staicu) #3

Salut Alex, bine ai venit pe forum! Pentru a avea șanse mai mari în a primi ajutor, încearcă să fii ceva mai descriptiv atât în titlu cât și în descrierea problemei.

Poți pune cod direct pe forum, vezi aici:

Mulțumesc!


(cosmos) #4

Clasamea myClass = new Clasamea();
myClass.metoda(optional , daca are parametrii ii scrii aici)

sau

Clasamea.metoda() daca ai metoda statica


(Claudiu) #5

Pai sunt mai multe variante, dupa cum a zis si Cosmin:

  1. Apel de metoda statica (nu prea este recomandat)
public class MyClass1 {
    public static void methodClass1() {
        //Cod
}

public class MyClass2 {
    public void methodClass2() {
        MyClass1.methodClass1();
}

  1. Instanta
public class MyClass1 {
    public void methodClass1() {
        //Cod
}

public class MyClass2 {
    public void methodClass2() {
        MyClass1 myClass1 = new MyClass1();
        myClass1.methodClass1();
}

In exemplele de mai sus mai ai nevoie de functia main undeva, ca sa poti accesa acele metode.

public class MainClass() {
    public static void main(String[] args) {
        MyClass2 myClass2 = new MyClass2();
        myClass2.methodClass2();
    }
}

Asa se va apela metoda din Clasa2 care la randul ei apeleaza metoda din Clasa1

Desigur pe langa aceste exemple mai sunt modalitari putin mai complexe, mosteniri, interfete… etc.


(Alex Coliba) #6

Salut multumesc dar eu am nevoie de o metoda in care apelez metodele fara a avea functia main.


(Claudiu) #7

Pai si fara main cum pornesti aplicatis ?


(Alex Coliba) #8

Eu am un test care contine un main. Eu trebuie sa fac clase pt acel main si sa modific in clase tot nu am voie sa ma ating de main, daca intelegi ce zic.Metoda asta ar insemna sa modific in main


(Claudiu) #9

Ok… nu vad de ce sa faci asta, dar am dat un mic search pe google si in 15 secunde am gasit asta

public class MyClass {
    static {
         System.out.println("Message");
         System.exit(0);
    } 
}

Mai multe aici:


(Alex Coliba) #10

Nu ma ajuta . Deci man eu am 2 clase da ? Le numim clasa A si clasa B!
In clasa A am 3 metode de tipul get.
In clasa B nu am main dar trebuie sa apelez cele 3 metode din clasa A.
Cum as putea eu sa apelez o metoda cu SYSO?
Si nu am voie nici cu extends.


(Claudiu) #11

Sa gandesti putin :slight_smile:

public class MyClass {
    static {
         Clasa1.get1();
         Clasa1.get2();
         Clasa1.get3();
         System.exit(0);
    } 
}

Totusi, vrei sa-mi explici si mie de ce nu vrei sa folosesti main? Poate pot sa te indrum catre ceva mai bun


(Alex Coliba) #12

Si nu imi afecteaza proprietatile OOP si sa nu fie spaghetti code?


(Claudiu) #13

Eu zic sa renunti la “proprietati OOP” si “spaghetti code” si sa inveti sa programezi mai intai, apoi sa te preocupe de lucrurile astea.

Sa pornesti o aplicatie fara main… este ca si cum ai pleca din parcare cu o masina fara volan

Pai vezi ce inseamna OOP, uite-te in codul tau, si apoi vezi daca afecteaza sau nu


(Alex Coliba) #14

…Eu ti-am zis ca am un main dar nu am voie sa modific in el . Folosesc un main, dar mainul mi-a fost dat ca eu sa fac programul dupa el.
Deci am un main dar nu am voie sa ma ating sa modific in el , tre sa fac programul fara sa modific si sa adaug obiecte in main.
Stiu sa fac asa , am facut cu metoda asta dar am inteles ca aceasta metoda violeaza codurile.Oricum multumesc pentru interes.


(Claudiu) #15

Ori sunt eu batut in cap ori nu stiu…

Daca folosesc rationamentul de sus, sa ai o aplicatie cu main si sa nu folosesti este ca atunci cand pleci cu masina dar fara sa atingi volanul.

cheama politia atunci :smiley:

Hai ca sa mai incerc… asta e ceva tema pt facultate sau ceva?
Daca da, te rog frumos pune aici cerinta.


(Alex Coliba) #16

Cerinta e asta https://ideone.com/OsAPj6 .
Trebuie sa fac un program sa respecte oop si sa nu fie spaghetti code dupa acest main.


(Claudiu) #17

Si pe codu ala de acolo trebuie sa faci sa afiseze acele expected in consola?


(Alex Coliba) #18

Da … Am facut un proiect mi-a dat tot da mia zis ca violez codurile:(


(Claudiu) #19

Daca nu stiu ce ti-a cerut proful ala cum sa imi dau seama daca ce ai facut tu acolo e ce vrea el.
Cum am mai spus… da-ne cerinta, exact cum ti-a dictat ala


(Alex Coliba) #20

El mi-a dat acel main si a zis in felul urmator:
“Alex vreau sa ei acest main si sa faci un program care sa ruleze si sa afiseze in consola acele expected line”!

Acel main e scris de el.